Upload
jose-ernane-sousa-rodrigues
View
263
Download
7
Tags:
Embed Size (px)
Citation preview
MENUMENU
Salir
PROGRAM-ID. Nombre-programa.
[AUTHOR. Nombre programador]
[INSTALATION. Comentario.]
[DATE-WRITTEN. Comentario.]
[DATE-COMPILED. Comentario.]
CONFIGURATION SECTION.
SOURCE-COMPUTER.
OBJECT-COMPUTER.
[INPUT-OUTPUT SECTION.
FILE-CONTROL SELECT .... ]
[FILE SECTION.]
[WORKING-STORAGE SECTION.]
[LINKAGE SECTION.]
Identification Division
Environment Division Data division
Procedure Division
Prog. ejemplo
Tablas (arreglos)
ACCEPT DISPLAY OPEN SUBTRACT
ADD DIVIDE PERFORM UNSTRING
CALL EVALUATE READ WRITE
CANCEL IF REWRITE
CLOSE INSPECT SELECT
COMPUTE MOVE STOP RUN
COPY MULTIPLY STRING
Lee y copia archivos sec.
Lee y copia de arch. Indexado a secuencial
Cortes de Control
Prog. estructurada
IDENTIFICATION DIVISION. PROGRAM-ID. Nombre-programa. - Sirve para Identificar el prog.
[AUTHOR. Nombre-programador.] - Comentario
[INSTALATION. ..............] - Comentario
[DATE-WRITTEN. .............] - Comentario
[DATE-COMPILED. ............] - Comentario
IDENTIFICATION DIVISION.
Es usada para indicar información de identificación del programa,también provee información referente a :programador, fecha de creación, fecha de compilación.
Menú
ENVIRONMENT DIVISION.describe el equipo de cómputo en donde se utilizará el programa. Así como la indicación de los archivos que se van a usar (select)
CONFIGURATION SECTION.
SOURCE-COMPUTER. Computador donde se va a compilar el programa (informativo)
OBJECT-COMPUTER. Computador donde se va a ejecutar el programa (informativo)
[INPUT-OUTPUT SECTION. Informa los dispositivos de entrada y salida
FILE-CONTROL se selecciona un nombre de archivo por cada archivo a usar
para arch. Secuencial
SELECT nombre-arch-en-programa ASSIGN TO nombre-arch-en-jcl
ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL
FILE STATUS IS variable de trabajo]
para arch. Indexado
SELECT nombre-arch-en-programa ASSIGN TO nombre-arch-en-jcl
ORGANIZATION IS INDEXED ACCESS MODE IS SEQUENTIAL o DYNAMIC
FILE STATUS IS variable de trabajo]
Instrucciones Asociadas Menú
Instrucciones asociadas a SELECTnombre-arch-en-programa - se indica el nombre del archivo que se usara para referenciar al
archivo en la procedure division. nombre-arch-en-jcl - se indica el nombre del archivo que se usara para referenciar al
archivo en el JCL que se encargara de la ejecución del programa.variable de trabajo - variable de trabajo referenciada en working storage y sirve para
conocer el status de cualquier acción que se efectue en el archivo.EJEMPLO :
ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTROL. SELECT CUENTAS-A-PAGAR ASSIGN TO CUENTAS ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS-STATUS-CTAS. DATA DIVISION.FILE SECTION.FD CUENTAS-A-PAGAR LABEL RECORD IS STANDARD BLOCK CONTAINS 80 CHARACTERS. 01 REG-CTAS. 05 REG-DATO PIC X(80).
WORKING-STARAGE SECTION. 01 FS-STATUS-CTAS PIC X(02) VALUE ‘00’.....PROCEDURE DIVISION.OPEN CUENTAS-A-PAGAR IF FS-STATUS-CTAS NOT = ‘00’ PERFORM ERROR-OPENEND-IF CLOSE ......
ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTROL. SELECT CUENTAS-A-PAGAR ASSIGN TO CUENTAS ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS-STATUS-CTAS. DATA DIVISION.FILE SECTION.FD CUENTAS-A-PAGAR LABEL RECORD IS STANDARD BLOCK CONTAINS 80 CHARACTERS. 01 REG-CTAS. 05 REG-DATO PIC X(80).
WORKING-STARAGE SECTION. 01 FS-STATUS-CTAS PIC X(02) VALUE ‘00’.....PROCEDURE DIVISION.OPEN CUENTAS-A-PAGAR IF FS-STATUS-CTAS NOT = ‘00’ PERFORM ERROR-OPENEND-IF CLOSE ......
CUENTAS
DISK
Anterior
DATA DIVISION.Se usa para indicar el formato de los datos que utilizará el programa.
Esta dividida en 2 secciones que son : FILE SECTION. WORKING-STORAGE SECTION.
Donde :
FILE SECTION es usada definir todas las áreas de datos que son parte de los archivos de entrada o de salida
WORKING-STORAGE SECTION es usada para la descripción de a campos de trabajo (variables) usadas en el prog.
Formato y Ejemplo
Formato y Ejemplos
Menú
DATA DIVISION.La FILE SECTION tienen la siguiente estructura :
FD nombre-arch BLOCK CONTAINS entero-1 TO entero-2 RECORDS
CHARACTERS
LABEL RECORD IS STANDARDOMITTED
DATA RECORD IS nombre registro
FILE SECTION.
- Se indica el tamaño del bloque (factor de agrupamiento) - Se indica el uso de etiqueta o su omision (para archivos de impresión) - Se indica el nombre del registro (el cuál debe estar inmediatamente después en nivel 01)
FILE SECTION.FD CUENTAS LABEL RECORD IS STANDARD BLOCK CONTAINT 50 CHARACTERS DATA RECOD IS REG-CUENTAS. 01 REG-CUENTAS. 05 TIPO-CTA. 10 PRODUCTO PIC 9(3). 10 NUM-CTA PIC 9(8) COMP-3. 10 DIG-VERIF PIC 9(1). 05 DESCRIPCION-CTA PIC X(40). 05 COD-ESTADO PIC 99.
EJEMPLO
Anterior
DATA DIVISION.La WORKING-STORAGE SECTION :
Se usa para describir todas las variables de trabajo, que serán usadas por el programa, pudiendo contener un valor inicial así como se pueden agrupar y redefinir por niveles. Los niveles validos van desde el 01 hasta el 49, además existen los niveles 66 77 y 88 cuyas funciones son especificas.
Ejemplos :
WORKING-STORAGE SECTION.01 WS-TRABAJO.
05 WS-NOMBRE PIC X(26) VALUE SPACES. 05 WS-CUENTA PIC 9(06) VALUE ZEROS.
05 WS-IMPORTE PIC S9(09)V99 COMP-3 value 0.36.
05 WS-TASA PIC V9(4) VALUE .765.
05 WS-CONSTANTE PIC 9(05) VALUE 12345.01 SW-CONTROL PIC X(02) VALUE ‘NO’.
88 SI-FIN-LECT VALUE ‘SI’.88 NO-FIN-LECT VALUE ‘NO’.
77 WS-CALCULA PIC X(02) VALUE ‘SI’.
WORKING-STORAGE SECTION.01 WS-TRABAJO.
05 WS-NOMBRE PIC X(26) VALUE SPACES. 05 WS-CUENTA PIC 9(06) VALUE ZEROS.
05 WS-IMPORTE PIC S9(09)V99 COMP-3 value 0.36.
05 WS-TASA PIC V9(4) VALUE .765.
05 WS-CONSTANTE PIC 9(05) VALUE 12345.01 SW-CONTROL PIC X(02) VALUE ‘NO’.
88 SI-FIN-LECT VALUE ‘SI’.88 NO-FIN-LECT VALUE ‘NO’.
77 WS-CALCULA PIC X(02) VALUE ‘SI’.
Valores iniciales..26
0 0 0 0 0 0
0 0 0
0 0 0
0 0 6
0 3 F
7 6 5
1 2 3 4 5
S I
N O
Ver Arreglos
Anterior
Ver Edición
Ver Inserción
Anterior
DATA DIVISION.WORKING-STORAGE SECTION
TABLAS (arreglos)Una tabla es una secuencia continua de localizaciones de memoria llamados elementoselementos, , los cuales tienen el mismo nombre y unicamente son son identificados por el nombre y la posicion en la secuencia.
Una tabla es una secuencia continua de localizaciones de memoria llamados elementoselementos, , los cuales tienen el mismo nombre y unicamente son son identificados por el nombre y la posicion en la secuencia.
Declaración de tablas.
Una Dimensión
Dos Dimensiones
Ver
Ver
Símbolos de Edición
, B 0 / Inserción Simple
. Inserción Especial
+ - CR DB $ Inserción Fija
+ - S Inserción Flotante
Z * Supresión y Reemplazo
, B 0 / Inserción Simple
. Inserción Especial
+ - CR DB $ Inserción Fija
+ - S Inserción Flotante
Z * Supresión y Reemplazo
Símbolo Edición Tipo de EdiciónSímbolo Edición Tipo de Edición
Anterior
Inserción Simple
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC 999999 123456 PIC 999,999
PIC 9(6) 000078 PIC 9(3),9(3)
PIC 9(6) 000078 PIC ZZZ,ZZZ
PIC 9(6) 000178 PIC ***,***
PIC 9(6) 002178 PIC ***,***
PIC 9(6) 120183 PIC 99B99B99
PIC 9(6) 120183 PIC 99/99/99
PIC 9(6) 001245 PIC 990099
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC 999999 123456 PIC 999,999
PIC 9(6) 000078 PIC 9(3),9(3)
PIC 9(6) 000078 PIC ZZZ,ZZZ
PIC 9(6) 000178 PIC ***,***
PIC 9(6) 002178 PIC ***,***
PIC 9(6) 120183 PIC 99B99B99
PIC 9(6) 120183 PIC 99/99/99
PIC 9(6) 001245 PIC 990099
123,456000,07878 ***178**2,17812018312/01/83 120045
SiguienteAnterior
Inserción Especial.
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC 999V99 12345 PIC 999.99
PIC 999V99 02345 PIC 999.9
PIC 999V99 51234 PIC 99.99
PIC 999 456 PIC 999.99
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC 999V99 12345 PIC 999.99
PIC 999V99 02345 PIC 999.9
PIC 999V99 51234 PIC 99.99
PIC 999 456 PIC 999.99
123.45
023.4
12.34
456.00
SiguienteAnterior
Inserción Fija - Positiva y Negativa
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC S999 -123 PIC -999
PIC S999 -123 PIC 999-
PIC S999 +123 PIC -999
PIC S9(5) +12345 PIC +9(5)
PIC S9(3) -123 PIC +9(3)
PIC S9(3) -123 PIC 999+
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC S999 -123 PIC -999
PIC S999 -123 PIC 999-
PIC S999 +123 PIC -999
PIC S9(5) +12345 PIC +9(5)
PIC S9(3) -123 PIC +9(3)
PIC S9(3) -123 PIC 999+
-123123-123+12345-123123-
SiguienteAnterior
Inserción Fija - Crédito, Débito, $
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC S9(4) +1234 PIC 9(4)CR
PIC S9(4) -1234 PIC 9(4)CR
PIC S9(4) +1234 PIC 9(4)DB
PIC S9(4) -1234 PIC 9(4)DB
PIC 9(4) 1234 PIC $99999
PIC 9(4) 0000 PIC $ZZZZZ
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC S9(4) +1234 PIC 9(4)CR
PIC S9(4) -1234 PIC 9(4)CR
PIC S9(4) +1234 PIC 9(4)DB
PIC S9(4) -1234 PIC 9(4)DB
PIC 9(4) 1234 PIC $99999
PIC 9(4) 0000 PIC $ZZZZZ
12341234CR12231234DB$01234$
SiguienteAnterior
Inserción Flotante.
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC 9(4) 0000 PIC $$,$$9.99
PIC 9(4) 0080 PIC $$,$$9.00
PIC 9(4) 0128 PIC $$,$$9.99
PIC 9(5) 57397 PIC $$,$$9
PIC S9(4) - 0005 PIC ++++9
PIC S9(4) +0080 PIC ++++9
PIC S9(4) - 0080 PIC - - - - 9
PIC S9(5) +71234 PIC - - - - 9
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC 9(4) 0000 PIC $$,$$9.99
PIC 9(4) 0080 PIC $$,$$9.00
PIC 9(4) 0128 PIC $$,$$9.99
PIC 9(5) 57397 PIC $$,$$9
PIC S9(4) - 0005 PIC ++++9
PIC S9(4) +0080 PIC ++++9
PIC S9(4) - 0080 PIC - - - - 9
PIC S9(5) +71234 PIC - - - - 9
$0.00$80.00$128.00$7,397-5+80-80ž1234
SiguienteAnterior
Supresión y Remplazo
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC 9(5) 12345 PIC ZZ,999
PIC 9(5) 01234 PIC ZZ,999
PIC 9(5) 00123 PIC ZZ,999
PIC 9(5) 00012 PIC ZZ,999
PIC 9(5) 05678 PIC **,**9
PIC 9(5) 00567 PIC **,**9
PIC 9(5) 00000 PIC **,***
se Manda se Manda se Recibe se Recibe
Picture Datos Picture ResultadoPicture Datos Picture Resultado
PIC 9(5) 12345 PIC ZZ,999
PIC 9(5) 01234 PIC ZZ,999
PIC 9(5) 00123 PIC ZZ,999
PIC 9(5) 00012 PIC ZZ,999
PIC 9(5) 05678 PIC **,**9
PIC 9(5) 00567 PIC **,**9
PIC 9(5) 00000 PIC **,***
12,3451,234123012*5,678***567******
RegresarAnterior
ACCEPT
TIME
DAY
DATE
FROMIdent -Campo ACCEPT Formato 2
- Mnemonico FROMIdent -Campo ACCEPT Formato 1
* AAMMDD 01 WS-FECHA01 WS-FECHA PIC PIC 9(06).9(06).
* AAMMDD 01 WS-DIA-AA01 WS-DIA-AA PIC PIC 9(05).9(05).
* HHMMSSss s = s/100 01 WS-HORA 01 WS-HORA PIC 9(8).PIC 9(8).
* AAMMDD 01 WS-FECHA01 WS-FECHA PIC PIC 9(06).9(06).
* AAMMDD 01 WS-DIA-AA01 WS-DIA-AA PIC PIC 9(05).9(05).
* HHMMSSss s = s/100 01 WS-HORA 01 WS-HORA PIC 9(8).PIC 9(8).
ACCEPT WS-FECHA FROM DATE
ACCEPT WS-DIA-AA FROM DAY
ACCEPT WS-HORA FROM TIME
MenúEjemplo
Ejemplos :
ADD SUBTRACT MULTIPLY
ADD SUBTRACT MULTIPLY
Ejemplos ROUNDED
Ejemplos ON SIZE...
Menú
estatutos n-Identif2-Literal,
2-Identif,
1-Literal
1-Identif ... ERROR SIZE ON ROUNDEDTO ADD
estatutos n-Identif3-Literal,
3-Identif,
2-Literal
2-Identif
1-Literal
1-Identif ... , ERROR SIZE ON ROUNDED GIVING ADD
estatutos n-Identif2-Literal,
2-Identif,
1-Literal
1-Identif ... ERROR SIZE ON ROUNDED FROM SUBTRACT
estatutos
x-Identif n -Identif2-Literal,
2-Identif,
1-Literal
1-Identif
...
ERROR SIZE ON
ROUNDED GIVINGFROM SUBTRACT
estatutos 2-Identif1-Literal
1-Identif ERROR SIZE ON ROUNDEDBY MULTIPLY
estatutos
3 -Identif 2-Literal
2-Identif
1-Literal
1-Identif
ERROR SIZE ON
ROUNDEDGIVINGBY MULTIPLY
ROUNDED
La opción ROUNDED hace que suba al siguiente La opción ROUNDED hace que suba al siguiente valor el resultado cuando es mayor o igual a 5.valor el resultado cuando es mayor o igual a 5.
Campo definido Resultado Result. Truncado Result. Redond.
PIC 9(3)V9. 123.25
PIC 9(3). 123.25
123.2 123.3
123 123
Anterior
Campo definido Resultado SIZE ERROR
PIC 9(3)V9. 245.96
PIC 9(3)V9. 1245.9
PIC 9(3). 124
PIC 9(3). 1246
PIC 9(3)V9 No Redondeado 124.45
PIC 9(3)V9 Redondeado 124.45
PIC 9(3)V9 Redondeado 3124.45
Un error de tamaño existe cuando no concuerda Un error de tamaño existe cuando no concuerda el tamaño indicado en el picture con el resultado el tamaño indicado en el picture con el resultado de la operación, resultando un valor truncado.de la operación, resultando un valor truncado.
ON SIZE ERROR
SíSí
No
SíSí
No
Sí
Anterior
Ejemplos de ADD
ADD Pesos TO Total.AntesAntes 3 1000DespuésDespués
ADD Pesos TO Total, Pago.AntesAntes 20 1019 100DespuésDespués
ADD Pesos Total GIVING Resultado.Antes Antes 3 1000 0015DespuésDespués
ADD Hombres TO Damas GIVING Personas.AntesAntes 1500 0625 1234DespuésDespués
ADD Pesos TO Total.AntesAntes 3 1000DespuésDespués
ADD Pesos TO Total, Pago.AntesAntes 20 1019 100DespuésDespués
ADD Pesos Total GIVING Resultado.Antes Antes 3 1000 0015DespuésDespués
ADD Hombres TO Damas GIVING Personas.AntesAntes 1500 0625 1234DespuésDespués
3 1003
20 1039 120
3 1000 1003
1500 0625 2125
Anterior
Ejemplos de SUBTRACT
SUBTRACT Impuesto FROM Pago, Total.AntesAntes 120 4000 9120 DespuésDespués
SUBTRACT Impuesto, 80 FROM Total.AntesAntes 100 480DespuésDespués
SUBTRACT Impuesto FROM Pago GIVING PagoNeto.Antes Antes 750 1000 0012DespuésDespués
SUBTRACT Impuesto FROM Pago, Total.AntesAntes 120 4000 9120 DespuésDespués
SUBTRACT Impuesto, 80 FROM Total.AntesAntes 100 480DespuésDespués
SUBTRACT Impuesto FROM Pago GIVING PagoNeto.Antes Antes 750 1000 0012DespuésDespués
120 3880 9000
100 300
750 1000 0250
Anterior
Ejemplos de MULTIPLY
MULTIPLY Costo BY Productos GIVING Total-Pago ON SIZE ERROR DISPLAY "Total Pago Erroneo" END-MULTIPLY. Costo Productos Total-PagoCosto Productos Total-Pago
Antes Antes 15.50 100 0123.45DespuésDespués
MULTIPLY 10 BY Magnitud
AntesAntes 355 DespuésDespués
MULTIPLY Costo BY Productos GIVING Total-Pago ON SIZE ERROR DISPLAY "Total Pago Erroneo" END-MULTIPLY. Costo Productos Total-PagoCosto Productos Total-Pago
Antes Antes 15.50 100 0123.45DespuésDespués
MULTIPLY 10 BY Magnitud
AntesAntes 355 DespuésDespués
15.50 100 1550.00
3550
Anterior
DIVIDE
DIVIDE 201 BY 10 GIVING Cociente REMAINDER. Remanente.AntesAntes 209 424DespuésDespués
DIVIDE 201 BY 10 GIVING Cociente REMAINDER. Remanente.AntesAntes 209 424DespuésDespués 020 001
Menú
Estatutos ERROR SIZE ON; 4-Identif REMAINDER
]ROUNDED[ 3-Identif GIVING 2-Literal
2-Identif BY
1-Literal
1-Identif DIVIDE
Estatutos ERROR SIZE ON; 4-Identif REMAINDER
]ROUNDED[ 3-Identif GIVING 2-Literal
2-Identif INTO
1-Literal
1.-Identif DIVIDE
Compute Precio-Mexico = Precio-Plata / Tasa * 100.Antes Antes 1000.50 156.25 87 DespuésDespués
Compute Precio-Mexico = Precio-Plata / Tasa * 100.Antes Antes 1000.50 156.25 87 DespuésDespués 179.59 156.25 87
COMPUTE
COMPUTE-END estatutos ERROR SIZE ON NOT
ERROR SIZE ON
AritmeticaExpresion = ... ] ROUNDED [ Identif. COMPUTE
Símbolos para COMPUTESímbolos para COMPUTE**** = EXPONENCIACION NN
** = MULTIPLICA x// = DIVIDE ÷
++ = SUMA +-- = RESTA -
Símbolos para COMPUTESímbolos para COMPUTE**** = EXPONENCIACION NN
** = MULTIPLICA x// = DIVIDE ÷
++ = SUMA +-- = RESTA -
Menú
CALL
CALL Nombre de programa [USING Nombre-dato-1 [Nombre-dato-2]...] [ON OVERFLOW Sentencias [END-CALL]
Instrucción que sirve para transferir el control de un programa a otro programa o a un sub-programa.
IDENTIFICATION DIVISION.PROGRAM-ID. PROG-B.
DATA DIVISION.WORKING-STORAGE SECTION.01 WS-CALC-A PIC 9(5) VALUE 0.LINKAGE SECTION.01 LI-RECIBE PIC X(20).
PROCEDURE DIVISION USING LI-RECIBE. INICIO. DISPLAY “PROGRAMA LLAMADO” DISPLAY “ NOMBRE RECIBIDO : ” DISPLAY LI-RECIBE EXIT PROGRAM.
IDENTIFICATION DIVISION.PROGRAM-ID. PROG-B.
DATA DIVISION.WORKING-STORAGE SECTION.01 WS-CALC-A PIC 9(5) VALUE 0.LINKAGE SECTION.01 LI-RECIBE PIC X(20).
PROCEDURE DIVISION USING LI-RECIBE. INICIO. DISPLAY “PROGRAMA LLAMADO” DISPLAY “ NOMBRE RECIBIDO : ” DISPLAY LI-RECIBE EXIT PROGRAM.
IDENTIFICATION DIVISION.PROGRAM-ID. PROG-A.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NOMB PIC X(20) VALUE SPACES.LINKAGE SECTION.01 LI-ENVIA PIC X(20).
PROCEDURE DIVISION.INICIO. DISPLAY “PROGRAMA LLAMADOR ” DISPLAY “ INDIQUE SU NOMBRE : ” ACCEPT WS-NOMB MOVE WS-NOMB TO LI-ENVIA CALL PROG-B USING LI-ENVIA DISPLAY “REGRESE A LLAMADOR” STOP RUN.
IDENTIFICATION DIVISION.PROGRAM-ID. PROG-A.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NOMB PIC X(20) VALUE SPACES.LINKAGE SECTION.01 LI-ENVIA PIC X(20).
PROCEDURE DIVISION.INICIO. DISPLAY “PROGRAMA LLAMADOR ” DISPLAY “ INDIQUE SU NOMBRE : ” ACCEPT WS-NOMB MOVE WS-NOMB TO LI-ENVIA CALL PROG-B USING LI-ENVIA DISPLAY “REGRESE A LLAMADOR” STOP RUN.
PROG. LLAMADOR PROG. LLAMADOPROG. LLAMADOR PROG. LLAMADO
EJECUTAR Menú
MOVE
El MOVE copia datos desde un identificador o literal origen a uno o mas campos de destino.
... . TO .
MOVE IdentifLiteral
Identif
01 Apellido PIC X(8) VALUE SPACES.
MOVE “LOZA” TO Apellido. MOVE “LOZA” TO Apellido.
L O Z A
MOVE con caracteres
MenúSiguiente
01 Cta-chq PIC 9(3).01 Saldo PIC 9(3)V99.
MOVE 123 TO Cta-chq.
MOVE 12.4 TO Cta-chq.
MOVE 154 TO Saldo.
MOVE 3552.75 TO Saldo.
Articulo
1 2 3
Articulo
1 5 4 0 0 Precio
Precio
3 .
0 1 2
5 5 2 7 5
.
. 4
MOVE con númericosMOVE
MenúAnterior
Menú
COPY
END
Numseq2numseq1, Nombretext COPY
THRU
THROUGH
EJEMPLO : COPY MAESTRO.
FD MAESTRO. LABEL RECORD IS STANDARD. RECORD CONTAINS 73 CHARACTERS. 01 REG-MAESTRO. 05 CUENTA PIC X(18). 05 CTA-RED REDEFINES CUENTA. 10 PRODUCTO PIC X(02). 10 TIPO PIC X(08) 10 CONSEC PIC 9(08). 05 CLIENTE PIC X(40). 05 SALDO PIC S9(12)V99.
FD MAESTRO. LABEL RECORD IS STANDARD. RECORD CONTAINS 73 CHARACTERS. 01 REG-MAESTRO. 05 CUENTA PIC X(18). 05 CTA-RED REDEFINES CUENTA. 10 PRODUCTO PIC X(02). 10 TIPO PIC X(08) 10 CONSEC PIC 9(08). 05 CLIENTE PIC X(40). 05 SALDO PIC S9(12)V99.
ARCHIVO : MAESTRO EN LA BIBLIOTECA DE COPYS
ESTA SENTENCIA, PERMITE INCORPORAR A UN PROGRAMA UNA SERIE DE TEXTOS COBOL, PREVIAMENTEESCRITOS Y ALMACENADOS EN UNA BIBLIOTECA.
FORMATO
CANCEL
Esta instrucción libera el AREA de memoria utilizada por Esta instrucción libera el AREA de memoria utilizada por un programa, Garantizando que la siguiente vez que sea un programa, Garantizando que la siguiente vez que sea llamado el programa partamos de su estado original.llamado el programa partamos de su estado original.
formato :CANCEL Identificador-1
Literal-1
, Identificador-1, Literal-1
........
Ejemplo :
CALL ”PROG-B" USING LI-ENVIA.CANCEL ”PROG-B"CALL ”PROG-Br" USING LI-ENVIA.
Menú
OPEN
...prog. elen arch. Nombre OPEN
EXTEND
OUTPUT
INPUTFormato :
- Cuando se abre un archivo debe indicarse su USO.
- El abrir un archivo NO LEE ningún registro simplemente provee el acceso.
Menú
CLOSE
progen arch Nombre CLOSEFormato :
- Cuando se cierra un archivo ya no es posible efectuar READs o WRITEs.
Menú
DISPLAY
ADVANCING NO WITHUPON
... Literal
dorIdentifica
Literal
dorIdentifica DISPLAY
Mnemonico-Nombre
Se usa para desplegar mensajes y datos en la pantalla.
La cláusula WITH NO ADVANCING suprime el retorno de carro y/o fin de linea.
Formato :
MenúEjemplo
Programa COBOL ejemplo :
IDENTIFICATION DIVISION.PROGRAM-ID. EJEM-1.AUTHOR. FRANCISCO JAVIER MEJIA.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-FECHA. 05 WS-YY PIC 99. 05 WS-MES PIC 99. 05 WS-DIA PIC 99.PROCEDURE DIVISION.Inicio. ACCEPT WS-FECHA FROM DATE. DISPLAY “DIA : ” WS-DIA. DISPLAY “MES : ” WS-MES. DISPLAY “AÑO : ” WS-YY.
STOP RUN.
IDENTIFICATION DIVISION.PROGRAM-ID. EJEM-1.AUTHOR. FRANCISCO JAVIER MEJIA.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-FECHA. 05 WS-YY PIC 99. 05 WS-MES PIC 99. 05 WS-DIA PIC 99.PROCEDURE DIVISION.Inicio. ACCEPT WS-FECHA FROM DATE. DISPLAY “DIA : ” WS-DIA. DISPLAY “MES : ” WS-MES. DISPLAY “AÑO : ” WS-YY.
STOP RUN.
EjecutarEjecutarEjecutarEjecutar
Menú
IF
• Condiciones Simples
– Condiciones de Relación
– Condiciones de Clase
– Condiciones de Signo
• Condiciones Combinadas
• Condiciones de Nombre
• Condiciones Simples
– Condiciones de Relación
– Condiciones de Clase
– Condiciones de Signo
• Condiciones Combinadas
• Condiciones de Nombre
Tipos de CTipos de CONDICIÓNONDICIÓN
IF-END SENTENCE NEXT
Estatutos de Grupo ELSE
SENTENCE NEXTEstatutos de Grupo
THENCondición
IFFormato :Formato :
Menú
Ver
Ver
Ver
Ver
Ver
Condiciones de Relación
ritméticaExpresiónA
Literal
rIdenticado
ritméticaExpresiónA
Literal
rIdenticado
<=
TO EQUAL OR THAN LESS
>=
TO EQUAL OR THAN GREATER
= NOT
TO EQUAL NOT
< NOT
THAN LESS NOT
> NOT
THAN GREATER NOT
IS
• Permiten saber si un campo es mayor, menor o igual a otro.
Formato :Formato :
Anterior
Condiciones de Clase
• Permiten saber si un campo es Numérico o Alfabético.
Usuarioelpor definida Clase
UPPER-ALPHABETIC
LOWER-ALPHABETIC
ALPHABETIC
NUMERIC
]NOT[ ISdor Identifica
Formato :Formato :
Anterior
Condiciones de Signo
• El signo determina la condición de positivo, negativo o cero.
ZERO
NEGATIVE
POSITIVE
]NOT[ IS rico)Campo(Numé
Formato :Formato :
• Permiten saber si un campo numerico es positivo negativo o cero.
Anterior
Condiciones Combinadas.
• Una condición combinada esta formada por un conjunto de condiciones simples unidas por los operadores AND y OR.
• Se debe tomar en cuenta que es posible evaluar una condición de cierto o falso (si el campo de la condición previamente fue definido con nivel 88).
Condición OR
AND
CondiciónFormato :Formato :
SiguienteAnterior
( ) ( )
Ejemplos
IF VarA > VarC OR VarC = VarD OR VarA NOT = VarF IF VarA > VarC OR VarC = VarD OR VarA NOT = VarF DISPLAY “Algo”.DISPLAY “Algo”.
( ) ( ) ( )
IF Linea > 0 AND Linea < 26 IF Linea > 0 AND Linea < 26 DISPLAY “En pantalla”.DISPLAY “En pantalla”.
IF VarA > VarB AND VarC = VarD OR VarA NOT = VarF IF VarA > VarB AND VarC = VarD OR VarA NOT = VarF DISPLAY “Algo”.DISPLAY “Algo”.
( ) ( )
Anterior
Nombres de Condición
Los NOMBRES CONDICION (Condición Booleana) son condiciones cuyo resultado únicamente puede ser CIERTO o FALSO.
Los nombres de condición son definidos en DATA DIVISION usando el nivel especial número 88.
HighValue
THRU
THROUGH LowValue
Literal
VALUES
VALUECondición Nombre 88
Anterior
01 Cod-bco PIC 9 VALUE 5.88 Bancomer VALUE 1.88 Banorte VALUE 2.88 Banamex VALUE 3.88 Bital VALUE 4.88 Banco XYZ VALUE 5. 88 Buenos-Bcos VALUE 1 THRU 4.
01 Cod-bco PIC 9 VALUE 5.88 Bancomer VALUE 1.88 Banorte VALUE 2.88 Banamex VALUE 3.88 Bital VALUE 4.88 Banco XYZ VALUE 5. 88 Buenos-Bcos VALUE 1 THRU 4.
IF Buenos-Bancos PERFORM Calcula-algo.IF Bancomer PERFORM verifica.
IF Buenos-Bancos PERFORM Calcula-algo.IF Bancomer PERFORM verifica.
Bancomer CIERTOBanorte FALSOBanamex FALSOBital FALSOBanco XYZ FALSOBuenos-Bcos CIERTO
Cod-bco : 1Cod-bco : 1
EJEMPLO
Menú
Evaluate
MenúOtro Ejem.
EVALUATE-END
OTHERWHEN
WHEN
EVALUATE
Estatutos
Estatutos
1-Condicion
FALSE
TRUE
1-Expresion
1-Identif
SE USA LA INSTRUCCIÓN EVALUATE PARA PROBAR UNA SERIE DE CONDICIONES DE UN CAMPO
EJEMPLO : READ ENTRADA AT END SET WS-FIN TO TRUE NOT AT END EVALUATE TIPO-CTA WHEN ‘CH’ PERFORM PROCESA-CHEQUES WHEN ‘IN’ PERFORM PROCESA-INVERSION WHEN OTHER PERFORM REGISTRO-ERRONEO END-EVALUATE END-READ.
EJEMPLO
EXEC SQLSELECT CONTRATO INTO :WS-CONTRATO FROM TAB-PAGOS
WHERE CONTRATO > 0000000END-EXEC. AVALUATE SQLCODE WHEN 0 PERFORM PROCESA-REGISTRO WHEN OTHER PERFORM VERIFICA-SQLCODE END-EVALUATE.
EXEC SQLSELECT CONTRATO INTO :WS-CONTRATO FROM TAB-PAGOS
WHERE CONTRATO > 0000000END-EXEC. AVALUATE SQLCODE WHEN 0 PERFORM PROCESA-REGISTRO WHEN OTHER PERFORM VERIFICA-SQLCODE END-EVALUATE.
MenúAnterior
INSPECT
INITIAL AFTER
BEFORE
LEADING
ALL
Delimitador INITIAL AFTER
BEFORE CHARACTERS
FOR
TALLYING identificador-1
INSPECT
identificador-2 identificador-3 literal-1
identificador-4 literal-2
FORMATO 1FORMATO 1
INITIAL AFTER
BEFORE
BY
FIRST
LEADING
ALL
CHARACTERS
REPLACING iidentificador-1
INSPECT
Identificador-5literal-3
Identificador-6literal-4
Identificador-7literal-5
FORMATO 2FORMATO 2
MenúEjemplos
Ejemplos
PERFORM VARYING ind FROM 1 BY 1 UNTIL ind > 40 INSPECT linea-texto REPLACING “*”(ind) BY “ “END-PERFORM.
INSPECT registro-entrada CONVERTING "abcdefghijklmnopqrstuvwxyz" TO "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
INSPECT Nombre TALLYING cont-caracteres FOR LEADING SPACES.
INSPECT Nombre TALLYING cont-caracteres FOR ALL “E" AFTER INITIAL “SR." BEFORE INITIAL “ ".
INSPECT
MenúAnterior
PERFORM
THROUGH
THRU 1-párrafo nombre PERFORM
22 - párrafo nombre
THROUGH
THRU Proc-1 nombre PERFORM
Proc-2 nombre
TIMESIdentificadorIdentificadorenteroentero
Formato 1
Formato 2
Formato 3
THROUGH
THRU Proc-1 nombre PERFORM
Proc-2 nombre
FROMIdentificador-1Identificador-1indice-1indice-1
VARYINGIdentificador-2Identificador-2indice-2indice-2Literal-1Literal-1
BY Identificador-3Identificador-3Literal-2Literal-2
UNTIL Condicion-1Condicion-1
MenúEjemplo
PERFORM
UNTIL Condicion-1Condicion-1
PROCEDURE DIVISION.INICIO.
DESPLEGA-NOMBRE.
PROCEDURE DIVISION.INICIO.
DESPLEGA-NOMBRE.
estatutos
PERFORM DESPLEGA-NOMBRE 4 TIMESestatutos
STOP RUN.
DISPLAY “PEDRO SANCHEZ”.
Ejemplo
MenúAnterior
READ Nombre-arch RECORD INTO Item-destino
AT END estatutos
END-READ
Formato 1 archivosSecuenciales
Formato 2 archivosIndexados
Formato 3 archivosIndexados
READ
READ
END-READ
Nombre-arch RECORD INTO Item-destino
KEY IS campo-llave
INVALID KEY estatutos
READ
END-READ
NEXT RECORD INTO
AT END
Nombre-arch Item-destino
estatutos
Menú
WRITE
Formato
archivosSecuenciales
Formato
archivosIndexados
WRITE
ADVANCING
Num.lineas
Nombre Nemonico
PAGE
Nombre-registro FROM Identificador
BEFORE
AFTER
LINE
LINES
[ ]
[ ]
[ ]
WRITE
END WRITE
FROM
INVALID KEY estatutos
-
Nombre-registro Identificador
Menú
REWRITE
[ ]REWRITE FROMNombre-registro Identificador
[ ]
[ ]
[ ]
REWRITE
END-REWRITE
FROM
INVALID KEY
Nombre-registro Identificador
estatutos
FormatoarchivosSecuenciales
FormatoarchivosIndexados
Para efectuar el REWRITE es necesario haber abierto el archivocon : OPEN I-O (de entrada y salida).
Menú
STOP-RUN
STOP RUN.
Esta instrucción le dice al computador que termine el programa
Todos los programas deben terminar con un enunciado STOP RUN.
Formato
Menú
STRING, Identificador-3, literal-3SIZE
, Identificador-2, literal-2
Identificador-1literal-1
... DELIMITED BYSTRING
INTO WITH POINTER Identificador-5
ON OVERFLOW
Identificador-4
estatutos
STRING nombre DELIMITED BY ‘ ‘ ‘ ‘ DELIMITED BY SIZE apellido-pat DELIMITED BY ‘ ‘ ‘ ‘ DELIMITED BY SIZE apellido-mat DELIMITED BY ‘ ‘ INTO nombre-completo WITH POINTER WS-CONT-CARACTER
Menú
nombre
apellido-pat
apellido-mat
J E S U S
S A L A M A N C A
C R U Z
J E S U S S A L A M A N C A C R U Z ....... nombre-completo
Ejemplo
UNSTRING
Identificador-1UNSTRING
Identificador-4. . .
DELIMITED BY
ALL Identificador-2 literal-1
, OR
ALL Identificador-3 literal-2
. .
INTO
END-UNSTRING
J E S U S S A L A M A N C A C R U Z ....... nombre-completo
UNSTRING nombre-completo DELIMITED BY ‘ ‘ INTO nombre apellido-pat apellido-mat END-UNSTRING
nombre
apellido-pat
apellido-mat
J E S U S
S A L A M A N C A
C R U Z
Ejemplo
Menú
Prog. EstructuradaLa programación estructurada es un conjunto de reglas y estándares que se conjugan, para efectuar la programación de una forma mas eficiente.
En la programación estructurada solo se utilizan tres tipos de estándares o patrones que son los siguientes :
Patrón SECUENCIAL
Patrón ALTERNATIVO
Patrón REPETITIVO
Menú
Ver
Ver
Ver
Prog. Estructurada
Patrón SECUENCIAL
Mover
Sumar
Indica una serie de instrucciones en
secuencia
MOVE ZEROS TO TOTALES
ADD 1 TO CONTADOR
CLOSE TO ARCHIVO-CTAS
Anterior
Patrón ALTERNATIVO
Mover 25
a campo
Indica la consulta de una condición, para que se tome una acción (solo una), y que de una manera u otra llegue al mismo punto de salida
IF A = B
MOVE 50 TO CAMPO
ELSE
MOVE 25 TO CAMPO
END-IF
Mover 50
a campo
A = BNo Si
Prog. Estructurada
Anterior
Prog. EstructuradaPatrón REPETITIVO
Sumar 1
a Cont
No
Si
Condiciones
InicialesCont = 0
Cont = 5
Desplegar
Cont
Indica la ejecución de una o un conjunto de instrucciones, tantas veces hasta que se cumpla una condición.
Working-Storage. 01 CAMPOS.
05 Cont PIC 9 VALUE 0.
PROCEDURE DIVISION. MOVE 0 TO Cont
PERFORM 0010-SUMA
UNTIL Cont = 5.
DISPLAY Cont
STOP-RUN.
0010-SUMA.
ADD 1 TO Cont.
Anterior
Menú
DATA DIVISION.WORKING-STORAGE SECTION
TABLAS (arreglos)Una tabla es una secuencia continua de localizaciones de memoria llamados elementoselementos, , los cuales tienen el mismo nombre y unicamente son son identificados por el nombre y la posicion en la secuencia.
Una tabla es una secuencia continua de localizaciones de memoria llamados elementoselementos, , los cuales tienen el mismo nombre y unicamente son son identificados por el nombre y la posicion en la secuencia.
Declaración de tablas.
Una Dimensión
Dos Dimensiones
Ver
Ver
DATA DIVISION.Declaración de tablas. Una Dimensión01 TABLA-TOTALES. 05 TOT-MES PIC 9(05)V99 OCCURS 12 TIMES. O 05 TOT-MES PIC 9(05)V99 OCCURS 12 TIMES INDEXED BY WS-IND. TOT-MES(1) TOT-MES(2) TOT-MES(3) TOT-MES(12)
Con manejo de subscripto MOVE ZERO TO WS-TOTAL-ANUAL PERFORM SUMA-ANUAL VARYING WS-SUBSCRIP FROM 1 BY 1 UNTIL WS-SUBSCRIP > 12 MOVE WS-TOTAL-ANUAL TO SAL-RENGLON, WRITE SALIDA FROM SAL-RENGLON. SUMA-ANUAL. ADD TOT-MES (WS-SUBSCRIP) TO WS-TOTAL-ANUAL.
Con manejo de Indice MOVE ZERO TO WS-TOTAL-ANUAL SET WS-IND TO 1 PERFORM SUMA-ANUAL UNTIL WS-IND = 12 MOVE WS-TOTAL-ANUAL TO SAL-RENGLON, WRITE SALIDA FROM SAL-RENGLON. SUMA-ANUAL. ADD TOT-MES (WS-IND) TO WS-TOTAL-ANUAL. SET WS-IND UP BY 1 IF WS-IND = 12 ADD TOT-MES (WS-IND) TO WS-TOTAL-ANUAL END-IF.
...
Otro Ejemplo
Anterior
01 TABLA-MES. 05 FILLER PIC X(03) VALUE ‘ENE’. 05 FILLER PIC X(03) VALUE ‘FEB’. 05 FILLER PIC X(03) VALUE ‘MAR’. 05 FILLER PIC X(03) VALUE ‘ABR’. 05 FILLER PIC X(03) VALUE ‘MAY’. 05 FILLER PIC X(03) VALUE ‘JUN’. 05 FILLER PIC X(03) VALUE ‘JUL’. 05 FILLER PIC X(03) VALUE ‘AGO’. 05 FILLER PIC X(03) VALUE ‘SEP’. 05 FILLER PIC X(03) VALUE ‘OCT’. 05 FILLER PIC X(03) VALUE ‘NOV’. 05 FILLER PIC X(03) VALUE ‘DIC’.01 FILLER REDEFINES TABLA-MES. 05 TAB-MES OCCURS 12 TIMES. 10 TAB-MES-ACTUAL PIC X(03).
Working-Storage section.01 WS-FECHA. 05 WS-AA PIC 9(02). 05 WS-MES PIC 9(02). 05 WS-DIA PIC 9(02).Procedure Division.ACCEPT WS-FECHA FROM DATE MOVE TAB-MES-ACTUAL(WS-MES) TO ...
TABLA-MES
ENE FEB MAR ABR MAY JUN JUL AGO SEP OCT NOV DIC1 2 3 4 5 6 7 8 9 10 11 12
De Mes
DATA DIVISION.
Declaración de tablas. Una Dimensión
Anterior
DATA DIVISION.
Anterior
Declaración de tablas. Dos Dimensiones
01 TABLA-TOTALES. 05 TOT-X-MES OCCURS 12 TIMES. 10 TOT PIC 9(12)V99. 10 DIA PIC 9(12)V99 OCCURS 31 TIMES.
TOT-X-MES(1) TOT-MES(2) TOT-MES(12) ...
Tot(1) Dia(1)...Dia(31) Tot(2) Dia(1)...Dia(31) Tot(12) Dia(1)...Dia(31)
FD ENTRADA.01 REG-ENTRADA. 05 ENT-MES-VENTA PIC 99. 05 ENT-DIA-VENTA PIC 99. 05 ENT-IMPORTE PIC 9(12)V99.
PROCESO. PERFORM LEE-SUMA UNTIL WS-FIN. STOP-RUN.LEE-SUMA. READ ENTRADA AT END SET WS-FIN TO TRUE NOT AT END PERFORM SUMA-ANUAL END-READ.SUMA-ANUAL. ADD ENT-IMPORTE TO DIA(ENT-MES-VENTA, ENT-DIA-VENTA). ADD ENT-IMPORTE TO TOT(ENT-MES-VENTA).