Sie sind auf Seite 1von 88

Technology Solutions

Módulo Básico

Módulo Básico

Cobol

1 – Codificando un Programa Cobol


2 – Editando un Programa
3 – Procesando Archivos
4 – Formateando Datos
5 – Aritmética y Lógica de un Programa Cobol
6 – Programación Multimodular y Copybooks

1
Technology Solutions

Reglas del curso, Bibliografía y Objetivos


• REGLAS:
 Puntualidad

 Celulares en modo de silencio y laptops apagadas

 Respeto

 Preguntar

• BIBLIOGRAFIA:
 COBOL ESTRUCTURADO. Andreas S.,Philippakis, Leonard J.,Kazmier. Editorial McGraw-Hill.

 COBOL ESTRUCTURADO. Ruth Ashley. Editorial Limusa.

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

• OBJETIVOS:
 Identificar las cuatro divisiones y sus correspondientes secciones de COBOL.

 Diferenciar entre párrafo, sentencia, instrucción.

 Codificar las cuatro divisiones de un programa COBOL.

 Codificar comentarios en un programa COBOL.

2
Technology Solutions

1 - Codificando un programa COBOL


DIVISIONES SECCIONES SUBSECCIONES

Identification Division.

Configuration Section.
Environment Division.
Input-Output Section. File Control.

Estructura de un
Programa COBOL File Section.

Data Division. Working-Storage Section.

Linkage Section.

Procedure Division.

3
Technology Solutions

1 - Codificando un programa COBOL

Identification Division Environment Division Data Division Procedure Division

Se especifican los datos generales del programa como :

 PROGRAM-ID. Nombre del programa.


 AUTHOR. Nombre del autor.
 DATE-WRITTEN. Fecha en la que fue escrito.
 DATE-COMPILED. Fecha en la que fue compilado.

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

 PROGRAM-ID. PGM330.
 AUTHOR. CORITEL.
 DATE-WRITTEN. JULIO, 2008.
 DATE-COMPILED. JULIO, 2008.

4
Technology Solutions

1 - Codificando un programa COBOL

Identification Division Environment Division Data Division Procedure Division

Describe el entorno en el que correrá el programa y 1 2 3 4.…………. 7


Los archivos asociados al programa. 7890123456789012345678901234567890123456789012
**************************************************
* ENVIRONMENT DIVISION *
Se divide en 2 secciones :
**************************************************
ENVIRONMENT DIVISION.
Configuration Section.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-PC. Nombre interno
Aquí se especifica el ambiente en el que se del archivo
OBJECT-COMPUTER. IBM-PC.
desarrolla el programa y en el que se ejecutará.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
• SOURCE-COMPUTER. Dónde se desarrolla
• OBJECT-COMPUTER. Dónde se ejecuta Nombre externo
SELECT SEM-RPT-INPUT-FILE del archivo
ASSIGN TO E1DQ0001
Input-Output Section. ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL.
Indica cómo accederá el programa a los archivos,
SELECT SEM-RPT-OUTPUT-FILE
la organización de estos, la llave de acceso si son
ASSIGN TO S1DQ0001
indexados. ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL.

5
Technology Solutions

1 - Codificando un programa COBOL

Identification Division Environment Division Data Division Procedure Division

1 2 3 4…………. 7
Describe detalladamente los datos usados, 7890123456789012345678901234567890123456789012
los de entrada y salida, reservando el *************************************************
espacio en memoria. * DATA DIVISION *
*************************************************
Se divide en 2 secciones : DATA DIVISION.
FILE SECTION.
File Section.
FD SEM-RPT-INPUT-FILE
Específica las características de los registros LABEL RECORDS ARE [STANDARD / OMITTED]
manejados por los archivos del programa. BLOCK CONTAINS 0 RECORDS
RECORD CONTAINS 49 CHARACTERS
Working-Storage Section. DATA RECORD IS SEM-RPT-INPUT-REC.
01 SEM-RPT-INPUT-REC PIC X(49).
En esta sección se define el área de
memoria de almacenamiento temporal FD SEM-RPT-OUTPUT-FILE
para el procesamiento de los datos durante LABEL RECORDS ARE STANDARD
la ejecución del programa. BLOCK CONTAINS 0 RECORDS
RECORD CONTAINS 132 CHARACTERS
DATA RECORD IS SEM-RPT-OUTPUT-REC.
01 SEM-RPT-OUTPUT-REC PIC X(132).

6
Technology Solutions

1 - Codificando un programa COBOL

Identification Division Environment Division Data Division Procedure Division

Describe detalladamente los datos usados de entrada y 1 2 3 4…………. 7


salida, reservando el espacio en memoria. 7890123456789012345678901234567890123456789012
************************************************
Se divide en 2 secciones : * DATA DIVISION *
************************************************
File Section. WORKING-STORAGE SECTION.
01 WS-WORK-AREA.
Específica las características de los registros manejados por ************************************************
los archivos del programa. * RECORD LAYOUTS *
************************************************
Working-Storage Section. 05 IN-SEMINAR-REC.
10 IN-SEM-CODE PIC X(4).
En esta sección se define el área de memoria de 10 IN-SEM-DEC PIC X(25).
almacenamiento temporal para el procesamiento de los 10 IN-SEM-BEG.
datos durante la ejecución del programa y puede clasificarse 15 AÑO PIC X(2).
en las siguientes partes : 15 FILLER PIC X VALUE ‘/’.
49
15 MES PIC X(2).
• Record Layout 15 FILLER PIC X VALUE ‘/’.
• Lines and Headings 15 DIA PIC X(2).
10 IN-STND-FEE PIC 9(4)V99.
• Flags
10 IN-REG-FEES PIC 9(4)V99.
• Counters/Acumulators
• Constants
• Scratch area

7
Technology Solutions

1 - Codificando un programa COBOL

Identification Division Environment Division Data Division Procedure Division

1 2 3 4…………. 7
Record Layout 7890123456789012345678901234567890123456789012
********************************************************
La definición del registro de datos puede ser realizada a * DATA DIVISION *
través de agrupación de datos, los cuales se encuentran ********************************************************
DATA DIVISION.
definidos por niveles.
WORKING-STORAGE SECTION.
01 WS-WORK-AREA.
Por ejemplo : ********************************************************
* RECORD LAYOUTS *
Si tenemos un archivo con una longitud total de 35 ********************************************************
05 IN-DATOS.
caracteres divididos en 4 campos principales (No empleado, 10 IN-NUM PIC X(5).
Nombre, Fecha de nacimiento y puesto) y deseamos que 10 IN-NOM PIC X(20).
cada registro del archivo se almacene en variables, la 10 IN-FEC-NAC PIC X(8). 35
declaración sería la siguiente : 10 IN-PTO PIC X(2).

Archivo de Datos de empleados 05 IN-DATOS-EMP.


10 IN-NUM-EMP PIC X(5).
Número de Nombre Fecha nacimiento 10 IN-NOMBRE-EMP.
Puesto
Empleado 15 IN-NOM-EMP PIC X(10).
Nom PA Año Mes Día
15 IN-PA-EMP PIC X(10).
12093 Olga Barrón 1967 10 14 AP 10 IN-FEC-NAC-EMP. 35
15 IN-AÑO-EMP PIC X(4).
87456 Silvia Díaz 1980 04 27 MG 15 IN-MES-EMP PIC X(2).
15 IN-DIA-EMP PIC X(2).
10 IN-PTO-EMP PIC X(2).
5 20 8 2

8
Technology Solutions

1 - Codificando un programa COBOL

Identification Division Environment Division Data Division Procedure Division

05 RPT-ENCABEZADO. 1
Lines and Headings 10 FILLER PIC X(57) VALUE SPACES.
10 FILLER PIC X(17) VALUE ‘REPORTE DE NOMINA’.
10 FILLER PIC X(58) VALUE SPACES.
Definición de constantes / variables que integran cada una de las 05 RPT-CABECERA. 2
líneas que corresponden a los títulos, cabeceras, líneas de detalle, 10 FILLER PIC X(10) VALUE SPACES.
10 FILLER PIC X(8) VALUE ‘EMPLEADO’.
totales, etc., de un reporte. 10 FILLER PIC X(20) VALUE SPACES.
10 FILLER PIC X(6) VALUE ‘NOMBRE’.
10 FILLER PIC X(20) VALUE SPACES.
Por ejemplo, para crear el siguiente reporte se deberían declarar las 10 FILLER PIC X(8) VALUE ‘PUESTO’.
siguiente variables : 10 FILLER PIC X(7) VALUE SPACES.
10 FILLER PIC X(6) VALUE ‘SUELDO’.
10 FILLER PIC X(37) VALUE SPACES.
05 RPT-GUIONES. 3
REPORTE DE NOMINA 1 10 FILLER PIC X(10) VALUE SPACES.
10 FILLER PIC X(8) VALUE ALL ‘-’.
10 FILLER PIC X(5) VALUE SPACES.
2 EMPLEADO NOMBRE PUESTO SUELDO 10 FILLER PIC X(20) VALUE ALL ‘-’.
--------------- ----------------------------------- ------------- ------------ 3 10 FILLER PIC X(5) VALUE SPACES.
12093 OLGA BARRON AP 10000 10 FILLER PIC X(8) VALUE ALL ‘-’.
87456 SILVIA DIAZ MG 8000 10 FILLER PIC X(5) VALUE SPACES.
10 FILLER PIC X(6) VALUE ALL ‘-’.
10 FILLER PIC X(37) VALUE SPACES.
05 RPT-DETALLE 4
10 FILLER PIC X(10) VALUE SPACES.
4 10 RPT-NUM-EMP PIC X(5).
10 FILLER PIC X(5) VALUE SPACES.
1 - Encabezado 10 RPT-NOM-EMP PIC X(20).
2 - Cabeceras 10 FILLER PIC X(5) VALUE SPACES.
3 - Guiones 10 RPT-PTO PIC X(2).
10 FILLER PIC X(5) VALUE SPACES.
4 - Detalle 10 RPT-SUELDO PIC 9(5).
10 FILLER PIC X(37) VALUE SPACES.

9
Technology Solutions

1 - Codificando un programa COBOL

Identification Division Environment Division Data Division Procedure Division

1 2 3 4…………. 7
• Flags and switches 7890123456789012345678901234567890123456789012

DATA DIVISION.
Elementos de datos condicionales que indican verdadero o *************************************************
falso. * WORKING-STORAGE SECTION *
*************************************************
El nivel reservado para definir las condiciones de un switch es
WORKING-STORAGE SECTION.
88.
Cada cláusula debe ir acompañada con la palabra VALUE. 01 WS-WORK-AREA.
Se pueden tener tantas banderas como se requieran, con *************************************************
* FLAGS AND SWITCHES *
uno o varios niveles diferentes. *************************************************
La condición de un switch es activada mediante la 05 BANDERAS.
instrucción SET.
10 SW-ARCHIVO PIC X.
88 SW-EOF VALUE ‘Y’.
Ejemplo : 88 SW-NOT-EOF VALUE ‘N’.
En una pantalla en la que se manejan las opciones de (altas,
10 SW-OPCIONES PIC X.
bajas, modificaciones, consultas, salir), y además de esto
88 SW-ALTA VALUE ‘1’.
queremos controlar el fin en la lectura de un archivo. 88 SW-BAJA VALUE ‘2’.
88 SW-MODIF VALUE ‘3’.
SET SW-NOT-EOF TO TRUE. 88 SW-CONSULTA VALUE ‘4’.
88 SW-SALIR VALUE ‘5’.

10
Technology Solutions

1 - Codificando un programa COBOL

Identification Division Environment Division Data Division Procedure Division

En esta se realiza el proceso lógico del programa y 1 2 3 4…………. 7


por lo general se divide en tres partes dentro de un 7890123456789012345678901234567890123456789012
párrafo principal : *************************************************
* PROCEDURE DIVISION *
Inicio
*************************************************
• Generalmente se le asigna el número de párrafo PROCEDURE DIVISION.
2000. 1000-MAINLINE.
• Inicialización de variables de trabajo (acumuladores,
contadores, etc). PERFORM 2000-HOUSEKEEPING
• En éste párrafo se realiza la apertura inicial de
archivos THRU 2000-HOUSEKEEPING-EXIT.

Proceso PERFORM 3000-PROCESS


THRU 3000-PROCESS-EXIT
• Generalmente se le asigna el número de párrafo UNTIL END-OF-FILE.
3000.
• Ejecución del procedimiento principal del programa.
PERFORM 8000-WRAP-UP
Final THRU 8000-WRAP-UP-EXIT.

• Generalmente se le asigna el número de párrafo STOP RUN.


8000.
• Cerrado de archivos usados durante la ejecución.

11
Technology Solutions

1 - Codificando un programa COBOL


****************************************************************
* 3100-LOAD *
*--------------------------------------------------------------* COMENTARIO
*PROCESO QUE CARGA LOS REGISTROS DE ENTRADA A UNA TABLA EXTERNA*
****************************************************************
PRINCIPIO
3100-LOAD.
DE PÁRRAFO
PERFORM 9910-READ-REG
SENTENCIA
THRU 9910-READ-REG-EXIT.

IF NOT END-OF-REG-EXP
SET LS-TBL-IDX UP BY 1

MOVE WS-REGE-REG-NUMERO TO LS-TBL-REG-NUM(LS-TBL-IDX)


MOVE WS-REGE-EXP-DT TO LS-TBL-EXP-DT-J(LS-TBL-IDX)
MOVE WS-REGE-EXP-TIME TO LS-TBL-EXP-TIME(LS-TBL-IDX) INSTRUCCIONES
MOVE WS-REGE-EXP-CODE TO LS-TBL-EXP-CODE(LS-TBL-IDX)
MOVE WS-REGE-EXP-AMT TO LS-TBL-EXP-AMT(LS-TBL-IDX)

END-IF.

3100-LOAD-EXIT. FIN DE
EXIT. DE PÁRRAFO

12
Technology Solutions

1 - Codificando un programa COBOL


• Párrafos en COBOL

 Comentarios.
 Se codifican a partir de la columna 7 y comienzan con *
 Máximo hasta la columna 72

 Cabecera - inicio y finalización de un párrafo-.


 Se codifican a partir de la columna 8
 Nombrados de acuerdo a un orden lógico, máximo 35 caracteres
 El párrafo de finalización marca la terminación del párrafo. El nombre debe tener el mismo
nombre de inicio pero agregando la terminación -EXIT
 El párrafo de terminación no es requerido

 Sentencias
 Colección de instrucciones que realizan un paso en el programa.
 Se codifican a partir de la columna 12.
 Una instrucción es un comando de COBOL (verbo) que realiza una función específica.
 Las sentencias terminan con un punto, las instrucciones no.
13
Technology Solutions

Módulo Básico

Módulo Básico

Cobol

1 – Codificando un Programa Cobol


2 – Editando un Programa
3 – Procesando Archivos
4 – Formateando Datos
5 – Aritmética y Lógica de un Programa Cobol
6 – Programación Multimodular y Copybooks

14
Technology Solutions

2 - Editando un programa
• Objetivos.

 Conocimiento del software para la edición de programas.

 Conocimiento de los comandos de edición.

 Compilación y ejecución de un programa COBOL.

 Edición y corrección de errores sintácticos y lógicos.

15
Technology Solutions

2 - Editando un programa
• Codificación de programas

– Comandos de edición

• Comandos de línea.

– Se teclean en la parte izquierda de la pantalla sobre la columna de números,


realizando funciones de edición.

Comandos Descripción

i, in Inserta líneas

d, dd, dn Borra líneas


c, cc / a ó b Copia Líneas
m, mm/ a ó b Mueve líneas
r, rr, rn Repite líneas
o, oo / m ó c Sobrescribe líneas
Cols Despliega guía de columnas

16
Technology Solutions

2 - Editando un programa
• Codificación de programas

– Comandos de edición

• Comandos primarios.

– Se teclean en la línea de comando, ayudando a la ejecución de algunas funciones


de utilidad.

Comando Descripción
SAVE Salva el programa
CANCEL Cancela los cambios
FIND ‘cadena’ Busca una carácter o cadena
[ALL, FIRST, LAST, NEXT,PREV] de caracteres especifica
CHANGE ‘antes’ ‘después’ Reemplaza caracteres o
[ALL] cadenas de caracteres
CREATE Crea elementos nuevos
Copia líneas a partir de un
COPY
programa, copy, etc. a otro
17
Technology Solutions

2 - Editando un programa
• Codificación de programas

– Comandos generales (teclas de función).

Tecla Descripción
F1 HELP - Ayuda
F2 SPLIT – Divide la pantalla en dos diferentes sesiones
F3 END – Vuelve al menú anterior
F4 RETURN- Vuelve al menú principal
F5 RFIND – Repite el comando FIND
F6 RCHANGE- Repite el comando CHANGE
F7 UP – Retrocede la pantalla
F8 DOWN – Avanza la pantalla
F9 SWAP – Permite el desplazamiento entre pantallas
F10 LEFT – Desplaza la pantalla a la izquierda
F11 RIGHT – Desplaza la pantalla a la derecha
F12 RETRIEVE – Recupera los últimos comandos ejecutados.
18
Technology Solutions

2 - Editando un programa
• Compilación de programas

– Revisión de sintaxis.

• Revisión de cada una de las sentencias escritas en el código fuente

• Depuración de errores

– Errores de puntuación

– Errores ortográficos (sintaxis)

– Errores de campos/variables no definidos en Working-Storage Section

– Generación de código objeto.

• Se encuentra en lenguaje máquina y se nombra de acuerdo al nombre dado en el


Program-ID.

19
Technology Solutions

Módulo Básico

Módulo Básico

Cobol

1 – Codificando un Programa Cobol


2 – Editando un Programa
3 – Procesando Archivos
4 – Formateando Datos
5 – Aritmética y Lógica de un Programa Cobol
6 – Programación Multimodular y Copybooks

20
Technology Solutions

3 - Procesando Archivos
• Objetivos.

 Generación de la sección de File Description y sentencias SELECT/ASSIGN para los archivos


usados en el programa.

 Codificación de la estructura de los registros de entrada y salida en la Working-Storage


Section.

 Utilización de banderas en un programa COBOL.

 Codificación de la Procedure Division en un programa.

21
Technology Solutions

3 - Procesando Archivos
• Tipos de archivos

– Archivos Secuenciales.

• Organización

– Deben ser accedidos en orden secuencial.

– Para la realización de búsquedas, son accedidos frecuentemente en un orden


especifico, en base a un campo específico.

• Acceso.

– El acceso secuencial es mas rápido 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).

22
Technology Solutions

3 - Procesando Archivos
• Tipos de archivos

– Archivos de Acceso Directo.

• Deben ser accedidos a través de un índice.

• Organización.

– Son accedidos a través de un archivo especial llamado índice, el cual está formado
por dos campos: un apuntador(dirección) y el campo llave.

• Acceso.

– Son de rápido acceso cuando se accede a través 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.

23
Technology Solutions

3 - Procesando Archivos
• Tipos de archivos

– Reglas sobre Nombres internos de archivos:

• El nombre asignado a cada archivo debe ser único.

• Pueden contener sólo letras, dígitos o guiones.

• Deben contener al menos un carácter de A - Z.

• No pueden contener guiones al inicio del nombre.

• La longitud máxima del nombre es de 30 caracteres.

• No puede ser una palabra reservada de COBOL

24
Technology Solutions

3 - Procesando Archivos
• Diagrama de Proceso para procesamiento de archivos y generación de listados

- Apertura (OPEN) de archivos de entrada y salida

- Incialización de switches
(SET sw-xxx TO TRUE)
2000-Inicio
( Housekeeping )
- Incialización de variables de trabajo y
lineas de detalle (INITIALIZE).

- Lectura inicial de archivos (READ)

1000-Principal - Manipulación de los datos leídos de archivos


( Mainline ) 3000-Proceso (MOVE xxxxx TO zzzzzz)
( Process )
- Escritura al archivo de salida (WRITE)
(UNTIL end-of-file)
- Lectura del siguiente registro (READ)

8000-Fin - Cierre de archivos usados por el programa (CLOSE)


( Wrap-up )

STOP RUN. 25
Technology Solutions

3 - Procesando Archivos
• Sentencia: PERFORM

– Su función es pasar el control a un párrafo específico. Después de ejecutar las instrucciones


de aquel párrafo, el control es devuelto al párrafo que realizó la llamada.

– Esta sentencia es acompañada de la cláusula THRU, la cual permite identificar la última línea
a ejecutar del párrafo.

– Para indicar el final del párrafo se utiliza la cláusula -EXIT.

PERFORM nombre-parrafo
THRU nombre-parrafo-EXIT

26
Technology Solutions

3 - Procesando Archivos
• Sentencia: PERFORM (Cont.)
***********************************************************
* 1000-MAINLINE *
***********************************************************
1000-MAINLINE.
Pasa
el control
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 INPUT-FILE


OUTPUT OUTPUT-FILE.

PERFORM 2100-INICIALIZA-VAR
THRU 2100-INICIALIZA-VAR-EXIT.

READ INPUT-FILE INTO WS-INPUT-FILE


AT END Devuelve
SET END-OF-FILE TO TRUE.
2000-HOUSEKEEPING-EXIT.
el control
EXIT. 27
Technology Solutions

3 - Procesando Archivos
• Sentencia: PERFORM (Cont.)
***********************************************************
* 2000-HOUSEKEEPING *
***********************************************************
2000-HOUSEKEEPING.

OPEN INPUT INPUT-FILE


OUTPUT 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.
***********************************************************
* 2100-INICIALIZA-VAR *
***********************************************************
2100-INICIALIZA-VAR.

INITIALIZE VARIABLE-A
VARIABLE-B
VARIABLE-X

SET NOT-END-OF-FILE TO TRUE. Devuelve


2100-INICIALIZA-VAR-EXIT.
el control
EXIT.
28
Technology Solutions

3 - Procesando Archivos
• Sentencia: PERFORM

– La cláusula UNTIL es utilizada por la sentencia PERFORM para indicar que el párrafo debe ser
ejecutado hasta cumplir una determinada condición.

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.

29
Technology Solutions

3 - Procesando Archivos
• Sentencia: OPEN

– La sentencia OPEN permite abrir los archivos que requiere un programa además de :

• Indicar al sistema cuáles son los archivos que serán accedidos por el programa
• Identificar cuáles archivos serán usados para entrada de datos y cuáles serán archivos de
salida de datos.

– Generalmente es codificada al inicio del programa.


– Su sintaxis es:
Archivos de lectura OPEN INPUT nombre-archivo
Archivos de escritura OPEN OUTPUT nombre-archivo
Adición de registros OPEN EXTEND nombre-archivo

30
Technology Solutions

3 - Procesando Archivos
• Sentencia: OPEN
– En caso de tener varios archivos de lectura o escritura se codificaría así:

LECTURA ESCRITURA
OPEN INPUT File-name1 OPEN OUTPUT File-name1
File-name2 F ile-name2
File-name3 File-name3
. .
. .
File-namen. File-namen.

LECTURA-ESCRITURA
OPEN INPUT File-name1
File-name2
OUTPUT File-name3
File-name4
EXTEND File-name5
.
.
File-namen.
31
Technology Solutions

3 - Procesando Archivos
• Sentencia: INITIALIZE

– Permite la inicialización de campos ya sea de grupo o elementales.

– Los campos alfanuméricos son inicializados con espacios.

– Los campos numéricos son inicializados con ceros.

– Su sintaxis:

INITIALIZE nombre-campo

05 WS-CLIENTE. INITIALIZE WS-CLIENTE.


10 WS-CODIGO PIC 9(5).
10 WS-NOMBRE PIC X(30). ó

INITIALIZE WS-CODIGO
WS-NOMBRE.

32
Technology Solutions

3 - 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 Campos a nivel grupo

MOVE campo-1 TO campo-2 MOVE grupo-1 TO grupo-2.


campo-3
campo-4.

33
Technology Solutions

3 - Procesando Archivos
• Sentencia: MOVE (Cont.)

– El truncamiento de los datos depende de la longitud del campo al que son informados:

• Los campos alfanuméricos 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 numéricos son alineados hacia la derecha.

– Ejemplo1.

• Cuando el campo receptor es más pequeño

Alfanuméricos Numéricos

WS-NOMBRE PIC X(5). C A R L A WS-CODIGO PIC 9(5). 5 4 3 2 1

RPT-NOMBRE PIC X(3). C A R RPT-CODIGO PIC 9(3). 3 2 1

34
Technology Solutions

3 - Procesando Archivos
• Sentencia: MOVE (Cont.)
– Ejemplo 2.
• Cuando el campo receptor es más grande

Alfanuméricos

WS-NOMBRE PIC X(5). C A R L A

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

Numéricos

WS-CODIGO PIC 9(5). 5 4 3 2 1

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

35
Technology Solutions

3 - Procesando Archivos
• Sentencia: MOVE (Cont.)
– Ejemplo 3.
• Cuando el campo que envía es un numérico con decimales implícitos y el que recibe es
un numérico con dos decimales.

Numéricos

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

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

36
Technology Solutions

3 - 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 sección de FD.

– Los datos del registro son transferidos a través de la sentencia INTO en la definición del registro
que ha sido definido en la WS para el archivo.

– Para controlar el fin de archivo en base a una condición es utilizada la cláusula AT END.

37
Technology Solutions

3 - Procesando Archivos
• Sentencia: READ (Cont.)
– Ejemplo :
READ INPUT-FILE INTO INP-DATOS
AT END
SET END-OF-FILE TO TRUE.

DATA DIVISION. WORKING-STORAGE SECTION.


FILE SECTION. 01 WS-WORK-AREA.
************************************* *****************************************
* INPUT-FILE * * RECORD LAYOUT *
************************************* *****************************************
FD INPUT-FILE 05 INP-DATOS.
LABEL RECORDS ARE STANDARD 10 INP-NUMBER PIC 9(5).
BLOCK CONTAINS 0 RECORDS 10 INP-NAME PIC X(12).
RECORDS CONTAINS 37 CHARACTERS 10 INP-CODE PIC 9.
DATA RECORD IS INPUT-REC. 10 INP-PHONE PIC 9(7).
01 INPUT-REC X(37). 10 INP-CONTACT PIC X(12).

38
Technology Solutions

3 - 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 través 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

39
Technology Solutions

3 - Procesando Archivos
• Sentencia: WRITE (Cont.)

– La cláusula AFTER ADVANCING es usada con el WRITE para el control de líneas de


espaciamiento antes de imprimir la siguiente línea del reporte o comenzar a imprimir en una
nueva página.

– Su sintaxis:

WRITE OUTPUT-REC FROM REC-DATA

AFTER ADVANCING [ n LINES] [PAGE]

40
Technology Solutions

3 - Procesando Archivos
• Sentencia: WRITE (Cont.)
• MOVE REC-INPUT TO RPT-LINE

• WRITE OUTPUT-REC FROM RPT-LINE
• AFTER ADVANCING CTE-TWO LINES.

DATA DIVISION. WORKING-STORAGE SECTION.


FILE SECTION. 01 WS-WORK-AREA.
************************************** **************************************
* OUTPUT FILE * * REPORT LINES AND HEADINGS *
************************************** **************************************
FD OUTPUT-FILE 05 RPT-LINE PIC X(132).
LABEL RECORDS ARE OMITTED
RECORDS CONTAINS 132 CHARACTERS
DATA RECORD IS OUTPUT-REC.
01 OUTPUT-REC X(132).

41
Technology Solutions

3 - Procesando Archivos
• Sentencia: CLOSE

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

– Su sintaxis:
CLOSE file-name1
file-name2
file-namen.

– Ejemplo:

CLOSE INPUT-FILE
OUTPUT-FILE.

42
Technology Solutions

Módulo Básico

Módulo Básico

Cobol

1 – Codificando un Programa Cobol


2 – Editando un Programa
3 – Procesando Archivos
4 – Formateando Datos
5 – Aritmética y Lógica de un Programa Cobol
6 – Programación Multimodular y Copybooks

43
Technology Solutions

4 - Formateando Datos
• Objetivos.

 Distinguir entre un dato variable y un dato constante.

 Usar herramientas especiales de edición para hacer la información del reporte más fácil de
leer y entender.

 Transformar un dato no formateado en uno usado para la línea 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 propósito de la función de la cláusula REDEFINES.

44
Technology Solutions

4 - Formateando Datos
• Tipos de líneas en un reporte

Títulos/Headings

PGM999 REPORTE DE EMPLEADOS 10/08/01

Subtítulos/ NOMBRE PUESTO COMPAÑÍA CLIENTE_ CODIGO _GASTOS_


Subheadings
LARA CARLOS P BANCO BANCOMER X9889 $ 765.13

LOPEZ RAFAEL S JC PENNY J8181 $ 123.48


Líneas de
MENDEZ ANA P HOSPITAL IMSS I7878 $ 763.00 Detalle
SALGADO MARIA S JC PENNY J8181 $ 825.98

Líneas de TOTAL $2,477.59


Totales

*** FIN DE REPORTE ***

Línea de mensajes

45
Technology Solutions

4 - Formateando Datos
• Tipos de información en un reporte.
– Constante.
• El valor del dato no cambia durante el tiempo de ejecución. Por ejemplo, títulos,
subtítulos, etc.
• La declaración de literales está dada a través de las cláusulas 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 RPT-HEADING1.
10 FILLER PIC X VALUE SPACES.
10 RPT-CODIGO PIC 9(6) VALUE 052920.
15 FILLER PIC X(38) VALUE SPACES.
15 FILLER PIC X(17) VALUE ‘REPORTE DE PRUEBA’.
15 FILLER PIC X(70) VALUE SPACES.

46
Technology Solutions

4 - Formateando Datos
• Tipos de información en un reporte.

• Existen algunas cláusulas simbólicas que permiten asignar valores de acuerdo a la


naturaleza del campo:

– Asignar espacios a todas las posiciones de un campo alfanumérico: SPACE, SPACES.

– Asigna ceros a todas las posiciones de un campos numérico: ZERO, ZEROS, ZEROES.

• La cláusula VALUE ALL permite indicar que el valor asignado ocupará todas las posiciones
del campo.

05 REPORT-LINES.

10 RPT-HEADING1.

10 FILLER PIC X VALUE SPACES.

10 FILLER PIC X(15) VALUE ALL ‘-’.

10 FILLER PIC 9(6) VALUE ZEROES.

47
Technology Solutions

4 - Formateando Datos
• Tipos de información en un reporte.

– Variable.

• Cambia su información durante la ejecución del programa, por ejemplo, las líneas 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.

48
Technology Solutions

4 - Formateando Datos
• Edición de campos.

Tipo de
Campo fuente Presentación Campo editado Presentación
edición
Edición de
PIC 999V99 08457 PIC 999.99 084.57
Decimales
Eliminación
de ceros a
PIC 99999.99 00544.75 PIC ZZZZ9.99 544.75
la
izquierda
000056788 567.88
473500991 4,735,009.00
Comas PIC 9(7)V99 PIC Z,ZZZ,ZZ9.99
000455679 4,556.79
055754907 557,549.07

000056788 $ 567.88
473500991 $4,735,009.00
Signo $ fijo PIC 9(7)V99 PIC $Z,ZZZ,ZZ9.99
000455679 $ 4,556.79
055754907 $ 557,549.07

49
Technology Solutions

4 - Formateando Datos
• Edición de campos.

Tipo de
Campo fuente Presentación Campo editado Presentación
edición
000056788 $567.88
Signo $ 473500991 $4,735,009.00
PIC 9(7)V99 PIC $$,$$$,$$9.99
flotante 000455679 $4,556.79
055754907 $557,549.07

Adición de
PIC 9(4) 0054 PIC Z,ZZ9,000 54,000
ceros

Inserción de 010191 01 01 91
PIC 9(6) PIC 99B99B99
blancos 060192 06 01 92

+3456 +3,456
PIC S9(4) +0005 PIC +Z,ZZ9 + 5
Adición de -0032 - 32
Signo “+” +3456 3,456+
PIC S9(4) +0005 PIC Z,ZZ9+ 5+
-0032 32-

50
Technology Solutions

4 - Formateando Datos
• Edición de campos.

Tipo de
Campo fuente Presentación Campo editado Presentación
edición
Adición de +3456 +3,456
Signo “+” PIC S9(4) +0005 PIC ++,++9 +5
(Cont.) -0032 -32

+3456 3,456
PIC S9(4) +0005 PIC -Z,ZZ9 5
-0032 - 32

Adición de +3456 3,456


Signo “-” PIC S9(4) +0005 PIC Z,ZZ9- 5
-0032 32-

+3456 3,456
PIC S9(4) +0005 PIC --,--9 5
-0032 -32

51
Technology Solutions

4 - Formateando Datos
• Edición de campos.

Tipo de
Campo fuente Presentación Campo editado Presentación
edición
+164589 $1,645.89CR
PIC S9(4)V99 PIC $Z,ZZ9.99CR
-164589 $1,645.89
Adición de +164589 $1,645.89
símbolos PIC S9(4)V99 PIC $Z,ZZ9.99DB
-164589 $1,645.89DB
contables:
CR - Positivo +164589 $1,645.89 CR
PIC S9(4)V99 PIC $Z,ZZ9.99BCR
DB – Negativo -164589 $1,645.89

+164589 $1,645.89
PIC S9(4)V99 PIC $Z,ZZ9.99BDB
-164589 $1,645.89 DB

0000000 PIC $**,***.** $*********


0005380 $****53.80
Asteriscos PIC S9(5)V99 0374750 $*3,747.50
1485500 ERROR $*4,855.00
1234567 ERROR $*2,345.67

52
Technology Solutions

4 - Formateando Datos
• Edición de campos.

– Consideraciones importantes en la edición de datos:


• En la eliminación de ceros y signo $.
– Un campo no puede contener sólo ‘Z’ ó ‘$’
– Las Z’s y $ no pueden ser codificados a la derecha de un 9 ó punto decimal.
– El campo debe contener al menos un carácter 9 a la derecha del signo $.
• Inserción de blancos
– Pueden ser usados para campos numéricos y alfanuméricos
• 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 sólo es impreso en valores
negativos.
• Signos CR y DB
– El signo CR aparece sólo cuando el valor es positivo y el DB sólo cuando se trata de
una cantidad negativa.

53
Technology Solutions

4 - Formateando Datos
• Edición de campos.

– Consideraciones importantes en la edición de datos:

• Asteriscos.

– Pueden ser codificados a la derecha del punto decimal. Los asteriscos aparecerán
aún cuando el valor sea cero.

– Las comas son reemplazadas por asteriscos.

– Pueden llegar a truncar un dígito del campo, ya que siempre imprimirá al menos un
asterisco.

54
Technology Solutions

4 - Formateando Datos
• Cláusula: REDEFINES
– Esta cláusula es usada para conservar el espacio de memoria, usando mas de una definición
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 cláusulas VALUE.
– Su sintaxis:
campo-2 REDEFINES campo-1

42 caracteres

EMP-REC NOMBRE TITULO INDUSTRIA

PTR-REC NOMBRE TITULO CVE_CLIENTE CLIENTE ESTATUS GASTOS

42 caracteres
55
Technology Solutions

4 - Formateando Datos
• Cláusula: REDEFINES

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

56
Technology Solutions

4 - Formateando Datos
• Creación del formato de un reporte.

– Procesos principales para la creación de un reporte.

• Lectura del archivo de entrada. En donde se lee el registro de entrada y su información es


almacenada en los campos que definen dicho registro.

• Edición o formateo de los campos. Lo cual involucra mover cada campo del registro de
entrada a su correspondiente campo en la línea de detalle del reporte.

• Impresión del reporte. Involucra la escritura de las cabeceras y líneas de detalle del
reporte.

57
Technology Solutions

Módulo Básico

Módulo Básico

Cobol

1 – Codificando un Programa Cobol


2 – Editando un Programa
3 – Procesando Archivos
4 – Formateando Datos
5 – Aritmética y Lógica de un Programa Cobol
6 – Programación Multimodular y Copybooks

58
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Objetivos.

– Describir qué es un campo compactado, cuándo y cómo usarlo.

– Codificar correctamente campos numéricos (display, signados y compactados).

– Describir el uso de los verbos aritméticos: ADD, SUBTRACT, MULTIPLY, DIVIDE, COMPUTE.

– Definir y distinguir entre estructuras alternativas e iterativas.

– Codificar estructuras iterativas.

– Explicar la lógica de los IF anidados.

59
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Campos numéricos.

– Tipos de campos numéricos.

• Display.

– Cada dígito ocupa una posición de memoria (byte).

– Utilizados para enviar y recibir números entre programas y archivos, terminales o


impresoras.

Formato de campo Ejemplo Memoria Ocupada

PIC 99 25 2 bytes
PIC 99V 25v 2 bytes
PIC 9(3)V99 321v35 5 bytes

60
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Campos numéricos.

– Tipos de campos numéricos.

• Signados.

– Conservan el signo positivo o negativo sin ocupar un byte en memoria. Se representan


con el carácter ‘S’ .

– Regularmente son usados para cálculos o procesos internos.

PICTURE VALOR REPRESENTACIÓN MEMORIA


OCUPADA
PIC S9999 +1234 +1234 4 bytes

PIC S9999 +12 +0012 4 bytes

PIC S9999 -123 -0123 4 bytes

PIC S(4)V99 -25v67 -0025v67 6 bytes

61
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Campos numéricos.

– Tipos de campos numéricos.

• Compactados.

– Ocupan 1 byte de memoria para almacenar 2 dígitos.

– El último byte contiene solo 1 dígito y el signo.

– Son usados para cálculos aritméticos.

Valor a guardar : -12345.67 Definición: S9(5)V99 COMP-3

1 3 5 7

2 4 6 D

Total bytes de memoria = 4


(No. Dígitos + 1) / 2
62
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Campos numéricos.

– Tratamiento de datos entre campos numéricos.

• El mover valores entre campos numéricos, implica que si uno de los campos es signado, el
otro también lo sea, ya que de lo contrario se truncaría el signo, o bien se asumiría ‘+’.

PIC S9(3) PIC +999


MOVE CAMPO-ORIGEN TO CAMPO-RECEPTOR CORRECTO
-025 -025
PIC S9(3) PIC 999
MOVE CAMPO-ORIGEN TO CAMPO-RECEPTOR INCORRECTO
-025 025
PIC 9(3) PIC +999
MOVE CAMPO-ORIGEN TO CAMPO-RECEPTOR INCORRECTO
025 +025

63
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Campos numéricos.

– Tratamiento de datos entre campos numéricos.

• No se puede mover a nivel de grupo, un campo numérico a uno compactado


directamente.

Correcto
Definición en Working Storage Tratamiento en Procedure Division
/incorrecto

10 WS-DATE.
05 WS-AA PIC 99.
05 WS-MM PIC 99. MOVE WS-DATE TO WS-DATE-COMP INCORRECTO
05 WS-DD PIC 99.

10 WS-DATE-COMP PIC 9(6) COMP-3.

64
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Campos numéricos.

– Tratamiento de datos entre campos numéricos (Cont.)

Definición en
Working-Storage Section. Tratamiento en Procedure Division Correcto /incorrecto
10 WS-DATE.
15 WS-AA PIC 99.
15 WS-MM PIC 99.
15 WS-DD PIC 99. MOVE WS-DATE TO WS-DATE-TEMP
CORRECTO
MOVE WS-DATE-TEMP TO WS-DATE-COMP
10 WS-DATE-TEMP PIC 9(6).

10 WS-DATE-COMP PIC 9(6) COMP-3.

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

10 WS-DATE-COMP PIC 9(6) COMP-3.

65
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Verbos aritméticos.

– ADD. Adición de valores.


ADD campo-1 campo-2 campo-N TO campo-z

– SUBTRACT. Sustracción de valores.


SUBTRACT campo-1 campo-2 campo-N FROM campo-z

– MULTIPLY. Multiplicación de valores. El resultado es almacenado en los campos especificados por la


instrucción BY.

MULTIPLY campo-1 BY factor-1 factor-2 factor-N

A BY B C
MULTIPLY
2 3 10

Resultado 2 6 20

66
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Verbos aritméticos.

– DIVIDE. División de valores.

DIVIDE dividendo BY divisor GIVING cociente

DIVIDE A BY B GIVING C 5
2 10
10 2 5

DIVIDE divisor INTO dividendo-1 dividendo-2

DIVIDE A INTO B

2 10

2 5

67
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Verbos aritméticos.

– DIVIDE. División de valores (cont).

DIVIDE divisor INTO dividendo GIVING cociente REMAINDER residuo

DIVIDE A INTO B GIVING C REMAINDER D

5 23 4 3

68
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Verbos aritméticos.

– GIVING. Asigna el valor de la operación al campo especificado.

ADD campo-1 TO campo-z GIVING campo-suma

SUBTRACT campo-1 FROM campo-z GIVING campo-resta

MULTIPLY campo-1 BY factor-1 GIVING campo-mult

DIVIDE dividendo BY divisor GIVING cociente

DIVIDE divisor INTO dividendo GIVING cociente REMAINDER residuo

69
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Verbos aritméticos.

– ROUNDED. Redondea el valor del cálculo de la operación.

• 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 BY factor GIVING campo-store ROUNDED

70
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Sentencia: COMPUTE

– Esta sentencia permite realizar operaciones aritméticas sin necesidad de recurrir a los verbos
aritméticos.

– La sentencia COMPUTE utiliza los siguientes símbolos para especificar la operación:

+ Suma

- Resta

* Multiplicación

/ División

** Exponenciación

() Paréntesis para establecer jerarquías

71
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Sentencia: COMPUTE

– Las prioridades de los signos para realizar las operaciones son:

() Paréntesis

** Exponenciación

*,/ Multiplicación, División

+, - Suma, Resta

– Las sentencias son evaluadas de izquierda a derecha dependiendo del operando.

– Ejemplos.

• COMPUTE A = A + B + C

• COMPUTE A = ( B * ( C - D ) )

72
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Sentencia: COMPUTE vs VERBOS ARITMÉTICOS

COMPUTE VERBOS ARITMÉTICOS


COMPUTE A = (B * (C - D)) SUBTRACT 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 ADD 1 TO WS-INCREMENTO

COMPUTE WS-SALDO = WS-SALDO – WS-RETIRO SUBTRACT WS-RETIRO FROM WS-SALDO

COMPUTE WS-INCREMENTO-1 = WS-INCREMENTO-1 + 1 ADD 1 TO WS-INCREMENTO-1


COMPUTE WS-INCREMENTO-2 = WS-INCREMENTO-2 + 1 WS-INCREMENTO-2
COMPUTE WS-INCREMENTO-3 = WS-INCREMENTO-3 + 1 WS-INCREMENTO-3

 Expresiones Aritméticas.

IF ( A + B ) > ( C - D + 5 )
acción
END-IF.

73
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Estructuras lógicas

– Existen dos tipos de estructuras lógicas:

Es una sentencia condicional con una o más opciones. La opción


Alternativas realizada depende de la condición que resulte verdadera. Son
codificadas con sentencias IF.
Son sentencias condicionales que de cumplirse, hacen que se
Iterativas ejecute más de una vez un párrafo o sentencia. Son codificadas
con sentencias Until.

– Ambas estructuras se clasifican en :

Simples Se valida una condición verdadera o falsa.

Se validan más de una condición con la ayuda de las cláusulas AND


y OR, en estas estructuras se evalúan todos los AND’s y después
Compuestas
los OR´s de izquierda a derecha.

Son estructuras alternativas / iterativas que se realizan dentro de otra


Anidadas estructura alternativa /iterativa.

74
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Estructuras lógicas

– Estructuras Alternativas.

Alternativas Simples Alternativas Compuestas Alternativas Anidadas

IF condición-1

acción-1
IF condición-1 IF condición-1 [AND, OR]
condición-2
IF condición-2
acción
acción-1
acción-2
ELSE
ELSE
ELSE
acción-alternativa
acción-alternativa
acción-3
END-IF.
END-IF.
END-IF

END-IF.

75
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Estructuras lógicas

– Estructuras Alternativas – Tipos de condiciones.

• Condiciones de nombre. Son aquellas que evalúan si un elemento es verdadero o falso


(switches)

• Condiciones de relación. Se refiere a las condiciones que comparan un elemento con


otro.

Afirmativas Negativas

GREATER THAN NOT GREATER THAN


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

76
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Estructuras lógicas

– 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:

– Numéricas. Para caracteres numéricos.

• IF field IS NUMERIC

– Alfanuméricas. Para caracteres alfanuméricos tales como letras, números y símbolos


especiales, excepto algunos caracteres de control especiales.

• IF field IS ALPHANUMERIC

– Alfabéticas. Para caracteres alfabéticos, espacios en blanco. Sólo puede ser usado si
el campo fue declarado como alfabético.

• IF field IS ALPHABETIC

77
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Estructuras lógicas

– Estructuras Iterativas.

Iterativas Simples

PERFORM nombre-párrafo
THRU nombre-párrafo-exit
UNTIL condición .
Iterativas Compuestas

PERFORM nombre-párrafo
THRU nombre-párrafo-exit
UNTIL condición-1 [AND,OR]
condición-2 .

78
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Estructuras lógicas

– 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

79
Technology Solutions

5 - Aritmética y Lógica de un Programa COB


• Verbo EVALUATE

– En el caso de requerir evaluar al mismo tiempo más de tres condiciones distintas, es posible
utilizar la sentencia EVALUATE.

Sintaxis.

EVALUATE [identificador-1 / TRUE]


WHEN condición-1
acción-1
WHEN condición-2
acción-2
WHEN condición-n
acción-n
WHEN OTHER
acción-y
END-EVALUATE.

80
Technology Solutions

Módulo Básico

Módulo Básico

Cobol

1 – Codificando un Programa Cobol


2 – Editando un Programa
3 – Procesando Archivos
4 – Formateando Datos
5 – Aritmética y Lógica de un Programa Cobol
6 – Programación Multimodular y Copybooks

81
Technology Solutions

6 – Programación multimodular y Copybooks


• Objetivos.

– Descripción y función de los programas multimodulares.

– Diferencia entre un programa no modular y un programa modular.

– Descripción de comandos de control entre programas.

– Descripción y función de copybooks.

82
Technology Solutions

6 – Programación multimodular y Copybooks


• Programas Modulares.

– Características:

• Son programas que se encuentran divididos en funciones.

• No realizan todo su proceso dentro del mismo programa, ya que hacen uso de uno o más
programas para realizar ciertas funciones.

Programa principal (calling module) Rutina (called module)

Son aquellos que requieren de invocar a Estos módulos requieren de otro programa
otro programa que realiza una función para realizar una función específica y no
específica. pueden ser ejecutados por si mismos.

Rutina ‘SEM017’
Programa ‘PGM370’
Procedure Division Using [parámetros]

Call ‘SEM017’ Using [parámetros] …
Goback

83
Technology Solutions

6 – Programación multimodular y Copybooks


• Programas Modulares.

– Comunicación entre módulos.

• Programa principal (Calling module).

– Se comunica a través de la siguiente sentencia:

CALL ‘nombre-modulo’ USING parámetro-comunicación1


parámetro-comunicación2
parámetro-comunicación3.

– Los parámetros de comunicación son declarados en la Working Storage Section.

– Si la llamada a la rutina es en forma dinámica, el submódulo no es incluido durante la


compilación del programa principal, con lo que no es necesario recompilar el
programa principal por cada modificación realizada a la rutina, a menos que esto
involucre algún cambio en los parámetros de comunicación.

84
Technology Solutions

6 – Programación multimodular y Copybooks


• Programas Modulares.

– Comunicación entre módulos.

• Subrutina (Called module).

– Los parámetros de comunicación son declarados en la LINKAGE SECTION, en donde


sólo se pasa la dirección de los datos y la información actual de estos.

– El formato de la LINKAGE SECTION es como el de la WORKING-STORAGE SECTION pero


no es permitida la cláusula VALUE.

– Se comunica a través de la siguiente cláusula en la cabecera de la PROCEDURE


DIVISON :

PROCEDURE DIVISION USING parámetro-comunicación1


parámetro-comunicación2
parámetro-comunicación3.

– GOBACK. Devuelve el control al programa principal con la cláusula.

85
Technology Solutions

6 – Programación multimodular y Copybooks


• Programas Modulares.
– Ventajas:
• Complejidad y tamaño. Las funciones pueden ser organizadas en pequeños módulos.
• Manejo del proyecto. Varios módulos pueden ser programados al mismo tiempo.
• Mantenimiento. Cuando funciones son codificadas en módulos separados, el código de
una función 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 más
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
módulos a partir de los programas principales, para no afectar los procesos que dependan
de éstos.
• Generación excesiva de módulos. En caso de no conocer completamente las funciones
que existen pueden duplicarse módulos.

86
Technology Solutions

6 – Programación multimodular y Copybooks


• Copybooks.

– Un copybook es un pedazo de código, que sólo puede ser usado cuando es incluido como
parte de un programa, pudiendo contener variables o funciones.

– Se encuentran almacenados en diversas librerías.

– No pueden ser ejecutados por ningún 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 codificación de programación

• Fácil mantenimiento ya que sólo existe una sola copia del código

87
Technology Solutions

6 – Programación multimodular y Copybooks


• Copybooks.

PROGRAMA COPY

88

Das könnte Ihnen auch gefallen