SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
OPERACIONES BASICAS
PROGRAMACION RPG
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Las operaciones aritméticas son:
• ADD (Añadir)
• DIV (Dividir)
• MULT (Multiplicar)
• SUB (Restar)
• Z-ADD (Establecer a cero y sumar)
• Z-SUB (Borrar a cero y restar. )
• QRT (Raíz cuadrada)
• XFOOT (Sumar elementos de una matriz)
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Factor 1 Operador Factor 2 Resultado
Z-ADD
ADD
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
C* A = 1,00 G = 2.77 Z = 0,00
C* B = 10,0 H = 70
C* C = 32 J = ,6
C* D = -20 K = 25
C* E = 6, L = 1,0, 1,7, -1,1
C* F = 10,0 V = 0,00
Factor 1 Operador Factor 2 Resultado
ADD 1 A = 2,00
Z-ADD 1 A = 1,00
B ADD C V = 42,00
SQRT K Z = 5
RPG
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
DName+++++++++++ETDsFrom+++To/L+++++++IDc. Keywords +++++++
D F8 s 8F Inz(-1)
D I10 s 10I 0 Inz(-123)
D P7 s 7P 3 Inz(-1234,567)
*
CL0N01Factor1+++++++Opcode&ExtExtended- factor2+++++++++++++++
C Eval F8 = %Abs(F8)
C Eval I10 = %Abs(I10 - 321)
C Eval P7 = %Abs(P7)
* El valor de "F8" es 1.
* El valor de "I10" es 444.
•El valor de "P7" es 1234.567.
Operador Extended
Eval Resultado =%ABS(Expresión_numérica)
Eval Resultado = A + B
%ABS (Valor Absoluto de
Expresión)
Formato: Resultado = %ABS(
Expresión_numérica )
Uso: En Hoja de cálculo “C”.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Las operaciones de movimiento son :
• MOVE (Mover)
• MOVEL (Mover por la izquierda)
• MOVEA (Mover Matriz)
Las operaciones de movimiento transfieren todo o parte del factor 2 al
campo de resultado. El factor 2 permanece sin cambios. El factor 1 debe
estar en blanco.
Los caracteres de relleno (p) son blanco para caracteres, 0 para
numérico y '0' para indicador.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
MOVEL: empieza a mover los caracteres de izquierda
a derecha del factor 2 al campo de resultado.
MOVE (Mover) : Hay varias maneras en
que se pueden mover los datos con move. A
continuación se dan algunos ejemplos:
Caso1:
Cuando ambos campos son de tipo carácter y el campo de resultado es más largo que el factor 2
ANTES
Factor2= F I L E
Resultado= S O F T W A R E
DESPUES
Resultado= S O F T F I L E
ANTES
Factor2= F I L E
Resultado= S O F T W A R E
DESPUES
Resultado= F I L E W A R E
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Caso 2
Cuando ambos campos son de tipo numérico y el campo de resultado es más largo que el factor 2
ANTES
Factor2= 7 8 9
Resultado= 1 2 3 4 5 6
DESPUES
Resultado= 1 2 3 7 8 9
ANTES
Factor2= 1 2 3 4
Resultado= 5 6 7 8 9 0 1 2
DESPUES
Resultado= 1 2 3 4 9 0 1 2
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
MOVEA: Mueve todos los campos de un arreglo a una variable 
Por ejemplo: si tenemos un arreglo llamado NAME de longuitud 10 tipo caracter y se quiere mover
a una variable llamada alumno de la misma longuitud y tipo.
NAME
Factor1 OpCode Factor2 Resultad Len Dec
MOVEA NAME Alumno 10
Al hacer el MOVEA quedaría:
Alumno= EDGAR OMAR
E D G A R O M A R
1 2 3 4 5 6 7 8 9 10
R
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Método MOVE
* La variable “Nombre” tendrá 'Juan Pérez'.
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..
*
C Move(P) 'Juan‘ Nombre 10
C Move(P) 'Pérez' Apellido 10
C Eval Nombre = %Trim(Nombre) +' '+ %Trim(Apellido)
** (P) relleno con blancos
Método EVAL
* La variable “Nombre” tendrá 'Juan Pérez'.
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++
D Nombre S 10A Inz(‘Juan’)
D Apellido S 10A Inz(‘Pérez’)
**
C Eval Nombre = %Trim(Nombre) +' '+ %Trim(Apellido)
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• WHxx Cuando sea verdadero seleccionar
• OTHER En caso contrario Seleccionar
• IFxx Si
• ELSE Si no hacer
• ANDxx y
• ORxx O
• ENDyy Finalizar un grupo • DO Hacer
• DOUxx Hacer hasta
• DOWxx Hacer mientras
• CASxx Bifurque Condicional a Subrutina
• CABxx Llamada Condicional a etiqueta(TAG)
• ITER Iterar
• LEAVE Salir de un Grupo Do
• SELEC Comenzar un grupo de selección
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
DO : Inicia y procesa un grupo de operaciones y se llevan acabo tantas veces
como se especifique en el contador o variable.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
6 DO 20 X
Operación 1
Operación 2
ENDDO
DO UNTIL(HACER HASTA) : La operación DOUxx permite el proceso de un grupo
de cálculos una o más veces basándose en el resultado de comparar/xx el factor
1 y el factor 2. La operación DOUxx, se ejecuta al menos una vez ya que la
comparación de la condición(xx) se hace al final(ENDDO). Se procesan las
instrucciones en primer lugar y luego se comprueba la condición.
CL0N01N02N03Factor1+++Oper+++++Factor2+++ResultLonDHMaMeIgComentarios+++
Z-ADD 0 X
X DOUEQ 20
Operación 1
Operación 2
ENDDO
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
DO WHILE (HACER MIENTRAS) : La operación DOWxx , ejecuta un grupo de
operaciones mientras se cumpla la condición xx.
CL0N01N02N03Factor1+++Oper+++++++Factor2+++ResultLonDHMaMeIgComentarios+++
Var1 DOWXX 20
Operación 1
Operación n
ENDDO
Factor1 - campo que se va a comparar
XX. - tipo de comparación, pueden ser: EQ,NE,GE,GT,LE,LT
Factor2. - variable o valor con el que se comparara.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Las operaciones de subrutina de RPG/400 son:
• EXSR invocar subrutina
• BEGSR Comienzo de Subrutina
– Bloque de instrucciones
– …..
• ENDSR Fin de subrutina
• CASxx Llamada Condicional a Subrutina: selección de la subrutina a ejecutar,
si se cumple la comparación entre el factor1 y el factor2.
– CAMPOA CASGECAMPOB SUBR01
• CABxx: permite hacer una comparación entre el factor1 y el factor2; si esta
comparación resulta verdadera el programa mandara el control al TAG
asociado con la etiqueta especificada en el campo resultante.
– CAMPO1 CABXXCAMPO2 ETIQUETA (TAG)
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• IF(SI) : Una operación IFxx permite el proceso de un grupo de cálculos
basándose en el resultado de comparar el factor 1 y el factor 2. La operación
ELSE(opcional), permite especificar un grupo de cálculos que se han de
procesar si la condición IFxx no se cumple. El final de un grupo IFxx lo indica
ENDIF.
C* En el ejemplo siguiente, el indicador 25 se activar si la condiciones
CAMPOA IGUAL A CAMPOB se cumple
C* si la condición no se cumple (ELSE), se apagará
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C CAMPOA IFGT CAMPOB
C SETON 25
C ELSE
C SETOF 25
C ENDIF
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• SELECT : (Comenzar un grupo de selección). se utiliza para procesar de
manera condicional una o varias secuencias alternativas de operaciones.
C SELECT
C WHEN X = 1
C Z-ADD A B
C MOVE C D
* Sequence 1
C WHEN ((Y = 2) AND (X < 10))
* Sequence 2
C WHEQ2
* Sequence 3
C OTHER
* Sequence 4
C ENDSL
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Las operaciones ANDxx y ORxx se utilizan con las operaciones DOUxx,
DOWxx, WHxx, e IFxx para especificar una Condición más compleja que la
comparación de una sola pareja formada por el factor 1 y el factor 2. La
operación ANDxx tiene un orden de precedencia más alto que la operación
ORxx.
C* En el ejemplo siguiente, el indicador 25 se activa únicamente si las dos
primeras condiciones son verdaderas o la
C* tercera condición es verdadera.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C CAMPOA IFGT CAMPOB
C CAMPOA ANDGECAMPOC
C CAMPOA ORLT CAMPOD
C SETON 25
C ENDIF
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
La operación COMP compara el factor 1 con el factor 2. El factor 1 y el factor 2
pueden contener un literal, una constante con nombre, un nombre de campo,
un nombre de tabla, un elemento de matriz, una estructura de datos o una
constante figurativa. El factor 1 y el factor 2 deben ser ambos de caracteres o
ambos numéricos. Como resultado de la comparación, los indicadores se
activan de este modo:
• Mayor: (54-55) El factor 1 es mayor que el factor 2.
• Menor: (56-57) El factor 1 es menor que el factor 2.
• Igual: (58-59) El factor 1 es igual al factor 2.
• Debe especificar al menos un indicador resultante en las posiciones 54 a 59.
C* Los valores de campo iniciales son:
C* CMPA = 100,00, CMPB = 105,00, CMPC = 100,00, CMPD = ABC, CMPE = ABCDE
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C* El indicador 12 se activa; los indicadores 11 y 13 se desactivan.
C CMPA COMP CMPB 111213
C* El indicador 15 se activa; el indicador 14 y 16 se desactivan.
C CMPA COMP CMPB 141516
C* El indicador 19 se activa; el indicador 17 se desactiva.
C CMPA COMP CMPC 171819
C* El indicador 21 se activa; los indicadores 20 y 22 se desactivan
C CMPD COMP CMPE 202122
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• LEAVE: La operación LEAVE interrumpe el flujo de control de forma prematura y
lo transfiere a la sentencia que sigue a la operación ENDDO de un grupo
estructurado iterativo. La operación ITER hace que se produzca
inmediatamente el bucle de iteración siguiente.
• Puede utilizar LEAVE en un bucle DO, DOUxx, o DOWxx para transferir el
control inmediatamente desde el bucle más interior a la sentencia que sigue a la
operación ENDDO del bucle más interior. La utilización de LEAVE para salir de
un grupo DO no incrementa el índice.
• En bucles anidados, LEAVE hace que el control se transfiera "hacia afuera" un
nivel solamente. LEAVE no se permite fuera de un grupo DO.
• ITER: La operación "ITER (Iterar)" es similar a la operación LEAVE; sin embargo,
La operación ITER transfiere el control desde dentro de un grupo DO a la
sentencia ENDDO del grupo DO. Puede utilizarse en bucles DO, DOUxx, y
DOWxx para transferir el control inmediatamente a una sentencia ENDDO de
bucle.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
CL0N01N02N03Factor1+++Oper+++Factor2+++ResultLonDHMaMeIgComentarios+++
C CMPA DOUEQ CMPB Bucle exterior
C :
C NUM DOWLT10 Bucle interior
C *IN01 IFEQ *ON
C LEAVE
C ENDIF
C EXSR PROC1
C *IN12 IFEQ *OFF
C ITER
C ENDIF
C EXSR PROC2
C ENDDO ENDDO interior
C Z-ADD 20 RSLT
C ENDDO ENDDO exterior
C CMPA DOUEQ CMPB
C NUM DOWLT10
C *IN01 IFEQ *ON
C SETON 99
C LEAVE
C ENDDO
C ENDDO
C 99 LEAVE
C ENDDO
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Las operaciones de serie son las que se pueden utilizar con campos de caracteres.
• CAT Concatenar Dos Series de Caracteres
• CHECK Comprobar Caracteres
• CHEKR Comprobar Caracteres hacia Atrás
• SCAN Explorar serie de caracteres
• SUBST Subserie
• XLATE Convertir
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
La operación CAT concatena dos series de caracteres para formar una sola.
CAT concatena la serie de caracteres especificada en el factor 2 al final de la
serie de caracteres especificada en el factor 1 y lo coloca en el campo de
resultado.
El factor 2 puede contener una serie de caracteres y puede contener el número
de blancos a insertar entre las series concatenadas. Su formato es la serie de
caracteres, seguida por dos puntos y seguidos por el número de blancos.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
C* CAT concatena APLL a NOMB e inserta un blanco como se especifica
C* en el factor 2. TEMP contiene 'Sr.bSerra'.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C MOVE 'Sr. ' NOMB 6
C MOVE 'Serra ' APLL 6
C NOMB CAT APLL:1 TEMP 9
C* El ejemplo siguiente muestra la utilización de CAT sin el factor 1.
C* CMP2 es una serie de 9 caracteres. Antes de la concatenación, contiene
C* contiene 'ABCbbbbbb' CMP1 contiene 'XYZ'. Después de la
C* concatenación CMP2 contiene 'ABCbbXYZb'.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C MOVEL'ABC' CMP2 9 P
C MOVE 'XYZ' CMP1 3
C CAT FLD1:2 CMP2
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Las operaciones CHECK y CHEKR verifican que cada caracter del factor 2 (Base) esté
entre los caracteres indicados en ell factor 1. CHECK verifica de izquierda a derecha y
CHEKR de derecha a izquierda.
• Cada caracter de la serie base se compara con los caracteres del factor 1. Si existe
una coincidencia para un caracter del factor 2 en el factor 1, se verifica el siguiente
caracter de la serie base. Si no se encuentra una coincidencia, se coloca un valor
entero en el campo de resultado para indicar la posición del caracter incorrecto.
• Puede especificar una posición inicial en el factor 2, separándola de la serie base por
dos puntos. La posición de comienzo es optativa y toma 1 como valor por omisión, el
valor del campo de resultado es relativa a la posición más a la izquierda de la serie
base, sin tener en cuenta la posición de comienzo.
• La operación detiene la comprobación cuando encuentra el primer caracter incorrecto o
cuando se encuentra el final de la serie base.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
C*
C* Como el factor 1 es un blanco, CHECK indica la posición del primer
C* caracter que no es un blanco. Si SERIE contiene 'bbbDELl',
C* NUM contendrá el valor 4.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C ' ' CHECKSERIE NUM 20
I* Después del ejemplo siguiente, N=6 y el indicador de encontrado 90
I* está activo. Como la posición de comienzo es 2, el primer caracter
I* no numérico encontrado es '.'.
I '0123456789' C DIGITS
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C MOVE '$2000.' SALARY
C DIGITOS CHECKSALARIO:2 N 90
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C* Como el factor 1 es un caracter blanco, CHEKR indica la posición
C* del primer caracter que no es blanco. Esta utilización de CHEKR
C* le permite determinar la longitud de una serie. Si SERIE contiene
C* 'ABCDEF ', NUM contendrá el valor 6.
C ‘ ‘ CHEKRSERIE NUM 20
I* Después de ejemplo siguiente, N=1 y el indicador de encontrado 90
I* se activa. Como la posición de comienzo es 5, la operación empieza
I* con el 0 más a la derecha y el primer caracter no numérico
I* encontrado es '$'.
I '0123456789' C DIGITS
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C*
C MOVE '$2000.' SALARY 6
C DIGITOS CHEKRSALARIO:5 N 90
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación SCAN explora una serie de caracteres (serie base) que se
encuentra en el factor 2 para ver si hay una subserie (serie de comparación)
contenida en el factor 1.
• La parte de posición de comienzo del factor 2 debe ser numérica sin posiciones
decimales, si no se especifica una posición de comienzo, se utiliza el valor 1.
• El campo de resultado contiene el valor numérico de la posición situada más a la
izquierda de la serie de comparación en la serie base, si se encuentra.
• Puede especificarse un indicador resultante en las posiciones 58 y 59 para que
se active si se encuentra la serie que se está buscando.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
C* La operación SCAN busca la subserie 'ABC' empezando en la posición
C* 1 del factor 2; 3 se coloca en el campo de resultado.
C* El indicador 90 se activa porque se encuentra la serie. Como no se
C* ha especificado posición de comienzo, se utiliza 1 por omisión.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C 'ABC' SCAN 'XCABCD' RESULT 90
C* Esta operación SCAN explora la serie del factor 2 empezando en
C* la posición 2 para buscar una aparición de la serie del factor 1
C* de longitud 4. Como en CAMPO1 no se encuentra "HERR", INT se
C* establece en cero y el indicador 90 se desactiva.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C MOVE 'PRUEBA’ CAMPO1 7
C Z-ADD 2 X 10
C MOVEL'HERR’ CAMPO2 5
C CAMPO2:4 SCAN CAMPO1:X INT 20 90
C*
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación SUBST extrae una serie de caracteres especificada de una serie de
caracteres de base, empezando en la ubicación especificada en el factor 2 para la
longitud especificada en el factor 1 y coloca esta subserie en el campo de
resultado.
• Si no se especifica el factor 1, se utiliza la longitud de la serie desde la posición
de comienzo. El factor 1 puede contener el valor de la longitud de la serie que se
va a extraer de la serie especificada en el factor 2. Debe ser numérico sin
posiciones decimales.
• Si no se cumple alguna o ninguna de estas condiciones, no se efectuar la
operación y si se ha especificado un indicador de error en las posiciones 56 y 57,
se activará.
• El factor 2 debe contener la serie de caracteres base o la serie de caracteres
base seguida por ':', seguidos por la posición de comienzo. El campo de resultado
debe ser de caracteres. Si la subserie es más larga que el campo especificado en
el campo de resultado, la subserie se truncar por la derecha.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
C* La operación SUBST extrae la subserie del factor 2 empezando en la
C* posición 3 para una longitud 2. El valor 'CD' se sitúa en el
C* campo de resultado RESULT. El indicador 90 no se activa porque
C* no se ha producido ningún error.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C Z-ADD3 T 20
C MOVEL'ABCDEF'STRING10
C 2 SUBSTSTRING:T RESULT 90
C* En esta operación SUBST, la longitud es mayor que la longitud de
C* la serie menos la posición de comienzo más 1. Como resultado, se
C* activa el indicador 90 y el campo de resultado no se modifica.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C MOVE 'ABCDEF' STRING 6
C Z-ADD4 T 10
C 5 SUBSTSTRING:T RESULT 90
C
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• Los caracteres de la serie origen (factor 2) se convierten de acuerdo con las
series De y A (ambas en el factor 1) y se sitúan en un campo receptor
(campo de resultado). Los caracteres origen que coinciden con la serie De se
convierten a los caracteres correspondientes de la serie A.
• XLATE comienza a convertir la serie origen en la ubicación especificada en el
factor 2 y continúa caracter a caracter, de izquierda a derecha.
• Se PUEDE activaR un indicador en las posiciones 56-57 si se produce un
error en la operación.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C* En el Siguiente ejemplo, se convierte el blanco de NUMERO en '-'. El resultado
C* en RESULT será '999-9999'.
C MOVE '999 9999' NUMERO8
C ' ':'-' XLATENUMERO RESULT 8
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• Los archivos se utilizan a modo de enlace entre un programa y el dispositivo
utilizado para E/S.
• Para que un programa efectúe cualquier operación de E/S, debe identificar la
descripción del archivo o de los archivos a los que el programa hace referencia.
• Esta sección describe cómo utilizar archivos en programas RPG.
• Las operaciones de archivo se pueden utilizar para archivos descritos en el
programa y para archivos descritos externamente (F o E respectivamente en la
posición 19 de las especificaciones de descripción de archivo).
• Cuando se utiliza un archivo descrito externamente con ciertas operaciones de
archivo, puede especificarse en el factor 2 un nombre de formato de registro,
en lugar de un nombre de archivo. Así, el código de operación del proceso
recupera y/o sitúa el archivo en un formato de registro del tipo especificado de
acuerdo a las reglas del código de operación de cálculo utilizado.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
Los códigos de operación son:
• SETGT Situar en mayor que
• SETLL Situar límite inferior
• READ Leer un registro(siguiente)
• READP Leer registro anterior
• READE Leer clave igual
• REDPE Leer anterior igual
• READC Leer siguiente registro modificado
• CHAIN Recuperar al Azar desde un Archivo
• UPDATE Modificar registro existente
• WRITE Crear nuevos registros
• DELETE Suprimir registro
• OPEN Abrir Archivo para Proceso
• CLOSE Cerrar Archivos
• EXFMT Grabar/a continuación leer formato
• EXCPT Salida en tiempo de cálculo)
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• la operación SETLL sitúa un archivo en el siguiente registro que tiene una clave o
número relativo de registro que es mayor que o igual al argumento de búsqueda
(clave o número relativo de registro) especificado en el factor 1.
• El factor 2 es necesario y debe ser un nombre de archivo o el nombre de formato
de registro únicamente con un archivo descrito externamente.
• Los indicadores resultantes reflejan el estado de la operación.
• Si se ha especificado un indicador en las posiciones 54 y 55, éste se activa
cuando el argumento de búsqueda sea mayor que la clave o el número relativo
de registro más altos del archivo.
• Si se ha especificado un indicador en las posiciones 56 y 57, éste se activar
cuando se produzca un error durante la ejecución de la operación.
• Si se especifica un indicador en las posiciones 58 y 59, éste se activar cuando
esté presente un registro cuya clave o número relativo de registro sea igual al
argumento de búsqueda.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• Pueden utilizarse constantes figurativas para situar el archivo, *LOVAL sitúa el archivo de
forma que la primera lectura recupera el registro con la clave más baja, En la mayoría de
casos, *HIVAL sitúa el archivo de forma que una operación *READP recupera el último
registro del archivo.
C* Todos los registros 101 de ARCPED se tienen que imprimir. El valor
C* 101 se ha situado con anterioridad en PEDIDO. La operación SETLL
C* sitúa el archivo en el primer registro 101. Como hay registros 101,
C* el indicador 55 se activa y la operación GOTO no se procesa.
CL0N01 Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C PEDIDO SETLLARCPED 55 101 PRESNTE
C N55 GOTO NOTFND
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación SETGT sitúa un archivo en el siguiente registro con una clave o
número relativo de registro que es mayor que la clave o número relativo de
registro especificado en el factor 1.
• El factor 2 es necesario y debe ser un nombre de archivo o el nombre de formato
de registro únicamente con un archivo descrito externamente.
• Puede especificar un indicador resultante en las posiciones 54 y 55 para que se
se active si no se encuentra ningún registro con una clave o número relativo de
registro que sea mayor que el argumento de búsqueda especificado en el factor
1.
• Puede especificar cualquier indicador resultante válido en las posiciones 56 y 57
para que se active si se produce un error durante el proceso de la operación.
• Si la operación SETGT no es satisfactoria (condición de registro no encontrado),
el archivo se sitúa al final del archivo.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C* Este ejemplo muestra cómo situar el archivo de modo que READ lea
C* el siguiente registro. El argumento de búsqueda, KEY, especificado
C* para la operación SETGT tiene un valor de 98; por lo tanto, SETGT
C* sitúa el archivo antes del primer registro del formato de archivo
C* ARCHA que tiene un valor de campo de clave mayor que 98. El archivo
C* se sitúa antes del primer registro con un valor de clave de 99 o mayor.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C KEY SETGTARCHA
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
C* Este ejemplo muestra la utilización de *LOVAL con la operación SETGT
C* para sitúar el archivo antes del primer registro de un archivo en orden
C* ascendente.
C *LOVAL SETGTREGDA MAYOR QUE
C* Este ejemplo muestra la utilización de *HIVAL con la operación SETGT
C* para sitúar el archivo después del último registro de un archivo en orden
C* ascendente.
C *HIVAL SETGTREGDB MAYOR QUE
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• la operación READ lee el registro, al que se señala actualmente (siguiente).
• El factor 2 debe contener el nombre de un archivo o un nombre de formato de
registro ( archivo descrito externamente).
• El campo de resultado puede contener el nombre de una estructura de datos en la
que el registro se lee si el archivo es un archivo descrito en el programa.
• Puede especificar un indicador en las posiciones 56 y 57 para que se active si la
operación READ no se completa con éxito. ( Si se produce un error)
• Puede especificar un indicador en las posiciones 58 y 59 para señalar si se ha
producido el fin de archivo en la operación READ.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
FUNCION %EOF
EOF% Condición de Fin de archivo. Esta función devuelve '1‘ ‘ON’, si la
operación más reciente sobre el archivo terminó en un final de archivo.
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C IF %EOF
C XXXX
C ENDIF
Para leer todo el archivo
C DOW Not %EOF(Archivo)
C XXXX
C READ REGDA
C ENDIF
C* Este ejemplo muestra la utilización de READ. La operación SETGT con *LOVAL
C* sitúa el archivo antes del primer registro de un archivo en orden
C* ascendente. La operación READ lee el primer registro
C *LOVAL SETGTREGDA MAYOR QUE
C READ REGDA 64 LEER SIGUIENTE
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación READP lee el registro anterior de una archivo
• El factor 2 debe contener el nombre de un archivo o formato de registro que se
ha de leer.
C* La operación READP lee el registro anterior de ARCHA. El
C* indicador 71 se activa si se encuentra el comienzo del archivo.
C* Cuando el indicador 71 está activado, el programa se bifurca
C* a la etiqueta BOF especificada en la operación GOTO.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C READPARCHA 71 BOF
C 71 GOTO BOF PRINC. ARCHIVO
C*
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
C* Este ejemplo muestra la utilización de READP con *HIVAL en la operación
C* SETGT para situar el archivo después del último registro de un archivo en orden
C* ascendente. La operación READP lee el último registro
C *HIVAL SETGTREGDB MAYOR QUE
C READPREGDB 64LEER ELTIMO
Para leer todo el archivo en sentido contrario.
C DOW Not %EOF(Archivo)
C XXXX
C READP REGDAB
C ENDDO
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación READE recupera el siguiente registro si la clave del registro
coincide con el argumento de búsqueda. Si la clave del registro no coincide con
el argumento de búsqueda, el indicador que debe especificarse en las posiciones
58 y 59 se activa y el registro no se devuelve al programa.
• El factor 1, el argumento de búsqueda, identifica el registro a recuperar. Puede
ser un nombre de campo, un literal, una constante con nombre o una constante
figurativa o un nombre KLIST en el factor 1 para un archivo descrito
externamente.
C* La operación READE recupera el siguiente registro del archivo
C* ARCHA y compara su clave con el argumento de búsqueda, KEYCMP.
C* El indicador 55 se activa si KEYCMP no es igual a la clave del
C* registro leído o si se encuentra el fin de archivo.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C*
C KEYCMP READEARCHA 55 NO IGUAL
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación READC sólo se puede utilizar con un archivo WORKSTN descrito
externamente para obtener el siguiente registro modificado en un subarchivo.
• El factor 2 es necesario y debe ser el nombre de un formato de registro definido
como subarchivo por la palabra clave SFILE en las especificaciones de
descripción de archivo.
• Puede especificar un indicador resultante en las posiciones 56 y 57 para que se
active si se produce un error mientras la operación se está ejecutando.
• El indicador resultante de las posiciones 58 y 59 es necesario; se activa cuando
no hay màs registros modificados en el subarchivo.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación CHAIN recupera un registro desde un archivo) y coloca los datos del
registro en los campos de entrada.
• El factor 1, el argumento de búsqueda, debe contener la clave o el número
relativo de registro utilizado para recuperar el registro. Si el acceso es por clave,
el factor 1 puede ser un nombre de campo, una constante con nombre, una
constante figurativa o un literal o puede ser un nombre de "KLIST (Clave
Compuesta)" para un archivo descrito externamente.
• Si el acceso es por número relativo de registro, el factor 1 debe contener un literal
de enteros o un campo numérico con cero posiciones decimales.
• El factor 2 especifica el archivo o el nombre del formato de registro que ha de
leerse. Un nombre del formato de registro es válido, únicamente, con un archivo
descrito Externamente. Si el factor 2 es un nombre de formato de registro y el
acceso se realiza por clave, la operación CHAIN recupera el primer registro del
tipo de registro especificado cuya clave coincida con el argumento de búsqueda.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
C* La operación CHAIN recupera el primer registro del archivo,
C* ARCHX, que tiene un campo de clave con el mismo valor que el
C* argumento de búsqueda CLAV (factor 1).
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C CLAV CHAINARCHX 60 INDICADOR 60
C* SI NO SE ENCUENTRA
• Las posiciones 54 y 55 pueden n contener un indicador que se active si no hay
ningún registro del archivo que coincida con el argumento de búsqueda. Las
posiciones 56 y 57 pueden contener un indicador que se active si la operación
CHAIN no se completa satisfactoriamente. Las posiciones 58 y 59 deben estar en
blanco.
• FUNCION %FOUND: devuelve '1‘ ‘ON’, si la operación chain más reciente sobre el
archivo no encuentra registro con argumento de búsqueda.
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.
C IF %Found(ARCHX)
C XXXX
C ENDIF
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
C* Una clave completa con KLIST se utiliza para recuperar registros de los
C* archivos que tienen una clave compuesta. Si se encuentra un
C* registro del tipo especificado que tenga un campo de clave igual
C* al argumento de búsqueda, se procesan los cálculos condicionados por
C* registro hallado
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C*
C CLAV CHAINREG1 72 INDICADOR 72
C* SI NO SE ENCUENTRA
C CLAV KLIST
C KFLD CMP1
C KFLD CMP2
C*
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación UPDATE modifica el último registro recuperado para su proceso
desde un archivo o subarchivo de disco de actualización. No se debe ejecutar
ninguna otra operación en el archivo entre la operación de entrada que recupera
el registro y la operación UPDATE.
• El factor 2 debe contener el nombre de un archivo o formato de registro a
actualizar.
• Es necesario un nombre de formato de registro en el factor 2 con un archivo
descrito externamente.
• Puede especificar un indicador resultante en las posiciones 56 y 57 para que se
active si la operación UPDATE no se completa satisfactoriamente.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
FCHANGE IP E K DISK
FEMPMSTUF E K DISK
* Cuando se lee cada registro desde el archivo de entrada primario, CHANGE, se utiliza el numero de
empleado (ENUM) como el argumento de búsqueda para encadenar al registro correspondiente en el
archivo MSTEMP. *IN03 se activara si no se encuentra ningun registro correspondiente, esto ocurre
cuando se entra un ENUM en el registro CHGREC.
CL0N01 Factor1+++Opcode(E)+Factor2++Result++++++++Len++D+HiLoE
C ENUM CHAIN EMPREC 03
C 03 GOTO NEXT
C NNAME IFNE *BLANK
C MOVE NNAME ENAME
C ENDIF
C NTYPE IFNE *BLANKS
C MOVE NTYPE ETYPE
C ENDIF
C NNHRS IFNE *CERO
C MOVE NNHRS ENHRS
C ENDIF
C UPDATE EMPREC
C*
C NEXT TAG
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación WRITE graba un registro nuevo en un archivo.
• El factor 2 debe contener el nombre de un archivo. Es necesario un nombre de
formato de registro en el factor 2 con un archivo descrito externamente.
• Es necesario un nombre de archivo en el factor 2 con un archivo descrito en el
programa y el campo de resultado puede contener el nombre de una estructura de
datos.
• Las posiciones 56 y 57 pueden contener un indicador que se active si la operación
WRITE no se realiza satisfactoriamente.
• En una operación WRITE para un nombre de registro de subarchivo (SFILE),
puede especificar un indicador en las posiciones 58 y 59; se activa cuando se
llena el subarchivo.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C*
C* La operación WRITE graba los campos de la estructura de datos
C* DS1 en el archivo, ARCH1.
C*
C WRITEARCH1 DS1 A#ADIR REGISTRO
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación DELET suprime un registro de un archivo de base de datos.
• Este archivo debe ser un archivo de actualización (identificado mediante una U
en la posición 15 de las especificaciones de descripción de archivo).
• El registro suprimido no se puede recuperar.
• El registro debe haberse bloqueado mediante una operación de entrada previa
(por ejemplo, CHAIN o READ).
• El factor 1, que es el argumento de búsqueda, puede contener una clave o un
número relativo de registro que identifica el registro que se ha de suprimir.
• El factor 2 debe contener el nombre del archivo de actualización o el nombre de
un formato de registro del archivo del cual se ha de suprimir un registro.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación EXFMT es una combinación de una operación WRITE seguida de
READ para el mismo formato de registro.
• EXFMT únicamente es váida para un archivo WORKSTN definido como un
archivo combinado.
• El factor 2 debe contener el nombre del formato de registro a grabar y
después leer.
• Puede especificarse un indicador resultante en las posiciones 56 y 57 para
que se active si la operación EXFMT no se completa satisfactoriamente.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
• La operación OPEN abre el archivo especificado en el factor 2.
• La entrada del factor 2 no puede designarse como un archivo primario,
secundario o de tabla. Puede especificar un indicador resultante en las
posiciones 56 y 57 para que se active si la operación OPEN no es
satisfactoria.
• Debe haberse especificado UC (control del usuario) especificaciones de
descripción del archivo. (
• Si se abre un archivo y se cierra posteriormente en el programa mediante la
operación CLOSE, el programa puede volver a abrir el archivo.
• Cuando no se especifica UC, se abre el archivo al inicializar el programa.
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i
FNombarchIPEAF....LregLC1AIDePclaEDispos+......KSalidaEntradA....U1.
FEXCPTN OE DISCO UC
FARCHX I E DISCO
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C*
C* La operación OPEN explícita abre el archivo EXCPTN para su proceso
C* si el indicador 97 está activado y el indicador 98 desactivado.
C* Observe que el archivo EXCPTN de las especificaciones de descripción
C* de archivo tiene especificado UC en las posiciones 71 y 72.
CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++
C 97N98 OPENEXCPTN 99 99=NO
SATISFACTORIO
C 97N98N99 WRITEERREG
C* ARCHX se abre en la inicialización del programa. La operación
C* CLOSE explícita cierra ARCHX antes de que el control pase a RTNX.
C* RTNX u otro programa puede abrir y utilizar ARCHX. En retorno,
C* la operación OPEN vuelve a abrir el archivo. Como ARCHX se abre en
C* la inicialización del programa, no se especifica UC en las posiciones 71
C* y 72 de las especificaciones de descripción de archivo.
C CLOSEARCHX
C CALL 'RTNX'
C OPEN ARCHX
Ingeniero Giovanny Guillén Bustamante
Especialista Certificado PMP / IBM i

Más contenido relacionado

La actualidad más candente

Utilisacion del utilitario strssda as400
Utilisacion del utilitario strssda as400Utilisacion del utilitario strssda as400
Utilisacion del utilitario strssda as400jhosuetorresrodriguez
 
The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)Scott Wlaschin
 
Software omegaup
Software omegaupSoftware omegaup
Software omegaupRyoga Luis
 
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...Nicola Strappazzon C.
 
4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuarioLaura Folgado Galache
 
Manual do Aplicativo de Configuração Prisma F Henry - LojaTotalseg.com.br
Manual do Aplicativo de Configuração Prisma F Henry - LojaTotalseg.com.brManual do Aplicativo de Configuração Prisma F Henry - LojaTotalseg.com.br
Manual do Aplicativo de Configuração Prisma F Henry - LojaTotalseg.com.brLojaTotalseg
 
Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)Scott Wlaschin
 

La actualidad más candente (20)

RPGLE MINICOMPUTADORAS
RPGLE MINICOMPUTADORASRPGLE MINICOMPUTADORAS
RPGLE MINICOMPUTADORAS
 
As400
As400As400
As400
 
Utilisacion del utilitario strssda as400
Utilisacion del utilitario strssda as400Utilisacion del utilitario strssda as400
Utilisacion del utilitario strssda as400
 
Operación y control
Operación y controlOperación y control
Operación y control
 
The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)
 
Examen final de sql nadia
Examen final de sql nadiaExamen final de sql nadia
Examen final de sql nadia
 
Software omegaup
Software omegaupSoftware omegaup
Software omegaup
 
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
 
Ordenacion Burbuja
Ordenacion BurbujaOrdenacion Burbuja
Ordenacion Burbuja
 
Cuadro de herramientas y botones en visual basic
Cuadro de herramientas y botones en visual basicCuadro de herramientas y botones en visual basic
Cuadro de herramientas y botones en visual basic
 
Programas
Programas Programas
Programas
 
Tablas en HTML
Tablas en HTMLTablas en HTML
Tablas en HTML
 
Guía De Ejercicios Programación Web Básica
Guía De Ejercicios Programación Web BásicaGuía De Ejercicios Programación Web Básica
Guía De Ejercicios Programación Web Básica
 
Presentación JavaScript
Presentación JavaScriptPresentación JavaScript
Presentación JavaScript
 
4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario
 
Matrices pseint
Matrices   pseintMatrices   pseint
Matrices pseint
 
GRAMATICAS AMBIGUAS
GRAMATICAS AMBIGUASGRAMATICAS AMBIGUAS
GRAMATICAS AMBIGUAS
 
Manual do Aplicativo de Configuração Prisma F Henry - LojaTotalseg.com.br
Manual do Aplicativo de Configuração Prisma F Henry - LojaTotalseg.com.brManual do Aplicativo de Configuração Prisma F Henry - LojaTotalseg.com.br
Manual do Aplicativo de Configuração Prisma F Henry - LojaTotalseg.com.br
 
Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)Functional Programming Patterns (NDC London 2014)
Functional Programming Patterns (NDC London 2014)
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
 

Similar a Programacion RPG Operaciones

Practica pid labview
Practica pid labviewPractica pid labview
Practica pid labviewPablo Lopez
 
Electrónica digital: sistemas secuenciales maquina de estado
Electrónica digital: sistemas secuenciales maquina de estadoElectrónica digital: sistemas secuenciales maquina de estado
Electrónica digital: sistemas secuenciales maquina de estadoSANTIAGO PABLO ALBERTO
 
Manejo de bits
Manejo de bitsManejo de bits
Manejo de bitsUVM
 
Cuaderno de algebra
Cuaderno de algebraCuaderno de algebra
Cuaderno de algebraandogon
 
métodos de sintonización de controladores P, PI, PD, PID.
métodos de sintonización de  controladores P, PI, PD, PID.métodos de sintonización de  controladores P, PI, PD, PID.
métodos de sintonización de controladores P, PI, PD, PID.Alejandro Flores
 
Micc mej sept16_2010
Micc mej sept16_2010Micc mej sept16_2010
Micc mej sept16_2010Jair BG
 
16.ElReguladorPIDAnalisisycontrolautomatico.pdf
16.ElReguladorPIDAnalisisycontrolautomatico.pdf16.ElReguladorPIDAnalisisycontrolautomatico.pdf
16.ElReguladorPIDAnalisisycontrolautomatico.pdfDave274011
 
Micc mej feb18_2010_solucion
Micc mej feb18_2010_solucionMicc mej feb18_2010_solucion
Micc mej feb18_2010_solucionJair BG
 
Micc mej feb18_2010
Micc mej feb18_2010Micc mej feb18_2010
Micc mej feb18_2010Jair BG
 
Arduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoArduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoSANTIAGO PABLO ALBERTO
 
Tema 2 - Programación básica en C (III)
Tema 2  - Programación básica en C (III)Tema 2  - Programación básica en C (III)
Tema 2 - Programación básica en C (III)Pablo Haya
 
Micc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_solucMicc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_solucJair BG
 
eduardo hernandez investigacion 1
eduardo hernandez investigacion 1eduardo hernandez investigacion 1
eduardo hernandez investigacion 1guest79d55c9
 
Ejercicios condicionales simples
Ejercicios condicionales simplesEjercicios condicionales simples
Ejercicios condicionales simplesEcler Mamani Vilca
 
Ejercicios vectoriales con matlab
Ejercicios vectoriales con matlabEjercicios vectoriales con matlab
Ejercicios vectoriales con matlabjuank Vidal
 
Semana 5-Conceptualziación del lenguaje de programación C++
Semana 5-Conceptualziación del lenguaje de programación C++Semana 5-Conceptualziación del lenguaje de programación C++
Semana 5-Conceptualziación del lenguaje de programación C++luzgaray6
 
Semana 1-Conceptualziación del lenguaje d eprogramación C++
Semana 1-Conceptualziación del lenguaje d eprogramación C++Semana 1-Conceptualziación del lenguaje d eprogramación C++
Semana 1-Conceptualziación del lenguaje d eprogramación C++luzgaray6
 

Similar a Programacion RPG Operaciones (20)

Practica pid labview
Practica pid labviewPractica pid labview
Practica pid labview
 
Electrónica digital: sistemas secuenciales maquina de estado
Electrónica digital: sistemas secuenciales maquina de estadoElectrónica digital: sistemas secuenciales maquina de estado
Electrónica digital: sistemas secuenciales maquina de estado
 
Manejo de bits
Manejo de bitsManejo de bits
Manejo de bits
 
Cuaderno de algebra
Cuaderno de algebraCuaderno de algebra
Cuaderno de algebra
 
métodos de sintonización de controladores P, PI, PD, PID.
métodos de sintonización de  controladores P, PI, PD, PID.métodos de sintonización de  controladores P, PI, PD, PID.
métodos de sintonización de controladores P, PI, PD, PID.
 
Dual y primal
Dual y primalDual y primal
Dual y primal
 
Micc mej sept16_2010
Micc mej sept16_2010Micc mej sept16_2010
Micc mej sept16_2010
 
16.ElReguladorPIDAnalisisycontrolautomatico.pdf
16.ElReguladorPIDAnalisisycontrolautomatico.pdf16.ElReguladorPIDAnalisisycontrolautomatico.pdf
16.ElReguladorPIDAnalisisycontrolautomatico.pdf
 
Micc mej feb18_2010_solucion
Micc mej feb18_2010_solucionMicc mej feb18_2010_solucion
Micc mej feb18_2010_solucion
 
Micc mej feb18_2010
Micc mej feb18_2010Micc mej feb18_2010
Micc mej feb18_2010
 
Arduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoArduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con Arduino
 
Tema 2 - Programación básica en C (III)
Tema 2  - Programación básica en C (III)Tema 2  - Programación básica en C (III)
Tema 2 - Programación básica en C (III)
 
Micc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_solucMicc mejoramiento feb_28_2009_soluc
Micc mejoramiento feb_28_2009_soluc
 
eduardo hernandez investigacion 1
eduardo hernandez investigacion 1eduardo hernandez investigacion 1
eduardo hernandez investigacion 1
 
Ejercicios condicionales simples
Ejercicios condicionales simplesEjercicios condicionales simples
Ejercicios condicionales simples
 
Fisica matlab
Fisica matlabFisica matlab
Fisica matlab
 
Ejercicios vectoriales con matlab
Ejercicios vectoriales con matlabEjercicios vectoriales con matlab
Ejercicios vectoriales con matlab
 
Sia i cap4
Sia i cap4Sia i cap4
Sia i cap4
 
Semana 5-Conceptualziación del lenguaje de programación C++
Semana 5-Conceptualziación del lenguaje de programación C++Semana 5-Conceptualziación del lenguaje de programación C++
Semana 5-Conceptualziación del lenguaje de programación C++
 
Semana 1-Conceptualziación del lenguaje d eprogramación C++
Semana 1-Conceptualziación del lenguaje d eprogramación C++Semana 1-Conceptualziación del lenguaje d eprogramación C++
Semana 1-Conceptualziación del lenguaje d eprogramación C++
 

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 vGiovanny 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 ivGiovanny 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 iiiGiovanny 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 iiGiovanny 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 iGiovanny Guillen
 
Libro Ingeniería del Software
Libro Ingeniería del SoftwareLibro Ingeniería del Software
Libro Ingeniería del SoftwareGiovanny Guillen
 
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 ExcepcionesGiovanny 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 SoftwareGiovanny Guillen
 
Template project status report
Template project status reportTemplate project status report
Template project status reportGiovanny Guillen
 
Gestion de Proyectos - Gestion de Riesgos
Gestion de Proyectos - Gestion de RiesgosGestion de Proyectos - Gestion de Riesgos
Gestion de Proyectos - Gestion de RiesgosGiovanny Guillen
 
La ejecución estratégica
La ejecución estratégicaLa ejecución estratégica
La ejecución estratégicaGiovanny 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 proyectoGiovanny Guillen
 
Gerencia de Proyectos - Responsabilidades del Sponsor
Gerencia de Proyectos - Responsabilidades del SponsorGerencia de Proyectos - Responsabilidades del Sponsor
Gerencia de Proyectos - Responsabilidades del SponsorGiovanny 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
 
Seguridad del ibm i as400
Seguridad del ibm i as400Seguridad del ibm i as400
Seguridad del ibm i 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
 
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
 

Programacion RPG Operaciones

  • 1. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i OPERACIONES BASICAS PROGRAMACION RPG
  • 2. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i Las operaciones aritméticas son: • ADD (Añadir) • DIV (Dividir) • MULT (Multiplicar) • SUB (Restar) • Z-ADD (Establecer a cero y sumar) • Z-SUB (Borrar a cero y restar. ) • QRT (Raíz cuadrada) • XFOOT (Sumar elementos de una matriz)
  • 3. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i Factor 1 Operador Factor 2 Resultado Z-ADD ADD
  • 4. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i C* A = 1,00 G = 2.77 Z = 0,00 C* B = 10,0 H = 70 C* C = 32 J = ,6 C* D = -20 K = 25 C* E = 6, L = 1,0, 1,7, -1,1 C* F = 10,0 V = 0,00 Factor 1 Operador Factor 2 Resultado ADD 1 A = 2,00 Z-ADD 1 A = 1,00 B ADD C V = 42,00 SQRT K Z = 5 RPG
  • 5. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i DName+++++++++++ETDsFrom+++To/L+++++++IDc. Keywords +++++++ D F8 s 8F Inz(-1) D I10 s 10I 0 Inz(-123) D P7 s 7P 3 Inz(-1234,567) * CL0N01Factor1+++++++Opcode&ExtExtended- factor2+++++++++++++++ C Eval F8 = %Abs(F8) C Eval I10 = %Abs(I10 - 321) C Eval P7 = %Abs(P7) * El valor de "F8" es 1. * El valor de "I10" es 444. •El valor de "P7" es 1234.567. Operador Extended Eval Resultado =%ABS(Expresión_numérica) Eval Resultado = A + B %ABS (Valor Absoluto de Expresión) Formato: Resultado = %ABS( Expresión_numérica ) Uso: En Hoja de cálculo “C”.
  • 6. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i Las operaciones de movimiento son : • MOVE (Mover) • MOVEL (Mover por la izquierda) • MOVEA (Mover Matriz) Las operaciones de movimiento transfieren todo o parte del factor 2 al campo de resultado. El factor 2 permanece sin cambios. El factor 1 debe estar en blanco. Los caracteres de relleno (p) son blanco para caracteres, 0 para numérico y '0' para indicador.
  • 7. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i MOVEL: empieza a mover los caracteres de izquierda a derecha del factor 2 al campo de resultado. MOVE (Mover) : Hay varias maneras en que se pueden mover los datos con move. A continuación se dan algunos ejemplos: Caso1: Cuando ambos campos son de tipo carácter y el campo de resultado es más largo que el factor 2 ANTES Factor2= F I L E Resultado= S O F T W A R E DESPUES Resultado= S O F T F I L E ANTES Factor2= F I L E Resultado= S O F T W A R E DESPUES Resultado= F I L E W A R E
  • 8. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i Caso 2 Cuando ambos campos son de tipo numérico y el campo de resultado es más largo que el factor 2 ANTES Factor2= 7 8 9 Resultado= 1 2 3 4 5 6 DESPUES Resultado= 1 2 3 7 8 9 ANTES Factor2= 1 2 3 4 Resultado= 5 6 7 8 9 0 1 2 DESPUES Resultado= 1 2 3 4 9 0 1 2
  • 9. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i MOVEA: Mueve todos los campos de un arreglo a una variable  Por ejemplo: si tenemos un arreglo llamado NAME de longuitud 10 tipo caracter y se quiere mover a una variable llamada alumno de la misma longuitud y tipo. NAME Factor1 OpCode Factor2 Resultad Len Dec MOVEA NAME Alumno 10 Al hacer el MOVEA quedaría: Alumno= EDGAR OMAR E D G A R O M A R 1 2 3 4 5 6 7 8 9 10 R
  • 10. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i Método MOVE * La variable “Nombre” tendrá 'Juan Pérez'. CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.. * C Move(P) 'Juan‘ Nombre 10 C Move(P) 'Pérez' Apellido 10 C Eval Nombre = %Trim(Nombre) +' '+ %Trim(Apellido) ** (P) relleno con blancos Método EVAL * La variable “Nombre” tendrá 'Juan Pérez'. DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++ D Nombre S 10A Inz(‘Juan’) D Apellido S 10A Inz(‘Pérez’) ** C Eval Nombre = %Trim(Nombre) +' '+ %Trim(Apellido)
  • 11. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • WHxx Cuando sea verdadero seleccionar • OTHER En caso contrario Seleccionar • IFxx Si • ELSE Si no hacer • ANDxx y • ORxx O • ENDyy Finalizar un grupo • DO Hacer • DOUxx Hacer hasta • DOWxx Hacer mientras • CASxx Bifurque Condicional a Subrutina • CABxx Llamada Condicional a etiqueta(TAG) • ITER Iterar • LEAVE Salir de un Grupo Do • SELEC Comenzar un grupo de selección
  • 12. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i DO : Inicia y procesa un grupo de operaciones y se llevan acabo tantas veces como se especifique en el contador o variable. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ 6 DO 20 X Operación 1 Operación 2 ENDDO DO UNTIL(HACER HASTA) : La operación DOUxx permite el proceso de un grupo de cálculos una o más veces basándose en el resultado de comparar/xx el factor 1 y el factor 2. La operación DOUxx, se ejecuta al menos una vez ya que la comparación de la condición(xx) se hace al final(ENDDO). Se procesan las instrucciones en primer lugar y luego se comprueba la condición. CL0N01N02N03Factor1+++Oper+++++Factor2+++ResultLonDHMaMeIgComentarios+++ Z-ADD 0 X X DOUEQ 20 Operación 1 Operación 2 ENDDO
  • 13. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i DO WHILE (HACER MIENTRAS) : La operación DOWxx , ejecuta un grupo de operaciones mientras se cumpla la condición xx. CL0N01N02N03Factor1+++Oper+++++++Factor2+++ResultLonDHMaMeIgComentarios+++ Var1 DOWXX 20 Operación 1 Operación n ENDDO Factor1 - campo que se va a comparar XX. - tipo de comparación, pueden ser: EQ,NE,GE,GT,LE,LT Factor2. - variable o valor con el que se comparara.
  • 14. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i Las operaciones de subrutina de RPG/400 son: • EXSR invocar subrutina • BEGSR Comienzo de Subrutina – Bloque de instrucciones – ….. • ENDSR Fin de subrutina • CASxx Llamada Condicional a Subrutina: selección de la subrutina a ejecutar, si se cumple la comparación entre el factor1 y el factor2. – CAMPOA CASGECAMPOB SUBR01 • CABxx: permite hacer una comparación entre el factor1 y el factor2; si esta comparación resulta verdadera el programa mandara el control al TAG asociado con la etiqueta especificada en el campo resultante. – CAMPO1 CABXXCAMPO2 ETIQUETA (TAG)
  • 15. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • IF(SI) : Una operación IFxx permite el proceso de un grupo de cálculos basándose en el resultado de comparar el factor 1 y el factor 2. La operación ELSE(opcional), permite especificar un grupo de cálculos que se han de procesar si la condición IFxx no se cumple. El final de un grupo IFxx lo indica ENDIF. C* En el ejemplo siguiente, el indicador 25 se activar si la condiciones CAMPOA IGUAL A CAMPOB se cumple C* si la condición no se cumple (ELSE), se apagará CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C CAMPOA IFGT CAMPOB C SETON 25 C ELSE C SETOF 25 C ENDIF
  • 16. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • SELECT : (Comenzar un grupo de selección). se utiliza para procesar de manera condicional una o varias secuencias alternativas de operaciones. C SELECT C WHEN X = 1 C Z-ADD A B C MOVE C D * Sequence 1 C WHEN ((Y = 2) AND (X < 10)) * Sequence 2 C WHEQ2 * Sequence 3 C OTHER * Sequence 4 C ENDSL
  • 17. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i Las operaciones ANDxx y ORxx se utilizan con las operaciones DOUxx, DOWxx, WHxx, e IFxx para especificar una Condición más compleja que la comparación de una sola pareja formada por el factor 1 y el factor 2. La operación ANDxx tiene un orden de precedencia más alto que la operación ORxx. C* En el ejemplo siguiente, el indicador 25 se activa únicamente si las dos primeras condiciones son verdaderas o la C* tercera condición es verdadera. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C CAMPOA IFGT CAMPOB C CAMPOA ANDGECAMPOC C CAMPOA ORLT CAMPOD C SETON 25 C ENDIF
  • 18. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i La operación COMP compara el factor 1 con el factor 2. El factor 1 y el factor 2 pueden contener un literal, una constante con nombre, un nombre de campo, un nombre de tabla, un elemento de matriz, una estructura de datos o una constante figurativa. El factor 1 y el factor 2 deben ser ambos de caracteres o ambos numéricos. Como resultado de la comparación, los indicadores se activan de este modo: • Mayor: (54-55) El factor 1 es mayor que el factor 2. • Menor: (56-57) El factor 1 es menor que el factor 2. • Igual: (58-59) El factor 1 es igual al factor 2. • Debe especificar al menos un indicador resultante en las posiciones 54 a 59. C* Los valores de campo iniciales son: C* CMPA = 100,00, CMPB = 105,00, CMPC = 100,00, CMPD = ABC, CMPE = ABCDE CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C* El indicador 12 se activa; los indicadores 11 y 13 se desactivan. C CMPA COMP CMPB 111213 C* El indicador 15 se activa; el indicador 14 y 16 se desactivan. C CMPA COMP CMPB 141516 C* El indicador 19 se activa; el indicador 17 se desactiva. C CMPA COMP CMPC 171819 C* El indicador 21 se activa; los indicadores 20 y 22 se desactivan C CMPD COMP CMPE 202122
  • 19. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • LEAVE: La operación LEAVE interrumpe el flujo de control de forma prematura y lo transfiere a la sentencia que sigue a la operación ENDDO de un grupo estructurado iterativo. La operación ITER hace que se produzca inmediatamente el bucle de iteración siguiente. • Puede utilizar LEAVE en un bucle DO, DOUxx, o DOWxx para transferir el control inmediatamente desde el bucle más interior a la sentencia que sigue a la operación ENDDO del bucle más interior. La utilización de LEAVE para salir de un grupo DO no incrementa el índice. • En bucles anidados, LEAVE hace que el control se transfiera "hacia afuera" un nivel solamente. LEAVE no se permite fuera de un grupo DO. • ITER: La operación "ITER (Iterar)" es similar a la operación LEAVE; sin embargo, La operación ITER transfiere el control desde dentro de un grupo DO a la sentencia ENDDO del grupo DO. Puede utilizarse en bucles DO, DOUxx, y DOWxx para transferir el control inmediatamente a una sentencia ENDDO de bucle.
  • 20. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i CL0N01N02N03Factor1+++Oper+++Factor2+++ResultLonDHMaMeIgComentarios+++ C CMPA DOUEQ CMPB Bucle exterior C : C NUM DOWLT10 Bucle interior C *IN01 IFEQ *ON C LEAVE C ENDIF C EXSR PROC1 C *IN12 IFEQ *OFF C ITER C ENDIF C EXSR PROC2 C ENDDO ENDDO interior C Z-ADD 20 RSLT C ENDDO ENDDO exterior C CMPA DOUEQ CMPB C NUM DOWLT10 C *IN01 IFEQ *ON C SETON 99 C LEAVE C ENDDO C ENDDO C 99 LEAVE C ENDDO
  • 21. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i Las operaciones de serie son las que se pueden utilizar con campos de caracteres. • CAT Concatenar Dos Series de Caracteres • CHECK Comprobar Caracteres • CHEKR Comprobar Caracteres hacia Atrás • SCAN Explorar serie de caracteres • SUBST Subserie • XLATE Convertir
  • 22. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i La operación CAT concatena dos series de caracteres para formar una sola. CAT concatena la serie de caracteres especificada en el factor 2 al final de la serie de caracteres especificada en el factor 1 y lo coloca en el campo de resultado. El factor 2 puede contener una serie de caracteres y puede contener el número de blancos a insertar entre las series concatenadas. Su formato es la serie de caracteres, seguida por dos puntos y seguidos por el número de blancos.
  • 23. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i C* CAT concatena APLL a NOMB e inserta un blanco como se especifica C* en el factor 2. TEMP contiene 'Sr.bSerra'. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C MOVE 'Sr. ' NOMB 6 C MOVE 'Serra ' APLL 6 C NOMB CAT APLL:1 TEMP 9 C* El ejemplo siguiente muestra la utilización de CAT sin el factor 1. C* CMP2 es una serie de 9 caracteres. Antes de la concatenación, contiene C* contiene 'ABCbbbbbb' CMP1 contiene 'XYZ'. Después de la C* concatenación CMP2 contiene 'ABCbbXYZb'. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C MOVEL'ABC' CMP2 9 P C MOVE 'XYZ' CMP1 3 C CAT FLD1:2 CMP2
  • 24. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i Las operaciones CHECK y CHEKR verifican que cada caracter del factor 2 (Base) esté entre los caracteres indicados en ell factor 1. CHECK verifica de izquierda a derecha y CHEKR de derecha a izquierda. • Cada caracter de la serie base se compara con los caracteres del factor 1. Si existe una coincidencia para un caracter del factor 2 en el factor 1, se verifica el siguiente caracter de la serie base. Si no se encuentra una coincidencia, se coloca un valor entero en el campo de resultado para indicar la posición del caracter incorrecto. • Puede especificar una posición inicial en el factor 2, separándola de la serie base por dos puntos. La posición de comienzo es optativa y toma 1 como valor por omisión, el valor del campo de resultado es relativa a la posición más a la izquierda de la serie base, sin tener en cuenta la posición de comienzo. • La operación detiene la comprobación cuando encuentra el primer caracter incorrecto o cuando se encuentra el final de la serie base.
  • 25. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i C* C* Como el factor 1 es un blanco, CHECK indica la posición del primer C* caracter que no es un blanco. Si SERIE contiene 'bbbDELl', C* NUM contendrá el valor 4. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C ' ' CHECKSERIE NUM 20 I* Después del ejemplo siguiente, N=6 y el indicador de encontrado 90 I* está activo. Como la posición de comienzo es 2, el primer caracter I* no numérico encontrado es '.'. I '0123456789' C DIGITS *...1....+....2....+....3....+....4....+....5....+....6....+....7... CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C MOVE '$2000.' SALARY C DIGITOS CHECKSALARIO:2 N 90
  • 26. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C* Como el factor 1 es un caracter blanco, CHEKR indica la posición C* del primer caracter que no es blanco. Esta utilización de CHEKR C* le permite determinar la longitud de una serie. Si SERIE contiene C* 'ABCDEF ', NUM contendrá el valor 6. C ‘ ‘ CHEKRSERIE NUM 20 I* Después de ejemplo siguiente, N=1 y el indicador de encontrado 90 I* se activa. Como la posición de comienzo es 5, la operación empieza I* con el 0 más a la derecha y el primer caracter no numérico I* encontrado es '$'. I '0123456789' C DIGITS *...1....+....2....+....3....+....4....+....5....+....6....+....7... CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C* C MOVE '$2000.' SALARY 6 C DIGITOS CHEKRSALARIO:5 N 90
  • 27. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación SCAN explora una serie de caracteres (serie base) que se encuentra en el factor 2 para ver si hay una subserie (serie de comparación) contenida en el factor 1. • La parte de posición de comienzo del factor 2 debe ser numérica sin posiciones decimales, si no se especifica una posición de comienzo, se utiliza el valor 1. • El campo de resultado contiene el valor numérico de la posición situada más a la izquierda de la serie de comparación en la serie base, si se encuentra. • Puede especificarse un indicador resultante en las posiciones 58 y 59 para que se active si se encuentra la serie que se está buscando.
  • 28. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i C* La operación SCAN busca la subserie 'ABC' empezando en la posición C* 1 del factor 2; 3 se coloca en el campo de resultado. C* El indicador 90 se activa porque se encuentra la serie. Como no se C* ha especificado posición de comienzo, se utiliza 1 por omisión. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C 'ABC' SCAN 'XCABCD' RESULT 90 C* Esta operación SCAN explora la serie del factor 2 empezando en C* la posición 2 para buscar una aparición de la serie del factor 1 C* de longitud 4. Como en CAMPO1 no se encuentra "HERR", INT se C* establece en cero y el indicador 90 se desactiva. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C MOVE 'PRUEBA’ CAMPO1 7 C Z-ADD 2 X 10 C MOVEL'HERR’ CAMPO2 5 C CAMPO2:4 SCAN CAMPO1:X INT 20 90 C*
  • 29. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación SUBST extrae una serie de caracteres especificada de una serie de caracteres de base, empezando en la ubicación especificada en el factor 2 para la longitud especificada en el factor 1 y coloca esta subserie en el campo de resultado. • Si no se especifica el factor 1, se utiliza la longitud de la serie desde la posición de comienzo. El factor 1 puede contener el valor de la longitud de la serie que se va a extraer de la serie especificada en el factor 2. Debe ser numérico sin posiciones decimales. • Si no se cumple alguna o ninguna de estas condiciones, no se efectuar la operación y si se ha especificado un indicador de error en las posiciones 56 y 57, se activará. • El factor 2 debe contener la serie de caracteres base o la serie de caracteres base seguida por ':', seguidos por la posición de comienzo. El campo de resultado debe ser de caracteres. Si la subserie es más larga que el campo especificado en el campo de resultado, la subserie se truncar por la derecha.
  • 30. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i C* La operación SUBST extrae la subserie del factor 2 empezando en la C* posición 3 para una longitud 2. El valor 'CD' se sitúa en el C* campo de resultado RESULT. El indicador 90 no se activa porque C* no se ha producido ningún error. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C Z-ADD3 T 20 C MOVEL'ABCDEF'STRING10 C 2 SUBSTSTRING:T RESULT 90 C* En esta operación SUBST, la longitud es mayor que la longitud de C* la serie menos la posición de comienzo más 1. Como resultado, se C* activa el indicador 90 y el campo de resultado no se modifica. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C MOVE 'ABCDEF' STRING 6 C Z-ADD4 T 10 C 5 SUBSTSTRING:T RESULT 90 C
  • 31. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • Los caracteres de la serie origen (factor 2) se convierten de acuerdo con las series De y A (ambas en el factor 1) y se sitúan en un campo receptor (campo de resultado). Los caracteres origen que coinciden con la serie De se convierten a los caracteres correspondientes de la serie A. • XLATE comienza a convertir la serie origen en la ubicación especificada en el factor 2 y continúa caracter a caracter, de izquierda a derecha. • Se PUEDE activaR un indicador en las posiciones 56-57 si se produce un error en la operación. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C* En el Siguiente ejemplo, se convierte el blanco de NUMERO en '-'. El resultado C* en RESULT será '999-9999'. C MOVE '999 9999' NUMERO8 C ' ':'-' XLATENUMERO RESULT 8
  • 32. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • Los archivos se utilizan a modo de enlace entre un programa y el dispositivo utilizado para E/S. • Para que un programa efectúe cualquier operación de E/S, debe identificar la descripción del archivo o de los archivos a los que el programa hace referencia. • Esta sección describe cómo utilizar archivos en programas RPG. • Las operaciones de archivo se pueden utilizar para archivos descritos en el programa y para archivos descritos externamente (F o E respectivamente en la posición 19 de las especificaciones de descripción de archivo). • Cuando se utiliza un archivo descrito externamente con ciertas operaciones de archivo, puede especificarse en el factor 2 un nombre de formato de registro, en lugar de un nombre de archivo. Así, el código de operación del proceso recupera y/o sitúa el archivo en un formato de registro del tipo especificado de acuerdo a las reglas del código de operación de cálculo utilizado.
  • 33. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i Los códigos de operación son: • SETGT Situar en mayor que • SETLL Situar límite inferior • READ Leer un registro(siguiente) • READP Leer registro anterior • READE Leer clave igual • REDPE Leer anterior igual • READC Leer siguiente registro modificado • CHAIN Recuperar al Azar desde un Archivo • UPDATE Modificar registro existente • WRITE Crear nuevos registros • DELETE Suprimir registro • OPEN Abrir Archivo para Proceso • CLOSE Cerrar Archivos • EXFMT Grabar/a continuación leer formato • EXCPT Salida en tiempo de cálculo)
  • 34. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • la operación SETLL sitúa un archivo en el siguiente registro que tiene una clave o número relativo de registro que es mayor que o igual al argumento de búsqueda (clave o número relativo de registro) especificado en el factor 1. • El factor 2 es necesario y debe ser un nombre de archivo o el nombre de formato de registro únicamente con un archivo descrito externamente. • Los indicadores resultantes reflejan el estado de la operación. • Si se ha especificado un indicador en las posiciones 54 y 55, éste se activa cuando el argumento de búsqueda sea mayor que la clave o el número relativo de registro más altos del archivo. • Si se ha especificado un indicador en las posiciones 56 y 57, éste se activar cuando se produzca un error durante la ejecución de la operación. • Si se especifica un indicador en las posiciones 58 y 59, éste se activar cuando esté presente un registro cuya clave o número relativo de registro sea igual al argumento de búsqueda.
  • 35. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • Pueden utilizarse constantes figurativas para situar el archivo, *LOVAL sitúa el archivo de forma que la primera lectura recupera el registro con la clave más baja, En la mayoría de casos, *HIVAL sitúa el archivo de forma que una operación *READP recupera el último registro del archivo. C* Todos los registros 101 de ARCPED se tienen que imprimir. El valor C* 101 se ha situado con anterioridad en PEDIDO. La operación SETLL C* sitúa el archivo en el primer registro 101. Como hay registros 101, C* el indicador 55 se activa y la operación GOTO no se procesa. CL0N01 Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C PEDIDO SETLLARCPED 55 101 PRESNTE C N55 GOTO NOTFND
  • 36. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación SETGT sitúa un archivo en el siguiente registro con una clave o número relativo de registro que es mayor que la clave o número relativo de registro especificado en el factor 1. • El factor 2 es necesario y debe ser un nombre de archivo o el nombre de formato de registro únicamente con un archivo descrito externamente. • Puede especificar un indicador resultante en las posiciones 54 y 55 para que se se active si no se encuentra ningún registro con una clave o número relativo de registro que sea mayor que el argumento de búsqueda especificado en el factor 1. • Puede especificar cualquier indicador resultante válido en las posiciones 56 y 57 para que se active si se produce un error durante el proceso de la operación. • Si la operación SETGT no es satisfactoria (condición de registro no encontrado), el archivo se sitúa al final del archivo.
  • 37. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C* Este ejemplo muestra cómo situar el archivo de modo que READ lea C* el siguiente registro. El argumento de búsqueda, KEY, especificado C* para la operación SETGT tiene un valor de 98; por lo tanto, SETGT C* sitúa el archivo antes del primer registro del formato de archivo C* ARCHA que tiene un valor de campo de clave mayor que 98. El archivo C* se sitúa antes del primer registro con un valor de clave de 99 o mayor. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C KEY SETGTARCHA
  • 38. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i C* Este ejemplo muestra la utilización de *LOVAL con la operación SETGT C* para sitúar el archivo antes del primer registro de un archivo en orden C* ascendente. C *LOVAL SETGTREGDA MAYOR QUE C* Este ejemplo muestra la utilización de *HIVAL con la operación SETGT C* para sitúar el archivo después del último registro de un archivo en orden C* ascendente. C *HIVAL SETGTREGDB MAYOR QUE
  • 39. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • la operación READ lee el registro, al que se señala actualmente (siguiente). • El factor 2 debe contener el nombre de un archivo o un nombre de formato de registro ( archivo descrito externamente). • El campo de resultado puede contener el nombre de una estructura de datos en la que el registro se lee si el archivo es un archivo descrito en el programa. • Puede especificar un indicador en las posiciones 56 y 57 para que se active si la operación READ no se completa con éxito. ( Si se produce un error) • Puede especificar un indicador en las posiciones 58 y 59 para señalar si se ha producido el fin de archivo en la operación READ.
  • 40. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i FUNCION %EOF EOF% Condición de Fin de archivo. Esta función devuelve '1‘ ‘ON’, si la operación más reciente sobre el archivo terminó en un final de archivo. CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.... C IF %EOF C XXXX C ENDIF Para leer todo el archivo C DOW Not %EOF(Archivo) C XXXX C READ REGDA C ENDIF C* Este ejemplo muestra la utilización de READ. La operación SETGT con *LOVAL C* sitúa el archivo antes del primer registro de un archivo en orden C* ascendente. La operación READ lee el primer registro C *LOVAL SETGTREGDA MAYOR QUE C READ REGDA 64 LEER SIGUIENTE
  • 41. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación READP lee el registro anterior de una archivo • El factor 2 debe contener el nombre de un archivo o formato de registro que se ha de leer. C* La operación READP lee el registro anterior de ARCHA. El C* indicador 71 se activa si se encuentra el comienzo del archivo. C* Cuando el indicador 71 está activado, el programa se bifurca C* a la etiqueta BOF especificada en la operación GOTO. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C READPARCHA 71 BOF C 71 GOTO BOF PRINC. ARCHIVO C*
  • 42. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i C* Este ejemplo muestra la utilización de READP con *HIVAL en la operación C* SETGT para situar el archivo después del último registro de un archivo en orden C* ascendente. La operación READP lee el último registro C *HIVAL SETGTREGDB MAYOR QUE C READPREGDB 64LEER ELTIMO Para leer todo el archivo en sentido contrario. C DOW Not %EOF(Archivo) C XXXX C READP REGDAB C ENDDO
  • 43. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación READE recupera el siguiente registro si la clave del registro coincide con el argumento de búsqueda. Si la clave del registro no coincide con el argumento de búsqueda, el indicador que debe especificarse en las posiciones 58 y 59 se activa y el registro no se devuelve al programa. • El factor 1, el argumento de búsqueda, identifica el registro a recuperar. Puede ser un nombre de campo, un literal, una constante con nombre o una constante figurativa o un nombre KLIST en el factor 1 para un archivo descrito externamente. C* La operación READE recupera el siguiente registro del archivo C* ARCHA y compara su clave con el argumento de búsqueda, KEYCMP. C* El indicador 55 se activa si KEYCMP no es igual a la clave del C* registro leído o si se encuentra el fin de archivo. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C* C KEYCMP READEARCHA 55 NO IGUAL
  • 44. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación READC sólo se puede utilizar con un archivo WORKSTN descrito externamente para obtener el siguiente registro modificado en un subarchivo. • El factor 2 es necesario y debe ser el nombre de un formato de registro definido como subarchivo por la palabra clave SFILE en las especificaciones de descripción de archivo. • Puede especificar un indicador resultante en las posiciones 56 y 57 para que se active si se produce un error mientras la operación se está ejecutando. • El indicador resultante de las posiciones 58 y 59 es necesario; se activa cuando no hay màs registros modificados en el subarchivo.
  • 45. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación CHAIN recupera un registro desde un archivo) y coloca los datos del registro en los campos de entrada. • El factor 1, el argumento de búsqueda, debe contener la clave o el número relativo de registro utilizado para recuperar el registro. Si el acceso es por clave, el factor 1 puede ser un nombre de campo, una constante con nombre, una constante figurativa o un literal o puede ser un nombre de "KLIST (Clave Compuesta)" para un archivo descrito externamente. • Si el acceso es por número relativo de registro, el factor 1 debe contener un literal de enteros o un campo numérico con cero posiciones decimales. • El factor 2 especifica el archivo o el nombre del formato de registro que ha de leerse. Un nombre del formato de registro es válido, únicamente, con un archivo descrito Externamente. Si el factor 2 es un nombre de formato de registro y el acceso se realiza por clave, la operación CHAIN recupera el primer registro del tipo de registro especificado cuya clave coincida con el argumento de búsqueda.
  • 46. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i C* La operación CHAIN recupera el primer registro del archivo, C* ARCHX, que tiene un campo de clave con el mismo valor que el C* argumento de búsqueda CLAV (factor 1). CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C CLAV CHAINARCHX 60 INDICADOR 60 C* SI NO SE ENCUENTRA • Las posiciones 54 y 55 pueden n contener un indicador que se active si no hay ningún registro del archivo que coincida con el argumento de búsqueda. Las posiciones 56 y 57 pueden contener un indicador que se active si la operación CHAIN no se completa satisfactoriamente. Las posiciones 58 y 59 deben estar en blanco. • FUNCION %FOUND: devuelve '1‘ ‘ON’, si la operación chain más reciente sobre el archivo no encuentra registro con argumento de búsqueda. CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq. C IF %Found(ARCHX) C XXXX C ENDIF
  • 47. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i C* Una clave completa con KLIST se utiliza para recuperar registros de los C* archivos que tienen una clave compuesta. Si se encuentra un C* registro del tipo especificado que tenga un campo de clave igual C* al argumento de búsqueda, se procesan los cálculos condicionados por C* registro hallado CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C* C CLAV CHAINREG1 72 INDICADOR 72 C* SI NO SE ENCUENTRA C CLAV KLIST C KFLD CMP1 C KFLD CMP2 C*
  • 48. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación UPDATE modifica el último registro recuperado para su proceso desde un archivo o subarchivo de disco de actualización. No se debe ejecutar ninguna otra operación en el archivo entre la operación de entrada que recupera el registro y la operación UPDATE. • El factor 2 debe contener el nombre de un archivo o formato de registro a actualizar. • Es necesario un nombre de formato de registro en el factor 2 con un archivo descrito externamente. • Puede especificar un indicador resultante en las posiciones 56 y 57 para que se active si la operación UPDATE no se completa satisfactoriamente.
  • 49. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i FCHANGE IP E K DISK FEMPMSTUF E K DISK * Cuando se lee cada registro desde el archivo de entrada primario, CHANGE, se utiliza el numero de empleado (ENUM) como el argumento de búsqueda para encadenar al registro correspondiente en el archivo MSTEMP. *IN03 se activara si no se encuentra ningun registro correspondiente, esto ocurre cuando se entra un ENUM en el registro CHGREC. CL0N01 Factor1+++Opcode(E)+Factor2++Result++++++++Len++D+HiLoE C ENUM CHAIN EMPREC 03 C 03 GOTO NEXT C NNAME IFNE *BLANK C MOVE NNAME ENAME C ENDIF C NTYPE IFNE *BLANKS C MOVE NTYPE ETYPE C ENDIF C NNHRS IFNE *CERO C MOVE NNHRS ENHRS C ENDIF C UPDATE EMPREC C* C NEXT TAG
  • 50. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación WRITE graba un registro nuevo en un archivo. • El factor 2 debe contener el nombre de un archivo. Es necesario un nombre de formato de registro en el factor 2 con un archivo descrito externamente. • Es necesario un nombre de archivo en el factor 2 con un archivo descrito en el programa y el campo de resultado puede contener el nombre de una estructura de datos. • Las posiciones 56 y 57 pueden contener un indicador que se active si la operación WRITE no se realiza satisfactoriamente. • En una operación WRITE para un nombre de registro de subarchivo (SFILE), puede especificar un indicador en las posiciones 58 y 59; se activa cuando se llena el subarchivo.
  • 51. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C* C* La operación WRITE graba los campos de la estructura de datos C* DS1 en el archivo, ARCH1. C* C WRITEARCH1 DS1 A#ADIR REGISTRO
  • 52. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación DELET suprime un registro de un archivo de base de datos. • Este archivo debe ser un archivo de actualización (identificado mediante una U en la posición 15 de las especificaciones de descripción de archivo). • El registro suprimido no se puede recuperar. • El registro debe haberse bloqueado mediante una operación de entrada previa (por ejemplo, CHAIN o READ). • El factor 1, que es el argumento de búsqueda, puede contener una clave o un número relativo de registro que identifica el registro que se ha de suprimir. • El factor 2 debe contener el nombre del archivo de actualización o el nombre de un formato de registro del archivo del cual se ha de suprimir un registro.
  • 53. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación EXFMT es una combinación de una operación WRITE seguida de READ para el mismo formato de registro. • EXFMT únicamente es váida para un archivo WORKSTN definido como un archivo combinado. • El factor 2 debe contener el nombre del formato de registro a grabar y después leer. • Puede especificarse un indicador resultante en las posiciones 56 y 57 para que se active si la operación EXFMT no se completa satisfactoriamente.
  • 54. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i • La operación OPEN abre el archivo especificado en el factor 2. • La entrada del factor 2 no puede designarse como un archivo primario, secundario o de tabla. Puede especificar un indicador resultante en las posiciones 56 y 57 para que se active si la operación OPEN no es satisfactoria. • Debe haberse especificado UC (control del usuario) especificaciones de descripción del archivo. ( • Si se abre un archivo y se cierra posteriormente en el programa mediante la operación CLOSE, el programa puede volver a abrir el archivo. • Cuando no se especifica UC, se abre el archivo al inicializar el programa.
  • 55. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i FNombarchIPEAF....LregLC1AIDePclaEDispos+......KSalidaEntradA....U1. FEXCPTN OE DISCO UC FARCHX I E DISCO CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C* C* La operación OPEN explícita abre el archivo EXCPTN para su proceso C* si el indicador 97 está activado y el indicador 98 desactivado. C* Observe que el archivo EXCPTN de las especificaciones de descripción C* de archivo tiene especificado UC en las posiciones 71 y 72. CL0N01N02N03Factor1+++Oper+Factor2+++ResultLonDHMaMeIgComentarios+++ C 97N98 OPENEXCPTN 99 99=NO SATISFACTORIO C 97N98N99 WRITEERREG C* ARCHX se abre en la inicialización del programa. La operación C* CLOSE explícita cierra ARCHX antes de que el control pase a RTNX. C* RTNX u otro programa puede abrir y utilizar ARCHX. En retorno, C* la operación OPEN vuelve a abrir el archivo. Como ARCHX se abre en C* la inicialización del programa, no se especifica UC en las posiciones 71 C* y 72 de las especificaciones de descripción de archivo. C CLOSEARCHX C CALL 'RTNX' C OPEN ARCHX
  • 56. Ingeniero Giovanny Guillén Bustamante Especialista Certificado PMP / IBM i