25
Documento: Tema-1 Cobol II Batch Emitido el 26-Abril-2011 Elaborado por: Javier Vargas Flores Convenio Institución: Universidad Mayor de San Marcos Proyecto Programa de Formación de Talentos Promoción I - 2011 Centro de Capacitación: Stefanini IT Solutions COBOL II Batch Básico Introducción: Al pensar en Cobol como lenguaje de programación, debemos tener presente que nos referimos a un lenguaje dedicado a la gestión de datos, con una magnífica transportabilidad entre los distintos sistemas. Si se le llama lenguaje de programación es porque realmente se considera como cualquier idioma, es decir tiene su gramática, verbos, frases, párrafos y además el Cobol tiene gran similitud al idioma inglés, ya que todo su entorno esta sacado de este idioma. Cobol además es un lenguaje estructurado y sus partes se diferencian claramente en Divisiones. Estas Divisiones son 4, son obligatorias y cada una de ellas tiene una misión diferente dentro de cada programa como veremos posteriormente. “Grupo de Estudio Intikana” Página 1 de 25

Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Embed Size (px)

Citation preview

Page 1: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

Centro de Capacitación: Stefanini IT Solutions

COBOL II Batch Básico

Introducción:

Al pensar en Cobol como lenguaje de programación, debemos tener presente que nos referimos a un lenguaje dedicado a la gestión de datos, con una magnífica transportabilidad entre los distintos sistemas.

Si se le llama lenguaje de programación es porque realmente se considera como cualquier idioma, es decir tiene su gramática, verbos, frases, párrafos y además el Cobol tiene gran similitud al idioma inglés, ya que todo su entorno esta sacado de este idioma. Cobol además es un lenguaje estructurado y sus partes se diferencian claramente en Divisiones.

Estas Divisiones son 4, son obligatorias y cada una de ellas tiene una misión diferente dentro de cada programa como veremos posteriormente.

“Grupo de Estudio Intikana” Página 1 de 18

Page 2: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

Consideraciones:

A.- El programa Cobol se escribe o codifica secuencialmente en líneas de 80 columnas o caracteres o menos y consiste en la siguiente partición.

La Zona 1 .- Comprende las columnas 1,2,3,4,5 y 6 esta zona es muy usada para colocar las iniciales y fecha de modificación, lo cual realizan algunos programadores y dejan un rastro, el cual servirá posteriormente a otros para realizar un correcto seguimiento a los cambios efectuados con anterioridad.En la columna 6, a veces podemos encontrar un ‘-‘ este nos indica que es continuación de la fila anterior (Este ‘-‘, se usa más en definiciones de reportes).

La Zona 2 .- Comprende la columna 7, en ella podemos encontrar a veces un ‘*’, el cual deshabilita la línea para no ser reconocida por el compilador y dejarla solo como un comentario.

La Zona 3 .- También se le llama Área “A” Comprende las columnas 8,9,10 y 11, es aquí donde se escriben los nombres de las divisiones, secciones, párrafos indicadores de FD y los niveles de variables 01 o 77.

La Zona 4 .- También se le llama Área “B” Comprende las columnas 12,13… al 72, en ella se incluirán todas las instrucciones del programa, las líneas de las secciones y los niveles de variables mayores a 01.

La Zona 5 .- Las columnas 73, 74... al 80 no se utiliza y por lo tanto es ignorado por el compilador.

B.- El punto (‘.’), es un signo de vital importancia en Cobol, su uso indebido le podrá traer problemas de compilación o de lógica siendo esto último, crítico para cualquier programa Cobol. Tener en cuenta que si al final de una línea de instrucción el compilador no encuentra un punto, interpretará que la instrucción continúa hasta encontrar el punto de fin de línea.

C.- Al igual que en otros lenguajes el Cobol dispone de palabras reservadas que por ningún motivo deben ser usadas en un programa Cobol como variables de trabajo o nombres de párrafo, además la longitud máxima que debe tener una palabra es de 30 caracteres (Esto último depende del compilador que está usando).

“Grupo de Estudio Intikana” Página 2 de 18

Page 3: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

D.- Uno de los motivos que tuve para escribir este curso es el poder transmitir mis conocimientos y experiencias al trabajar con este lenguaje, es por eso que les diré algo que considero muy importante para llevarse bien con él, !! “TENGAN ORDEN” !!, aunque no lo tengas en tu vida, pero aquí sí debes tener, a continuación les diré algunos puntos para tener en cuenta.

1.- Agrupen en un solo nivel jerárquico las variables que cambian constantemente su valor.

2.- Agrupen en un solo nivel jerárquico las variables que por ningún motivo cambian su valor.

3.- Codifiquen los párrafos siguiendo estándares establecidos tanto por su grupo de trabajo o el propio y manténgalo siempre en todo el desarrollo que hagan.

4.- Las instrucciones que conforman un párrafo no deben ser mayor a una página, esto con el fin de ayudar a la visualización de la misma.

5.- Las instrucciones deben estar siempre indentadas esto debe ser una costumbre, el resultado al final será que tendrás programas ordenados y legibles.

E.- Aquí viene lo bueno ¿Cómo llegar al alumno para que este curso no sea como otros? ¡Aburrido! Escuché por allí, es por eso que me tomaré la libertad de innovar, empezando por mostrar un programa terminado el cual es de mi autoría, se recomienda imprimirlo y usarlo para guiarse y ver donde está la instrucción que se explica en el curso.

F.- Es obvio que cada manual estará orientado a la manera de trabajar de quien lo escribe, con ello quiero decir que habrá cosas que no explicaré mucho o incluso otras que omitiré porque no las haya usado nunca o porque su uso está desactualizado, una explicación perfectamente detallada deberá venir en los manuales de cada uno de los compiladores que existen en el mercado informático para Mainframe.Espero que comprendan esto, pero si les puedo asegurar que todos mis programas más de 500 que tengo desarrollados utilizan lo que escribo aquí y ninguno me ha dado problemas.

“Grupo de Estudio Intikana” Página 3 de 18

Page 4: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

*================================================================ * * * PROYECTO : FACTURACIÓN 1.0 ( DAFA V10 ) * * * * OBJETIVO : OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO * * : OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO * * : OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO. * * : * * * * PROGRAMA : EJEMPLO1 * * * * TYPE : BATCH. * * * * PROGRAMADOR : STEFANINI IT SOLUTIONS * * * * DESCRIPCION FICHEROS: * * * * AAAAAAAA : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX * * BBBBBBBB : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX * * CCCCCCCC : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX * * DAFLGERO : SECUENCIAL ERRORES DE ARCHIVOS * * * * DESCRIPCION TABLAS DB2: * * * * : NINGUNO * * * * DESCRIPCION COPYS: * * * * AAAAAAAA : SECUENCIAL INPUT PRIMARIO: * * * * BBBBBBBB : SECUENCIAL INPUT SECUNDARIO: * * * * DAFCLGER : CONTIENE LOG DE ERRORES EN ARCHIVOS,* * : OCURRIDOS EN TIEMPO DE EJECUCION DEL* * : PROGRAMA. * ***************************************************************** * FECHA AUTOR DESCRIPCION * ***************************************************************** * DDMMAAAA XXXXXXX CREACION * ***************************************************************** *===============================================================* *= =* *= I D E N T I F I C A T I O N D I V I S I O N =* *= =* *===============================================================* IDENTIFICATION DIVISION. *======================== PROGRAM-ID. EJEMPLO1. AUTHOR. STEFANINI IT SOLUTIONS. INSTALLATION. TELEFONICA. DATE-WRITTEN. DD/MM/AAAA. DATE-COMPILED. *===============================================================* *= =* *= E N V I R O N M E N T D I V I S I O N =* *= =*

“Grupo de Estudio Intikana” Página 4 de 18

Page 5: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

*===============================================================* ENVIRONMENT DIVISION. *===================== CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-370. OBJECT-COMPUTER. IBM-370. *SPECIAL-NAMES. * DECIMAL-POINT IS COMMA. INPUT-OUTPUT SECTION. *===================== FILE-CONTROL. *INPUT SELECT AAAAAAAA ASSIGN TO AAAAAAAI ORGANIZATION IS SEQUENTIAL FILE STATUS IS WS-FS-AAAAAAAA. SELECT BBBBBBBB ASSIGN TO BBBBBBBI ORGANIZATION IS SEQUENTIAL FILE STATUS IS WS-FS-BBBBBBBB. *OUTPUT SELECT CCCCCCCC ASSIGN TO CCCCCCCO FILE STATUS IS WS-FS-CCCCCCCC. SELECT DAFCLGER ASSIGN TO DAFLGERO FILE STATUS IS WS-FS-DAFCLGER. *==============================================================* *= =* *= D A T A D I V I S I O N =* *= =* *==============================================================* DATA DIVISION. *============== FILE SECTION. FD AAAAAAAA BLOCK CONTAINS 0 RECORDS LABEL RECORD IS STANDARD RECORDING MODE IS F DATA RECORD IS AAAAAAAA-REG. COPY AAAAAAAA. FD BBBBBBBB BLOCK CONTAINS 0 RECORDS LABEL RECORD IS STANDARD RECORDING MODE IS F DATA RECORD IS BBBBBBBB-REG. COPY BBBBBBBB. FD CCCCCCCC BLOCK CONTAINS 0 RECORDS

“Grupo de Estudio Intikana” Página 5 de 18

Page 6: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

LABEL RECORD IS STANDARD RECORDING MODE IS F DATA RECORD IS CCCCCCCC-REG. COPY CCCCCCCC. FD DAFCLGER BLOCK CONTAINS 0 RECORDS LABEL RECORD IS STANDARD RECORDING MODE IS F DATA RECORD IS REG-DAFLGER. 01 REG-DAFLGER PIC X(200).

*===============================================================* *= =* *= WORKING STORAGE SECTION =* *= =* *===============================================================* WORKING-STORAGE SECTION. *-----------------------* *----------------------------------------------------------------* * VARIABLES * *----------------------------------------------------------------* 01 WS-EJEMPLO1. 03 WS-FS-AAAAAAAA PIC X(002). 03 WS-FS-BBBBBBBB PIC X(002). 03 WS-FS-CCCCCCCC PIC X(002). 03 WS-FS-DAFCLGER PIC X(002). 03 WS-FEC-SIST-TOTAL. 05 WS-TS-ANO PIC X(004). 05 WS-TS-MES PIC X(002). 05 WS-TS-DIA PIC X(002). 05 WS-TS-HOR PIC X(002). 05 WS-TS-MIN PIC X(002). 05 WS-TS-SEG PIC X(002). 05 WS-TS-RES PIC X(007). 03 WS-FEC-SIST. 05 WS-TS-ANO PIC X(004). 05 WS-TS-SL1 PIC X(001). 05 WS-TS-MES PIC X(002). 05 WS-TS-SL2 PIC X(001). 05 WS-TS-DIA PIC X(002). 03 WS-CTD-LEIDOS-AAAAAAAA PIC 9(010). 03 WS-CTD-LEIDOS-BBBBBBBB PIC 9(010). 03 WS-CTD-LEIDOS-IGUAL PIC 9(010). 03 WS-CTD-LEIDOS-MAYOR PIC 9(010). 03 WS-CTD-LEIDOS-MENOR PIC 9(010). 03 WS-AUX-REG-NO-MAESTRO PIC 9(010). 03 WS-CTD-GRABADOS-CCCCCCCC PIC 9(010). 03 WS-CTD-GRABADOS-DAFCLGER PIC 9(010). 03 WS-MR PIC 9(001). *----------------------------------------------------------------* * CONSTANTES * *----------------------------------------------------------------* 01 LT-EJEMPLO1. 03 LT-OPEN PIC X(08) VALUE 'OPEN'. 03 LT-READ PIC X(08) VALUE 'READ'. 03 LT-SELECT PIC X(08) VALUE 'SELECT'.

“Grupo de Estudio Intikana” Página 6 de 18

Page 7: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

03 LT-FETCH PIC X(08) VALUE 'FETCH'. 03 LT-CLOSE PIC X(08) VALUE 'CLOSE'. 03 LT-SPACES PIC X(01) VALUE SPACE. 03 LT-MENSAJE PIC X(30) VALUE SPACES. 03 LT-UNO PIC S9(9) COMP VALUE +1. 03 LT-S PIC X(01) VALUE 'S'. 03 LT-N PIC X(01) VALUE 'N'. 03 LT-MAX PIC 9(04) VALUE 1000. *----------------------------------------------------------------* * SWITCHES * *----------------------------------------------------------------* 01 SWITCHES. 05 SW-FIN-AAAAAAAA PIC X(1) VALUE 'N'. 88 FIN-AAAAAAAA VALUE 'S'. 05 SW-FIN-BBBBBBBB PIC X(1) VALUE 'N'. 88 FIN-BBBBBBBB VALUE 'S'. *--------------------------------------------------------------* * CAMPOS DE TRABAJO. * *--------------------------------------------------------------* 01 WORK-AAAAAAAA. 03 WPRIM-LLAVE-AAAAAAAA PIC X(01). 01 WORK-BBBBBBBB. 03 WSECU-LLAVE-BBBBBBBB PIC X(01). 01 WORK-BBBBBBBB-DUP. 03 WSECU-LLAVE-BBBBBBBB-DUP PIC X(01). *----------------------------------------------------------------* * COPYS PARA CONTROL DE ERRORES DE FICHEROS Y DB2 * *----------------------------------------------------------------* COPY DAFCLGER. PROCEDURE DIVISION. *----------------------------------------------------------------* * PROCESOS DEL PROGRAMA. * *----------------------------------------------------------------* A000-MAIN. PERFORM B010-INICIO THRU EX-B010-INICIO. PERFORM B020-PROCESO THRU EX-B020-PROCESO UNTIL (FIN-AAAAAAAA OR WS-FS-AAAAAAAA = '10'). PERFORM B030-FIN THRU EX-B030-FIN. EX-A000-MAIN. EXIT. *----------------------------------------------------------------* * INICIO DEL PROGRAMA. * *----------------------------------------------------------------* B010-INICIO. INITIALIZE WS-EJEMPLO1, WORK-AAAAAAAA, WORK-BBBBBBBB. MOVE '-' TO WS-TS-SL1.

“Grupo de Estudio Intikana” Página 7 de 18

Page 8: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

MOVE '-' TO WS-TS-SL2. MOVE FUNCTION CURRENT-DATE TO WS-FEC-SIST-TOTAL. MOVE WS-TS-ANO OF WS-FEC-SIST-TOTAL TO WS-TS-ANO OF WS-FEC-SIST. MOVE WS-TS-MES OF WS-FEC-SIST-TOTAL TO WS-TS-MES OF WS-FEC-SIST. MOVE WS-TS-DIA OF WS-FEC-SIST-TOTAL TO WS-TS-DIA OF WS-FEC-SIST. PERFORM C010-OPEN-FILE THRU EX-C010-OPEN-FILE. PERFORM X010-LEER-AAAAAAAA THRU EX-X010-LEER-AAAAAAAA. PERFORM X020-LEER-BBBBBBBB THRU EX-X020-LEER-BBBBBBBB. EX-B010-INICIO. EXIT. *----------------------------------------------------------------* * PROCESO PRINCIPAL * *----------------------------------------------------------------* B020-PROCESO. IF WORK-AAAAAAAA = WORK-BBBBBBBB ADD 1 TO WS-CTD-LEIDOS-IGUAL MOVE 1 TO WS-MR PERFORM UNTIL WORK-AAAAAAAA NOT = WORK-BBBBBBBB OR WS-FS-AAAAAAAA NOT = '00' PERFORM C020-GRABAR-CCCCCCCC THRU EX-C020-GRABAR-CCCCCCCC PERFORM X010-LEER-AAAAAAAA THRU EX-X010-LEER-AAAAAAAA END-PERFORM PERFORM X020-LEER-BBBBBBBB THRU EX-X020-LEER-BBBBBBBB ELSE IF WORK-AAAAAAAA > WORK-BBBBBBBB ADD 1 TO WS-CTD-LEIDOS-MAYOR PERFORM X020-LEER-BBBBBBBB THRU EX-X020-LEER-BBBBBBBB ELSE IF WORK-AAAAAAAA < WORK-BBBBBBBB MOVE 0 TO WS-MR PERFORM C020-GRABAR-CCCCCCCC THRU EX-C020-GRABAR-CCCCCCCC ADD 1 TO WS-CTD-LEIDOS-MENOR ADD 1 TO WS-AUX-REG-NO-MAESTRO PERFORM X010-LEER-AAAAAAAA THRU EX-X010-LEER-AAAAAAAA END-IF END-IF END-IF. EX-B020-PROCESO. EXIT. *----------------------------------------------------------------* * FIN DEL PROGRAMA. * *----------------------------------------------------------------* B030-FIN. PERFORM C030-ESTADISTICAS-PGM THRU EX-C030-ESTADISTICAS-PGM.

“Grupo de Estudio Intikana” Página 8 de 18

Page 9: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

PERFORM X980-STOP-RUN THRU EX-X980-STOP-RUN. EX-B030-FIN. EXIT. *----------------------------------------------------------------* * AQUI SE ABREN LOS ARCHIVOS Y VERIFICA STATUS DE APERTURA. * *----------------------------------------------------------------* C010-OPEN-FILE. OPEN INPUT AAAAAAAA, BBBBBBBB OUTPUT CCCCCCCC, DAFCLGER. MOVE SPACE TO REG-DAFCLGER. MOVE WS-FS-AAAAAAAA TO LGE-COD-STATUS. MOVE 'OPEN' TO LGE-TIP-OPERACION. MOVE 'AAAAAAAA' TO LGE-NOM-FILE. MOVE 'C010-OPEN-FILE' TO LGE-NOM-PARRAFO. MOVE 'ERROR AL OPEN' TO LGE-DES-MENSAJE. PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. MOVE WS-FS-BBBBBBBB TO LGE-COD-STATUS. MOVE 'BBBBBBBB' TO LGE-NOM-FILE. PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. MOVE WS-FS-CCCCCCCC TO LGE-COD-STATUS. MOVE 'CCCCCCCC' TO LGE-NOM-FILE. PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. MOVE WS-FS-DAFCLGER TO LGE-COD-STATUS. MOVE 'DAFCLGER' TO LGE-NOM-FILE. PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. EX-C010-OPEN-FILE. EXIT. *---------------------------------------------------------------* * GRABAR ARCHIVO CCCCCCCC. * *---------------------------------------------------------------* C020-GRABAR-CCCCCCCC. INITIALIZE CCCCCCCC-REG. PERFORM D010-ASIGNA-CCCCCCCC THRU EX-D010-ASIGNA-CCCCCCCC. WRITE CCCCCCCC-REG END-WRITE. MOVE SPACE TO REG-DAFCLGER. MOVE WS-FS-CCCCCCCC TO LGE-COD-STATUS. MOVE 'CCCCCCCC' TO LGE-NOM-FILE. MOVE 'WRITE' TO LGE-TIP-OPERACION. MOVE 'C020-GRABAR-CCCCCCCC' TO LGE-NOM-PARRAFO. MOVE 'ERROR AL WRITE CCCCCCCC' TO LGE-DES-MENSAJE. PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. EX-C020-GRABAR-CCCCCCCC. EXIT. *----------------------------------------------------------------*

“Grupo de Estudio Intikana” Página 9 de 18

Page 10: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

* GENERA INFORMACION ESTADISTICA DEL PROGRAMA EJEMPLO1. * *----------------------------------------------------------------* C030-ESTADISTICAS-PGM. DISPLAY '===============================================' DISPLAY '= ESTADISTICAS PROGRAMA : EJEMPLO1 =' DISPLAY '===============================================' DISPLAY '= REG. LEIDOS XXXXXXXXXXXXX...(AAAAAAAA)......:' WS-CTD-LEIDOS-AAAAAAAA DISPLAY '= REG. LEIDOS PROCESADOS......(BBBBBBBB)......:' WS-CTD-LEIDOS-BBBBBBBB DISPLAY '= REG. LEIDOS X IGUAL(MR).....................:' WS-CTD-LEIDOS-IGUAL DISPLAY '= REG. LEIDOS X MAYOR.........................:' WS-CTD-LEIDOS-MAYOR DISPLAY '= REG. LEIDOS X MENOR(NMR)....................:' WS-CTD-LEIDOS-MENOR DISPLAY '= REG. AUX-REG-NO-MAESTRO.....................:' WS-AUX-REG-NO-MAESTRO DISPLAY '= REG. GRABADOS EN SALIDA.....(CCCCCCCC)......:' WS-CTD-GRABADOS-CCCCCCCC DISPLAY '= REG. ESCRITOS ERRONEOS......(DAFCLGER)......:' WS-CTD-GRABADOS-DAFCLGER DISPLAY '===============================================' DISPLAY '==============================================='. EX-C030-ESTADISTICAS-PGM. EXIT. *----------------------------------------------------------------* * AQUI SE ASIGNA INFORMACION. * *----------------------------------------------------------------* D010-ASIGNA-CCCCCCCC. PERFORM E010-AAAAAAAA-CCCCCCCC THRU EX-E010-AAAAAAAA-CCCCCCCC. IF WS-MR = 1 PERFORM E020-BBBBBBBB-CCCCCCCC THRU EX-E020-BBBBBBBB-CCCCCCCC END-IF. EX-D010-ASIGNA-CCCCCCCC. EXIT.

*----------------------------------------------------------------* * AQUI SOLO SE ASIGNA INFORMACION DESDE EL ARCHIVO AAAAAAAA * * HACIA EL ARCHIVO CCCCCCCC. * *----------------------------------------------------------------* E010-AAAAAAAA-CCCCCCCC. MOVE AAAAAAAA-REG TO CCCCCCCC-REG. EX-E010-AAAAAAAA-CCCCCCCC. EXIT. *----------------------------------------------------------------* * AQUI SOLO SE ASIGNA INFORMACION DESDE EL ARCHIVO BBBBBBBB *

“Grupo de Estudio Intikana” Página 10 de 18

Page 11: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

* HACIA EL ARCHIVO CCCCCCCC. * *----------------------------------------------------------------* E020-BBBBBBBB-CCCCCCCC. CONTINUE. EX-E020-BBBBBBBB-CCCCCCCC. EXIT. *----------------------------------------------------------------* * LECTURA ARCHIVO AAAAAAAA * *----------------------------------------------------------------* X010-LEER-AAAAAAAA. READ AAAAAAAA. MOVE SPACE TO REG-DAFCLGER MOVE WS-FS-AAAAAAAA TO LGE-COD-STATUS MOVE 'AAAAAAAA' TO LGE-NOM-FILE MOVE 'READ' TO LGE-TIP-OPERACION MOVE 'X010-LEER-AAAAAAAA' TO LGE-NOM-PARRAFO MOVE 'ERROR AL READ AAAAAAAA' TO LGE-DES-MENSAJE PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. =====>* WORK-AAAAAAAA IF WS-FS-AAAAAAAA = '00' MOVE 'ASIGNAR VALORES A LLAVE PRIMARIA' TO WPRIM-LLAVE-AAAAAAAA ELSE MOVE HIGH-VALUE TO WORK-AAAAAAAA END-IF. EX-X010-LEER-AAAAAAAA. EXIT. *----------------------------------------------------------------* * LECTURA ARCHIVO BBBBBBBB * *----------------------------------------------------------------* X020-LEER-BBBBBBBB. READ BBBBBBBB. MOVE SPACE TO REG-DAFCLGER. MOVE WS-FS-BBBBBBBB TO LGE-COD-STATUS. MOVE 'BBBBBBBB' TO LGE-NOM-FILE. MOVE 'READ' TO LGE-TIP-OPERACION. MOVE 'X020-LEER-BBBBBBBB' TO LGE-NOM-PARRAFO. MOVE 'ERROR AL READ BBBBBBBB' TO LGE-DES-MENSAJE. PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. =====>* WORK-BBBBBBBB IF WS-FS-BBBBBBBB = '00' MOVE 'ASIGNAR VALORES A LLAVE SECUNDARIA' TO WSECU-LLAVE-BBBBBBBB IF WORK-BBBBBBBB = WORK-BBBBBBBB-DUP GO TO X020-LEER-BBBBBBBB ELSE MOVE WORK-BBBBBBBB TO WORK-BBBBBBBB-DUP END-IF ELSE MOVE HIGH-VALUE TO WORK-BBBBBBBB

“Grupo de Estudio Intikana” Página 11 de 18

Page 12: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

END-IF. EX-X020-LEER-BBBBBBBB. EXIT.

*-----------------------------------------------------------------* * VALIDA COD. DE ESTADO DE LAS DIFERENTES ACCIONES SOBRE ARCHIVOS * *-----------------------------------------------------------------* X900-VALIDA-FILE-STATUS. IF LGE-COD-STATUS = '00' IF LGE-TIP-OPERACION = 'READ' IF LGE-NOM-FILE = 'AAAAAAAA' ADD 1 TO WS-CTD-LEIDOS-AAAAAAAA ELSE IF LGE-NOM-FILE = 'BBBBBBBB' ADD 1 TO WS-CTD-LEIDOS-BBBBBBBB END-IF END-IF ELSE IF LGE-TIP-OPERACION = 'WRITE' IF LGE-NOM-FILE = 'CCCCCCCC' ADD 1 TO WS-CTD-GRABADOS-CCCCCCCC ELSE IF LGE-NOM-FILE = 'DAFCLGER' ADD 1 TO WS-CTD-GRABADOS-DAFCLGER END-IF END-IF END-IF END-IF ELSE IF LGE-COD-STATUS = '10' IF LGE-TIP-OPERACION = 'READ' IF LGE-NOM-FILE = 'AAAAAAAA' SET FIN-AAAAAAAA TO TRUE ELSE IF LGE-NOM-FILE = 'BBBBBBBB' SET FIN-BBBBBBBB TO TRUE END-IF END-IF END-IF ELSE MOVE 08 TO RETURN-CODE MOVE 'FICHERO' TO LGE-TIP-FILE MOVE 'EJEMPLO1' TO LGE-COD-PROGRAMA MOVE WS-FEC-SIST TO LGE-FEC-PROCESO MOVE ZERO TO LGE-COD-SQLCODE PERFORM X970-GRABAR-ERRORES THRU EX-X970-GRABAR-ERRORES IF LGE-TIP-OPERACION IS NOT = 'CLOSE' PERFORM X990-CLOSE-FILE THRU EX-X990-CLOSE-FILE END-IF PERFORM X981-STOP-RUN THRU EX-X981-STOP-RUN END-IF END-IF. EX-X900-VALIDA-FILE-STATUS.

“Grupo de Estudio Intikana” Página 12 de 18

Page 13: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

EXIT.

*----------------------------------------------------------------* * GRABAMOS EN EL FICHERO DE SALIDA LAS POSIBLES INCIDENCIAS. * *----------------------------------------------------------------* X970-GRABAR-ERRORES. DISPLAY '************************************'. DISPLAY '*--------MENSAJE DE ERROR----------*'. DISPLAY '************************************'. DISPLAY '* PROGRAMA : ' LGE-COD-PROGRAMA. DISPLAY '* FECHA PROCESO : ' LGE-FEC-PROCESO. DISPLAY '* TIPO ARCHIVO : ' LGE-TIP-FILE. DISPLAY '* NOMBRE ARCHIVO: ' LGE-NOM-FILE. DISPLAY '* OPERACION : ' LGE-TIP-OPERACION. DISPLAY '* CODIGO ERROR : ' LGE-COD-STATUS LGE-COD-SQLCODE. DISPLAY '* NOMBRE PARRAFO: ' LGE-NOM-PARRAFO. DISPLAY '* MENSAJE : ' LGE-DES-MENSAJE. DISPLAY '************************************'. WRITE REG-DAFLGER FROM REG-DAFCLGER END-WRITE. IF WS-FS-DAFCLGER NOT = '00' DISPLAY 'ERROR AL ESCRIBIR EN DAFCLGER, STATUS=' WS-FS-DAFCLGER MOVE 08 TO RETURN-CODE PERFORM X980-STOP-RUN THRU EX-X980-STOP-RUN ELSE IF WS-FS-DAFCLGER = '00' ADD 1 TO WS-CTD-GRABADOS-DAFCLGER END-IF END-IF. EX-X970-GRABAR-ERRORES. EXIT. *----------------------------------------------------------------* * TERMINA LA EJECUCION DEL PROGRAMA * *----------------------------------------------------------------* X980-STOP-RUN. PERFORM X990-CLOSE-FILE THRU EX-X990-CLOSE-FILE. PERFORM X981-STOP-RUN THRU EX-X981-STOP-RUN. EX-X980-STOP-RUN. EXIT. *----------------------------------------------------------------* * STOP RUN. * *----------------------------------------------------------------* X981-STOP-RUN. STOP RUN. EX-X981-STOP-RUN. EXIT. *----------------------------------------------------------------* * TERMINA LA EJECUCION DEL PROGRAMA * *----------------------------------------------------------------* X990-CLOSE-FILE.

“Grupo de Estudio Intikana” Página 13 de 18

Page 14: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

CLOSE AAAAAAAA, BBBBBBBB, CCCCCCCC, DAFCLGER. MOVE SPACE TO REG-DAFCLGER. MOVE WS-FS-AAAAAAAA TO LGE-COD-STATUS. MOVE 'AAAAAAAA' TO LGE-NOM-FILE. MOVE 'CLOSE' TO LGE-TIP-OPERACION. MOVE 'X990-CLOSE-FILE' TO LGE-NOM-PARRAFO. MOVE 'ERROR AL CLOSE' TO LGE-DES-MENSAJE. PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. MOVE WS-FS-BBBBBBBB TO LGE-COD-STATUS. MOVE 'BBBBBBBB' TO LGE-NOM-FILE. PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. MOVE WS-FS-CCCCCCCC TO LGE-COD-STATUS. MOVE 'CCCCCCCC' TO LGE-NOM-FILE. PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. MOVE WS-FS-DAFCLGER TO LGE-COD-STATUS. MOVE 'DAFCLGER' TO LGE-NOM-FILE. PERFORM X900-VALIDA-FILE-STATUS THRU EX-X900-VALIDA-FILE-STATUS. EX-X990-CLOSE-FILE. EXIT.

“Grupo de Estudio Intikana” Página 14 de 18

Page 15: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

DIVISIONES DE UN PROGRAMA COBOL (4 Divisiones):

A.- IDENTIFICATION DIVISION.B.- ENVIRONMENT DIVISION.C.- DATA DIVISION.D.- PROCEDURE DIVISION.

A.- IDENTIFICATION DIVISION. Identifica a la primera división donde se especifica el nombre del programa, autor, lugar donde se instalará el programa, fecha de escritura del programa valga la redundancia, fecha de compilación (Opcional). Revisar programa modelo o el impreso para ver donde se encuentra la división respectiva.

B. - ENVIRONMENT DIVISION. Identifica a la segunda división en orden de aparición, esta se divide a su vez en dos secciones CONFIGURATION SECTION y laINPUT-OUTPUT SECTION.

B1. CONFIGURATION SECTION.- Aquí se escribe el tipo de ordenador donde se escribió el programa(SOURCE-COMPUTER) y donde se ejecutara(OBJECT-COMPUTER) y para cambiar valores constantes del lenguaje o valor predefinido, esto puede cambiar de acuerdo al compilador(SPECIAL-NAMES).

Ejemplo: Revisemos el programa impreso y busquemos las siguientes instrucciones:

*SPECIAL-NAMES.* DECIMAL-POINT IS COMMA

Estas sentencias se encuentran comentadas, por la sencilla razón que en Latinoamérica se usa el punto como separador de decimales y en EUROPA se usa la coma, esto solo es un caso, existen otras constantes que se cambian según sea conveniente.

B2. INPUT-OUTPUT SECTION.- En esta sección se especifica todos los ficheros que serán usados en el programa, es aquí donde se especifica el modo de acceso, grabación, el medio donde se encuentra o encontrará el archivo resultante etc. Esta sección solo estará habilitado para procesos BATCH, para procesos ON-LINE ya no es necesario, esto se explicará en otro curso: COBOL II CICS.

“Grupo de Estudio Intikana” Página 15 de 18

Page 16: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

1.- Uso de Archivos del tipo SECUENCIAL: Como ven en el programa impreso.

#1*INPUT SELECT DAFCALQB ASSIGN TO AFCALQBI ORGANIZATION IS SEQUENTIAL FILE STATUS IS WS-FS-DAFCALQB. SELECT BBBBBBBB ASSIGN TO BBBBBBBI ORGANIZATION IS SEQUENTIAL FILE STATUS IS WS-FS-BBBBBBBB.*OUTPUT SELECT DAFCALQ1 ASSIGN TO AFCALQ1O FILE STATUS IS WS-FS-DAFCALQ1. SELECT DAFCLGER ASSIGN TO DAFLGERO FILE STATUS IS WS-FS-DAFCLGER.

Es aquí donde se definen los accesos a los archivos secuenciales, como se ve en el ejemplo tenemos archivos secuenciales de lectura (INPUT) y archivos secuenciales de escritura (OUTPUT), a continuación explicaré algunas sentencias.

SELECT.- Aquí se define el nombre interno el cual hará referencia al archivo físico.

ASSIGN.- Aquí se define el nombre externo el cual hará referencia al archivo físico, este nombre se usará en los JOB’s de trabajo. Además de esto, indicará las características del archivo físico (Secuencial, Cartucho de Almacenamiento, Cintas, etc.)

ORGANIZATION IS SEQUENTIAL.- Indica en forma explícita que es un archivo de organización secuencial, esta instrucción puede ser obviada como se ve cuando se define el acceso a los archivos secuenciales de OUTPUT¨(Ejemplo #1 o programa impreso).

FILE STATUS IS variable.- Aquí se define la variable que tendrá un valor, el cual se asignará cuando se haga un acceso a un archivo determinado. Los valores posibles que pueden tener son las siguientes, pero solo mostraré unos cuantos los más importantes.

- ‘00’ Acceso exitoso al archivo.- ‘10’ Se terminó de leer archivo secuencial.- ‘34’ Archivo secuencial de OUTPUT está lleno, falta ampliar espacio de almacenamiento. Estos sólo son algunos códigos de retorno al acceder archivos secuenciales. Se entregará un archivo anexo con más códigos de retorno al término del curso.

“Grupo de Estudio Intikana” Página 16 de 18

Page 17: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

2.- Uso de Archivos del Tipo INDEXADO(Vsam, btrieve..etc):

#2*INPUT SELECT DAFCFALE ASSIGN TO AFCFALEI ORGANIZATION IS INDEXED RECORD KEY IS DAFCFALE-KEY OF DAFCFALE-REG ACCESS MODE IS DYNAMIC FILE STATUS IS WS-FS-DAFCFALE. *OUTPUT SELECT DAFCALQ1 ASSIGN TO AFCALQ1O FILE STATUS IS WS-FS-DAFCALQ1.

ORGANIZATION IS INDEXED.- Indica en forma explícita que es un archivo de organización indexada, se preguntarán que es indexada buena pregunta otra Por Favor, mentira es una bromita, bueno esto me indica que la información se encuentra ordenada y para acceder a ella necesita llaves.

RECORD KEY IS {variable}.- Indica el nombre de la clave con el cual accederemos a los registros, debe ser del tipo alfanumérico, la variable es en realidad la llave del registro.

ACCESS MODE IS {SEQUENTIAL / DYNAMIC / RANDOM} .- Indica el modo de acceso al archivo.

1.- Sequential .- Indica que el acceso al archivo se hará solo en modo secuencial.

2.- Random.- Indica que el acceso a la información se hará por medio de llaves.

3.- Dynamic.- Indica que el acceso a la información se podrá hacer tanto en forma secuencial o randómica (puntos 1 y 2).

C. - DATA DIVISION. Identifica a la tercera división en orden de aparición, esta se divide a su vez en tres secciones FILE SECTION, WORKING-STORAGE SECTION, LINKAGE SECTION.

C1. FILE SECTION.- Aquí se describe los campos que van a contener el registro de cada archivo que vamos a trabajar, estos previamente han debido ser definidos en la INPUT-OUTPUT SECTION (pagina 14).

FD AAAAAAAA BLOCK CONTAINS 0 RECORDS LABEL RECORD IS STANDARD

“Grupo de Estudio Intikana” Página 17 de 18

Page 18: Tema-1 Cobol II (Divisiones Del Programa Cobol) v1

Documento: Tema-1 Cobol II Batch

Emitido el26-Abril-2011

Elaborado por:Javier Vargas Flores

Convenio Institución:Universidad Mayor de San Marcos

ProyectoPrograma de Formación de TalentosPromoción I - 2011

RECORDING MODE IS F DATA RECORD IS AAAAAAAA-REG. COPY AAAAAAAA.

C2. WORKING-STORAGE SECTION.- Aquí se definen las variables a usar, para un mejor orden es necesario dividir la memoria en dos secciones: Las variables que cambian de valor durante la ejecución del programa y las que nunca cambian, siempre por Standard para las variables que cambian de valor pongo la variable del mayor nivel jerárquico codificado de la siguiente manera 01 WS-EJEMPLO1, donde WS es fijo y EJEMPLO1 es el nombre del programa, esto debe ser igual para las variables constantes solo cambiando el WS por la LT.

01 WS-EJEMPLO1. 03 WS-FS-AAAAAAAA PIC X(002). 03 WS-FS-BBBBBBBB PIC X(002). 03 WS-FS-CCCCCCCC PIC X(002). *----------------------------------------------------------------* * CONSTANTES * *----------------------------------------------------------------*

01 LT-EJEMPLO1. 03 LT-OPEN PIC X(08) VALUE 'OPEN'. 03 LT-READ PIC X(08) VALUE 'READ'.

1.- Tipo de Datos.- Por la forma que está almacenada la información los tipos pueden ser los siguientes.

Alfanuméricos.- Pueden contener letras, número o cualquier carácter.

Numéricas.- Contiene solo números y pueden tener las siguientes variantes. (DISPLAY, COMP, COMP-3, COMP-2).

C3. LINKAGE SECTION.- Aquí se describe los campos que servirán para ingresar información al flujo del programa, estos datos provienen de una fuente externa al programa EJEMPLO1.

D. – PROCEDURE DIVISION. Esta es la división mas importante de un programa Cobol, pero antes de entrar de lleno a la explicación del programa, haré un paréntesis para leer el “Tema 2 Cobol II” (Como codificar un Programa Cobol), donde explicaré en forma detallada y explícita como se debe codificar eficientemente un programa Cobol (Uso de comentarios, nombre de párrafos, programación modular, indentación, uso eficiente de sentencias etc., etc.)

“Grupo de Estudio Intikana” Página 18 de 18