COBOL400 IBM AS400 - PROCEDURE

ESCRITURA DE LA DIVISION DE PROCEDIMIENTOS

La estructura general de esta división es la siguiente:

8 12
PROCEDURE DIVISION.
[Nombre-sección-1 SECTION.]
Nombre-párrafo-1-
Sentencia-1.
[Sentencia-2, … ]
Nombre-párrafo-2.
Sentencia-1.
[Sentencia-2, … ]


[Nombre-sección-2 SECTION.]
Nombre-párrafo-n.


El componente jerárquicamente superior en esta estructura es la Sección, luego dentro de esta, encontramos los párrafos, y s su vez dentro de estos, se encuentran las Sentencias, que a su vez están formadas por las instrucciones COBOL que resuelven un problema especifico.
La Unidad Mayor de la Procedure División es una Sección. Una Sección esta constituida por uno o más párrafos, un párrafo corresponde a un punto referenciable de la Procedure División a través de un nombre creado por el programador, y asociado con el propósito de las sentencias que lo formaran, Un párrafo esta constituido por una o mas sentencias de programación, a su vez una Sentencia esta formada por una o mas Instrucciones, separadas por comas o blancos y terminadas en punto.
Para dar forma a la estructura a construir en la Procedure División, es preciso que el programador al desarrollar la solución al problema, la plantee a través de un Diagrama de Flujo o Seudo código en un estilo de programación Modular y Estructurada. Los Nombres de Sección o Párrafos corresponderán a los Nombres de Rutinas que aparecen en el Diagrama de Flujo o Seudo código, deben escribirse a partir de la columna 8, es decir, en el Area A; las otras instrucciones u ordenes se representaran en el programa como las Instrucciones Cobol, como por ejemplo: OPEN, READ, ADD, MOVE, ..., etc.

Existen dos tipos de categorías de instrucciones en el Lenguaje Cobol, y son: imperativas y condicionales.

Instrucciones Imperativas: son aquellas que le indican al computador lo que deben realizar
De forma inmediata e incondicional, por ejemplo: READ, MOVE,..etc.

Instrucciones Condicionales: son aquellas en que su ejecución esta involucrada algún tipo de condición,
Por ejemplo: IF ... ELSE, PERFORM ... TIMES, PERFORM ... UNTIL, etc.

DETALLE DE LAS INSTRUCCIONES

Instrucciones para el Manejo de Archivos

1.- Abrir Archivo OPEN: la instrucción OPEN permite abrir los archivos de datos que utilizara el
programa. El formato o sintaxis es:

OPEN [INPUT Nombre-archivo-1, ... ]
[I-O Nombre-archivo-2, ... ]
[OUTPUT Nombre-archivo-3, ... ].

en donde:

INPUT : permite abrir uno o más archivos en Modalidad de Entrada, es decir, aquellos archivos
que ya existen en disco magnético, y que solo se leerán.

I-O : permite abrir uno o más archivos en Modalidad de Entrada/Salida, es decir, archivos que
ya existen en disco magnético, y en los cuales se leerán, grabaran o regrabraran registros.


OUTPUT: permite abrir uno o más archivos en Modalidad de Salida, es decir, archivos que no
existen en disco magnético, y serán creados por el programa, y en los cuales solo
se graban registros.

Nombre-archivo-1, 2, 3: corresponderán a los nombres de archivos declarados con SELECT, y
Definidos con FD en la FILE SECTION de la DATA DIVISION:

Ejemplos:

OPEN INPUT VENTAS, ............ Se abren los archivos llamados VENTAS y LISTADO, y
OUTPUT LISTADO. en donde VENTAS se abre de Entrada, y LISTADO se
abre de Salida.

OPEN INPUT CLTES, ............. Se abren CLTES, MCLTES, y INFORME.
I-O MCLTES, CLTES se abre de Entrada,
OUTPUT INFORME. MCLTES se abre de Entrada/Salida
INFORME se abre de Salida.

2.- Leer Registros READ ..: la instrucción READ permite leer un solo registro desde un
archivo abierto de Entrada o Entrada/Salida. Su formato o
sintaxis es:

READ Nombre-archivo [INTO Nombre-registro-trabajo] AT END Sentencia-imperativa.

En donde:

Nombre-archivo : corresponde al Nombre de Archivo abierto de INPUT, o I-O.

INTO : indica que el registro leído además de cargarse en la
Estructura de registro del archivo, se transfiere hacia otra área
De trabajo.

Nombre-registro-trabajo : corresponde al Nombre del Registro de Trabajo, o bien, puede ser
El nombre de estructura de registro de otro archivo.

AT END : permite indicarle al sistema lo que debe hacer al detectar en el
Momento de leer el Fin del Archivo (EOF).

Sentencia-imperativa : es aquella que se ejecuta cuando AT END detecta el EOF del archivo.

Ejemplos:

READ VENTAS AT END MOVE 1 TO FIN. .... Lee secuencialmente el archivo
VENTAS, y por EOF se mueve 1 a
La variable FIN.

READ BOLETAS INTO REG-TRAB AT END MOVE 1 TO SWF. ... Lee en forma
secuencial el archivo BOLETAS y
además transfiere con INTO el
registro leído hacia REG-TRAB y
por EOF mueve 1 a SWF.

3.- Grabar Registro WRITE ..: la instrucción WRITE permite grabar un registro en un archivo en
disco magnético, imprimir una línea de salida en un archivo de
impresora, o por último desplegar o visualizar un formato de
pantalla para un archivo de pantalla. Su formato o sintaxis es:

Formato para imprimir una línea

Para un arch. Impresora con descripción interna.

WRITE Nombre-registro [FROM Nombre-Registro-1] AFTER {PAGE/Número-líneas}
[AT EOP Sentencia-imperativa].

Para un archivo impresora con descripción externa

WRITE Nombre-registro [FROM Nombre-Registro] FORMAT “Nombre-formato-reg-RLU”.

En donde:

Nombre-registro : corresponde al Nombre del Registro del archivo de salida por
Impresora.

FROM : permite que la línea a imprimir se llene con la información
Obtenida con FROM desde otro registro.

Nombre-registro-1 : corresponde al nombre de la estructura de registro que almacena la
Información a imprimir, y que se puede encontrar en la
WORKING-STORAGE SECTION, o en la FILE SECTION para otro
Archivo.

AFTER PAGE : permite avanzar a la primera línea de impresión de una página nueva,
Antes de imprimir la línea.

AFTER Número-líneas : permite avanzar una o más líneas antes de imprimir la línea.

AT EOP : AT END OF PAGE, permite la ejecución de una sentencia
Imperativa al detectarse en el momento de imprimir el Fin de
Página. Para esta cláusula deben estar declaradas para el archivo
De impresora LINAGE y FOOTING.

Sentencia-imperativa : instrucción que se ejecuta al detectarse el END OF PAGE.

FORMAT : permite especificar el nombre de formato de RLU bajo el cuál se
Imprime.

Nombre-formato-RLU : corresponde al nombre de formato de registro del RLU.

Ejemplos:

WRITE LINEA FROM LIN-T1 AFTER PAGE.

Imprime el registro llamado LINEA desde la información de LIN-T1 después de avanzar a la pag. Sgte.

WRITE LINEA FROM LIN-D AFTER 1.

Imprime el registro llamado LINEA desde la información de LIN-D después de avanzar una línea.

WRITE LINEA FROM LIN-DET AFTER 1 AT EOP PERFORM TITULAR.

Imprime el registro llamado LINEA desde la información de LIN-DET, después de avanzar una línea y si se
Detecta el END-OF-PAGE en el momento de imprimir se llama a la rutina TITULAR:

WRITE REG-SAL FROM LIN-TG AFTER 3.

Imprime el registro llamado REG-SAL desde la información de LIN-TG, después de avanzar 3 líneas.

WRITE LINEA FROM LIN-DET FORMAT “LDET”.

Imprime el registro llamado LINEA desde la información de LIN-DET, bajo lo especificado en el formato de
RLU llamado LDET.




Formato para grabar registros en archivos en disco

Para archivos Secuenciales

WRITE Nombre-registro [FROM Nombre-Registro-1].

Para archivos Indexados o Directos

WRITE Nombre-registro [FROM Nombre-Registro-1] INVALID KEY Sentencia-imperativa.

La descripción de estas cláusulas es similar a la descripción de ellas en los formatos para salidas por impresora, por lo que:

INVALID KEY : permite decirle al sistema lo que debe hacer cuando se produzca un
Error de Invalid Key al grabar.

Sentencia-imperativa : es aquella que se ejecutará al producirse error de Invalid Key.


Ejemplos:

Graba registro en un archivo secuencial

MOVE RE-RUTCLI TO MC-RUTCLI.
MOVE RE-NOMCLI TO MC-NOMCLI.
.........................................................................................
.........................................................................................
WRITE REG-MCLI.


O bien:

WRITE REG-MCLI FROM REG-CLI.

Graba registro en un archivo Indexado

MOVE RE-RUTCLI TO MC-RUTCLI.
MOVE RE-NOMCLI TO MC-NOMCLI.
.........................................................................................
.........................................................................................
WRITE REG-MCLI INVALID KEY SET SWIK TO ON.


4.- Cerrar Archivo CLOSE: permite cerrar todos los archivos que fueron abiertos en el programa.
Su formato o sintaxis es:

CLOSE Nombre-archivo, ... .

En donde:

Nombre-archivo : corresponde al nombre del archivo a cerrar, y debe ser el mismo
Que se abrió con OPEN, se puede cerrar más de un archivo.

Ejemplo:

CLOSE CLIENTES, MAE-CLTES, REPORTE.


5.- Regrabar registro REWRITE: permite volver a grabar un registro existente en disco magnético, y
anteriormente leído con READ, se utiliza para actualizar la
información preferentemente de archivos Indexados. Su formato
o sintaxis es:

REWRITE Nombre-registro [FROM Nombre-Registro-1] INVALID KEY Sentencia-imperativa.

La descripción de las cláusulas que forman esta instrucción es la misma descripción de la instrucción
Usada para grabar registros.

6.- Posiciona Puntero Registros START: permite posicionar el Puntero de Registros en un archivo
Indexado o con Claves, para luego desde ese registro en
Adelante leer secuencialmente. Su formato o sintaxis es:

START Nombre-archivo [KEY IS Operador-relación Clave-parcial-registro]
[INVALID KEY Sentencia-imperativa].

En donde:

Nombre-archivo : corresponde al Nombre del archivo que se abrió con OPEN.

KEY IS : permite establecer la condición de Posicionamiento para el
Registro.

Operador-relación : permiten establecer la relación para el Posicionamiento del
Registro, y son:
EQUAL TO (=); GREATER THAN (>); LESS THAN (<).

Clave-parcial-registro : corresponde al Nombre del Campo Clave especificado para
El archivo.

INVALID KEY .... : permite establecer la acción a ejecutar si se produce error de
Invalid Key al posicionarse.

Sentencia-imperativa : establece la instrucción a ejecutar por error de Invalid Key.


Ejemplo:

MOVE ID-CLTE TO MC-IDCLTE.
START MAE-CLTES KEY IS = MC-IDCLTE INVALID KEY MOVE 1 TO SWIK.

Ubicaría el Puntero de Registros en el registro del archivo cuya clave sea igual a MC-IDCLTE.

Luego de posicionarse en algún registro se lee con la siguiente variante de READ:

READ Nombre-archivo NEXT [INTO Registro-trabajo] AT END Sentencia-imperativa.



















Resumen Instrucciones para el Manejo de Archivos

Instrucción Cobol
Descripción o Propósito
OPEN
Abre un archivo de datos para su uso, de: INPUT, I-O, u OUTPUT
READ
Lee un registro de un archivo de datos, secuencialmente o en forma directa.
WRITE
Imprime una línea de salida por impresora, graba un registro para un archivo en disco, o visualiza un formato de pantalla para un archivo de pantalla.
CLOSE
Cierra un archivo después de su uso.
REWRITE
Regraba un registro en un archivo en disco.
START
Posiciona el Puntero de Registros, en algún registro de un archivo de datos









































Instrucciones Aritméticas

En las Instrucciones aritméticas se utilizan una serie de cláusulas Cobol que tienen una función o propósito claramente, este conjunto de cláusulas comunes y su significado son:

GIVING: permite almacenar el resultado de una operación aritmética, en el Nombre de
Dato que aparece a continuación de GIVING.

ROUNDED: permite efectuar redondeo en el campo de resultado de una operación
Aritmética, según el formato con el que se describió el campo de
Resultado. Por ejemplo, si el item se definió con PIC 9(5)V99, el redondeo
Se efectúa a la segunda cifra decimal, si se definió con PIC 9(5)V9 el
Redondeo se efectúa a la primera cifra decimal; si se definió con PIC 9(5)
El redondeo se efectúa al entero más próximo.

ON SIZE ERROR: permite ejecutar una Sentencia-imperativa si el resultado de una operación
Aritmética tiene más posiciones de memoria, que la cantidad de posiciones
Definidas para el campo de resultado.

CORRESPONDING: permite sumar o restar los item de datos elementales de dos grupos de datos
En forma correspondiente. Esto quiere decir que el primer item del primer
Grupo se suma o resta al primer item del segundo grupo, y así
Sucesivamente.


1.- Sumar ADD_: permite sumar dos o más item numéricos de datos, y almacenar su resultado. Su formato
o sintaxis es:

Formato 1:

ADD [Nombre-dato-1/Constante-1, ... ] TO Nombre-dato-2 [ROUNDED]
[ON SIZE ERROR Sentencia-imperativa]
[END-ADD].

Todos los Nombres de Datos y/o Constantes que preceden a la palabra ADD, se suman entre si, y el resultado
Se añade a Nombre de Dato-2.

Nombre-dato-1/Constante-1 : representan los item de datos o constantes a sumar

TO : indica el destino de la suma

Nombre-dato-2 : corresponde al item de datos que recibe la suma.

Formato 2

ADD [Nombre-dato-1/Constante-1] TO [Nombre-dato-1/Constante-1] GIVING Nombre-dato-3
[ROUNDED] [ON SIZE ERROR Sentencia-imperativa]
[END-ADD].

Formato 3

ADD {CORRESPONDING/CORR} Item-grupo-1 TO Item-grupo-2
[ROUNDED] [ON SIZE ERROR Sentencia-imperativa]
[END-ADD].
Ejemplos:

ADD NETO, IVA TO TOT-VTA.

ADD 1 TO CONLIN.

ADD SLDO-BASE TO AC-SLDOBASE.

ADD NETO TO IVA GIVING AC-VTA.

ADD SLDO TO AUMENTO GIVING NVL-SLDO.

ADD CORR ACUM-SECCION TO ACUM-DEPTO.

2.- Restar SUBTRACT: permite restar uno o más item de datos numéricos desde una o más
item de datos numéricos, y almacenar el resultado en un campo de
resultado. Su formato o sintaxis es:

SUBTRACT {Nombre-dato-1/Constante-1} [, {Nombre-dato-2/Constante-2}] FROM
Nombre-dato-3 [ROUNDED] [ON SIZE ERROR Sentencia-imperativa]
[END-SUBTRACT].

Ejemplos:

SUBTRACT DSCTOS FROM TOT-HAB.

SUBTRACT FSAL, FPEN FROM TOT-DESC.

SUBTRACT 11 FROM RESTO.

3.- Multiplicar MULTIPLY: permite multiplicar item de datos numéricos, y almacenar el producto
en un Campo de Resultado. Su formato o sintaxis es:


MULTPLY {Nombre-dato-1/Constante-1} BY {Nombre-dato-2/Constante-2}
GIVING Nombre-dato-3 [ROUNDED] [ON SIZE ERROR Sentencia-imperativa]
[END-MULTIPLY].

En donde:

Nombre-dato-1, 2, 3 deben estar definidos como item numérico con o sin signo.
Constante-1, 2 deben ser constantes numéricas.

Ejemplos:

MULTIPLY 0,20 BY VALVEN GIVING IMPTO ROUNDED.

MULTIPLY CANT BY PRECIO GIVING VALOR
ON SIZE ERROR PERFORM ERR-LONGITUD.

4.- Dividir DIVIDE: permite dividir un item numérico, por otro, obteniendo un cuociente y un
residuo. Sus formatos o sintaxis son:

DIVIDE {Nombre-Dato-1/Constante-1} INTO Nombre-dato-2 GIVING Nombre-dato-3
[ROUNDED] [REMAINDER Nombre-dato-4] [ON SIZE ERROR Sentencia-imperativa]
END-DIVIDE].

DIVIDE Nombre-Dato-1 BY {Nombre-dato-2/Constante-2 GIVING Nombre-dato-3
[ROUNDED] [REMAINDER Nombre-dato-4] [ON SIZE ERROR Sentencia-imperativa]
[END-DIVIDE].

En donde:

Nombre-dato-1, 2, 3, 4 deben ser datos numéricos con o sin signo.

Constante-1, 2 deben ser numéricas enteras o de punto fijo.

REMAINDER almacena el residuo de la división en Nombre-dato-4.

INTO en el primer formato el item de dato escrito antes de INTO corresponde a
divisor, y el que lo sigue corresponde a dividendo.

BY en el segundo formato el primer item de dato corresponde al dividendo y el
que sigue a BY corresponde al divisor.


Ejemplos:

DIVIDE 11 INTO SUMA GIVING CUOCIENTE REMAINDER RESTO.

DIVIDE SUMA BY 11 GIVING CUOCIENTE REMAINDER RESTO.

DIVIDE ACVAL BY CAN-REG GIVING PROME.


5.- Calcular COMPUTE: permite evaluar una expresión aritmética y almacenar el
resultado en un Campo Resultado. Su formato o sintaxis es:

COMPUTE Nombre-dato [ROUNDED] = Expresión-aritmética
[ON SIZE ERROR Sentencia-imperativa]
[END-COMPUTE].


En donde:

Nombre-dato : recibe el resultado de la evaluación o cálculo que el
Sistema haga de la expresión-aritmética.

Expresión-aritmética : una expresión aritmética esta formada por uno o más de
Los siguientes elementos:

a) Item de datos numérico.
b) Constante numérica
c) Operador aritmético, que pueden ser:
+ Suma .
- Resta.
* Multiplicación.
/ División.
** Exponenciación.
() Paréntesis Redondo.

Ejemplos:

ACVENTA
0,02
ACVAL * 0,2
-B + (( B* B – 4 * A * C) ** 0.5) / (2 * A)

Ejemplos:

COMPUTE I = I + 1.

COMPUTE DESCTO ROUNDED = MONTO * 0,015.

COMPUTE TOTVTA = TOTVTA * MONVTA.







Resumen Instrucciones Aritméticas

Instrucción Cobol
Descripción o Propósito
ADD
Suma Item numéricos de datos.
SUBTRACT
Resta Item de datos numéricos.
MULTIPLY
Multiplica Item de datos numéricos.
DIVIDE
Divide un Item de datos numéricos por otro, permitiendo encontrar el Cuociente y Residuo de la
División.
COMPUTE
Evalúa o calcula expresiones aritméticas, almacenando el resultado.












































Instrucciones Condicionales

Una expresión condicional, también llamada simplemente Condición, permite al sistema determinar si es
Esta es Verdadera o Falsa, permitiéndole elegir entre dos o más alternativas de proceso de datos. Una condición
Puede ser simple o compuesta.

Condiciones Simples

Condición de Relación : permite comparar dos valores y determinar cual de ellos es mayor,
Menor, igual, menor o igual, mayor o igual. Su forma general es:

Nombre-dato-1 IS NOT {GREATER/>/EQUAL/=/LESS/<}
{Nombre-dato-2/Constante-2/Constante-figurativa}

Ejemplos:

COD = “A”

SUELDO GREATER 155000

NVEND IS NOT = ZEROS

Condición de Clase : permite evaluar si un Item de datos es Numérico o Alfabético, su
Forma general es:

Nombre-dato IS [NOT] {NUMERIC/ALPHABETIC}

En donde:

NUMERIC : el sistema consulta si el item es numérico, es decir, formado solo por
Dígitos numéricos y opcionalmente un signo. Para esto, es
Conveniente que el item de datos este definido con PIC X, pues si esta
Definido con PIC 9, el resultado de la evaluación siempre será
Verdadero.

ALPHABETIC : el sistema consulta si el item de datos esta formado solo por letras y
Blancos. Para esto, es conveniente que el item de datos este definido con PIC X, pues si esta definido con PIC A, el resultado de la evaluación siempre será verdadero.


Ejemplos:

SUELDO IS NOT NUMERIC

NOMB-CLTE IS ALPHABETIC


Condición de Signo: : permite al sistema consultar si un item de datos numérico con signo,
Definido con PIC S9 es positivo, negativo o igual a 0, su forma
General es:

Nombre-dato IS [NOT] {POSITIVE/NEGATIVE/ZEROS}

Ejemplos:

LIQUIDO IS POSITIVO

SALDO IS NEGATIVE



Condición de Nombre de Condición: permite al sistema evaluar si un Nombre de Condición es
Verdadero o falso, su forma general es:

IS [NOT] Nombre-condición

En donde:

Nombre-condición : nombre creado por el programador para definir con el
Alguna condición de valor de un Campo de un registro o Variable, específicamente se asocian a valores individuales,
Conjunto de valores o rango de valores. Se definen con
Número de Nivel 88.

Ejemplo:

02 COD-MOV PIC X.
88 INGRE VALUE “I”.
88 MODIF VALUE “M”.
88 ELIM VALUE “E”.

Ejemplo:

IS INGRE ...... es equivalente a IS COD-MOV = “I”

IS MODIF ...... es equivalente a IS COD-MOV = “M”

IS ELIM ...... es equivalente a IS COD-MOV = “E”


Condiciones Compuestas: una condición compuesta está formada por una o más condiciones
simples conectadas por Operadores Lógicos OR y/o AND.
Si las condiciones simples están conectadas mediante el operador
lógico OR, bastara que una condición simple sea Verdadera para
que lo sea la condición compuesta.
Si las condiciones simples están conectadas mediante el operador
AND, deben ser verdaderas todas las condiciones simples, para que
sea Verdadera la condición compuesta.

Formato:

[NOT] Condición-simple-1 {OR/AND} Condición-simple-2

Ejemplos:

COD = 1 OR COD = 2

YEAR = 2002 AND MES > 0 AND MES <>


Instrucciones Condicionales

1.- Instrucción IF: permite evaluar una expresión condicional, para determinar si esta
es Verdadera o Falsa, y ejecutar una o más instrucciones si es
Verdadera; o bien ejecutar otro grupo de instrucciones si esta es
Falsa. Luego continua con al siguiente instrucción después de IF.
Su formato o sintaxis es:

IF Condición THEN {Sentencia-1/NEXT SENTENCE}
[ELSE {Sentencia-2/NEXT SENTENCE}]
[END-IF].


En donde:

THEN : toma el control al ser Verdadera la condición, para que se
ejecute Sentencia-1, o seguir a la siguiente instrucción con
NEXT SENTENCE.

ELSE : si esta escrito ELSE y la condición es Falsa se ejecutará
Sentencia-2, o bien seguirá a la instrucción siguiente si esta
Escrito NEXT SENTENCE.

Ejemplos:

IF NVEN > 10 THEN PERFORM ZONA-NORTE
ELSE
PERFORM ZONA-SUR.

IF CONLIN > 70 THEN PERFORM TITULAR.

IF COD = 1 THEN NEXT SENTENCE
ELSE
PERFORM CALCULAR.


2.- Instrucción PERFORM : llama a ejecución a un procedimiento o también llamado
rutina, compuesto por un conjunto de instrucciones
reunidas bajo un Nombre de Párrafo o de Sección, las
cuales tienen un objetivo común. Su formato es:

PERFORM Nombre-proced-1 [THROUGH/THRU Nombre-proced-2]
[END-PERFORM].

En donde:

Nombre-proced-1, 2 : corresponden a Nombres de Párrafo o Sección a través
de los cuales se establecen puntos referenciables en el
programa y que contienen las instrucciones a ser
ejecutadas.

THROUGH/THRU : permite indicar al sistema que ejecute las instrucciones de
Nombre-proced-1 hasta las de Nombre-proced-2
Incluidas.

Ejemplos:

PERFORM ABRIR-AR THRU LEER-VTAS.

PERFORM CONSULTA-VEND.


3.- Instrucción PERFORM .. TIMES: permite ejecutar las instrucciones contenidas en un
procedimiento repetidas veces, especificadas en la
instrucción PERFORM. Su formato es:

PERFORM Nombre-proced-1 [THROUGH/THRU Nombre-proced-2] Entero [TIMES]
[END-PERFORM].

En donde:

TIMES : permite especificar a través de Entero la cantidad de veces que se
Debe repetir la ejecución.


Ejemplos:

PERFORM SUMAR 100 TIMES.

PERFORM CALC THRU IMPRIME 10 TIMES.


3.- Instrucción PERFORM .. UNTIL : permite ejecutar las instrucciones contenidas en
un procedimiento hasta que una condición
especificada en PERFORM sea Verdadera.
Su formato es:

PERFORM Nombre-proced-1 [THROUGH/THRU Nombre-proced-2] UNTIL Condición
[END-PERFORM].

En donde:

UNTIL : permite especificar hasta que momento se ejecutarán las
instrucciones, dicho momento se estipula a través de condición de
tal manera que en el momento en que esta sea Verdadera dejaran de
ejecutarse las instrucciones.

Ejemplos:

PERFORM PROCESAR UNTIL SWF = 1.

PERFORM SUMAR UNTIL I > 100.


4.- Instrucción PERFORM .. VARYING: permite ejecutar el conjunto de instrucciones
contenidas en el procedimiento llamado, una,
dos, o más veces, dependiendo de la variación
de un item numérico desde un valor inicial y
hasta que este llega a un valor final. Su
formato es:


PERFORM Nombre-proced-1 [THROUGH/THRU Nombre-proced-2]
VARYING Variable-1 FROM Valor-Inicial-1 BY Incremento-1 UNTIL Condicion-1
[AFTER Variable-2 FROM Valor-inicial-2 BY Incremento-2 UNTIL Condicion-2]
[AFTER Variable-3 FROM Valor-inicial-3 BY Incremento-3 UNTIL Condicion-3
[END-PERFORM].

En donde:

Variable-1, 2, 3 : deben ser item numérico enteros con o sin signo.

Valor-inicial-1, 2, 3 : representan el valor inicial que tomarán las variables
anteriores.

Incremento-1, 2, 3 : corresponden a los incrementos numéricos para las
variables.

UNTIL Condición-1, 2, 3 : representan las condiciones por las cuales se da término
a la ejecución.







Ejemplos:

PERFORM CEROS VARYING I FROM 1 BY 1 UNTIL I > 10.

PERFORM VACIAR-TAC VARYING I FROM 1 BY 1 UNTIL I > 5
AFTER K FROM 1 BY 1 UNTIL K > 10.



Otras Instrucciones

1.- Mover información MOVE: : permite mover información desde un lugar de la
memoria hacia otro lugar de ella. Sus formatos
son:

Formato 1

MOVE {Nombre-dato-1/Constante} TO Nombre-dato-2 [, Nombre-dato-3 ] ...
[END-MOVE ].

Formato 2

MOVE {CORRESPONDING/CORR} Nombre-dato-1 TO Nombre-dato-2
[END-MOVE ].

En donde:

Constante : puede ser numérica o alfanumérica.

Nombre-dato-1 : representa al item de datos emisor, es decir, el que tiene la
información a mover.

Nombre-dato-2, 3 : corresponden a los item de datos que reciben la información
se conocen como receptores.


Ejemplos:

MOVE ART TO LD-ART.

MOVE 1 TO SWE.

MOVE “RUT NO VALIDO POR MOD. 11” TO LE-ERROR.


2.- Ir a GO TO: permite romper el flujo de ejecución de un programa, transfiriendo
el control de ejecución de este, hacia otro punto del programa
y referenciado a través de un Nombre de Párrafo o Sección. Se le
conoce como Sentencia de Transferencia de Control Incondicional
puesto que la ejecución de ella no depende de ninguna condición.
Sus formatos son:

Formato 1

GO TO Nombre-procedimiento.

Formato 2

GO TO Nombre-proced-1, Nombre-proced-2, ... DEPENDING ON Nombre-dato.



En donde:

Nombre-proced-1, 2 : corresponde al Nombre del Procedimiento a donde se
transfiere el control de ejecución del programa.

DEPENDING ON : permite bifurcar al primer nombre de procedimiento, si el
Nombre de dato es igual a 1; bifurca al segundo nombre de
procedimiento si nombre de dato es igual a 2; y así
Sucesivamente.

Nombre-dato : debe ser el nombre de un item numérico entero con o
sin signo.

Ejemplos:

GO TO LEER-ENT.

GO TO INGRESA, MODIFICA, ELIMINA DEPENDING ON COD-MOVIM.


3.- Detener ejecución STOP: : permite detener la ejecución del programa en forma
temporal o definitiva. Su formato es:

STOP {RUN/Constante-alfanumérica}

En donde:

RUN : indica que la ejecución se detenga definitivamente.

Constante-alfanumérica : detiene momentáneamente la ejecución, visualizando el
contenido de Constante-alfanumérica. El proceso finaliza
cuando el operador pulsa INTRO.

Ejemplos:

STOP RUN.

STOP “TERMINO DE EJECUCION”.


4.- Término de procedimiento EXIT: : permite especificar un punto de término a un
procedimiento. Su formato es:

Nombre-párrafo. EXIT.

Ejemplo:

FIN-CALCULO. EXIT.

5.- Desplegar en pantalla DISPLAY: : permite visualizar datos por la pantalla de una
estación de trabajo. Su formato es:

DISPLAY {Nombre-dato/Constante} UPON Nombre-estación-trabajo.

En donde:

Nombre-dato, Constante : corresponde al item de datos o constante a
visualizar en pantalla.

UPON : permite indicar al sistema como se ha nombrado
A la estación de trabajo en la cláusula
REQUESTOR.

Ejemplo:

DISPLAY “INGRESE VALOR DE DOLAR” UPON PANTA.

DISPLAY “COD. EMPLEADO = “, COD-EMP UPON TELE.


6.- Lee desde el teclado ACCEPT : permite ingresar datos desde el teclado de una
estación de trabajo, o ciertos valores del
sistema. Su formato es:

ACCEPT Nombre-dato FROM {Nombre-estación-trabajo/DATE/TIME}.

En donde:

Nombre-dato : corresponde al Nombre de Dato que recibe el dato leído.

FROM : especifica desde donde se leerá el dato.

Nombre-estación-trabajo : corresponde al Nombre dado a la estación de trabajo con
la cláusula REQUESTOR.

DATE : especifica que la entrada de dato es desde un campo
del sistema que almacena la Fecha del Sistema en formato
aammdd.

TIME : especifica que la entrada de dato es desde un campo del
sistema que almacena la Hora del Sistema en formato
hhmmss.

Ejemplos:

ACCEPT VAL-DOL FROM PANTA.

ACCEPT FECH-S FROM DATE.

ACCEPT HORA-S FROM TIME.

Comentarios

  1. Muy buena la información, son muy convenientes los ejemplos para fijar bien el formato de la sentencia.
    Me sirvió de mucho.
    Suert
    **chivi**

    ResponderEliminar

Publicar un comentario

Entradas populares