programación rpg - conceptos
TRANSCRIPT
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CONCEPTOS DE RPG
PROGRAM REPORT GENERATOR
Conocido como un generador de reportes, el RPG se puede considerar un
lenguaje de programación con sus requerimientos de sintaxis, estructura y
reglas con el que se pueden realizar tanto programas sencillos como de
una gran complejidad.
En esta serie de presentaciones
realizaré una introducción sobre los
conceptos, programación y
características avanzadas de este
potente lenguaje muy utilizado en
sistemas IBM i – AS/400.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CONCEPTOS DE RPG
PROGRAM REPORT GENERATOR
Comenzaré por los conceptos de programación utilizados en versiones
anteriores como RPG-III, RPG/400 e iré avanzando a las nuevas versiones
mucho más versátiles y con opciones de integración multilenguaje y
multiplataforma como RPGLE, RPGE-FREE.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CONCEPTOS DE RPG
GENERALIDADES
Caracteres válidos
• Las letras A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
• Los números 0 1 2 3 4 5 6 7 8 9
• Los caracteres + - * , . ‘ & / $ % ( ) : @ _
• El carácter blanco
El lenguaje RPG depende de la posición. Cada entrada debe empezar en
una columna específica.
Tolerancia a mayúscula o minúscula con excepción de literales.
El código RPG esta escrito en varias especificaciones.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CONCEPTOS DE RPG - ESPECIFICACIONES
Una especificación fuente se puede definir como un conjunto relativamente
pequeño de declaraciones con especificaciones de formato rígido.
Las especificaciones están diseñadas para manejar muchas necesidades por lo
cual pueden parecer sobrecogedor, sin embargo en la práctica, en un
programa sólo se requiere utilizar un número pequeño de campos.
Por ejemplo, un programa simple puede ser escrito usando:
• H especificación de cabecera
• F especificaciones de archivos
• I especificaciones de entrada
• O especificaciones de salida
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CONCEPTOS DE RPG - ESPECIFICACIONES
Col 1 – 5 : En toda especificación se usa para números de secuencia.
Col 6 : Tipo de especificación, por ejemplo H, F, I, O, etc.
Col 7 : En toda especificación puede contener * para designar comentario.
Todas las especificaciones de un mismo tipo se procesan juntas y deben seguir
un orden:
1. Una especificación H
2. Una o más especificaciones F (descripción de archivos)
3. Las especificaciones que se requieran de acuerdo con el orden en que se
definen en el siguiente cuadro.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CONCEPTOS DE RPG - ESPECIFICACIONES
• H : Las especificaciones de control o cabecera proporcionan información sobre la
generación del programa y la ejecución del programa compilado
• F : Las especificaciones de descripción de archivo definen todos los archivos del
programa
• E : Las especificaciones adicionales describen todas la matrices y tablas e
indican cómo han sido inicializadas.
• D: Las especificaciones D sirven para definir stand-alone fields, constantes,
estructuras de datos, arreglos y matrices, y data aras.
• I: Las especificaciones de entrada describen estructuras de datos, constantes con
nombre, registros y campos en los archivos de entrada e indican cómo utiliza el
programa los registros y los campos.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CONCEPTOS DE RPG - ESPECIFICACIONES
• L: Las especificaciones del contador de líneas indican la longitud de las líneas de
desbordamiento y la longitud de los formularios que se imprimirán en cada página
por cada archivo de impresión del programa.
• C: Las especificaciones de cálculo describen los cálculos que el programa debe
realizar e indican el orden en que se llevan a cabo. Pueden controlar determinadas
operaciones de entrada y de salida.
• O: Las especificaciones de salida describen los registros y los campos e indican
cuándo serán escritos por el programa.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CONCEPTOS DE RPG – NOMBRES SIMBOLICOS
Identifica en forma exclusiva una entidad dentro de un programa:
• Matrices
• Constantes
• Constantes con nombre
• Estructuras de datos
• Campos y subcampos
• Archivos
• Etiquetas
• EXCPT (reg. Salida excepción)
• KLIST (lista campos de clave)
• PLIST (lista de parámetros)
• Subrutinas
• Tablas
• Nombres de registros
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CONCEPTOS DE RPG – NOMBRES SIMBOLICOS
Reglas de programación:
• Primer carácter debe ser alfabético. Incluye $, # y @.
• Los restantes caracteres deben ser alfabéticos o numéricos y
formar parte de los caracteres válidos del RPG/400.
• El nombre tiene que estar ajustado a la izquierda en la entrada
de la hoja de especificaciones.
• Puede haber blancos en la entrada pero no intercalados en el
nombre.
• Un nombre simbólico no puede ser una palabra reservada del
RPG/400.
• Se recomienda que los nombres simbólicos tengan un máximo de 15
caracteres.
• Los nombres simbólicos deben ser exclusivos.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
DIRECTIVAS DE COMPILADOR
• Las siguientes directivas permiten definir opciones que el compilador
utilizará en el proceso de creación de los objetos ejecutables:
• /TITLE - Información de cabecera
• /EJECT - Especificaciones posteriores en nueva página
• /SPACE – Espaciado de líneas en listado de compilador
• /COPY - Insertar registros de otros archivos
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CONCEPTOS DE RPG
Como en todo proceso de construcción en sistemas, antes de elaborar un
programa debe establecer el porqué lo creará:
• Defina la salida que necesita
• Defina el proceso (algoritmo) que producirá la salida
• Defina las entradas que se requieren
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
COMPILACIÓN DE UN PROGRAMA RPG
• EL compilador RPG/400 proporciona parte de la lógica de un programa, la cual se conoce como
ciclo del programa o ciclo lógico. El ciclo del programa son una serie de pasos en secuencia
por los que pasa el programa para cada registro leído.
• Los archivos primarios (identificados mediante una P en la posición 16 de las especificaciones
de descripción de archivos) y secundarios (identificados mediante una S en la misma posición)
indican que la entrada está controlada por el ciclo del programa.
• La primera y última vez que un programa pasa por el ciclo del RPG/400 difiere algo del ciclo
normal. Antes de que se lea el primer registro por primera vez a través del ciclo, el programa
resuelve los par metros que se le han transferido, graba los registros condicionados por el
indicador 1P (primera página) y procesa las operaciones de salida de detalle o de cabecera que
no tengan indicadores de condicionamiento.
• La última vez que un programa pasa por el ciclo, cuando no hay más registros disponibles, se
activan el indicador LR (último registro) y los indicadores L1 a L9 (nivel de control). Se imprimen
las tablas y las estructuras del área de datos y el programa finaliza.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
INDICADORES
Definición:
• Un indicador es una variable que se representa con una entrada de dos caracteres que
se define en una sentencia.
• Puede presentar dos diferentes estados:
o Activo (1 - ON)
o Desactivo (0 - OFF)
• Es el resultado de una operación o
• Se utiliza para condicionar o controlar el proceso de una operación.
• Un indicador que se ha definido previamente, puede utilizarse entonces para
condicionar operaciones de cálculo y de salida.
• El programa RPG establece y restaura algunos indicadores en momentos específicos
durante el ciclo del programa.
• Todos los indicadores a excepción de: 1P, KA a KN, KP a KY, pueden activarse o
colocarse en estado ON con su respectiva instrucción.
• Todos los indicadores a excepción de: MR y 1P, pueden desactivarse o colocarse en
estado OFF con su respectiva instrucción.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Desbordamiento
Desbordamiento:
Un indicador de desbordamiento se define mediante una entrada en las posiciones
33 y 34 de las especificaciones de descripción de archivos hoja F para un archivo
definido de impresora.
Se activa, cuando el programa detecta que se va a imprimir la primera página (1P)
del informe o cuando detecta que se encuentra en la última línea de la página
correspondiente o punto de desbordamiento (overflow).
Indicadores validos de desbordamiento:
OA a OG
OV
01 a 99
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Desbordamiento
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Identificación Registro
Indicadores de registro:
Un indicador identificativo de registro se define mediante una entrada en las
posiciones 19 y 20 de las especificaciones de entrada de la hoja I y se activa
cuando se selecciona el tipo de registro correspondiente dentro del proceso.
Las entradas de indicador de registro validas son 01 a 99.
01-99
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Identificación Registro
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
INombarchSeNOIrPos1NCCPos2NCCPos3NCC.PDesdA+++DCampo+L1M1FrP1NeC
I*El indicador identificativo de registro 01 se activa si el registro
I*que se lee contiene una S en la posición 1 o una A en la posición 1.
IINPUT1 NS 01 1 CS
I OR 1 CA
I 1 25 CPO1
I* El indicador identificativo de registro 02 se activa si el registro
I* que se lee contiene XYZA en las posiciones 1 a 4.
I NS 02 1 CX2 CY3 CZ
I AND 4 CA
I 1 15 CPOA
I 16 20 CPOB
I* El indicador identificativo de registro 95 se activa si cualquier
I* registro que se lee no cumple los requisitos para los indicadores
I* identificativos de registro 01 ó 02.
I NS 95
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Identificación Registro
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
INombarchSeNOIrPos1NCCPos2NCCPos3NCC.PDesdA+++DCampo+L1M1FrP1NeC
I*
I* Para un archivo descrito externamente, el indicador identificativo
I* de registro 10 se activa si se lee el registro REGART y el indicador
I* identificativo de registro 20 se activa si se leen los registros
I* REGVEN o REGCOM.
IREGART 10
IREGVEN 20
IREGCOM 20
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Nivel de Control
Indicadores de nivel de control:
Un indicador de nivel de control, se define mediante una entrada en las
posiciones 59 y 60 de las especificaciones de entrada de la hoja I y designan un
campo de control. Se puede utilizar para condicionar las operaciones de cálculo y
de salida. Las entradas de indicador de nivel de control validas son L1 a L9.
Un indicador de nivel de control designa un campo de entrada como campo de
control. Cuando se lee un campo de control, los datos del campo de control se
comparan con los datos del mismo campo de control del registro precedente. Si
los datos son distintos, se produce una ruptura de control y se activa el indicador
de nivel de control asignado al campo de control.
Estos indicadores, pueden emplearse también para condicionar la impresión de
totales (último registro de un grupo de control) o la impresión de detalle (primer
registro de un grupo de control). Los indicadores de nivel de control se
desactivan antes de que se lea el siguiente registro.
L1-L9
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Nivel de Control
Indicadores de nivel de control:
Los indicadores de nivel de control están jerarquizados en orden de importancia,
siendo L1 el inferior y L9 el superior. Se activan todos los indicadores de nivel
inferiores cuando se activa un indicador de nivel superior como resultado de una
ruptura de control. Sin embargo, los indicadores de nivel inferiores sólo pueden
usarse en el programa si se han definido. Por ejemplo, si se activa L8 debido a
una ruptura de control, se activan también L1 a L7.
El indicador LR (último registro) se activa cuando los archivos de entrada están
en el fin de archivo. LR se considera el indicador de nivel más alto y hace que se
activen L1 a L9.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Nivel de Control
*...1....+....2....+....3....+....4....+....5....+....6....+....7.
INombarchSeNOIrPos1NCCPos2NCCPos3NCC.PDesdA+++DCampo+L1M1FrP1NeC
I* En este ejemplo, se definen los indicadores de nivel de control
I* para tres campos. Los nombres de los campos de control (DIVSON,
I* DEPT, NUMEMP) indican su importancia relativa.
I* La división (DIVSON) es el grupo más importante.
I* Se le da el indicador de nivel de control utilizado más alto (L3).
I* El departamento (DEPT) va por debajo de la división; se le asigna
I* L2. El campo de empleado (NUMEMP) tiene asignado el indicador de
I* nivel de control más bajo (L1).
I*
IREGEMP 10
I
NUMEMP L1
I
DIVSON L3
I
DEPT L2
CL1 L1TOT ADD L2TOT L2TOT 50
CL2 L2TOT ADD LRTOT LRTOT 50
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Control Dividido
Indicadores de control dividido:
Los indicadores de nivel de control están jerarquizados en orden de importancia,
siendo L1 el inferior y L9 el superior. Se activan todos los indicadores de nivel
inferiores cuando se activa un indicador de nivel superior como resultado de una
ruptura de control. Sin embargo, los indicadores de nivel inferiores sólo pueden
usarse en el programa si se han definido. Por ejemplo, si se activa L8 debido a
una ruptura de control, se activan también L1 a L7.
El indicador LR (último registro) se activa cuando los archivos de entrada están
en el fin de archivo. LR se considera el indicador de nivel más alto y hace que se
activen L1 a L9.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Control Dividido
Indicadores de control dividido:
Se forma un campo de control dividido cuando se asigna más de un campo en un
registro de entrada al mismo indicador de nivel de control.
En un archivo descrito en el programa, el programa combina los campos que tienen el
mismo indicador de nivel de control en el orden indicado en las especificaciones de
entrada y se tratan como un solo campo de control.
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
INombarchSeNOIrPos1NCCPos2NCCPos3NCC.PDesdA+++DCampo+L1M1FrP1NeCe
IMASTER 01
I 28 31 NUMCLI L4
I 15 20 NUMCTA L4
I 50 52 NUMREG L4
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Control Dividido
Indicadores de control dividido:
En un archivo descrito externamente, los campos que tienen el mismo indicador de
nivel de control se combinan en el orden en el que se han descrito los campos en
las especificaciones de descripción de datos (DDS) y no en el orden en el que se
han especificado los campos en las especificaciones de entrada.
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
INombarchSeNOIrPos1NCCPos2NCCPos3NCC.PDesdA+++DCampo+L1M1FrP1NeCe
NUMREG L3
NUMDTO L3
NUMEMP L3
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Campo
Indicadores de campo:
Un indicador de campo se define mediante una entrada en las posiciones 65 y 66,
67 y 68 ó 69 y 70 de las especificaciones de entrada.
Los indicadores de campo válidos son:
01-99
Puede utilizar un indicador de campo para determinar si el elemento de una matriz
o el campo especificado es mayor que cero, menor que cero, cero o blanco.
Las posiciones 65 a 68 son válidas únicamente para campos numéricos; las
posiciones 69 y 70 son válidas para campos numéricos o de tipo carácter.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Resultantes
Indicadores Resultantes:
Un indicador resultante se define mediante una entrada en las posiciones 54 a 59
de las especificaciones de cálculo hoja C. El propósito de los indicadores
resultantes depende del código de operación especificado en las posiciones 28 a
32.
Por ejemplo, pueden utilizarse indicadores resultantes para probar el campo del
resultado después de una operación aritmética, para identificar una condición de
registro no encontrado, para indicar que se ha producido una condición de
excepción/error en una operación de archivo o para informar de la existencia de
una condición de fin de archivo.
Los indicadores resultantes válidos son:
01-99
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Resultantes
Indicadores Resultantes:
Puede especificar indicadores resultantes en tres lugares (posiciones 54-55, 56-57
y 58-59) de las especificaciones de cálculo hoja C. Las posiciones en las que se
define el indicador resultante determinan la condición que ha de compararse.
En la mayoría de casos, cuando se procesa un cálculo, los indicadores resultantes
se desactivan y si se cumple la condición especificada por un indicador
resultante, se activa ese indicador. Sin embargo, hay algunas excepciones a esta
regla, especialmente "LOKUP (Buscar)" , "SETOF (Desactivar)" y "SETON
(Activar)" .
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Resultantes
C* Se utilizan dos indicadores resultantes para probar las diferentes
C* condiciones de una operación de substracción. Estos indicadores
C* se utilizan para condicionar los cálculos que deben procesarse
C* para un trabajo de nóminas. El indicador 10 se activa si las
C* horas trabajadas (HRSTRB) son más de 40 y entonces se utiliza
C* para condicionar todas las operaciones necesarias para calcular
C* el pago de las horas extras. Si el indicador 20 no está activado
C* (el empleado ha trabajado 40 horas o más), se calcula la paga
C* normal basada en una semana de 40 horas.
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C RSTRB SUB 40 HRSEXT30 1020
C*
C N20 TARPAG MULT 40 PAG 62H
C 10 HRSEXT MULT TAREXT PGAEXT62H
C 10 PGAEXT ADD PAY PAG
C*
C* Si el indicador 20 está activado (el empleado ha trabajado
C* menos de 40 horas), se calcula la paga basada en una semana de
C* menos de 40 horas.
C 20 TARPAG MULT HRSTRB PAG
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: No definidos
Indicadores No Definidos en las especificaciones del RPG/400:
No todos los indicadores que pueden usarse como indicadores de
condicionamiento en un programa en RPG/400 se definen en las hojas de
especificaciones. Los indicadores externos (U1 a U8) se definen mediante un
mandato CL o mediante un programa anterior en RPG/400.
Los indicadores internos (1P, LR, MR, y RT) se definen por medio del propio ciclo
del programa RPG/400.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Registro Coincidente
Indicadores de registro coincidente:
El indicador de registro coincidente (MR) está asociado con las entradas de campo de
comparación M1 a M9. Sólo puede utilizarse en un programa cuando hay campos de
comparación definidos en el archivo primario y en un archivo secundario como mínimo.
El indicador MR se activa cuando todos los campos de comparación en un registro de un
archivo secundario coinciden con todos los campos de comparación en un archivo primario.
Permanece activado durante el proceso completo de ambos registros, primario y secundario.
Se desactiva cuando se han ejecutado todos los cálculos de totales, salida de totales y
desbordamiento para los registros.
En tiempo de detalle, MR indica siempre el estado de coincidencia del registro que acaba de
seleccionarse para su proceso; en tiempo de totales, refleja el estado de coincidencia del
registro anterior. Si todos los registros del archivo primario coinciden con todos los registros
del archivo secundario, el indicador MR está siempre activado.
Utilice el indicador MR como indicador de relación registro-campo, o como indicador de
condicionamiento en las especificaciones de cálculo o en las especificaciones de salida, para
indicar las operaciones que han de efectuarse únicamente cuando coincidan los registros. No
puede especificarse el indicador MR como indicador resultante.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Tecla de Función
Indicadores de tecla de función:
Puede utilizar los indicadores de tecla de función en un programa que contenga un dispositivo
WORKSTN si se especifican las teclas de función correspondientes en las especificaciones de
descripción de datos (DDS).
Las teclas de función se especifican en las DDS con la palabra clave CFxx o CAxx.
Los indicadores de tecla de función corresponden a las teclas de función 1 a 24. El indicador
de tecla de función KA corresponde a la tecla de función 1, KB a la tecla de función 2 . . . KY a
la tecla de función 24.
Los indicadores de tecla de función que se activan pueden utilizarse después para condicionar
operaciones de cálculo o de salida. Los indicadores de tecla de función pueden desactivarse
mediante la operación SETOF.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Referenciados
Indicadores a los que se les hace referencia como datos:
Un método alternativo de hacer referencia y de manejar los indicadores del RPG/400 es el
proporcionado por las palabras reservadas del RPG/400 *IN e *INxx.
*IN es una matriz predefinida de 99 elementos de tipo carácter de una posición que
corresponden a los indicadores 01 a 99. Los elementos de la matriz deben contener solamente
los valores de caracteres '0' (cero) o '1' (uno).
La especificación de la matriz *IN o de elemento de la matriz de índice variable *IN,xx como un
campo en un registro de entrada, como un campo de resultado o como factor 1 en una
operación PARM define los indicadores 01 a 99 para su utilización en el programa.
Las operaciones o referencias para una matriz de elementos únicos son válidas con la matriz
*IN, con la excepción de que *IN no se puede especificar como subcampo en una estructura de
datos, como campo de resultado de una operación PARM ni en una operación SORTA.
El campo *INxx es un campo predefinido de caracteres de una posición en el que xx es
cualquiera de los indicadores. La especificación del campo *INxx o del elemento de la matriz
de índice fijo *IN,n (en el que n = 1 - 99) .
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Referenciados
Indicadores a los que se les hace referencia como datos:
Recuerde las reglas siguientes al trabajar con la matriz *IN, con el elemento de matriz *IN,xx o
con el campo *INxx:
• Al mover un carácter '0' (cero) u *OFF a cualquiera de estos campos, se desactiva el
indicador correspondiente.
• Al mover un carácter '1' (uno) u *ON a cualquiera de estos campos, se activa el indicador
correspondiente.
• No mueva ningún valor que no sea '0' (cero) o '1' (uno) a *INxx.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Referenciados
Indicadores a los que se les hace referencia como datos:
C* La subrutina SUB1 utiliza los indicadores 61 a 68. Antes de
C* procesar la subrutina, se salva el estado de estos indicadores
C* utilizados en el programa principal. (Suponga que los indicadores
C* se desactivan al principio de la subrutina.) Después de procesar
C* la subrutina, los indicadores toman su estado original.
C*
C*
C MOVEA*IN,61 SAV8 8 SAVE 61-68
C EXSR SUB1
C MOVEASAV8 *IN,61 RESTORE 61-68
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
TIPOS DE INDICADORES: Referenciados
Indicadores a los que se les hace referencia como datos:
C*
C* Un campo de código (CODG) contiene un valor numérico de 1 a 5 y
C* se utiliza para establecer los indicadores 71 a 75. Los cinco
C* indicadores están desactivados. El campo X se calcula sumando 70
C* al campo CODG. El campo X se utiliza entonces como el índice en la
C* matriz *IN. Después, las diferentes subrutinas se utilizan en
C* función del estado de los indicadores 71 a 75.
C*
C MOVEA'00000' *IN,71 SET OFF 71-75
C 70 ADD CODG X 30 X=IND TO SETON
C MOVE *ON *IN,X SETON ONE 71/75
C 71 EXSR CODG1
C 72 EXSR CODG2
C 73 EXSR CODG3
C 74 EXSR CODG4
C 75 EXSR CODG5
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CICLO DEL RPG
Un programa RPG-III o RPG/400 puede estar formado por:
• Un archivo primario el cual es procesado por el sistema de forma secuencial sin
requerir definir operaciones de apertura y lectura ya que esto lo hace
automáticamente el sistema operativo.
• y de forma opcional uno o varios archivos secundarios
• Sólo archivos controlados en cálculo
• Una combinación de un archivo primario y uno o más archivos controlados en
cálculo
• Ningún archivo
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CICLO DEL RPG
COMPANIA COLOMBIANA S.A.
20001/07/22 REGISTRO DE ENTRADAS A CAJA PAG: 1
ZONA CUENTA DETALLE FACTURA FECHA VALOR PAGO
DESCUENTO
9 99999 XXXXXXXXX 999999 AAMMDD $.$$$.$$$,$$ $$.$$$.$$$,$$
9 99999 XXXXXXXXX 999999 AAMMDD $.$$$.$$$,$$ $$.$$$.$$$,$$
9 99999 XXXXXXXXX 999999 AAMMDD $.$$$.$$$,$$ $$.$$$.$$$,$$
TOTAL ZONA $.$$$.$$$,$$ $$.$$$.$$$,$$
9 99999 XXXXXXXXX 999999 AAMMDD $.$$$.$$$,$$ $$.$$$.$$$,$$
9 99999 XXXXXXXXX 999999 AAMMDD $.$$$.$$$,$$ $$.$$$.$$$,$$
9 99999 XXXXXXXXX 999999 AAMMDD $.$$$.$$$,$$ $$.$$$.$$$,$$
TOTAL ZONA $.$$$.$$$,$$ $$.$$$.$$$,$$
9 99999 XXXXXXXXX 999999 AAMMDD $.$$$.$$$,$$ $$.$$$.$$$,$$
9 99999 XXXXXXXXX 999999 AAMMDD $.$$$.$$$,$$ $$.$$$.$$$,$$
9 99999 XXXXXXXXX 999999 AAMMDD $.$$$.$$$,$$ $$.$$$.$$$,$$
TOTAL ZONA $.$$$.$$$,$$ $$.$$$.$$$,$$
TOTAL CIA $$.$$$.$$$,$$ $$.$$$.$$$,$$
CABECERA
Salida de detalle por 1P ,
rompimiento de control y
overflow
Salida de Totales por
rompimiento L1
Salida de Totales por
rompimiento L1
Salida de Totales por
rompimiento L1
Salida de Totales
Por LR
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
CICLO DEL RPG
Salida cabecera
(1P) y detalleApaga *In(xx) de
registros (hoja I) y
de control (*Lx *MR)
Lectura registro
(Hoja C) @
Si es Eof encienda el *InLr y
salte a cálculos de totales
(Hoja C = Lx y LR)
@
Activa el *Inxx de la
hoja I que indica
registro leído @
Cálculo de
Totales
Activa los *Lx
de la hoja I
@Salida de
Totales
Verifica si
es *InLR
Final
Inicio
Ejecuta
overflow (OV)
Ejecuta cálculos de
detalle
Mueve los datos al área de
trabajo y activa/desactiva
*In(xx) @ Ciclo del RPG
@ Lo ejecuta el programador
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
ESPECIFICACIONES DE CABECERA
H - Cabecera
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i30 December 2017
ESPECIFICACIONES DE CABECERA
En la versión IV de RPG el formato es libre en la especificación H.
Las palabras clave más usadas son:
• DATEDIT(formato {separador}): especifica el formato default para campos de
archivo tipo fecha (Date). Los formatos pueden ser *DMY, *MDY y *YMD. El
separador default es ‘/’. Si se desea blanco se debe colocar “&”.
• OPTION(*{NO}SRCSTMT *{NO}DEBUGIO): SRCSTMT evita que el
compilador reenumere las instrucciones. El default es NO.
*{NO}DEBUGIO. Si no se especifica, en el debug se inserta un break para cada
campo de una operación I/O. Si se especifica sólo se hace un break en la
operación de I/O.
• DATFMT(*ISO): Para campos tipo Date. El estandar en *ISO
La especificación H mínima recomendada es:
H DATEDIT(*YMD) DATFMT(*ISO) OPTION(*NODEBUGIO)
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Ingeniero Giovanny Guillen Bustamante
PMP Certified
IBM Certified Specialist
SCRUM MASTER Certified
ITIL Foundation Certified
E-mail: [email protected]
Gracias