5-2 curso cobol cmc w95

Upload: gregorio-gazca

Post on 07-Jul-2015

693 views

Category:

Documents


39 download

TRANSCRIPT

Formacin Inicial en MainframeCOBOL

Mdulo BsicoCOBOL

ggz

Tpico 310 - Codificando un programa COBOL Tpico 320 - Editando un programa Tpico 330 - Procesando Archivos Tpico 340 - Formateando Datos Tpico 350 - Aritmtica y Lgica de un Programa COB Tpico 360 Programacin multimodular y Copybooks Tpico 370 - Procesamiento de Tablas Tpico 380 - Procesamiento Sistema Galaxy Expense

Mdulo EspecficoDB2 - SQL JCL CICS1

Reglas del curso

Puntualidad

Celulares en modo de silencio y laptops apagadas

Respeto

Preguntar

2

Bibliografa

COBOL ESTRUCTURADO. Andreas S.,Philippakis, Leonard J.,Kazmier. Tercera edicin. Editorial McGraw-Hill.

COBOL ESTRUCTURADO. Ruth Ashley. Editorial Limusa.

PROGRAMACION EN COBOL ESTRUCTURADO. Lawrencer R.,Newcomer. M.S. Editorial McGraw-Hill.

3

Tpico 310 - Codificando un programa COBOL Objetivos.

Identificar las cuatro divisiones y sus correspondientes secciones de COBOL.

Diferenciar entre prrafo, sentencia, instruccin.

Codificar las cuatro divisiones de un programa COBOL.

Codificar comentarios en un programa COBOL.

4

Tpico 310 - Codificando un programa COBOLDIVISIONES Identification Division. Configuration Section. Environment Division. Input-Output Section. Estructura de un Programa COBOL Data Division. File Control. SECCIONES SUBSECCIONES

File Section. Working-Storage Section. Linkage Section. Procedure Division.

5

Tpico 310 - Codificando un programa COBOLIdentification DivisionEnvironment Division Data Division Procedure Division

Se especifican los datos generales del programa como : PROGRAM-ID. AUTHOR. DATE-WRITTEN. DATE-COMPILED. Nombre del programa. Nombre del autor. Fecha en la que fue escrito. Fecha en la que fue compilado.

1 2 3 4 7 7890123456789012345678901234567890123456789012 ****************************************************************** * IDENTIFICATION DIVISION * ****************************************************************** IDENTIFICATION DIVISION.

PROGRAM-ID. AUTHOR. DATE-WRITTEN. DATE-COMPILED.

PGM330. CORITEL. JULIO, 2008. JULIO, 2008.

6

Tpico 310 - Codificando un programa COBOLIdentification Division

Environment Division

Data Division

Procedure Division

Describe el entorno en el que correr el programa y Los archivos asociados al programa. Se divide en 2 secciones : Configuration Section. Aqu se especifica el ambiente en el que se desarrolla el programa y en el que se ejecutar. SOURCE-COMPUTER. Dnde se desarrolla OBJECT-COMPUTER. Dnde se ejecuta Input-Output Section. Indica cmo acceder el programa a los archivos, la organizacin de estos, la llave de acceso si son indexados.

1 2 3 4.. 7 7890123456789012345678901234567890123456789012 ************************************************** * ENVIRONMENT DIVISION * ************************************************** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-PC. OBJECT-COMPUTER. IBM-PC. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SEM-RPT-INPUT-FILE ASSIGN TO E1DQ0001 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT SEM-RPT-OUTPUT-FILE ASSIGN TO S1DQ0001 ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL.

Nombre interno del archivo

Nombre externo del archivo

7

Tpico 310 - Codificando un programa COBOLIdentification Division Environment Division

Data Division

Procedure Division

Describe detalladamente los datos usados, los de entrada y salida, reservando el espacio en memoria. Se divide en 2 secciones : File Section.

1 2 3 4. 7 7890123456789012345678901234567890123456789012 ************************************************* * DATA DIVISION * ************************************************* DATA DIVISION. FILE SECTION. FD SEM-RPT-INPUT-FILE LABEL RECORDS ARE [STANDARD / OMITTED] BLOCK CONTAINS 0 RECORDS RECORD CONTAINS 49 CHARACTERS DATA RECORD IS SEM-RPT-INPUT-REC. SEM-RPT-INPUT-REC PIC X(49). SEM-RPT-OUTPUT-FILE LABEL RECORDS ARE STANDARD BLOCK CONTAINS 0 RECORDS RECORD CONTAINS 132 CHARACTERS DATA RECORD IS SEM-RPT-OUTPUT-REC. SEM-RPT-OUTPUT-REC PIC X(132).

Especfica las caractersticas de los registros manejados por los archivos del programa. Working-Storage Section.01

En esta seccin se define el rea de memoria de almacenamiento temporal para el procesamiento de los datos durante la ejecucin del programa.

FD

01

8

Tpico 310 - Codificando un programa COBOLIdentification Division Environment Division

Data Division

Procedure Division

Describe detalladamente los datos usados de entrada y salida, reservando el espacio en memoria. Se divide en 2 secciones : File Section. Especfica las caractersticas de los registros manejados por los archivos del programa. Working-Storage Section. En esta seccin se define el rea de memoria de almacenamiento temporal para el procesamiento de los datos durante la ejecucin del programa y puede clasificarse en las siguientes partes :

Record Layout Lines and Headings Flags Counters/Acumulators Constants Scratch area

1 2 3 4. 7 7890123456789012345678901234567890123456789012 ************************************************ * DATA DIVISION * ************************************************ WORKING-STORAGE SECTION. 01 WS-WORK-AREA. ************************************************ * RECORD LAYOUTS * ************************************************ 05 IN-SEMINAR-REC. 10 IN-SEM-CODE PIC X(4). 10 IN-SEM-DEC PIC X(25). 10 IN-SEM-BEG. 15 AO PIC X(2). 15 FILLER PIC X VALUE /. 49 15 MES PIC X(2). 15 FILLER PIC X VALUE /. 15 DIA PIC X(2). 10 IN-STND-FEE PIC 9(4)V99. 10 IN-REG-FEES PIC 9(4)V99.

9

Tpico 310 - Codificando un programa COBOLIdentification DivisionRecord Layout La definicin del registro de datos puede ser realizada a travs de agrupacin de datos, los cuales se encuentran definidos por niveles. Por ejemplo : Si tenemos un archivo con una longitud total de 35 caracteres divididos en 4 campos principales (No empleado, Nombre, Fecha de nacimiento y puesto) y deseamos que cada registro del archivo se almacene en variables, la declaracin sera la siguiente :Archivo de Datos de empleados Nmero de Empleado 12093 87456 Nombre Nom Olga Silvia PA Barrn Daz Fecha nacimiento Ao 1967 1980 Mes 10 04 Da 14 27 AP MG Puesto

Environment Division

Data Division

Procedure Division

1 2 3 4. 7 7890123456789012345678901234567890123456789012 ******************************************************** * DATA DIVISION * ******************************************************** DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-WORK-AREA. ******************************************************** * RECORD LAYOUTS * ******************************************************** 05 IN-DATOS. 10 IN-NUM PIC X(5). 10 IN-NOM PIC X(20). 35 10 IN-FEC-NAC PIC X(8). 10 IN-PTO PIC X(2). 05 IN-DATOS-EMP. 10 IN-NUM-EMP 10 IN-NOMBRE-EMP. 15 IN-NOM-EMP 15 IN-PA-EMP 10 IN-FEC-NAC-EMP. 15 IN-AO-EMP 15 IN-MES-EMP 15 IN-DIA-EMP 10 IN-PTO-EMP

PIC X(5). PIC X(10). PIC X(10). 35 PIC PIC PIC PIC X(4). X(2). X(2). X(2).

5

20

8

2

10

Tpico 310 - Codificando un programa COBOLIdentification DivisionLines and Headings Definicin de constantes / variables que integran cada una de las lneas que corresponden a los ttulos, cabeceras, lneas de detalle, totales, etc., de un reporte. Por ejemplo, para crear el siguiente reporte se deberan declarar las siguiente variables :

Environment Division

Data Division05 RPT-ENCABEZADO. 10 FILLER 10 FILLER 10 FILLER 05 RPT-CABECERA. 10 FILLER 10 FILLER 10 FILLER 10 FILLER 10 FILLER 10 FILLER 10 FILLER 10 FILLER 10 FILLER 05 RPT-GUIONES. 10 FILLER 10 FILLER 10 FILLER 10 FILLER 10 FILLER 10 FILLER 10 FILLER 10 FILLER 10 FILLER 05 RPT-DETALLE 10 FILLER 10 RPT-NUM-EMP 10 FILLER 10 RPT-NOM-EMP 10 FILLER 10 RPT-PTO 10 FILLER 10 RPT-SUELDO 10 FILLER

Procedure Division1

PIC X(57) VALUE SPACES. PIC X(17) VALUE REPORTE DE NOMINA. PIC X(58) VALUE SPACES.

2PIC X(10) VALUE SPACES. PIC X(8) VALUE EMPLEADO. PIC X(20) VALUE SPACES. PIC X(6) VALUE NOMBRE. PIC X(20) VALUE SPACES. PIC X(8) VALUE PUESTO. PIC X(7) VALUE SPACES. PIC X(6) VALUE SUELDO. PIC X(37) VALUE SPACES.

3PIC X(10) VALUE SPACES. PIC X(8) VALUE ALL -. PIC X(5) VALUE SPACES. PIC X(20) VALUE ALL -. PIC X(5) VALUE SPACES. PIC X(8) VALUE ALL -. PIC X(5) VALUE SPACES. PIC X(6) VALUE ALL -. PIC X(37) VALUE SPACES.

REPORTE DE NOMINA 2 EMPLEADO --------------12093 87456 NOMBRE ----------------------------------OLGA BARRON SILVIA DIAZ PUESTO ------------AP MG SUELDO -----------10000 8000

1

3

4PIC X(10) VALUE SPACES. PIC X(5). PIC X(5) VALUE SPACES. PIC X(20). PIC X(5) VALUE SPACES. PIC X(2). PIC X(5) VALUE SPACES. PIC 9(5). PIC X(37) VALUE SPACES.

4

1 - Encabezado 2 - Cabeceras 3 - Guiones 4 - Detalle

11

Tpico 310 - Codificando un programa COBOLIdentification Division Environment Division

Data Division

Procedure Division

Flags and switchesElementos de datos condicionales que indican verdadero o falso. El nivel reservado para definir las condiciones de un switch es 88. Cada clusula debe ir acompaada con la palabra VALUE. Se pueden tener tantas banderas como se requieran, con uno o varios niveles diferentes. La condicin de un switch es activada mediante la instruccin SET. Ejemplo : En una pantalla en la que se manejan las opciones de (altas, bajas, modificaciones, consultas, salir), y adems de esto queremos controlar el fin en la lectura de un archivo. SET SW-NOT-EOF TO TRUE.

1 2 3 4. 7 7890123456789012345678901234567890123456789012 DATA DIVISION. ************************************************* * WORKING-STORAGE SECTION * ************************************************* WORKING-STORAGE SECTION. 01 WS-WORK-AREA. ************************************************* * FLAGS AND SWITCHES * ************************************************* 05 BANDERAS. 10 SW-ARCHIVO PIC X. 88 SW-EOF 88 SW-NOT-EOF SW-OPCIONES PIC X. 88 SW-ALTA 88 SW-BAJA 88 SW-MODIF 88 SW-CONSULTA 88 SW-SALIR

VALUE Y. VALUE N.

10

VALUE VALUE VALUE VALUE VALUE

1. 2. 3. 4. 5.

12

Tpico 310 - Codificando un programa COBOLIdentification Division Environment Division Data Division

Procedure Division

En esta se realiza el proceso lgico del programa y por lo general se divide en tres partes dentro de un prrafo principal : Inicio Generalmente se le asigna el nmero de prrafo 2000. Inicializacin de variables de trabajo (acumuladores, contadores, etc). En ste prrafo se realiza la apertura inicial de archivos Proceso Generalmente se le asigna el nmero de prrafo 3000. Ejecucin del procedimiento principal del programa. Final Generalmente se le asigna el nmero de prrafo 8000. Cerrado de archivos usados durante la ejecucin.

1 2 3 4. 7 7890123456789012345678901234567890123456789012 ************************************************* * PROCEDURE DIVISION * ************************************************* PROCEDURE DIVISION. 1000-MAINLINE. PERFORM 2000-HOUSEKEEPING THRU 2000-HOUSEKEEPING-EXIT. PERFORM 3000-PROCESS THRU 3000-PROCESS-EXIT UNTIL END-OF-FILE. PERFORM 8000-WRAP-UP THRU 8000-WRAP-UP-EXIT. STOP RUN.

13

Tpico 310 - Codificando un programa COBOL**************************************************************** * 3100-LOAD * *--------------------------------------------------------------* *PROCESO QUE CARGA LOS REGISTROS DE ENTRADA A UNA TABLA EXTERNA* **************************************************************** 3100-LOAD. PERFORM 9910-READ-REG THRU 9910-READ-REG-EXIT. IF NOT END-OF-REG-EXP SET LS-TBL-IDX UP BY 1 MOVE MOVE MOVE MOVE MOVE END-IF. 3100-LOAD-EXIT. EXIT. FIN DE DE PRRAFO WS-REGE-REG-NUMERO WS-REGE-EXP-DT WS-REGE-EXP-TIME WS-REGE-EXP-CODE WS-REGE-EXP-AMT TO TO TO TO TO LS-TBL-REG-NUM(LS-TBL-IDX) LS-TBL-EXP-DT-J(LS-TBL-IDX) LS-TBL-EXP-TIME(LS-TBL-IDX) LS-TBL-EXP-CODE(LS-TBL-IDX) LS-TBL-EXP-AMT(LS-TBL-IDX) SENTENCIA COMENTARIO PRINCIPIO DE PRRAFO

INSTRUCCIONES

14

Tpico 310 - Codificando un programa COBOL Prrafos en COBOL Comentarios. Se codifican a partir de la columna 7 y comienzan con * Mximo hasta la columna 72 Cabecera - inicio y finalizacin de un prrafo-. Se codifican a partir de la columna 8 Nombrados de acuerdo a un orden lgico, mximo 35 caracteres El prrafo de finalizacin marca la terminacin del prrafo. El nombre debe tener el mismo nombre de inicio pero agregando la terminacin -EXIT El prrafo de terminacin no es requerido

15

Tpico 310 - Codificando un programa COBOL Prrafos en COBOL

Sentencias Coleccin de instrucciones que realizan un paso en el programa. Se codifican a partir de la columna 12. Una instruccin es un comando de COBOL (verbo) que realiza una funcin especfica. Las sentencias terminan con un punto, las instrucciones no.

16

Mdulo Bsico Mdulo BsicoCobol

Tpico 310 Codificando un Programa Cobol Tpico 320 Editando un Programa Tpico 330 Procesando Archivos Tpico 340 Formateando Datos Tpico 350 Aritmtica y Lgica de un Programa Cobol Tpico 360 Programacin Multimodular y Copybooks Tpico 370 Procesamiento de Tablas Tpico 380 Procesamiento Sistema Galaxy Expense17

Tpico 320 - Editando un programa Objetivos.

Conocimiento del software para la edicin de programas.

Conocimiento de los comandos de edicin.

Compilacin y ejecucin de un programa COBOL.

Edicin y correccin de errores sintcticos y lgicos.

18

Tpico 320 - Editando un programa Codificacin de programas Comandos de edicin

Comandos de lnea. Se teclean en la parte izquierda de la pantalla sobre la columna de nmeros, realizando funciones de edicin. Comandos Descripcin Inserta lneas Borra lneas Copia Lneas Mueve lneas Repite lneas Sobrescribe lneas Despliega gua de columnas19

i, in d, dd, dn c, cc / a b m, mm/ a b r, rr, rn o, oo / m c Cols

Tpico 320 - Editando un programa Codificacin de programas Comandos de edicin

Comandos primarios. Se teclean en la lnea de comando, ayudando a la ejecucin de algunas funciones de utilidad. Comando SAVE CANCEL Descripcin Salva el programa Cancela los cambios

FIND cadena Busca una carcter o cadena [ALL, FIRST, LAST, NEXT,PREV] de caracteres especifica CHANGE antes despus [ALL] CREATE COPY Reemplaza caracteres o cadenas de caracteres Crea elementos nuevos Copia lneas a partir de un programa, copy, etc. a otro20

Tpico 320 - Editando un programa Codificacin de programas Comandos generales (teclas de funcin). Tecla F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 HELP - Ayuda SPLIT Divide la pantalla en dos diferentes sesiones END Vuelve al men anterior RETURN- Vuelve al men principal RFIND Repite el comando FIND RCHANGE- Repite el comando CHANGE UP Retrocede la pantalla DOWN Avanza la pantalla SWAP Permite el desplazamiento entre pantallas LEFT Desplaza la pantalla a la izquierda RIGHT Desplaza la pantalla a la derecha RETRIEVE Recupera los ltimos comandos ejecutados.21

Descripcin

Tpico 320 - Editando un programa Compilacin de programas

A Programas sin acceso a DB2 C Programas CICS S Programas con acceso DB222

Tpico 320 - Editando un programa Compilacin de programas

Revisin de sintaxis. Revisin de cada una de las sentencias escritas en el cdigo fuente Depuracin de errores Errores de puntuacin Errores ortogrficos (sintaxis) Errores de campos/variables no definidos en Working-Storage Section

Generacin de cdigo objeto. Se encuentra en lenguaje mquina y se nombra de acuerdo al nombre dado en el Program-ID.

23

Mdulo Bsico Mdulo BsicoCobol

Tpico 310 Codificando un Programa Cobol Tpico 320 Editando un Programa Tpico 330 Procesando Archivos Tpico 340 Formateando Datos Tpico 350 Aritmtica y Lgica de un Programa Cobol Tpico 360 Programacin Multimodular y Copybooks Tpico 370 Procesamiento de Tablas Tpico 380 Procesamiento Sistema Galaxy Expense24

Tpico 330 - Procesando Archivos Objetivos.

Generacin de la seccin de File Description y sentencias SELECT/ASSIGN para los archivos usados en el programa.

Codificacin de la estructura de los registros de entrada y salida Section.

en la Working-Storage

Utilizacin de banderas en un programa COBOL.

Codificacin de la Procedure Division en un programa.

25

Tpico 330 - Procesando Archivos Tipos de archivos Archivos Secuenciales. Organizacin Deben ser accedidos en orden secuencial. Para la realizacin de bsquedas, son accedidos frecuentemente en un orden especifico, en base a un campo especfico. Acceso. El acceso secuencial es mas rpido que el acceso directo cuando se requiere de un procesamiento de todos los registros contenidos en el archivo, ya que el tiempo de procesamiento no involucra un acceso adicional al archivo del ndice. Dispositivos de almacenamiento. Cualquier dispositivo (cintas, discos, etc).

26

Tpico 330 - Procesando Archivos Tipos de archivos Archivos de Acceso Directo. Deben ser accedidos a travs de un ndice. Organizacin. Son accedidos a travs de un archivo especial llamado ndice, el cual est formado por dos campos: un apuntador(direccin) y el campo llave. Acceso. Son de rpido acceso cuando se accede a travs del campo llave. No pueden ser accedidos desde cinta debido a la naturaleza de estos. Su acceso puede ser secuencial indexado. Dispositivos de acceso. Cualquier dispositivo de acceso, excepto cintas.

27

Tpico 330 - Procesando Archivos Tipos de archivos

Reglas sobre Nombres internos de archivos:

El nombre asignado a cada archivo debe ser nico. Pueden contener slo letras, dgitos o guiones. Deben contener al menos un carcter de A - Z. No pueden contener guiones al inicio del nombre. La longitud mxima del nombre es de 30 caracteres. No puede ser una palabra reservada de COBOL

28

Tpico 330 - Procesando Archivos Diagrama de Proceso para procesamiento de archivos y generacin de listados- Apertura (OPEN) de archivos de entrada y salida - Incializacin de switches (SET sw-xxx TO TRUE) - Incializacin de variables de trabajo y lineas de detalle (INITIALIZE). - Lectura inicial de archivos (READ) 1000-Principal ( Mainline ) - Manipulacin de los datos ledos de archivos (MOVE xxxxx TO zzzzzz) - Escritura al archivo de salida (WRITE) - Lectura del siguiente registro (READ) 8000-Fin ( Wrap-up ) STOP RUN.

2000-Inicio ( Housekeeping )

3000-Proceso ( Process ) (UNTIL end-of-file)

- Cierre de archivos usados por el programa (CLOSE)

29

Tpico 330 - Procesando Archivos Sentencia: PERFORM

Su funcin es pasar el control a un prrafo especfico. Despus de ejecutar las instrucciones de aquel prrafo, el control es devuelto al prrafo que realiz la llamada.

Esta sentencia es acompaada de la clusula THRU, la cual permite identificar la ltima lnea a ejecutar del prrafo. Para indicar el final del prrafo se utiliza la clusula -EXIT.

PERFORM nombre-parrafo THRU nombre-parrafo-EXIT

30

Tpico 330 - Procesando Archivos Sentencia: PERFORM (Cont.)*********************************************************** * 1000-MAINLINE * *********************************************************** 1000-MAINLINE. PERFORM 2000-HOUSEKEEPING THRU 2000-HOUSEKEEPING-EXIT. PERFORM 3000-PROCESS THRU 3000-PROCESS-EXIT. PERFORM 8000-WRAP-UP THRU 8000-WRAP-UP-EXIT. STOP RUN. *********************************************************** * 2000-HOUSEKEEPING * *********************************************************** 2000-HOUSEKEEPING. OPEN INPUT OUTPUT INPUT-FILE OUTPUT-FILE.

Pasa el control

PERFORM 2100-INICIALIZA-VAR THRU 2100-INICIALIZA-VAR-EXIT. READ INPUT-FILE INTO WS-INPUT-FILE AT END SET END-OF-FILE TO TRUE. 2000-HOUSEKEEPING-EXIT. EXIT.

Devuelve el control31

Tpico 330 - Procesando Archivos Sentencia: PERFORM (Cont.)*********************************************************** * 2000-HOUSEKEEPING * *********************************************************** 2000-HOUSEKEEPING. OPEN INPUT OUTPUT INPUT-FILE OUTPUT-FILE.

PERFORM 2100-INICIALIZA-VAR THRU 2100-INICIALIZA-VAR-EXIT READ INPUT-FILE INTO WS-INPUT-FILE AT END SET END-OF-FILE TO TRUE.

Pasa el control

2000-HOUSEKEEPING-EXIT. EXIT. *********************************************************** * 2100-INICIALIZA-VAR * *********************************************************** 2100-INICIALIZA-VAR. INITIALIZE VARIABLE-A VARIABLE-B VARIABLE-X

SET NOT-END-OF-FILE TO TRUE. 2100-INICIALIZA-VAR-EXIT. EXIT.

Devuelve el control32

Tpico 330 - Procesando Archivos Sentencia: PERFORM La clusula UNTIL es utilizada por la sentencia PERFORM para indicar que el prrafo debe ser ejecutado hasta cumplir una determinada condicin. PERFORM nombre-parrafo THRU nombre-parrafo-EXIT UNTIL condicion.

Por ejemplo:PERFORM 2100-INIT-TABLE THRU 2100-INIT-TABLE-EXIT UNTIL WS-CONTADOR EQUAL TO CTE-CINCO.

33

Tpico 330 - Procesando Archivos Sentencia: OPEN La sentencia OPEN permite abrir los archivos que requiere un programa adems de :

Indicar al sistema cules son los archivos que sern accedidos por el programa Identificar cules archivos sern usados para entrada de datos y cules sern archivos de salida de datos.

Generalmente es codificada al inicio del programa. Su sintaxis es: Archivos de lectura Archivos de escritura Adicin de registros OPEN INPUTnombre-archivo

OPEN OUTPUT nombre-archivo OPEN EXTEND nombre-archivo

34

Tpico 330 - Procesando Archivos Sentencia: OPEN En caso de tener varios archivos de lectura o escritura se codificara as:LECTURA OPEN INPUT File-name1 File-name2 File-name3 . . File-namen. OPEN OUTPUT ESCRITURA File-name1 F ile-name2 File-name3 . . File-namen.

LECTURA-ESCRITURA OPEN INPUT File-name1 File-name2 OUTPUT File-name3 File-name4 EXTEND File-name5 . . File-namen.35

Tpico 330 - Procesando Archivos Sentencia: INITIALIZE Permite la inicializacin de campos ya sea de grupo o elementales. Los campos alfanumricos son inicializados con espacios. Los campos numricos son inicializados con ceros. Su sintaxis: INITIALIZE nombre-campo 05 WS-CLIENTE. 10 WS-CODIGO 10 WS-NOMBRE INITIALIZE PIC 9(5). PIC X(30). INITIALIZE WS-CODIGO WS-NOMBRE. WS-CLIENTE.

36

Tpico 330 - Procesando Archivos Sentencia: MOVE La sentencia MOVE coloca una copia del dato contenido en un campo-1 a un campo-2.

Su sintaxis: MOVE campo-1 TO campo-2

Por ejemplo: Campos elementales MOVE campo-1 TO campo-2 campo-3 campo-4. Campos a nivel grupo MOVE grupo-1 TO grupo-2.

37

Tpico 330 - Procesando Archivos Sentencia: MOVE (Cont.) El truncamiento de los datos depende de la longitud del campo al que son informados: Los campos alfanumricos son alineados hacia la izquierda. Los datos son copiados al rea destino de izquierda a derecha, rellenando con espacios o truncando a la derecha. Los campos numricos son alineados hacia la derecha. Ejemplo1. Cuando el campo receptor es ms pequeo NumricosC A R L A C A R WS-CODIGO RPT-CODIGO PIC 9(5). PIC 9(3). 5 4 3 2 1

AlfanumricosWS-NOMBRE RPT-NOMBRE PIC X(5). PIC X(3).

3 2 1

38

Tpico 330 - Procesando Archivos Sentencia: MOVE (Cont.) Ejemplo 2. Cuando el campo receptor es ms grande

AlfanumricosWS-NOMBRE RPT-NOMBRE PIC X(5). PIC X(8). C A R L A C A R L A

NumricosWS-CODIGO RPT-CODIGO PIC 9(5). PIC 9(8). 5 0 4 3 2 1 0 0 5 4 3 2 1

39

Tpico 330 - Procesando Archivos Sentencia: MOVE (Cont.) Ejemplo 3. Cuando el campo que enva es un numrico con decimales implcitos y el que recibe es un numrico con dos decimales.

NumricosWS-IMPLICITO WS-DECIMAL PIC 9(2)V99. PIC 9(2).99. 2 2 3 3 4 5 . 4 5

40

Tpico 330 - Procesando Archivos Sentencia: READ Permite leer los registros de un archivo. Su sintaxis: READ nombre-archivo INTO nombre-registro AT END SET END-OF-FILE TO TRUE.

La sentencia READ lee el registro del archivo especificado cuyo nombre es el mismo que el asignado en la seccin de FD. Los datos del registro son transferidos a travs de la sentencia INTO en la definicin del registro que ha sido definido en la WS para el archivo. Para controlar el fin de archivo en base a una condicin es utilizada la clusula AT END.

41

Tpico 330 - Procesando Archivos Sentencia: READ (Cont.) Ejemplo : READ INPUT-FILE AT END SET END-OF-FILE TO TRUE.DATA DIVISION. FILE SECTION. ************************************* * INPUT-FILE * ************************************* FD INPUT-FILE LABEL RECORDS ARE STANDARD BLOCK CONTAINS 0 RECORDS RECORDS CONTAINS 37 CHARACTERS DATA RECORD IS INPUT-REC. 01 INPUT-REC X(37). WORKING-STORAGE SECTION. 01 WS-WORK-AREA. ***************************************** * RECORD LAYOUT * ***************************************** 05 INP-DATOS. 10 INP-NUMBER PIC 9(5). 10 INP-NAME PIC X(12). 10 INP-CODE PIC 9. 10 INP-PHONE PIC 9(7). 10 INP-CONTACT PIC X(12).

INTO INP-DATOS

42

Tpico 330 - Procesando Archivos Sentencia: WRITE (Cont.) Esta sentencia permite escribir el contenido de la memoria a un dispositivo de salida (archivo, cinta, etc.). Sintaxis: WRITE OUTPUT-REC

A travs de esta sentencia se puede escribir el contenido de un registro a un dispositivo de salida (archivo, cinta, etc.). Su sintaxis: WRITE OUTPUT-REC FROM REC-DATA

43

Tpico 330 - Procesando Archivos Sentencia: WRITE (Cont.)

La clusula AFTER ADVANCING es usada con el WRITE para el control de lneas de espaciamiento antes de imprimir la siguiente lnea del reporte o comenzar a imprimir en una nueva pgina.

Su sintaxis: WRITE OUTPUT-REC FROM REC-DATA AFTER ADVANCING [ n LINES] [PAGE]

44

Tpico 330 - Procesando Archivos Sentencia: WRITE (Cont.)

MOVE REC-INPUT TO RPT-LINE WRITE OUTPUT-REC FROM RPT-LINE

AFTER ADVANCING CTE-TWO LINES.

DATA DIVISION. FILE SECTION. ************************************** * OUTPUT FILE * ************************************** FD OUTPUT-FILE LABEL RECORDS ARE OMITTED RECORDS CONTAINS 132 CHARACTERS DATA RECORD IS OUTPUT-REC. X(132). 01 OUTPUT-REC

WORKING-STORAGE SECTION. 01 WS-WORK-AREA. ************************************** * REPORT LINES AND HEADINGS * ************************************** 05 RPT-LINE PIC X(132).

45

Tpico 330 - Procesando Archivos Sentencia: CLOSE

Esta sentencia permite cerrar los archivos de entrada y salida usados durante el proceso del programa.

Su sintaxis: CLOSE file-name1file-name2 file-namen.

Ejemplo: CLOSE

INPUT-FILE OUTPUT-FILE.

46

Mdulo Bsico Mdulo BsicoCobol

Tpico 310 Codificando un Programa Cobol Tpico 320 Editando un Programa Tpico 330 Procesando Archivos Tpico 340 Formateando Datos Tpico 350 Aritmtica y Lgica de un Programa Cobol Tpico 360 Programacin Multimodular y Copybooks Tpico 370 Procesamiento de Tablas Tpico 380 Procesamiento Sistema Galaxy Expense47

Tpico 340 - Formateando Datos Objetivos. Distinguir entre un dato variable y un dato constante.

Usar herramientas especiales de edicin para hacer la informacin del reporte ms fcil de leer y entender.

Transformar un dato no formateado en uno usado para la lnea de un reporte.

Explicar el proceso del flujo de un programa que lee un registro a partir de un archivo, formatea los datos y genera un reporte.

Explicar el propsito de la funcin de la clusula REDEFINES.

48

Tpico 340 - Formateando Datos Tipos de lneas en un reporte Ttulos/HeadingsPGM999 REPORTE DE EMPLEADOS 10/08/01

Subttulos/ Subheadings

NOMBRE LARA CARLOS LOPEZ RAFAEL MENDEZ ANA SALGADO MARIA P S P S

PUESTO

COMPAA BANCO

CLIENTE_ BANCOMER JC PENNY

CODIGO X9889 J8181 I7878 J8181 TOTAL $ $ $ $

_GASTOS_ 765.13 123.48 763.00 825.98

HOSPITAL

IMSS JC PENNY

Lneas de Detalle

Lneas de Totales*** FIN DE REPORTE ***

$2,477.59

Lnea de mensajes

49

Tpico 340 - Formateando Datos Tipos de informacin en un reporte. Constante. El valor del dato no cambia durante el tiempo de ejecucin. Por ejemplo, ttulos, subttulos, etc. La declaracin de literales est dada a travs de las clusulas FILLER y VALUE en la Working-Storage Section , mientras que las literales son variables a las que se les asigna un valor fijo.

Por ejemplo:

05

REPORT-LINES. 10 10 10 RPT-HEADING1. FILLER RPT-CODIGO 15 15 15 FILLER FILLER FILLER PIC X PIC 9(6) PIC X(38) PIC X(17) PIC X(70) VALUE VALUE VALUE VALUE VALUE SPACES. 052920. SPACES. REPORTE DE PRUEBA. SPACES.

50

Tpico 340 - Formateando Datos Tipos de informacin en un reporte. Existen algunas clusulas simblicas que permiten asignar valores de acuerdo a la naturaleza del campo: Asignar espacios a todas las posiciones de un campo alfanumrico: SPACE, SPACES. Asigna ceros a todas las posiciones de un campos numrico: ZERO, ZEROS, ZEROES.

La clusula VALUE ALL permite indicar que el valor asignado ocupar todas las posiciones del campo.

05

REPORT-LINES. 10 10 10 10 RPT-HEADING1. FILLER FILLER FILLER PIC X PIC X(15) PIC 9(6) VALUE SPACES. -.

VALUE ALL VALUE

ZEROES.

51

Tpico 340 - Formateando Datos Tipos de informacin en un reporte. Variable. Cambia su informacin durante la ejecucin del programa, por ejemplo, las lneas de detalle, los totales, etc. Los datos variables no pueden ser asignados a un FILLER. No se asigna generalmente un valor a los datos variables.

52

Tpico 340 - Formateando Datos Edicin de campos.

Tipo de edicin Edicin de Decimales Eliminacin de ceros a la izquierda

Campo fuente PIC PIC 999V99 99999.99

Presentacin 08457 00544.75 000056788 473500991 000455679 055754907 000056788 473500991 000455679 055754907

Campo editado PIC 999.99 PIC ZZZZ9.99

Presentacin 084.57 544.75 567.88 4,735,009.00 4,556.79 557,549.07 $ 567.88 $4,735,009.00 $ 4,556.79 $ 557,549.07

Comas

PIC 9(7)V99

PIC Z,ZZZ,ZZ9.99

Signo $ fijo

PIC 9(7)V99

PIC $Z,ZZZ,ZZ9.99

53

Tpico 340 - Formateando Datos Edicin de campos.Tipo de edicin Signo $ flotante Campo fuente Presentacin 000056788 473500991 000455679 055754907 0054 010191 060192 +3456 +0005 -0032 +3456 +0005 -0032 Campo editado Presentacin $567.88 $4,735,009.00 $4,556.79 $557,549.07 54,000 01 01 91 06 01 92 +3,456 + 5 32 3,456+ 5+ 32-

PIC 9(7)V99

PIC $$,$$$,$$9.99

Adicin de ceros Insercin de blancos

PIC 9(4) PIC 9(6)

PIC Z,ZZ9,000 PIC 99B99B99

PIC S9(4) Adicin de Signo + PIC S9(4)

PIC +Z,ZZ9

PIC Z,ZZ9+

54

Tpico 340 - Formateando Datos Edicin de campos.

Tipo de edicin Adicin de Signo + (Cont.)

Campo fuente

Presentacin +3456 +0005 -0032 +3456 +0005 -0032 +3456 +0005 -0032 +3456 +0005 -0032

Campo editado

Presentacin +3,456 +5 -32 3,456 5 32 3,456 5 323,456 5 -32

PIC S9(4)

PIC ++,++9

PIC S9(4)

PIC -Z,ZZ9

Adicin de Signo -

PIC S9(4)

PIC Z,ZZ9-

PIC S9(4)

PIC --,--9

55

Tpico 340 - Formateando Datos Edicin de campos.Tipo de edicin

Campo fuente PIC S9(4)V99

Presentacin +164589 -164589 +164589 -164589 +164589 -164589 +164589 -164589 0000000 0005380 0374750 1485500 1234567

Campo editado PIC $Z,ZZ9.99CR PIC $Z,ZZ9.99DB PIC $Z,ZZ9.99BCR PIC $Z,ZZ9.99BDB PIC $**,***.**

Presentacin $1,645.89CR $1,645.89 $1,645.89 $1,645.89DB $1,645.89 CR $1,645.89 $1,645.89 $1,645.89 DB $********* $****53.80 $*3,747.50 $*4,855.00 $*2,345.67

Adicin de smbolos contables: CR - Positivo DB Negativo

PIC S9(4)V99 PIC S9(4)V99 PIC S9(4)V99

Asteriscos

PIC S9(5)V99

ERROR ERROR

56

Tpico 340 - Formateando Datos Edicin de campos. Consideraciones importantes en la edicin de datos: En la eliminacin de ceros y signo $. Un campo no puede contener slo Z $ Las Zs y $ no pueden ser codificados a la derecha de un 9 punto decimal. El campo debe contener al menos un carcter 9 a la derecha del signo $. Insercin de blancos Pueden ser usados para campos numricos y alfanumricos Signos + y - Cuando se coloca en el formato del campo el signo +, se imprime + si el valor es positivo y - si el valor es negativo. Cuando se coloca en el formato del campo el signo - ste slo es impreso en valores negativos. Signos CR y DB El signo CR aparece slo cuando el valor es positivo y el DB slo cuando se trata de una cantidad negativa.

57

Tpico 340 - Formateando Datos Edicin de campos. Consideraciones importantes en la edicin de datos: Asteriscos. Pueden ser codificados a la derecha del punto decimal. Los asteriscos aparecern an cuando el valor sea cero. Las comas son reemplazadas por asteriscos. Pueden llegar a truncar un dgito del campo, ya que siempre imprimir al menos un asterisco.

58

Tpico 340 - Formateando Datos Clusula: REDEFINES Esta clusula es usada para conservar el espacio de memoria, usando mas de una definicin de registro para representar el mismo espacio de memoria. Los campos pueden ser redefinidos por campos a su mismo nivel y no pueden ser utilizados en niveles 88. No se les puede asignar clusulas VALUE. Su sintaxis:campo-2 REDEFINES campo-142 caracteres

EMP-REC PTR-REC

NOMBRE

TITULO

INDUSTRIA

NOMBRE

TITULO

CVE_CLIENTE

CLIENTE

ESTATUS

GASTOS

42 caracteres59

Tpico 340 - Formateando Datos Clusula: REDEFINES************************************************************ * 10 EMP-REC. 15 EMP-NOMBRE 15 EMP-TITULO 15 EMP-INDUSTRIA 10 PTR-REC REDEFINES EMP-REC. 15 PTR-NOMBRE 15 PTR-TITULO 15 PTR-CVE-CLIENTE 15 PTR-CLIENTE 15 PTR-ESTATUS 15 PTR-GASTOS PIC X(12). PIC X. PIC X(8). PIC X(1O). PIC X(6). PIC 9(3)V99. PIC X(12). PIC X. PIC X(29). RECORD LAYOUTS * ************************************************************

60

Tpico 340 - Formateando Datos Creacin del formato de un reporte.

Procesos principales para la creacin de un reporte. Lectura del archivo de entrada. En donde se lee el registro de entrada y su informacin es almacenada en los campos que definen dicho registro. Edicin o formateo de los campos. Lo cual involucra mover cada campo del registro de entrada a su correspondiente campo en la lnea de detalle del reporte. Impresin del reporte. Involucra la escritura de las cabeceras y lneas de detalle del reporte.

61

Mdulo Bsico Mdulo BsicoCobol

Tpico 310 Codificando un Programa Cobol Tpico 320 Editando un Programa Tpico 330 Procesando Archivos Tpico 340 Formateando Datos Tpico 350 Aritmtica y Lgica de un Programa Cobol Tpico 360 Programacin Multimodular y Copybooks Tpico 370 Procesamiento de Tablas Tpico 380 Procesamiento Sistema Galaxy Expense62

Tpico 350 - Aritmtica y Lgica de un Programa COB Objetivos.

Describir qu es un campo compactado, cundo y cmo usarlo. Codificar correctamente campos numricos (display, signados y compactados). Describir el uso de los verbos aritmticos: ADD, SUBTRACT, MULTIPLY, DIVIDE, COMPUTE. Definir y distinguir entre estructuras alternativas e iterativas. Codificar estructuras iterativas. Explicar la lgica de los IF anidados.

63

Tpico 350 - Aritmtica y Lgica de un Programa COB Campos numricos. Tipos de campos numricos. Display. Cada dgito ocupa una posicin de memoria (byte). Utilizados para enviar y recibir nmeros entre programas y archivos, terminales o impresoras.

Formato de campo

Ejemplo

Memoria Ocupada

PIC 99 PIC 99V PIC 9(3)V99

25 25v 321v35

2 bytes 2 bytes 5 bytes

64

Tpico 350 - Aritmtica y Lgica de un Programa COB Campos numricos. Tipos de campos numricos. Signados. Conservan el signo positivo o negativo sin ocupar un byte en memoria. Se representan con el carcter S . Regularmente son usados para clculos o procesos internos.PICTURE PIC S9999 PIC S9999 PIC S9999 PIC S(4)V99 VALOR +1234 +12 -123 -25v67 REPRESENTACIN +1234 +0012 -0123 -0025v67 MEMORIA OCUPADA 4 bytes 4 bytes 4 bytes 6 bytes

65

Tpico 350 - Aritmtica y Lgica de un Programa COB Campos numricos. Tipos de campos numricos. Compactados. Ocupan 1 byte de memoria para almacenar 2 dgitos. El ltimo byte contiene solo 1 dgito y el signo. Son usados para clculos aritmticos. Valor a guardar : -12345.671 2

Definicin: S9(5)V99 COMP-33 4 5 6 7 D

Total bytes de memoria = 4 (No. Dgitos + 1) / 266

Tpico 350 - Aritmtica y Lgica de un Programa COB Campos numricos. Tratamiento de datos entre campos numricos. El mover valores entre campos numricos, implica que si uno de los campos es signado, el otro tambin lo sea, ya que de lo contrario se truncara el signo, o bien se asumira +.

PIC S9(3) MOVE CAMPO-ORIGEN -025 PIC S9(3) MOVE CAMPO-ORIGEN -025 PIC 9(3) MOVE CAMPO-ORIGEN 025

TO

PIC +999 CAMPO-RECEPTOR -025 PIC 999 CAMPO-RECEPTOR 025 PIC +999 CAMPO-RECEPTOR +025

CORRECTO

TO

INCORRECTO

TO

INCORRECTO

67

Tpico 350 - Aritmtica y Lgica de un Programa COB Campos numricos. Tratamiento de datos entre campos numricos. No se puede mover a nivel de grupo, un campo numrico a uno compactado directamente.

Definicin en Working Storage

Tratamiento en Procedure Division

Correcto /incorrecto

10 WS-DATE. 05 WS-AA 05 WS-MM 05 WS-DD 10 WS-DATE-COMP

PIC PIC PIC PIC

99. 99. 99. 9(6) COMP-3.

MOVE WS-DATE

TO

WS-DATE-COMP

INCORRECTO

68

Tpico 350 - Aritmtica y Lgica de un Programa COB Campos numricos. Tratamiento de datos entre campos numricos (Cont.)Definicin en Working-Storage Section. 10 WS-DATE. 15 WS-AA 15 WS-MM 15 WS-DD 10 WS-DATE-TEMP 10 WS-DATE-COMP PIC PIC PIC PIC PIC 99. 99. 99. 9(6). 9(6) COMP-3. Tratamiento en Procedure Division Correcto /incorrecto

MOVE WS-DATE TO WS-DATE-TEMP MOVE WS-DATE-TEMP TO WS-DATE-COMP

CORRECTO

10 WS-DATE. 15 WS-AA PIC 99. 15 WS-MM PIC 99. 15 WS-DD PIC 99. 10 WS-DATE-RED REDEFINES WS-DATE PIC 9(6). 10 WS-DATE-COMP PIC 9(6) COMP-3.

MOVE WS-DATE-RED

TO

WS-DATE-COMP

CORRECTO

69

Tpico 350 - Aritmtica y Lgica de un Programa COB Verbos aritmticos. ADD. Adicin de valores. ADD campo-1 campo-2 campo-N TO campo-z SUBTRACT. Sustraccin de valores. SUBTRACT campo-1 campo-2 campo-N FROM campo-z MULTIPLY. Multiplicacin de valores. El resultado es almacenado en los campos especificados por la instruccin BY. MULTIPLY campo-1 BY factor-1 factor-2 factor-N A MULTIPLY Resultado 2 2 BY B 3 6 C 10 2070

Tpico 350 - Aritmtica y Lgica de un Programa COB Verbos aritmticos. DIVIDE. Divisin de valores. DIVIDE dividendo BY divisor GIVING cociente DIVIDE A 10 BY B 2 GIVING C 5 5 2 10

DIVIDE divisor INTO dividendo-1 dividendo-2 DIVIDE A 2 2 INTO B 10 5

71

Tpico 350 - Aritmtica y Lgica de un Programa COB Verbos aritmticos. DIVIDE. Divisin de valores (cont). DIVIDE divisor INTO dividendo GIVING cociente REMAINDER residuo DIVIDE A INTO B GIVING C REMAINDER D

5

23

4

3

72

Tpico 350 - Aritmtica y Lgica de un Programa COB Verbos aritmticos. GIVING. Asigna el valor de la operacin al campo especificado. GIVING campo-suma

ADD campo-1

TO campo-z

SUBTRACT campo-1 FROM campo-z GIVING campo-resta MULTIPLY campo-1 DIVIDE dividendo DIVIDE divisor BY factor-1 BY divisor GIVING campo-mult GIVING cociente

INTO dividendo GIVING cociente REMAINDER residuo

73

Tpico 350 - Aritmtica y Lgica de un Programa COB Verbos aritmticos. ROUNDED. Redondea el valor del clculo de la operacin. El valor es redondeado al siguiente superior cuando el valor truncado es >= 5 valor no es redondeado cuando el valor truncado es menor a 5 ADD campo-1 TO campo-z ROUNDED

SUBTRACT campo-X FROM campo-z ROUNDED MULTIPLY campo-1 BYfactor

GIVING campo-store ROUNDED

74

Tpico 350 - Aritmtica y Lgica de un Programa COB Sentencia: COMPUTE Esta sentencia permite realizar operaciones aritmticas sin necesidad de recurrir a los verbos aritmticos. La sentencia COMPUTE utiliza los siguientes smbolos para especificar la operacin: + * / ** () Suma Resta Multiplicacin Divisin Exponenciacin Parntesis para establecer jerarquas

75

Tpico 350 - Aritmtica y Lgica de un Programa COB Sentencia: COMPUTE Las prioridades de los signos para realizar las operaciones son: () ** *,/ Parntesis Exponenciacin Multiplicacin, Divisin

+, - Suma, Resta Las sentencias son evaluadas de izquierda a derecha dependiendo del operando. Ejemplos. COMPUTE A = A + B + C COMPUTE A = ( B * ( C - D ) )

76

Tpico 350 - Aritmtica y Lgica de un Programa COB Sentencia: COMPUTE vs VERBOS ARITMTICOS

COMPUTECOMPUTE A = (B * (C - D))

VERBOS ARITMTICOSSUBTRACT D FROM C GIVING E

MULTIPLY B * E GIVING A COMPUTE WS-IVA = WS-COMPRA * CTE-15 / CTE-100 MULTIPLY WS-COMPRA BY CTE-15 GIVING WS-IVA-AUX DIVIDE WS-IVA-AUX BY CTE-100 GIVING WS-IVA COMPUTE WS-INCREMENTO = WS-INCREMENTO + 1 COMPUTE WS-SALDO = WS-SALDO WS-RETIRO COMPUTE WS-INCREMENTO-1 = WS-INCREMENTO-1 + 1 COMPUTE WS-INCREMENTO-2 = WS-INCREMENTO-2 + 1 COMPUTE WS-INCREMENTO-3 = WS-INCREMENTO-3 + 1 ADD 1 TO WS-INCREMENTO

SUBTRACT WS-RETIRO FROM WS-SALDO ADD 1 TO WS-INCREMENTO-1 WS-INCREMENTO-2 WS-INCREMENTO-3

77

Tpico 350 - Aritmtica y Lgica de un Programa COB Expresiones Aritmticas.

IF

( A

+

B )

> ( C

-

D

+

5 )

accin END-IF.

78

Tpico 350 - Aritmtica y Lgica de un Programa COB Estructuras lgicas Existen dos tipos de estructuras lgicas:Es una sentencia condicional con una o ms opciones. La opcin realizada depende de la condicin que resulte verdadera. Son codificadas con sentencias IF. Iterativas Son sentencias condicionales que de cumplirse, hacen que se ejecute ms de una vez un prrafo o sentencia. Son codificadas con sentencias Until.

Alternativas

Ambas estructuras se clasifican en :Simples Se valida una condicin verdadera o falsa. Se validan ms de una condicin con la ayuda de las clusulas AND y OR, en estas estructuras se evalan todos los ANDs y despus los ORs de izquierda a derecha. Son estructuras alternativas / iterativas que se realizan dentro de otra estructura alternativa /iterativa.79

Compuestas

Anidadas

Tpico 350 - Aritmtica y Lgica de un Programa COB Estructuras lgicas Estructuras Alternativas.Alternativas Simples Alternativas Compuestas Alternativas Anidadas IF condicin-1 IF condicin-1 accin accin-1 ELSE ELSE accin-alternativa accin-alternativa END-IF. END-IF. IF condicin-1 [AND, OR] condicin-2 accin-1 IF condicin-2 accin-2 ELSE accin-3 END-IF END-IF.

80

Tpico 350 - Aritmtica y Lgica de un Programa COB Estructuras lgicas Estructuras Alternativas Tipos de condiciones. Condiciones de nombre. Son aquellas que evalan si un elemento es verdadero o falso (switches) Condiciones de relacin. Se refiere a las condiciones que comparan un elemento con otro.

AfirmativasGREATER THAN LESS THAN EQUAL TO GREATER THAN OR EQUAL TO LESS THAN OR EQUAL TO

NegativasNOT GREATER THAN NOT LESS THAN NOT EQUAL TO NOT GREATER THAN OR EQUAL TO NOT LESS THAN OR EQUAL TO

81

Tpico 350 - Aritmtica y Lgica de un Programa COB Estructuras lgicas Estructuras Alternativas - Condiciones. Condiciones de clase. Son aquellas usadas para datos que requieren ser validados antes de ser procesados. Se encuentran clasificadas en tres tipos: Numricas. Para caracteres numricos. IF field IS NUMERIC

Alfanumricas. Para caracteres alfanumricos tales como letras, nmeros y smbolos especiales, excepto algunos caracteres de control especiales. IF field IS ALPHANUMERIC

Alfabticas. Para caracteres alfabticos, espacios en blanco. Slo puede ser usado si el campo fue declarado como alfabtico. IF field IS ALPHABETIC

82

Tpico 350 - Aritmtica y Lgica de un Programa COB Estructuras lgicas Estructuras Iterativas.

Iterativas SimplesPERFORM nombre-prrafo THRU nombre-prrafo-exit UNTIL condicin .

Iterativas CompuestasPERFORM nombre-prrafo THRU nombre-prrafo-exit UNTIL condicin-1 [AND,OR] condicin-2 .

83

Tpico 350 - Aritmtica y Lgica de un Programa COB Estructuras lgicas Estructuras Iterativas.PROCESO-CLIENTES PERFORM LECTURA-CLIENTE THRU LECTURA-CLIENTE-EXIT UNTIL END-OF-FILE. LECTURA-CLIENTE PERFORM DETALLE-CLIENTE THRU DETALLE-CLIENTE-EXIT UNTIL WS-COUNTER > CTE-30. DETALLE-CLIENTE PERFORM PROCESA-ORDENES THRU PROCESA-ORDENES-EXIT

84

Tpico 350 - Aritmtica y Lgica de un Programa COB Verbo EVALUATE En el caso de requerir evaluar al mismo tiempo ms de tres condiciones distintas, es posible utilizar la sentencia EVALUATE.

Sintaxis. EVALUATE [identificador-1 / TRUE] WHEN condicin-1 accin-1 WHEN condicin-2 accin-2 WHEN condicin-n accin-n WHEN OTHER accin-y END-EVALUATE.

85

Mdulo Bsico Mdulo BsicoCobol

Tpico 310 Codificando un Programa Cobol Tpico 320 Editando un Programa Tpico 330 Procesando Archivos Tpico 340 Formateando Datos Tpico 350 Aritmtica y Lgica de un Programa Cobol Tpico 360 Programacin Multimodular y Copybooks Tpico 370 Procesamiento de Tablas Tpico 380 Procesamiento Sistema Galaxy Expense86

Tpico 360 Programacin multimodular y Copybooks Objetivos.

Descripcin y funcin de los programas multimodulares.

Diferencia entre un programa no modular y un programa modular.

Descripcin de comandos de control entre programas.

Descripcin y funcin de copybooks.

87

Tpico 360 Programacin multimodular y Copybooks Programas Modulares. Caractersticas: Son programas que se encuentran divididos en funciones. No realizan todo su proceso dentro del mismo programa, ya que hacen uso de uno o ms programas para realizar ciertas funciones.Programa principal (calling module) Son aquellos que requieren de invocar a otro programa que realiza una funcin especfica. Rutina (called module) Estos mdulos requieren de otro programa para realizar una funcin especfica y no pueden ser ejecutados por si mismos. Rutina SEM017 Programa PGM370 Procedure Division Using [parmetros] Goback

Call SEM017 Using [parmetros]

88

Tpico 360 Programacin multimodular y Copybooks Programas Modulares. Comunicacin entre mdulos. Programa principal (Calling module). Se comunica a travs de la siguiente sentencia: CALL nombre-modulo USING parmetro-comunicacin1 parmetro-comunicacin2 parmetro-comunicacin3. Los parmetros de comunicacin son declarados en la Working Storage Section. Si la llamada a la rutina es en forma dinmica, el submdulo no es incluido durante la compilacin del programa principal, con lo que no es necesario recompilar el programa principal por cada modificacin realizada a la rutina, a menos que esto involucre algn cambio en los parmetros de comunicacin.

89

Tpico 360 Programacin multimodular y Copybooks Programas Modulares. Comunicacin entre mdulos. Subrutina (Called module). Los parmetros de comunicacin son declarados en la LINKAGE SECTION, en donde slo se pasa la direccin de los datos y la informacin actual de estos. El formato de la LINKAGE SECTION es como el de la WORKING-STORAGE SECTION pero no es permitida la clusula VALUE. Se comunica a travs de la siguiente clusula en la cabecera de la PROCEDURE DIVISON : PROCEDURE DIVISION USING parmetro-comunicacin1 parmetro-comunicacin2 parmetro-comunicacin3. GOBACK. Devuelve el control al programa principal con la clusula.

90

Tpico 360 Programacin multimodular y Copybooks Programas Modulares. Ventajas: Complejidad y tamao. Las funciones pueden ser organizadas en pequeos mdulos. Manejo del proyecto. Varios mdulos pueden ser programados al mismo tiempo. Mantenimiento. Cuando funciones son codificadas en mdulos separados, el cdigo de una funcin en particular se encuentra en un solo lugar. Consideraciones de lenguaje. Debido a que los lenguajes son traducidos a lenguaje maquina cuando son compilados, cada modulo puede ser codificado en el lenguaje ms apropiado. El uso de memoria. Un programa modular requiere menos memoria que un programa no modular. Desventajas: Cambios a los programas. Se requiere conocer el tipo de llamada que se tiene a los mdulos a partir de los programas principales, para no afectar los procesos que dependan de stos. Generacin excesiva de mdulos. En caso de no conocer completamente las funciones que existen pueden duplicarse mdulos.

91

Tpico 360 Programacin multimodular y Copybooks Copybooks. Un copybook es un pedazo de cdigo, que slo puede ser usado cuando es incluido como parte de un programa, pudiendo contener variables o funciones. Se encuentran almacenados en diversas libreras. No pueden ser ejecutados por ningn programa, ni por si mismos. Puede ser usado en la Working-Storage Section , Linkage Section o Procedure Division. Su sintaxis: COPY nombre-copybook. Sus ventajas: Reducen el tiempo de codificacin de programacin Fcil mantenimiento ya que slo existe una sola copia del cdigo

92

Tpico 360 Programacin multimodular y Copybooks Copybooks.

PROGRAMA

COPY

93

Mdulo Bsico Mdulo BsicoCobol

Tpico 310 Codificando un Programa Cobol Tpico 320 Editando un Programa Tpico 330 Procesando Archivos Tpico 340 Formateando Datos Tpico 350 Aritmtica y Lgica de un Programa Cobol Tpico 360 Programacin Multimodular y Copybooks Tpico 370 Procesamiento de Tablas Tpico 380 Procesamiento Sistema Galaxy Expense94

Tpico 370 - Procesamiento de Tablas Objetivos. Definir una tabla interna y externa en la Working-Storage Section.

Codificar la lgica de la carga de una tabla externa.

Codificar la lgica para realizar una bsqueda serial y una bsqueda binaria en una tabla.

95

Tpico 370 - Procesamiento de Tablas Definicin de Tablas Grupo de datos almacenados en una posicin consecutiva. Existen dos tipos de Tablas (Internas y Externas). Tabla = Arreglo Componentes de una tabla:

Entrada. Consiste en uno mas renglones. Todas las entradas tienen el mismo nombre y son accedidas por su posicin relativa en la tabla. Indice. El cual mantiene la posicin relativa de la entrada que est siendo accedida.ndice (1) (2) (3) Cuenta 4567 5847 8977 Cliente Jones, B. Kline, M. Zim, J. Fecha de Apertura 070389 070689 070989 Entrada

Campo

96

Tpico 370 - Procesamiento de Tablas Definicin de Tablas Tablas internas. Son almacenadas en la memoria de los programas. Son codificadas dentro de los programas, cuando stas contienen pocos datos que raramente cambiarn. Los elementos necesarios para definir una tabla interna son: Los datos que contendr la tabla. Definicin de la tabla. Los verbos utilizados para la definicin de una tabla son: REDEFINES OCCURS INDEXED BY97

Tpico 370 - Procesamiento de Tablas Definicin de TablasDeclaracin de la tabla en la Working-Storage Section. Tabla de datos Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre 31 28 31 30 31 30 31 31 30 31 30 31

98

Tpico 370 - Procesamiento de Tablas Definicin de Tablas Tablas internas (Cont.)

Los ndices son campos numricos, no pueden ser display ni compactados. Slo pueden ser usados con sentencias SET PERFORM.

Inicializar un ndice: SET ndice TO 1. Incrementar un ndice: SET ndice UP BY 1.

99

Tpico 370 - Procesamiento de Tablas Definicin de Tablas Tablas externas. Son almacenadas fuera de los programas en discos y en otros medios externos. Son almacenadas externamente cuando: Son muy grandes. Contendrn informacin que cambia frecuentemente . Sern accedidas por otros programas.

Cuando las tablas externas son usadas frecuentemente por el programa son cargadas en la Working-Storage Section.

100

Tpico 370 - Procesamiento de Tablas Definicin de Tablas Tablas externas.Tabla de Datos4567Jones,B. 070389 5847Kline,M. 070689 8977Zim,J. 070989 . . . . . .

Nm. De cuenta 4567 5847 8977

Cuenta Cliente Jones, B. Kline, M. Zim, J.

Fecha apertura 070389 070689 070989

05 TABLA-CUENTAS. 10 CUENTAS 15 CUENTA 15 CLIENTE 15 FECHA-APERTURA

OCCURS 250 TIMES INDEXED BY CUENTAS-INDEX. PIC 9(04). PIC X(15). PIC 9(06)

101

Tpico 370 - Procesamiento de Tablas Definicin de Tablas Lgica de carga de una tabla externa. Abrir

archivo de entrada de los datos de la tabla

Inicializar switch de no-fin-de-archivo Incializar el ndice a 1 Leer archivo de entrada

2000-Housekeeping - Mover datos del archivo de entrada al campo de la tabla(ndice) - Incrementar el ndice en 1 - Leer el siguiente registro del archivo

2100-Cargar tabla (Until end-of-file)

102

Tpico 370 - Procesamiento de Tablas Definicin de Tablas Beneficio del uso de tablas. El uso de tablas internas evita el acceso a datos desde un dispositivo externo, hacindolo ms eficiente en el caso de tratarse de una cantidad de datos pequea.

El uso de tablas externas permite que ms de un programa pueda usarlas, reduciendo el tiempo de desarrollo y el esfuerzo de mantenimiento, adems de asegurar la integridad de la informacin que se maneja.

103

Tpico 370 - Procesamiento de Tablas Mtodos de bsquedas en tablas Bsqueda Serial. Cada rengln de la tabla es accedido en forma secuencial hasta que el registro cumple con la condicin especificada o se llega al fin de la tabla. Los datos de la tabla pueden encontrarse en cualquier orden. Al realizar una bsqueda secuencial, el ndice debe comenzar en 1. SET index AT END accin-1 WHEN condicin accin-2 END-SEARCH. TO 1.

SEARCH

entrada-tabla

104

Tpico 370 - Procesamiento de Tablas Mtodos de bsquedas en tablas Bsqueda Binaria. Este mtodo de bsqueda es utilizado en tablas muy grandes y slo cuando estn ordenadas por un campo llave en forma ascendente o descendente. Los argumentos son comparados con el valor del campo llave localizado a la mitad de la tabla, durante ste proceso se va descartando la primera o segunda mitad de la tabla dependiendo del valor del argumento, hasta encontrar el argumento o finalizar la lectura.

105

Tpico 370 - Procesamiento de Tablas Mtodos de bsquedas en tablas Bsqueda Binaria (Cont.) La definicin de la tabla tiene una clusula extra: [ASCENDING, DESCENDING] KEY IS campo-llave05 TABLA-CUENTAS. 10 CUENTAS OCCURS 250 TIMES

ASCENDING KEY IS NUMERO INDEXED BY CUENTAS-INDEX. 15 NUMERO 15 NUM-CLIENTE 15 FECHA-APERTURA PIC 9(04). PIC X(15). PIC 9(06).

106

Tpico 370 - Procesamiento de Tablas Mtodos de bsquedas en tablas Bsqueda Binaria (Cont.) En ste tipo de bsqueda no es necesario iniciar el ndice en 1, ya que la sentencia determina el valor de ste. SEARCH ALL entrada-tabla AT END accin-1 WHEN condicin accin-2 END-SEARCH.

107

Tpico 370 - Procesamiento de Tablas Procesamiento de Tablas. Para realizar la lectura secuencial de una tabla sin utilizar SEARCH , el proceso lgico sera:

- Iniciar ndice en 1. 2200-Leer-tabla - 2210-Mover-Datos-tabla (UNTIL ndice > total-occurs)

- Mover campo1-tabla(ndice) a rpt-campo1 - Mover campo2-tabla(ndice) a rpt-campo2 - Mover campon-tabla(ndice) a rpt-campon - Escribir registro. - Incrementar ndice en 1. - Inicializar campos rpt.

108

Tpico 370 - Procesamiento de Tablas Procesamiento de Tablas - Tablas bidimensionales.WORKING-STORAGE SECTION. 05 REGION 05 TRIMESTRE4

TRIMESTRE REGION 1 2 3

PIC 9(1). PIC 9(1).

05

1 2 3 4

TABLA-VENTAS. 10 DATOS-TRIMESTRE 15 DATOS-REGION 20 IMPORTE

OCCURS 4 TIMES. OCCURS 4 TIMES. PIC 9(5).

PROCEDURE DIVISION. .... .... PERFORM 1100-IMPRIMIR-TABLA THRU 1100-IMPRIMIR-TABLA-EXIT VARYING TRIMESTRE FROM 1 BY 1 UNTIL TRIMESTRE GREATER THAN CTE-FOUR ... ... 1100-IMPRIMIR-TABLA. PERFORM 1120-MOVER-DATOS THRU 1120-MOVER-DATOS VARYING REGION FROM 1 BY 1 UNTIL REGION GREATER THAN CTE-FOUR MOVE IMPORTE(TRIMESTRE,REGION) TO SALIDA.

109

Tpico 370 - Procesamiento de Tablas Procesamiento de Tablas - Tablas bidimensionales. Datos importantes: Se pueden definir tablas hasta de 16MB. Una tabla puede tener entre 1 y 7 dimensiones en una estructura jerrquica o de rbol. Una dimensin es un grupo de datos en un nivel en particular. La clusula OCCURS no puede usarse en un nivel 01. La clusula OCCURS no puede usarse con elementos a nivel 77. Los subndices pueden ser constantes enteras o variables enteras. Sus valores deben ser positivos; no pueden ser cero o negativo. Los subndices deben estar dentro de parntesis y deben estar separados por comas.

110

Mdulo Bsico Mdulo BsicoCobol

Tpico 310 Codificando un Programa Cobol Tpico 320 Editando un Programa Tpico 330 Procesando Archivos Tpico 340 Formateando Datos Tpico 350 Aritmtica y Lgica de un Programa Cobol Tpico 360 Programacin Multimodular y Copybooks Tpico 370 Procesamiento de Tablas Tpico 380 Procesamiento Sistema Galaxy Expense111

Tpico 380 - Procesamiento Sistema Galaxy Expense Objetivos.

Aprender la funcionalidad de un programa batch.

Identificar la entradas y salidas de un programa en COBOL.

Codificacin de programas batch.

Manejo de archivos indexados.

112

Tpico 380 - Procesamiento Sistema Galaxy Expense Archivos Indexados. Se encuentran organizados por un rea de ndices y otra de datos, haciendo referencia a un campo clave. El acceso a los registros se realiza localizando en el ndice la posicin de memoria, para despus acceder a sta y encontrar el registro correspondiente, sin necesidad de recorrer toda el rea de datos. SELECT nombre-interno-archivo ASSIGN TO nombre-externo ORGANIZATION IS INDEXED ACCESS MODE IS [RANDOM, SEQUENTIAL] RECORD KEY IS llave-acceso. El almacenamiento de los archivos indexados es realizado slo en discos.

113

Tpico 380 - Procesamiento Sistema Galaxy Expense Archivos Indexados. El nombre del campo llave debe estar definido en el registro de FD. FD nombre-interno-archivo LABEL RECORDS ARE STANDARD BLOCK CONTAINS 0 RECORDS RECORDS CONTAINS n CHARACTERS. 01 nombre-lgico-registro. 05 05 llave-acceso FILLER PIC X(##). PIC X(##).

El total de caracteres n debe ser igual a la suma de la longitud de los campos definidos en el nombre lgico del registro.

114

Tpico 380 - Procesamiento Sistema Galaxy Expense Archivos Indexados. Modo de acceso SECUENCIAL. Mientras que los archivos secuenciales son ledos de acuerdo al orden en que fueron escritos, los archivos indexados son ledos en el orden determinado por el campo clave, primero es ledo el campo clave ms pequeo. En el modo de acceso SECUENCIAL slo se permite apertura de INPUT y de OUTPUT . La apertura de INPUT en modo de acceso SECUENCIAL de archivos indexados se realiza de la siguiente forma: READ nombre-archivo-interno INTO nombre-lgico-registro AT END SET END-OF-FILE TO TRUE. El final del archivo se detecta en el ndice y no en los datos.

115

Tpico 380 - Procesamiento Sistema Galaxy Expense Archivos Indexados. Modo de acceso SECUENCIAL (Cont.). En caso de querer posicionarse a partir de un valor de ndice especfico se utiliza la sentencia START. START nombre-archivo-interno KEY [=, >, =] dato-clave INVALID KEYaccin.

La apertura de OUTPUT en modo de acceso SECUENCIAL se realiza: WRITE nombre-archivo-interno FROM detalle-datos Evita la adicin de registros duplicados INVALID KEYaccin.

116

Tpico 380 - Procesamiento Sistema Galaxy Expense Archivos Indexados. Modo de acceso RANDOM. Los archivos indexados con acceso RANDOM permiten recuperar cualquier registro indicando slo el valor de la clave a buscar. Slo se permite de apertura INPUT, OUTPUT, I-O . La apertura de INPUT slo permite la lectura de los registros, con lo que en modo de acceso RANDOM de archivos indexados se realiza:

MOVE valor-campo-llave TO llave-acceso. READ nombre-archivo-interno INTO nombre-lgico-registro INVALID KEYaccin.

117

Tpico 380 - Procesamiento Sistema Galaxy Expense Archivos Indexados. Modo de acceso RANDOM (Cont.). La adicin en apertura de I-O se realiza: MOVE valor-campo-llave TO llave-acceso. WRITE nombre-archivo-interno FROM detalle-datos INVALID KEYaccin.

Al adicionar el registro, se realiza una bsqueda automtica sobre el ndice, para localizar la posicin donde se deba aadir el nuevo registro, comprobando adicionalmente que la clave no se encuentre duplicada.

118

Tpico 380 - Procesamiento Sistema Galaxy Expense Archivos Indexados. Modo de acceso RANDOM (Cont.). La modificacin en apertura I-O se realiza: MOVE valor-campo-llave TO llave-acceso. REWRITE nombre-archivo-interno FROM detalle-datos INVALID KEYaccin.

El borrado en apertura I-O se realiza: MOVE valor-campo-llave TO llave-acceso. DELETE nombre-archivo-interno INVALID KEY accin.

119

Tpico 380 - Procesamiento Sistema Galaxy Expense Archivos Indexados. Modo de acceso RANDOM (Cont.). La lectura en apertura I-O se realiza: MOVE valor-campo-llave TO llave-acceso. READ nombre-archivo [INTO layout-registro] INVALID KEYaccin.

120

Tpico 380 - Procesamiento Sistema Galaxy Expense Codificacin de un programa batch el cual: Lee un archivo de gastos (Expense Transaction) y realiza lo siguiente: Validacin de cada uno de los campos que integra el registro del archivo Expense Transaction . Verificacin de la existencia de cada uno de estos registros en el archivo maestro (Registrant Master). Verificacin de la existencia del cdigo de gastos en el archivo Expense Decode. Se genera de salida un archivo de errores (reporte) y se actualiza el archivo Registrant Expense con la informacin del archivo Expense Transaction.

121

Mejores prcticas programacin en cobol. Para tener un mejor desempeo y funcionamiento ptimo de los programas creados en cobol, se deben de tomar en cuenta las siguientes consideraciones: No utilizar cdigo duro, se deben declarar variables constantes para ser tratadas dentro del programa. Para la declaracin de variables evitar palabras reservadas en ingls, por ejemplo: procedure, main, count. Los nombres de las variables no deben de ser mayor a 30 posiciones y en espaol para facilitar el entendimiento del programa. Las banderas o switches se deben declarar como regla con las dos primeras siglas SW. Cada mdulo debe contener un mnimo de instrucciones de tal manera que pueda ser reutilizado en los casos de mantenimiento o cambios realizados. Esto con la finalidad de facilitar el mantenimiento.

122

Mejores prcticas programacin en cobol. En los casos de mantenimiento se debe de registrar el cambio y el usuario que lo realizo en el log de modificaciones de acuerdo a la nomenclatura establecida por cada cliente. Dentro de los mdulos de evaluacin de cdigo de retorno, considerar todas las posibilidades y acciones requeridas de la situacin de cada dato. Una vez entregado el programa se deben comentarizar las instrucciones de displays, nicamnete conservar los displays para mostrar las cifras de control al final del programa.

123

Caso Prctico Se requiere de un reporte de las tarjetas de crdito

124