Introducción al RPG IV
El RPG IV es un lenguaje estructurado, cuya programación es mediante hojas y
la lógica es mediante columnas, la ventaja de programar en RPG IV, es que se
pueden utilizar sentencias del RPG III.
Tipos de Hojas.
El RPG IV, maneja una diversidad de hojas, de las cuales vamos a mencionar
las hojas mas usadas.
Declaración de Archivos
Hoja FX o F = Permite declarar archivos tales como Pantallas, Tablas Físicas,
Tablas Lógicas, Reportes.
Sintaxis.
Archivo Tipo de Desig. Adición
Archivo Archivo Archivo
Formato Tipo Direc. Dispos Palab. Claves
Archivo Regist.
Donde.
• Archivo = Es el nombre del Archivo de Pantalla, Tabla Física, Tabla Lógica, o Reporte.
• Tipo de Archivo = Entre los cuales tenemos:
o C = Combinado (Entrada / Salida) de datos (solo pantallas).
o I = Entrada (solo tablas para consultas).
o U = Actualización (solo tablas para actualizaciones, eliminaciones, consultas).
o O = Salida (solo reportes).
• Designación de Archivo = Aquí usamos:
o F = Procedimiento completo.
Nota = Vas a utilizar la designación de archivos en todos los archivos menos en
reportes.
• Adición de Archivos = Aquí usamos:
o A = Adicionar registros
Nota = Vas a usar adición de archivos solo cuando quieras ingresar datos a una
tabla.
• Formato de Archivo = Aquí tenemos:
o E = Externo, quiere decir que vamos a llamar al archivo externamente del programa, pantalla,
tabla.
• Tipo de Dirección de Registro = Aquí tenemos.
o K = Campo Clave, es usado solo cuando definas tablas, te permite ordenar un tabla física o lógica
por su campo clave.
• Dispositivo = Aquí tenemos:
o WORKSTN = Estación de trabajo (solo en pantallas).
o DISK = Disco (solo en tablas).
o PRINTER = Reportes (solo en reportes).
• Palabras Claves = son palabras reservadas para la funcionalidad de un programa.
Ejemplo: Para definir PANTALLAS
Archivo Tipo de Desig. Adición
Archivo Archivo Archivo
DSP01 C F
Formato Tipo Direc. Dispos Palab. Claves
Archivo Regist.
E WORKSTN SFILE(DATA:NRR)
SFILE = SE DECLARA CUANDO LA PANTALLA ES UN SUBFILE
Ejemplo: Para definir REPORTES
Archivo Tipo de Desig. Adición
Archivo Archivo Archivo
PRT01 O
Formato Tipo Direc. Dispos Palab. Claves
Archivo Regist.
E PRINTER OFLIND(*IN10)
OFLIND = PERMITE CONTROLAR EL SALTO DE PAGINA EN UN REPORTE
Ejemplo: Para definir TABLAS (Consultas)
Archivo Tipo de Desig. Adición
Archivo Archivo Archivo
TAB01 I F
Formato Tipo Direc. Dispos Palab. Claves
Archivo Regist.
E K DISK
Ejemplo: Para definir TABLAS (Solo Ingreso de Datos)
Archivo Tipo de Desig. Adición
Archivo Archivo Archivo
TAB01 I F A
Formato Tipo Direc. Dispos Palab. Claves
Archivo Regist.
E K DISK
Ejemplo: Para definir TABLAS (Ingreso, Consulta, Modifica, Elimina)
Archivo Tipo de Desig. Adición
Archivo Archivo Archivo
TAB01 U F A
Formato Tipo Direc. Dispos Palab. Claves
Archivo Regist.
E K DISK
Ejemplo: Para definir TABLAS (Consulta, Modifica, Elimina)
Archivo Tipo de Desig. Adición
Archivo Archivo Archivo
TAB01 U F
Formato Tipo Direc. Dispos Palab. Claves
Archivo Regist.
E K DISK
Declaración de variables, constantes, estructura
de datos
Hoja D = Permite declarar variables, constantes, estructura de datos.
Sintaxis.
Nombre Tipo de Declaración Longitud
Tipo de Dato Pos. Decimales Funciones
Donde:
• Nombre = Es el nombre de la variable, constante o estructura de datos.
• Tipo de declaración = Aquí tenemos:
o S = Permite declarar variables.
o C = Permite declarar constantes,
o DS = Permite declarar estructura de datos.
• Longitud = Es la longitud de la variable.
• Tipo de dato = Aquí tenemos:
o S = Permite definir una variable numérica.
o A = Permite definir una variable carácter.
• Posiciones Decimales = Son los decimales del campo numérico.
• Funciones = Son las funciones que se pueden usar definiendo variables, constantes o
estructuras de datos.
Ejemplo: Para definir variable NUMERICA
Nombre Tipo de Longitud
Declaración
NUM01 S 5
Tipo de Pos. Funciones
Dato Dec.
S 00
Ejemplo: Para definir variable CARACTER
Nombre Tipo de Longitud
Declaración
VAR S 30
Tipo de Pos. Funciones
Dato Dec.
A
Ejemplo: Para definir CONTANTES
Nombre Tipo de Longitud
Declaración
CONS0 C
1
Tipo de Pos. Funciones
Dato Dec.
CONST(‘CODIGO DE EXISTE’)
Ejemplo: Para definir variables ESTRUCTURA DE DATOS
Nombre Tipo de Desde To/ Tipo Pos
Declaración Longitud Dato Dec
XFECHA DS
MM 1 2 S 00
DD 3 4 A
AA 5 8 A
Lógica del programa
Hoja C = Permite realizar la lógica del programa, este tipo de hoja es de RPG
III.
Sintaxis.
Factor1 Operador Factor2 Resultado HI LO EQ
CX = Permite realizar la lógica del programa, este tipo de hoja es de RPG IV.
Sintaxis.
Factor1 Operador Factor2 – Ampliado
Tipos de Operadores.
Operadores Aritméticos.
Operador RPG III RPG IV
SUMA ADD +
RESTA SUB -
MULTIPLICACION MULT *
DIVISION DIV /
RESTO MVR FORMULA
Operadores de Relación
Operador RPG III RPG IV
MAYOR GT >
MENOR LT <
MAYOR IGUAL GE >=
MENOR IGUAL LE <=
IGUAL EQ =
DIFERENTE NE <>
Operadores Lógicos
Operador RPG III o RPG IV
Y AND
O OR
NEGACION NOT
Operador DSPLY.
Es un operador de RPG III, que permite ingresar como visualizar datos de una
variable, y es usado en la hoja C de RPG III.
Sintaxis.
Factor1 Operador Factor2 Resultado
‘Texto’ DSPLY Variable
Ejemplo.
Se pide ingresar un número a la variable NUM1
Factor1 Operador Factor2 Resultado
‘Ing. Numero:’ DSPLY NUM1
Operador EVAL.
Es un operador de RPG IV, que permite evaluar expresiones, y es usado en la
hoja CX o C.
Sintaxis.
Factor1 Operador Factor 2 – Ampliado
EVAL Variable= Expresión
Ejemplo.
Se pide sumar las variables numéricas A + B y el resultado guardarlo en C
Factor1 Operador Factor 2 – Ampliado
EVAL C=A+B
Operador MOVE
Es un operador que me permite mover un valor de una variable a otra, de
Derecha a Izquierda, también es usado para convertir un valor numérico a
cadena o viceversa, o para extraer caracteres desde el lado derecho hacia el
izquierdo, y es usado en la hoja C de RPG III.
Sintaxis.
Factor1 Operador Factor2 Resultado
MOVE Variable Origen Variable Destino
Ejemplo.
Se pide extraer 4 caracteres de un código desde el lado derecho hacia el
izquierdo.
Donde.
CODCLI = ‘C0001’
XNRO = 0
NOTA.- La variable XNRO es de longitud 4 con 0 decimales y es de tipo
numérico.
Factor1 Operador Factor2 Resultado
MOVE CODCLI XNRO
Resultado.
XNRO = 0001
Operador MOVEL
Es un operador que me permite mover un valor de una variable a otra, de
Izquierda a Derecha, también es usado para convertir un valor numérico a
cadena o viceversa, o para extraer caracteres desde el lado izquierdo hacia el
derecho, y es usado en la hoja C de RPG III.
Sintaxis.
Factor1 Operador Factor2 Resultado
MOVEL Variable Origen Variable Destino
Ejemplo.
Se pide extraer 4 caracteres de un código desde el lado izquierdo hacia el
derecho.
Donde.
CODCLI = ‘C0001’
XCAD = ‘‘
NOTA.- La variable XCAD es de longitud 4 y es de tipo carácter.
Factor1 Operador Factor2 Resultado
MOVEL CODCLI XCAD
Resultado.
XCAD = ‘C000’
Operador *LOVAL.- Permite ubicar el puntero en el primer registro de
un archivo
Factor1 Operador Factor2 Resultado
*LOVAL SETLL Nom.Registro
Operador SETLL.- Permite ubicar el puntero un registro antes de donde
esta ubicado actualmente el puntero o del registro mas parecido
Factor1 Operador Factor2 Resultado
XCOD SETLL Nom.Registro
Operador READ.- Permite leer el siguiente registro de un archivo
Factor1 Operador Factor2 Resultado EQ
READ Nom.Registro Ind
Nota.- El Indicador que colocas en el igual (EQ), te retornara “0”, si lee el
registro y “1”, si no lee el registro o si la tabla esta vacía.
Sintaxis para leer el primer registro de un archivo
Factor1 Operador Factor2 Resultado EQ
*LOVAL SETLL RTABCLI
READ RTABCLI 30
Operador *HIVAL.- Permite ubicar el puntero en el ultimo registro de un
archivo
Factor1 Operador Factor2 Resultado
*HIVAL SETGT Nom.Registro
Operador SETGT.- Permite ubicar el puntero un registro después de
donde esta ubicado actualmente el puntero o del registro mas parecido
Factor1 Operador Factor2 Resultado
XCOD SETGT Nom.Registro
Operador READP.- Permite leer el anterior registro de un archivo
Factor1 Operador Factor2 Resultado EQ
READP Nom.Registro Ind
Nota.- El Indicador que colocas en el igual (EQ), te retornara “0”, si lee el
registro y “1”, si no lee el registro o si la tabla esta vacía.
Sintaxis para leer el ultimo registro de un archivo
Factor1 Operador Factor2 Resultado EQ
*HIVAL SETGT RTABCLI
READP RTABCLI 30
Operador READE.- Permite leer el siguiente registro igual al valor
buscado en un archivo
Factor1 Operador Factor2 Resultado EQ
XCOD READE Nom.Registro Ind
Nota.- El Indicador que colocas en el igual (EQ), te retornara “0”, si lee el
registro y “1”, si no lee el registro o si la tabla esta vacía.
Sintaxis
Factor1 Operador Factor2 Resultado HI EQ
XCOD CHAIN Nom.Registro 30
DOW *IN30=’0’
XCOD DSPLY
XCOD READE Nom.Registro 30
ENDDO
Operador READC.- Permite leer el registro cambiado en un subarchivo
Factor1 Operador Factor2 Resultado EQ
READC Registro de Datos Ind
del Subfile
Nota.- El Indicador que colocas en el igual (EQ), te retornara “0”, si cambias el
registro en el Subfile, y “1”, si no haces ningún cambio.
Sintaxis
Factor1 Operador Factor2 Resultado EQ
READC DATA 60
DOW *IN60=’0’
OP CASEQ ‘1’ CONS
ENDSC
READC DATA 60
ENDDO
Operador CHAIN.- Permite buscar y leer un registro en un archivo,
mediante una variable o campo
Factor1 Operador Factor2 Resultado HI
XCOD CHAIN Nom.Registro Ind
Nota.- El Indicador que colocas en el mayor (HI), te retornara “0”, si encontró el
registro y “1”, si no encontró.
Si le colocas CHAIN, aparte de buscar y leer te bloquea el registro si es que lo
encuentra, ahora si colocas CHAIN(N), busca y lee el registro pero no lo
bloquea
Sintaxis: Busca el código de cliente y lo bloquea
Factor1 Operador Factor2 Resultado HI
XCOD CHAIN RTABCLI 30
IF *IN30=’0’
‘ENCONTRO’ DSPLY
ENDIF
Sintaxis: Busca el código de cliente y no lo bloquea
Factor1 Operador Factor2 Resultado HI
XCOD CHAIN(N) RTABCLI 30
IF *IN30=’0’
‘ENCONTRO’ DSPLY
ENDIF
Operador WRITE.- Permite imprimir o grabar un registro en un archivo
Factor1 Operador Factor2 Resultado
WRITE Nom.Registro
Operador DELETE.- Permite eliminar un registro en un archivo
Factor1 Operador Factor2 Resultado
DELETE Nom.Registro
Operador UPDATE.- Permite actualizar un registro en un archivo
Factor1 Operador Factor2 Resultado
UPDATE Nom.Registro
Operador KLIST.- Permite formar claves compuestas en un solo campo.
Factor1 Operador Factor2 Resultado
KEY01 KLIST
KFLD Clave01
KFLD Clave02
Donde:
KFLD = Campo clave a unir
Sintaxis
Factor1 Operador Factor2 Resultado HI
KEY01 KLIST
KFLD NUMPED
KFLD CODPRO
KEY01 CHAIN RTABDEP 30
IF *IN30=’0’
‘ENCONTRO’ DSPLY
ENDIF
Operador CALL.- Permite llamar a un programa.
Factor1 Operador Factor2 Resultado
CALL ‘Nom.Programa’
PARM Parámetro
PARM Parámetro
Donde:
PARM = Parámetro a enviar (opcional)
Sintaxis
Factor1 Operador Factor2 Resultado
CALL ‘PRG09’
PARM XNUMT
PARM XDESC
Operador EXFMT.- Permite mostrar un registro de pantalla
Factor1 Operador Factor2 Resultado
EXFMT Reg.Pantalla
Operador EXSR.- Permite ejecutar Subrutina
Factor1 Operador Factor2 Resultado
EXSR Nom.Subrutin
a
Operador BEGSR.- Permite el inicio de la subrutina
Factor1 Operador Factor2 Resultado
Nom.Subrutin BEGSR
a
Operador ENDSR.- Permite el inicio de la subrutina
Factor1 Operador Factor2 Resultado
ENDSR
Nota: El inicio de toda subrutina va después del EVAL *INLR=’1’
Sintaxis
Factor1 Operador Factor2 Resultado EQ
EXSR GENERA
EVAL *INLR=’1’
GENERA BEGSR
*HIVAL SETGT
READP RTABCLI 30
EVAL NUM = NUM + 1
ENDSR