programación rpg - conceptos

42
Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i

Upload: giovanny-guillen

Post on 23-Jan-2018

159 views

Category:

Software


14 download

TRANSCRIPT

Page 1: Programación RPG - Conceptos

Ingeniero Giovanny Guillén Bustamante

Especialista Certificado PMP / IBM i

Page 2: Programación RPG - Conceptos

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.

Page 3: Programación RPG - Conceptos

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.

Page 4: Programación RPG - Conceptos

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.

Page 5: Programación RPG - Conceptos

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

Page 6: Programación RPG - Conceptos

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.

Page 7: Programación RPG - Conceptos

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.

Page 8: Programación RPG - Conceptos

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.

Page 9: Programación RPG - Conceptos

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

Page 10: Programación RPG - Conceptos

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.

Page 11: Programación RPG - Conceptos

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

Page 12: Programación RPG - Conceptos

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

Page 13: Programación RPG - Conceptos

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.

Page 14: Programación RPG - Conceptos

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.

Page 15: Programación RPG - Conceptos

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

Page 16: Programación RPG - Conceptos

Ingeniero Giovanny Guillén Bustamante

Especialista Certificado PMP / IBM i30 December 2017

TIPOS DE INDICADORES: Desbordamiento

Page 17: Programación RPG - Conceptos

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

Page 18: Programación RPG - Conceptos

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

Page 19: Programación RPG - Conceptos

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

Page 20: Programación RPG - Conceptos

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

Page 21: Programación RPG - Conceptos

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.

Page 22: Programación RPG - Conceptos

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

Page 23: Programación RPG - Conceptos

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.

Page 24: Programación RPG - Conceptos

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

Page 25: Programación RPG - Conceptos

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

Page 26: Programación RPG - Conceptos

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.

Page 27: Programación RPG - Conceptos

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

Page 28: Programación RPG - Conceptos

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)" .

Page 29: Programación RPG - Conceptos

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

Page 30: Programación RPG - Conceptos

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.

Page 31: Programación RPG - Conceptos

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.

Page 32: Programación RPG - Conceptos

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.

Page 33: Programación RPG - Conceptos

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) .

Page 34: Programación RPG - Conceptos

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.

Page 35: Programación RPG - Conceptos

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

Page 36: Programación RPG - Conceptos

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

Page 37: Programación RPG - Conceptos

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

Page 38: Programación RPG - Conceptos

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

Page 39: Programación RPG - Conceptos

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

Page 40: Programación RPG - Conceptos

Ingeniero Giovanny Guillén Bustamante

Especialista Certificado PMP / IBM i30 December 2017

ESPECIFICACIONES DE CABECERA

H - Cabecera

Page 41: Programación RPG - Conceptos

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)

Page 42: Programación RPG - Conceptos

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