Que es COBOL. El Cobol (common busshines Oriented Languaje) Es un lenguaje de programación, se utiliza como el lenguaje estándar para aplicaciones administrativas , tanto en grandes instalaciones (MAINFRAME) , como en pequeños (PC’s). Para ejecutar una aplicación en COBOL se requiere: 1.- Crear una lista de instrucciones (programa), escrita en apego a los lineamientos (sintáxis) del lenguaje Cobol. 2.- Compilar el programa, para obtener el ejecutable. 3.- Ordenar la ejecución del programa, según el ambiente de trabajo.
Tópico 210 – Codificación de un programa COBOL Tópico 220 – Edición de un Programa Tópico 230 – Procesamiento de Archivos Tópico 240 – Formateo de Datos Tópico 250 - COBOL Aritmetica y Lógica de un Programa Tópico 260 – Programación Multimodular y Copys Tópico 270 – Procesamiento de Tablas Tópico 280 – Gastos de un Sistema de Procesamiento de Datos
OBJETIVOS. 1.- Identificar las cuatro diferentes secciones y divisiones de COBOL. 2.- Codificar los comentarios de un programa COBOL. 3.- Codificar las cuatro divisiones de un programa en COBOL .
ENVIRONMENT DIVISION Se consideran dos funciones principales en esta división. 1.- Identifica el computador que vamos a usar para compilar y ejecutar el programa (usualmente es el mismo) esto se define en la sección de configuración ( CONFIGURATION SECTION). Formato:
CONFIGURATION SECTION. SOURCE-COMPUTER. OBJECT-COMPUTER.
IBM-390. IBM-390.
2.En la INPUT-OUTPUT SECTION definimos los archivos que se van a usar durante el Proceso del programa, tanto de entrada como de salida, a través de las instrucciones y formatos correspondientes. FORMATO DE LA DEFINICION DE ARCHIVOS EN LA I/O Para un archivo de entrada. INPUT-OUTPUT SECTION. FILE
–CONTROL.
SELECT ARCHENT1
ASSIGN
TO
ENTRA1.
SELECT
ASSIGN
TO
ENTRA2.
ARCHENT2
Para un archivo de salida. SELECT SELECT
ARCHSAL1 ARCHSAL2
ASSIGN ASSIGN
TO TO
SALE1. SALE2.
Observemos que los nombres de divisiones de secciones se codifican en la columna 8 y las de de instrucciones, en este caso SELECT van a partir de la columna 12.
DATA DIVISION. En esta división vamos a definir todos y cada uno de los archivos que definimos con los SELECT, aquí vamos a definir el registro de cada uno, de los campos que forman el registro del archivo, definiendo su tipo, su longitud y otros atributos que formen parte de ellos. Ejemplo. 1
ARCHENT. 05
CAMPO1
PIC
X(10).
05
CAMPO2
PIC
9(06).
05
CAMPO3
PIC
S9(06)V99.
05
CAMPO4
PIC
9(12) COMP-3.
05
CAMPO5
PIC
S9(10) COMP-3.
Working-Storage Section. Record Layout. Estructura de cada uno de los campos que forman los registros de los archivos auxiliares manejados en el programa. Líneas y encabezados de reporte (lines and Headings). Definición de constantes / variables que integran cada una de las líneas que corresponden a los títulos, cabeceras, líneas de detalle, totales, etc., de un reporte. Bandera y switches (Flags/Switches.). Elementos de datos condicionales que indican verdadero o falso. Contadores/Acumuladores. Se refieren a una variable usada para guardar el contenido del conteo o adición de elementos. También podemos definir tablas internas.
1.1 Working-Storage Section. Constantes y literales. Son variables que contienen un valor fijo, el cual no cambiará durante el proceso del programa. Por ejemplo: títulos, etiquetas de columnas, etc. Variables de trabajo (Scratch Area). Son variables que se encuentran involucradas en cálculos intermedios o en el proceso del programa. Por ejemplo: Una variable en la que en cada cambio de registro se vaya guardando el resultado de una operación.
PROCEDURE DIVISION. En esta división definiremos todas y cada una de las instrucciones COBOL, así como párrafos, rutinas y otras instrucciones especiales. Párrafo Mainline ó Principal que está formado por tres procesos principales. 1.-
INICIO
2.-
PROCESO
3.-
FIN
Párrafo Housekeeping ó Inicio. Inicialización de variables de trabajo (acumuladores, contadores, etc). En éste párrafo se realiza la apertura inicial de archivos. Párrafo Process ó Proceso . Ejecución del procedimiento principal del programa Párrafo Wrap-Up ó Final. Cerrado de archivos usados durante la ejecución. Imprime Cifras Control de la información procesada. Párrafo principal.
****************************************************************** *
PROCEDURE DIVISION
*
****************************************************************** PROCEDURE DIVISION. 1000-MAINLINE. PERFORM 2000-HOUSEKEEPING PERFORM 3000-PROCESS-TABLE PERFORM 8000-WRAP-UP STOP RUN.
ALGUNAS INSTRUCCIONES PROCEDURE DIVISION.
O VERBOS COBOL PARA APLICARSE EN LA
OPEN
Abrir Archivos principalmente.
CLOSE
Cerrar Archivos.
READ
Leer.
WRITE
Grabar.
MOVE
Mover información.
IF
Para toma de decisiones.
EVALUATE
Evalúa información y toma decisiones.
PERFORM
Bifurcar a otros puntos del programa.
DISPLAY
Para desplegar avisos principalmente.
COMPUTE
Para efectuar cálculos.
Estas instrucciones las vemos en este momento, para iniciar la Procedure Division, ya que más adelante las veremos a detalle, tanto su funcionamiento como sus formatos.
Párrafos en COBOL Comentarios. -
Se codifican a partir de 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 con terminación -EXIT.
-
El párrafo de terminación no es requerido.
Párrafos en Cobol: 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.
-
Los puntos al final de cada instrucción son opcionales a reserva de la última instrucción de un párrafo que deberá tener punto.
Ejemplos de codificación de párrafos. Nombre del párrafo en la columna 8 las instrucciones en la 12. 123456789101112131415161718192021222324252627282930……………………
100-INICIO. READ ARCIVO 1 ADD 1
TO
CONT-LEIDOS.
200-PROCESO. PERFORM
210-MUEVE-1
PERFORM
220-MUEVE-2.
300-FINAL. CLOSE
ARCHIVO1.
Codificación de programas Comandos de edición Comandos en línea. Para TSO dentro del programa. Se teclean en la parte izquierda de la pantalla sobre la columna de números. i - inserta líneas
in - inserta el número de líneas especificado ( n ).
d - borra líneas
– borra el bloque de líneas especificado. dd
c - copia la línea indicada
cn - copia el número de líneas indicado ( n ).
m - mueve la línea indicada
mm - mueve el bloque líneas indicado.
r - repite la línea
rn - repite la linea el número de veces indicado.
o - sobrescribe la línea
cols
- visualiza regla para posición de columnas.
Todos estos comandos con excepción de COLS, pueden ser utilizados con bloques de líneas, repitiendo el comando al inicio y al fin del párrafo.
Comandos de edición usados en TSO) Comandos primarios. Realizan funciones de utilidad y se teclean en la línea de comando. CANCEL
- se sale del programa sin salvar los cambios
- Salva los cambios realizados al programa
SAVE
FIND - Comando de búsqueda
FIND ‘ carácter ’ [ALL,FIRST,LAST,NEXT,PREV] CHANGE - Sustitución de caracteres o cadenas de caracteres.
CHANGE ‘ palabra_vieja ’ ‘ palabra_nueva ’ [ALL]
– para copiar párrafos o miembros completos a otro. COPY AFTER
Comandos de edición Comandos generales.
(También usado en TSO)
Teclas de función. Configurados de acuerdo con las teclas de función. PF1 - Ayuda de tutorial. PF2 - División de pantallas. PF3 PF4
–
-
SALVA INFORMACIO Y EXIT. Se
sale
de
la
actual
operación
y
regresa
principal. PF5 - Repite el último comando FIND (LOCALIZAR). PF6 - Ejecuta el comando CHANGE al ejecutar FIND. PF7 - Desplaza la pantalla hacia arriba. PF8 - Desplaza la pantalla hacia abajo. PF9
–
Principalmente para swuitcheo.
PF10 - Desplaza la pantalla hacia la izquierda. PF11 - Desplaza la pantalla hacia la derecha.
al
menú
Compilación de programas (Conversiòn a lenguaje objeto) Revisión de sintaxis. -
Revisión de cada una de las sentencias escritas en el código fuentes
Depuración de errores -
Errores de puntuación.
-
Errores ortográficos.
-
Errores de campos no definidos en Working Storage.
-
Codificación de columnas inapropiadas
Generación de código objeto. -
Se encuentra en lenguaje maquina.
Tipos de archivos Archivos Secuenciales. Organización Deben ser accedidos en orden secuencial. Para realización de búsquedas, son accedidos frecuentemente en un orden específico, en base a un campo específico. Acceso. El acceso es 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.).
Archivos de Acceso Directo. Deben ser accedidos a través de un índice. Organización. -
Son accedidos a través de un dato 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 accesan a través del campo llave.
No pueden ser accesados desde cinta debido a la naturaleza de estos. Su acceso puede ser secuencial ó indexado Dispositivos de acceso. -
Cualquier dispositivo de acceso, excepto cintas.
ARCHIVOS VSAM Existen cuatro diferentes tipos de archivos VSAM: KSDS Key Secuenced Data Set RRDS Relative Record Data Set ESDS Entry Sequence Dala Set LDS Linear Data Set
KSDS En este tipo de archivos los registros son almacenados en un orden secuencial ascendente de acuerdo a un campo llamado llave. La llave debe ser única y estar en la misma posición en cada registro. En un archivo KSDS se pueden adicionar, actualizar, consultar o borrar registros. RRDS Contiene registros ordenados por un número de registro relativo, y sólo pueden ser accesados por medio de este número. ESDS Su forma de uso es muy similar a un archivo secuencial. Los registros son insertados sólo al final del archivo; Los registros no pueden ser borrados, sólo pueden marcarse para que ese espacio sea reutilizado; pueden definirse sólo índices alternos.
LDS Los archivos VSAM lineales son raramente utilizados por programas aplicativos. Son más efectivos en aplicaciones especializadas como DB2 que los utiliza para almacenar datos. Sus principales características son: No se cuenta con índices primarios o alternos; No almacena información de control por lo que no puede ser accesado como si almacenara registros individuales. - Todos los VSAM deben ser catalogados. - Sólo pueden usarse DASD para almacenar un VSAM. Puede ser multivolumen. - El programa IDCAMS es usualmente utilizado para la manipulación de VSAM.
ARCHIVOS GDG - Un GDG (Generation Data Group) consiste en un conjunto de archivos con un mismo nombré que están cronológicamente relacionados. - Se utilizan para almacenar diferentes versiones de un sólo archivo. - Cada archivo en un GDG es conocido como una generación. - Se pueden tener hasta un máximo de 255 generaciones. - Debe estar catalogado. - Las generaciones de un GDG pueden ser almacenadas en cualquier tipo de dispositivos (disco, cinta, cartucho, etc.).
Environment Division . Esta sección describe el entorno que requiere el programa, así como características de los archivos tales como: nombre, localización y organización . Existen dos secciones: Configuration Section. Donde se especifican de forma informativa la
computadora en la que se desarrolla, así como la computadora donde se ejecuta: SOURCE-COMPUTER.
IBM-390.
OBJECT-COMPUTER.
IBM-390.
Input-Output Section. Describe las características de cada uno de los archivos que serán usados por el programa tanto de entrada como de salida. Esto es definido en la sub-sección de File Control :
En archivos secuenciales: SELECT nombre-interno-archivo ASSIGN TO nombre-externo
(Este nombre va en el jcl como etiqueta)
ORGANIZATION IS estructura-archivo ACCESS MODE IS acceso-archivo.
[SEQUENTIAL] [SEQUENTIAL]
En archivos de acceso directo (indexados): SELECT nombre-interno-archivo ASSIGN TO nombre-externo (este nombre es el que se pone en el jcl como e) ORGANIZATION IS estructura-archivo ACCESS MODE IS acceso-archivo
[SEQUENTIAL, INDEXED] [RANDOM, SEQUENTIAL]
RECORD KEY IS llave-acceso .
Reglas 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.
Data Division. En esta división se define con mayor detalle las características de los archivos utilizados por los programas. Esta división consta de dos secciones: FILE SECTION. Contiene información de cada uno de los archivos de entrada y
salida que requiere el programa de acuerdo con lo siguiente. FD nombre-interno-archivo
[STANDARD, OMITTED]
LABEL RECORDS ARE tipo-dispositivo
[n, 0]
BLOCK CONTAINS n RECORDS RECORD CONTAINS n CHARACTERS
[n]
DATA RECORD IS name-record . 01
name-record. 03
campo-1
pic
03
campo-2
pic
x(05). 9(03).
FILE SECTION (Cont.) LABEL RECORDS ARE [STANDARD,OMITTED].
-
Es usada para indicar si se tratan de discos ó cintas (STANDARD), o bien, si el archivo será impreso (OMITTED).
BLOCK CONTAINS n RECORDS
-
Indica el número de registros que pueden ser leídos con un espacio entre cada registro (no bloqueados), o bien, en grupos con un espacio entre cada número determinado de registros (bloqueado). Esta definición puede ser omitida, ya que sólo puede ser indicada para archivos bloqueados. Se asigna 0 para que la que sea asignado por la maquina en el momento de la ejecución. Para archivos que serán impresos se omite.
Registros no bloqueados
Registros bloqueados nos trae el numero de registros indicados
RECORD CONTAINS n CHARACTERS
-
Indica el número de caracteres por registro.
DATA RECORD IS name-record .
-
Indica el nombre del registro asociado al archivo. La definición de este registro se encuentra en la Working-Storage Section, en la parte de Record Layout.
WORKING-STORAGE SECTION . En esta sección se definen todos los datos que serán procesados por el programa. En el momento de ejecución el sistema operativo reservará espacio en memoria para los campos aquí definidos.
Definición de datos. Los tipos de datos pueden ser: Numéricos. Para números. Se identifica a través del carácter 9. Alfanuméricos. Para letras, números y símbolos especiales. Son identificados a través del carácter X. Alfabéticos. Utilizado para letras. Son identificados a través del caracter A .
Los datos son definidos con la cláusula PIC seguida del tipo de dato y la longitud de este. Por ejemplo: 05
WS-NUMERO
PIC
9(18).
05
WS-NOMBRE
PIC
X(25).
05
WS-NOMBRE
PIC
A (25).
Decimales implícitos o virtuales. Este tipo de datos no reservan memoria para el punto decimal, con lo que no ocupa espacio. El punto decimal virtual es indicado con ‘ V’ en los campos numéricos. Por Ejemplo: 5 IMP-CODE PIC 9(03)v99 EL CAMPO ES = 51401 SI SE IMPRIME: 514.01