SlideShare una empresa de Scribd logo
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 December 2017
TIPOS DE INDICADORES: Desbordamiento
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 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 i
30 December 2017
CICLO DEL RPG
Salida cabecera
(1P) y detalle
Apaga *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 i
30 December 2017
ESPECIFICACIONES DE CABECERA
H - Cabecera
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
30 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: giovanny_guillen_b@Hotmail.com
Gracias

Más contenido relacionado

La actualidad más candente

Archivos de pantallas tipo window
Archivos de pantallas tipo windowArchivos de pantallas tipo window
Archivos de pantallas tipo window
STYU23
 
121267067 archivos-fisicos-as400
121267067 archivos-fisicos-as400121267067 archivos-fisicos-as400
121267067 archivos-fisicos-as400rusocaliente
 
As400
As400As400
Mq conceptos y programacion as400
Mq conceptos y programacion as400Mq conceptos y programacion as400
Mq conceptos y programacion as400
Giovanny Guillen
 
Operación y control
Operación y controlOperación y control
Operación y control
Giovanny Guillen
 
Utilisacion del utilitario strssda as400
Utilisacion del utilitario strssda as400Utilisacion del utilitario strssda as400
Utilisacion del utilitario strssda as400
jhosuetorresrodriguez
 
Programacion RPG - Gestión de Errores y Excepciones
Programacion RPG - Gestión de Errores y ExcepcionesProgramacion RPG - Gestión de Errores y Excepciones
Programacion RPG - Gestión de Errores y Excepciones
Giovanny Guillen
 
Manejo de errores as400
Manejo de  errores as400Manejo de  errores as400
Manejo de errores as400
jhosue Torres
 
Seguridad del ibm i as400
Seguridad del ibm i as400Seguridad del ibm i as400
Seguridad del ibm i as400
Giovanny Guillen
 
COMANDOS AS400
COMANDOS AS400COMANDOS AS400
COMANDOS AS400iangracia
 
Taller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeriesTaller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeries
Xavier Espinoza
 
Mainframe JCL Part - 1
Mainframe JCL Part - 1Mainframe JCL Part - 1
Mainframe JCL Part - 1
janaki ram
 
Operator overloading
Operator overloadingOperator overloading
Operator overloading
ramya marichamy
 
B.sc CSIT 2nd semester C++ Unit2
B.sc CSIT  2nd semester C++ Unit2B.sc CSIT  2nd semester C++ Unit2
B.sc CSIT 2nd semester C++ Unit2
Tekendra Nath Yogi
 
Packages - PL/SQL
Packages - PL/SQLPackages - PL/SQL
Packages - PL/SQL
Esmita Gupta
 
Programa de seguridad informática
Programa de seguridad informáticaPrograma de seguridad informática
Programa de seguridad informáticaPedro Cobarrubias
 
Control statements
Control statementsControl statements
Control statements
raksharao
 
Linux System Programming - File I/O
Linux System Programming - File I/O Linux System Programming - File I/O
Linux System Programming - File I/O
YourHelper1
 

La actualidad más candente (20)

Archivos de pantallas tipo window
Archivos de pantallas tipo windowArchivos de pantallas tipo window
Archivos de pantallas tipo window
 
121267067 archivos-fisicos-as400
121267067 archivos-fisicos-as400121267067 archivos-fisicos-as400
121267067 archivos-fisicos-as400
 
As400
As400As400
As400
 
Mq conceptos y programacion as400
Mq conceptos y programacion as400Mq conceptos y programacion as400
Mq conceptos y programacion as400
 
Operación y control
Operación y controlOperación y control
Operación y control
 
Utilisacion del utilitario strssda as400
Utilisacion del utilitario strssda as400Utilisacion del utilitario strssda as400
Utilisacion del utilitario strssda as400
 
Programacion RPG - Gestión de Errores y Excepciones
Programacion RPG - Gestión de Errores y ExcepcionesProgramacion RPG - Gestión de Errores y Excepciones
Programacion RPG - Gestión de Errores y Excepciones
 
Manejo de errores as400
Manejo de  errores as400Manejo de  errores as400
Manejo de errores as400
 
Seguridad del ibm i as400
Seguridad del ibm i as400Seguridad del ibm i as400
Seguridad del ibm i as400
 
COMANDOS AS400
COMANDOS AS400COMANDOS AS400
COMANDOS AS400
 
Taller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeriesTaller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeries
 
Mainframe JCL Part - 1
Mainframe JCL Part - 1Mainframe JCL Part - 1
Mainframe JCL Part - 1
 
Operator overloading
Operator overloadingOperator overloading
Operator overloading
 
B.sc CSIT 2nd semester C++ Unit2
B.sc CSIT  2nd semester C++ Unit2B.sc CSIT  2nd semester C++ Unit2
B.sc CSIT 2nd semester C++ Unit2
 
Packages - PL/SQL
Packages - PL/SQLPackages - PL/SQL
Packages - PL/SQL
 
6.2.5 puntos funcion
6.2.5   puntos funcion6.2.5   puntos funcion
6.2.5 puntos funcion
 
Programa de seguridad informática
Programa de seguridad informáticaPrograma de seguridad informática
Programa de seguridad informática
 
Cobol
CobolCobol
Cobol
 
Control statements
Control statementsControl statements
Control statements
 
Linux System Programming - File I/O
Linux System Programming - File I/O Linux System Programming - File I/O
Linux System Programming - File I/O
 

Similar a Programación RPG - Conceptos

1390229945 843 _lenguaje_c-introduccion
1390229945 843 _lenguaje_c-introduccion1390229945 843 _lenguaje_c-introduccion
1390229945 843 _lenguaje_c-introduccionJair BG
 
Estructuras de un programa
Estructuras de un programaEstructuras de un programa
Estructuras de un programa
Tensor
 
Computación II
Computación  IIComputación  II
Computación II
Zugehy Escalante Issele
 
C(++) programacion en c y c++
C(++)   programacion en c y c++C(++)   programacion en c y c++
C(++) programacion en c y c++
Leandro Baldomero Callupe Santiago
 
Unidad III Lenguaje Ensamblador (2).pptx
Unidad III Lenguaje Ensamblador (2).pptxUnidad III Lenguaje Ensamblador (2).pptx
Unidad III Lenguaje Ensamblador (2).pptx
HaroldCuevasPablus
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
Cecilia Loeza
 
Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic
oskarjgf
 
Programación en c
Programación en cProgramación en c
Programación en c
Sam Paredes Chaves
 
Libro digital de programación
Libro digital de programaciónLibro digital de programación
Libro digital de programaciónEstefy Sanchez
 
Drivers
DriversDrivers
Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfazXavi Flores
 
Unidadi. lenguajes de interfaz
Unidadi.   lenguajes de interfazUnidadi.   lenguajes de interfaz
Unidadi. lenguajes de interfaz
LuiS YmAY
 
Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.
Damian Chuncho
 
lenguaje de programación 1
lenguaje de programación 1lenguaje de programación 1
lenguaje de programación 1
agustin rojas
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
DeisyVilchez
 
Lenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesLenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesKarina Arguedas Ruelas
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
zeta2015
 

Similar a Programación RPG - Conceptos (20)

1390229945 843 _lenguaje_c-introduccion
1390229945 843 _lenguaje_c-introduccion1390229945 843 _lenguaje_c-introduccion
1390229945 843 _lenguaje_c-introduccion
 
Unmsm02 2008
Unmsm02 2008Unmsm02 2008
Unmsm02 2008
 
Estructuras de un programa
Estructuras de un programaEstructuras de un programa
Estructuras de un programa
 
Computación II
Computación  IIComputación  II
Computación II
 
C(++) programacion en c y c++
C(++)   programacion en c y c++C(++)   programacion en c y c++
C(++) programacion en c y c++
 
Unidad III Lenguaje Ensamblador (2).pptx
Unidad III Lenguaje Ensamblador (2).pptxUnidad III Lenguaje Ensamblador (2).pptx
Unidad III Lenguaje Ensamblador (2).pptx
 
Lenguaje C (pdf)
Lenguaje C (pdf)Lenguaje C (pdf)
Lenguaje C (pdf)
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
C
C C
C
 
Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic
 
Programación en c
Programación en cProgramación en c
Programación en c
 
Libro digital de programación
Libro digital de programaciónLibro digital de programación
Libro digital de programación
 
Drivers
DriversDrivers
Drivers
 
Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfaz
 
Unidadi. lenguajes de interfaz
Unidadi.   lenguajes de interfazUnidadi.   lenguajes de interfaz
Unidadi. lenguajes de interfaz
 
Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.Entrada y salida de información; Escritura de algoritmos.
Entrada y salida de información; Escritura de algoritmos.
 
lenguaje de programación 1
lenguaje de programación 1lenguaje de programación 1
lenguaje de programación 1
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesLenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y Componentes
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 

Más de Giovanny Guillen

Curso java desde cero nivel i - modulo v
Curso java desde cero   nivel i - modulo vCurso java desde cero   nivel i - modulo v
Curso java desde cero nivel i - modulo v
Giovanny Guillen
 
Curso java desde cero nivel i - modulo iv
Curso java desde cero   nivel i - modulo ivCurso java desde cero   nivel i - modulo iv
Curso java desde cero nivel i - modulo iv
Giovanny Guillen
 
Curso java desde cero nivel i - modulo iii
Curso java desde cero   nivel i - modulo iiiCurso java desde cero   nivel i - modulo iii
Curso java desde cero nivel i - modulo iii
Giovanny Guillen
 
Curso java desde cero nivel i - modulo ii
Curso java desde cero   nivel i - modulo iiCurso java desde cero   nivel i - modulo ii
Curso java desde cero nivel i - modulo ii
Giovanny Guillen
 
Curso java desde cero nivel i - modulo i
Curso java desde cero   nivel i - modulo iCurso java desde cero   nivel i - modulo i
Curso java desde cero nivel i - modulo i
Giovanny Guillen
 
Cobol training
Cobol trainingCobol training
Cobol training
Giovanny Guillen
 
Libro Ingeniería del Software
Libro Ingeniería del SoftwareLibro Ingeniería del Software
Libro Ingeniería del Software
Giovanny Guillen
 
Portafolio de proyectos
Portafolio de proyectosPortafolio de proyectos
Portafolio de proyectos
Giovanny Guillen
 
Organizational values
Organizational valuesOrganizational values
Organizational values
Giovanny Guillen
 
Ingenieria requerimientos
Ingenieria requerimientosIngenieria requerimientos
Ingenieria requerimientos
Giovanny Guillen
 
Earn value
Earn valueEarn value
Earn value
Giovanny Guillen
 
Gestión de la Capacidad en Fábricas de Software
Gestión de la Capacidad en Fábricas de SoftwareGestión de la Capacidad en Fábricas de Software
Gestión de la Capacidad en Fábricas de Software
Giovanny Guillen
 
Fabricas de software
Fabricas de softwareFabricas de software
Fabricas de software
Giovanny Guillen
 
Template project status report
Template project status reportTemplate project status report
Template project status report
Giovanny Guillen
 
Gestion de Proyectos - Gestion de Riesgos
Gestion de Proyectos - Gestion de RiesgosGestion de Proyectos - Gestion de Riesgos
Gestion de Proyectos - Gestion de Riesgos
Giovanny Guillen
 
La ejecución estratégica
La ejecución estratégicaLa ejecución estratégica
La ejecución estratégica
Giovanny Guillen
 
La transición del producto del proyecto
La transición del producto del proyectoLa transición del producto del proyecto
La transición del producto del proyecto
Giovanny Guillen
 
Gerencia de Proyectos - Responsabilidades del Sponsor
Gerencia de Proyectos - Responsabilidades del SponsorGerencia de Proyectos - Responsabilidades del Sponsor
Gerencia de Proyectos - Responsabilidades del Sponsor
Giovanny Guillen
 
Lograr el éxito del proyecto
Lograr el éxito del proyectoLograr el éxito del proyecto
Lograr el éxito del proyecto
Giovanny Guillen
 
Agile project management
Agile project managementAgile project management
Agile project management
Giovanny Guillen
 

Más de Giovanny Guillen (20)

Curso java desde cero nivel i - modulo v
Curso java desde cero   nivel i - modulo vCurso java desde cero   nivel i - modulo v
Curso java desde cero nivel i - modulo v
 
Curso java desde cero nivel i - modulo iv
Curso java desde cero   nivel i - modulo ivCurso java desde cero   nivel i - modulo iv
Curso java desde cero nivel i - modulo iv
 
Curso java desde cero nivel i - modulo iii
Curso java desde cero   nivel i - modulo iiiCurso java desde cero   nivel i - modulo iii
Curso java desde cero nivel i - modulo iii
 
Curso java desde cero nivel i - modulo ii
Curso java desde cero   nivel i - modulo iiCurso java desde cero   nivel i - modulo ii
Curso java desde cero nivel i - modulo ii
 
Curso java desde cero nivel i - modulo i
Curso java desde cero   nivel i - modulo iCurso java desde cero   nivel i - modulo i
Curso java desde cero nivel i - modulo i
 
Cobol training
Cobol trainingCobol training
Cobol training
 
Libro Ingeniería del Software
Libro Ingeniería del SoftwareLibro Ingeniería del Software
Libro Ingeniería del Software
 
Portafolio de proyectos
Portafolio de proyectosPortafolio de proyectos
Portafolio de proyectos
 
Organizational values
Organizational valuesOrganizational values
Organizational values
 
Ingenieria requerimientos
Ingenieria requerimientosIngenieria requerimientos
Ingenieria requerimientos
 
Earn value
Earn valueEarn value
Earn value
 
Gestión de la Capacidad en Fábricas de Software
Gestión de la Capacidad en Fábricas de SoftwareGestión de la Capacidad en Fábricas de Software
Gestión de la Capacidad en Fábricas de Software
 
Fabricas de software
Fabricas de softwareFabricas de software
Fabricas de software
 
Template project status report
Template project status reportTemplate project status report
Template project status report
 
Gestion de Proyectos - Gestion de Riesgos
Gestion de Proyectos - Gestion de RiesgosGestion de Proyectos - Gestion de Riesgos
Gestion de Proyectos - Gestion de Riesgos
 
La ejecución estratégica
La ejecución estratégicaLa ejecución estratégica
La ejecución estratégica
 
La transición del producto del proyecto
La transición del producto del proyectoLa transición del producto del proyecto
La transición del producto del proyecto
 
Gerencia de Proyectos - Responsabilidades del Sponsor
Gerencia de Proyectos - Responsabilidades del SponsorGerencia de Proyectos - Responsabilidades del Sponsor
Gerencia de Proyectos - Responsabilidades del Sponsor
 
Lograr el éxito del proyecto
Lograr el éxito del proyectoLograr el éxito del proyecto
Lograr el éxito del proyecto
 
Agile project management
Agile project managementAgile project management
Agile project management
 

Último

Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 

Último (6)

Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 

Programación RPG - Conceptos

  • 1. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i
  • 2. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 3. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 4. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 5. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 6. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 7. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 8. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 9. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 10. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 11. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 12. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 13. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 14. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 15. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 16. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 December 2017 TIPOS DE INDICADORES: Desbordamiento
  • 17. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 18. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 19. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 20. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 21. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 22. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 23. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 24. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 25. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 26. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 27. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 28. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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)" .
  • 29. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 30. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 31. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 32. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 33. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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) .
  • 34. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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.
  • 35. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 36. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 37. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 38. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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
  • 39. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 December 2017 CICLO DEL RPG Salida cabecera (1P) y detalle Apaga *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
  • 40. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 December 2017 ESPECIFICACIONES DE CABECERA H - Cabecera
  • 41. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i 30 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)
  • 42. 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: giovanny_guillen_b@Hotmail.com Gracias