Está en la página 1de 238

CURSO COBOL

ACMSAP ERP LEARNING


J uan Martnez Villergas, 2, 1 D
47014 Valladolid
Telfono:
www.acmsap.es.tl
acmsap@yahoo.es
ACMSAP - ERP Learning Cobol - 2
www.acmsap.es.tl Telfono 983 11 12 84

NOTAS PRELIMINARES

La informtica, como ciencia y tcnica de la segunda mitad del siglo XX, est
en continuo cambio, la investigacin y el desarrollo tecnolgico amplan
constantemente sus posibilidades, de modo especial en todo lo relativo a los
lenguajes de programacin. Por esta razn, hemos procurado que las
especificaciones del COBOL presentadas en este manual correspondan al
estado del mismo en el momento de concluir.

El cobol es un lenguaje industrial, y no es propiedad de ninguna empresa o
grupo de empresas, ni tampoco de ninguna organizacin o grupo de
organizaciones.

El COBOL es un lenguaje artificial, similar en muchos aspectos al lenguaje
hablado en ingls, que permite al hombre comunicarse con el ordenador. El
vocablo COBOL es una contraccin de la frase.

COmmon Business Oriented Language

El primer diseo del COBOL se debe a un consenso entre las
administraciones pblicas de USA, los fabricantes de ordenadores, las
universidades y las organizaciones de los usuarios.
Las aplicaciones comerciales difieren sustancialmente de las cientficas en
la cantidad de datos a tratar y en la complejidad de los clculos. En general,
ests ltimas requieren mucho ms clculo y poca entrada y salida de datos
sin previo diseo de formato, mientras que los problemas de gestin
precisan manipular gran cantidad de datos, cuyos formatos estn ya
establecidos, a los que se les suele aplicar operaciones aritmticas
sencillas. Normalmente, este tipo de aplicaciones implica el tratamiento de
ficheros de datos de entrada y salida.
ACMSAP - ERP Learning Cobol - 3
www.acmsap.es.tl Telfono 983 11 12 84
Por todo ello, los objetivos exigidos al nuevo lenguaje fueron los siguientes:

- sintaxis cercana al lenguaje hablado; naturalmente en ingls.
- Uso restringido de smbolos especiales.
- Mxima potencia en el tratamiento de ficheros.
- Instrucciones de clculo reducidas al mnimo imprescindible para la
gestin administrativa.
- Amplias posibilidades de evolucin futura.
- Independencia del ordenador empleado.

A lo largo del tiempo en que se ha utilizado, el COBOL ha sufrido mejoras y
ampliaciones, de modo que no slo se dispone de diferentes versiones para
ordenadores de distintos fabricantes, sino tambin para un mismo modelo
de ordenador. Sin embargo, las variaciones de una versin a otra suelen ser
pequeas.

En el curso se aprender el COBOL ANS-85. Publicacin de la norma ANSI
X3.23-1985. Lenguaje de programacin COBOL.
ACMSAP - ERP Learning Cobol - 4
www.acmsap.es.tl Telfono 983 11 12 84


1. DESCRIPCION DEL PROGRAMA.
Un programa escrito en cualquier Lenguaje necesita como mnimo 3 elementos
fundamentales:
- Un conjunto de DATOS
- Un conjunto de DEFINICIONES (Entradas / Salidas).
- Un conjunto de INSTRUCCIONES (Sentencias).
UN PROGRAMA ESCRITO EN LENGUAJE COBOL SE ESTRUCTURA DE LA
FORMA SIGUIENTE:
- Cuatro grandes reas, llamadas DIVISIONES, dentro de cada una de las
cuales, se aporta distintas informaciones. Estas informaciones y divisiones son:
- Para la ASIGNACIN de nombre al programa e identificar al programador, se
realiza en:
* La IDENTIFICATION DIVISION
- Para el ENLACE del programa con los recursos fsicos donde residirn los datos,
se codifica en:
* La ENVIRONMENT DIVISION
- Para definir el MAPA o DICCIONARIO DE DATOS que han de ser procesados,
as como las reas especificas de trabajo, se utiliza:
* La DATA DIVISION
- Para codificar PROCEDIMIENTOS DE PROCESO, es decir, para escribir las
instrucciones o mandatos para manipulacin y procesamiento de los datos, se
emplea:
* La PROCEDURE DIVISION
En cada una de las DIVISIONES, a su vez, se pueden desglosar sus funciones,
agrupndolas, por SECCIONES y/o PRRAFOS.
Dentro de cada SECCIN o PRRAFO se escriben CLASULAS o
SENTENCIAS.


ACMSAP - ERP Learning Cobol - 5
www.acmsap.es.tl Telfono 983 11 12 84
CLASULA:
Sirve para especificar atributos y caractersticas de campos y de archivos y se
utiliza en: La IDENTIFICATION, La ENVIRON MENT y en La DATA DIVISION.
SENTENCIA:
Determina la ejecucin de algn tipo de accin y se utiliza en:
La PROCEDU RE DIVISION.
2. ESQUEMA GENERAL DEL PROGRAMA


ACMSAP - ERP Learning Cobol - 6
www.acmsap.es.tl Telfono 983 11 12 84


3. ELEMENTOS DEL LENGUAJE
El COBOL utiliza en su sintaxis un juego reducido de PALABRAS inglesas adems
de los smbolos aritmticos convencionales.
El carcter es la partcula ms elemental del lenguaje.
La correcta combinacin de caracteres forman las PALABRAS (Instrucciones o
Sentencias) que constituyen las rdenes que controlan al ordenador.
Cualquier elemento del lenguaje COBOL estar formado por conjuntos de los
siguientes caracteres:
Caracteres Alfabticos: Letras desde la A a la Z y el Blanco o SPACE.
Caracteres Numricos: Nmeros desde el 0 al 9.
Caracteres empleados en operaciones aritmticas: ( ) , , , / , + , - , =
Caracteres Especiales empleados como operadores relacionales: > , < , =

















ACMSAP - ERP Learning Cobol - 7
www.acmsap.es.tl Telfono 983 11 12 84
4. FUNCIONES ESPECIALES DE LOS CARACTERES



ACMSAP - ERP Learning Cobol - 8
www.acmsap.es.tl Telfono 983 11 12 84
5. PALABRAS COBOL
Se entiende por palabras COBOL al conjunto de no ms de 30 caracteres formado
de acuerdo con unas reglas predefinidas, con las cuales se codifica el programa.
Las palabras COBOL pueden ser CREADAS o RESERVADAS.
5.1 PALABRAS COBOL CREADAS
Se trata de palabras que el programador inventa para identificar campos, registros,
ficheros, programas, etc.
Para construir estas palabras habr que tener en cuenta las normas siguientes:


5. 2 PALABRAS COBOL RESERVADAS
Se trata de palabras con sentido fijo en el lenguaje COBOL. Por tanto, sern
utilizables solamente dentro de un entorno determinado. A continuacin se
detallan las palabras reservadas en COBOL II.



ACMSAP - ERP Learning Cobol - 9
www.acmsap.es.tl Telfono 983 11 12 84
6. PLANTILLA DE CODIFICACIN DEL PROGRAMA COBOL
La plantilla para la codificacin del programa COBOL consta de 80 columnas
distribuidas de la siguiente forma:
1 a 6 : rea de secuencia
Seis dgitos numricos que identifican cada una de las lneas de programa. Es la
numeracin COBOL.
7 : rea indicativa de continuacin o comentario
La presencia de un guin (-) en esta lnea indica que en la misma continua un
literal iniciado en la lnea anterior.
La presencia de un asterisco () indica que se trata de una lnea de comenta rio.
8 a 11 : rea A
rea en la que habr que iniciar la codificacin de algunos elementos COBOL,
como se indicar ms adelante.
12 a 72 : rea B
rea en la que habr que iniciar la codificacin de algunos elementos COBOL,
como se indicar mas adelante.
73 a 80 :
rea utilizada, opcionalmente para codificar el nombre del programa. (Tambin
puede quedar en blanco o solicitar la numeracin Standard).
ACMSAP - ERP Learning Cobol - 10
www.acmsap.es.tl Telfono 983 11 12 84

7. NORMAS PARA INTERPRETAR LOS FORMATOS
- LAS MAYSCULAS son palabras reservadas del COBOL.
- Si la palabra reservada aparece SUBRAYADA en el formato, su codificacin es
obligatoria.
- Los nombres de variables y literales aparecern en MINUSCULAS.
- El uso de las palabras entre corchetes [ ] es OPCIONAL.
- Cuando es preciso seleccionar una, entre varias opciones, estas aparecern
entre llaves { }.
- Los puntos suspensivos (...) indican que algunas opciones pueden repetirse
varas veces.


ACMSAP - ERP Learning Cobol - 11
www.acmsap.es.tl Telfono 983 11 12 84
8. GENERALIDADES SOBRE COMPILACIN, ENSAMBLE Y PUESTA A
PUNTO DE PROGRAMAS.
Cuando se decide crear un programa, hasta que ste queda completamente
depurado y se pueda dejar disponible para que el departamento de explotacin lo
ejecute cuando considere necesario, hay que realizar normalmente los siguientes
pasos:
COMPILACION DEL PROGRAMA FUENTE.
ENSAMBLE, o ENLACE, o LINKEDITACION.
EJ ECUCION DEL PROGRAMA.
ANALISIS DE LOS RESULTADOS GENERADOS.
Y SI FUERA NECESARIO, CORREGIR EL PROGRAMA Y VOLVER AL PASO
PRIMERO.
9. COMPILACIN DEL PROGRAMA COBOL.
Un programa codificado en un lenguaje simblico se escribir en hojas COBOL o
se grabar directamente en un soporte magntico (disco).
Las INSTRUCCIONES de un programa en esta situacin no pueden ejecutarse,
porque la UCP no reconoce el lenguaje en que estn escritas.
Por tanto, es imprescindible que cada una de las instrucciones escritas en
lenguaje simblico sean traducidas a un lenguaje que la UCP reconozca.
La funcin de TRADUCIR instrucciones desde el lenguaje simblico al lenguaje
inteligible al ordenador la realizan unos programas especiales, denominados
programas COMPILADORES.
En nuestro caso, la funcin la realizar el compilador de COBOL.

DEFINICIN DE CONCEPTOS

PROGRAMA FUENTE: Programa cuyas instrucciones estn escritas en un
lenguaje simblico.
PROGRAMA OBJETO: Programa cuyas instrucciones estn escritas en lengua je
reconocible por el ordenador.
ACMSAP - ERP Learning Cobol - 12
www.acmsap.es.tl Telfono 983 11 12 84
COMPILAR: Fundamentalmente accin de traducir un programa FUENTE a
OBJ ETO.
COMPILADOR: programa que realiza bsicamente la funcin de traducir un
program FUENTE a OBJ ETO.
OTRAS FUNCIONES DEL COMPILADOR:
Al realizar una compilacin se le puede pedir al compilador que realice diversas
funciones.
Una de las funciones que realiza dicho parmetro es la de producir un LISTADO
DEL PROGRAMA FUENTE, como se indica anteriormente.
Otra de las funciones es la DEPURACION SINTCTICA del programa FUENTE.
El compilador detecta los posibles errores sintcticos, cometidos al codificar el
programa, y produce un listado indicando la lnea donde se ha detectado y la regla
sintctica que se ha infringido.

10. LINKEDITACION, ENSAMBLE O ENLACE DE PROGRAMAS.
Un programa FUENTE que ha sido compilado y por tanto traducido a lenguaje
mquina, es decir, convertido en programa OBJ ETO, es un programa que todava
no es EJ ECUTABLE.
No es EJ ECUTABLE, porque est incompleto.
Cada una de las instrucciones de un programa FUENTE, al ser traducido a
OBJ ETO, se EXPANDEN en varias INSTRUCCIONES MQUINA. Estas
instrucciones, adems, son ordenadas y direccionadas secuencialmente.
Existen, sin embargo, verbos COBOL que necesitan un nmero de instrucciones
complejas para poderse EJ ECUTAR.
Estos conjuntos de INSTRUCCIONES MAQUINA se almacenan en unas
LIBRERAS, formando MDULOS localizables mediante unos nombres que el
compilador asocia a determinados verbos COBOL.
Por tanto, en el programa OBJ ETO no estn todava las instrucciones de esos
MODULOS, aunque estos s estn definidos y direccionados.
Adems, existen instrucciones COBOL que piden la ayuda de otros programas.
Por ejemplo, el verbo CALL.
ACMSAP - ERP Learning Cobol - 13
www.acmsap.es.tl Telfono 983 11 12 84
El compilador direcciona la instruccin, pero no incorpora el programa LLAMADO.
El programa LINKEDITADOR, tiene como funcin bsica incorporar (ENLAZAR),
tanto los mdulos COBOL definidos por el compilador, como los programas o
subprogramas solicitados va CALL.
Con el conjunto formado por el programa OBJ ETO, ms los mdulos COBOL, ms
los subprogramas aadidos, genera lo que se denomina programa EJ ECUTABLE.
11. EJECUCION Y PUESTA A PUNTO DE PROGRAMAS.
Una vez que el programa ha sido LINKEDITADO, ya S se puede ejecutar.
Los PROGRAMAS que de forma automtica desarrollan los Sistemas de la
Compaa (nminas, control de produccin, etc..) son, como es lgico,
PROGRAMAS EJ ECUTABLES, que residen permanentemente en LIBRERAS.
Para que se ejecuten, basta con llamarlos o referenciarlos adecuadamente.
Sin embargo, hasta que un PROGRAMA pasa a SER EJ ECUTABLE, ha de
recorrer un camino que podemos definir como de PUESTA a PUNTO.
Este camino a recorrer tiene como objetivo garantizar que el PROGRAMA
funciona y funciona bien. Slo a partir de este momento el programa podr
pasar a residir en la librera de PROGRAMAS EJ ECUTABLES (programas en
explotacin).
Durante la PUESTA a PUNTO el programa se har EJ ECUTABLE solamente el
tiempo necesario para probarlo y conseguir unos resultados. Si es necesario, se
corregirn instrucciones y de nuevo se probar el Programa.
El circuito de la PUESTA a PUNTO ser COMPILAR, LINKEDITAR y EJ ECUTAR
tantas veces como se considere necesario.
Lgicamente en esta Fase intervienen tambin los DATOS de ENTRADA as
como los RESULTADOS.
ACMSAP - ERP Learning Cobol - 14
www.acmsap.es.tl Telfono 983 11 12 84






DEFINICIN DE DATOS
ACMSAP - ERP Learning Cobol - 15
www.acmsap.es.tl Telfono 983 11 12 84

1. INTRODUCCION A LA DEFINICION DE CAMPOS Y DATOS
Con independencia de la SECCION de la DATA DIVISION en que se definan, para
cada uno de los datos que han de ser procesados, habr que identificar:
LUGAR DE ALOJAMIENTO: Nombre, longitud del campo.
CARACTERSTICAS: Clase, formato y uso del dato.
PERTENENCIA: A qu familia de datos pertenece.
Estas caractersticas se asignarn A CADA CAMPO en funcin de las
necesidades particulares de cada proceso.
FORMATO GENERAL DE DEFINICIN DE CAMPOS:



A continuacin, se profundizar, en cada uno de estos conceptos.

ACMSAP - ERP Learning Cobol - 16
www.acmsap.es.tl Telfono 983 11 12 84
2. IDENTIFICACIN DE DATOS. NOMBRES SIMBLICOS.
Los campos que han de soportar datos, se identifican mediante nombres
simblicos creados por el programador. Estos nombres se construyen de acuerdo
con las normas indicadas en el prrafo siguiente.
NORMAS DE CONSTRUCCION DE NOMBRES:
Conjuntos de 1 a 30 caracte res, el primero de los cuales ser letra y sin signos
especiales, excepto guiones internos.

Nota: Es recomendable definir nombres inteligibles y de acuerdo con algn tipo de
norma predefinida.
3. DEFINICIN DE PERTENENCIA. NIVELES
Los datos en el programa estn jerrquicamente organizados. En un nivel ltimo
los datos pertenecen a un FICHERO.
En COBOL se definen estas estructuras jerrquicas mediante la identificacin de
FICHEROS y DATOS por medio de NIVELES.
3.1 NIVELES ESPECFICOS Y NIVELES COMUNES
Existen NIVELES PROPIOS o NIVELES ESPECFICOS de algunas Secciones de
la DATA DIVISION, como por ejemplo, los siguientes niveles:

77: Nivel que se emplea para la definicin de campos simples, es decir, tambin
conocidos como campos elementales. Estos, no forman parte de ningn otro
campo. Este nivel se puede usar en la WORKING-STORAGE SECTION y en la
LINKAGE SECTION.

ACMSAP - ERP Learning Cobol - 17
www.acmsap.es.tl Telfono 983 11 12 84
FD: Nivel con el cual se inicia la descripcin de un FICHERO en la FILE
SECTION. (FD: File Description).

SD: Nivel que inicia la descripcin de un FICHERO intermedio de trabajo en la
FILE SECTION para clasificacin interna de registros. (SD: Sort Description).

NOTA: Los niveles 77, FD y SD se comienzan a codificar en el margen A.
Tambin existen NIVELES COMUNES a todas las SECCIONES.

01: Facilita normalmente la definicin de un campo compuesto. Puede tambin
definir un campo elemental.

02 a 49: Facilitan normalmente la definicin de campos elementales. Pueden
tambin definir un campo compuesto.

88: Define nombres de condicin. Sus valores se asocian a la variable
condicional de la que dependen.
66: Proporciona un nuevo nombre a un campo elemental, un campo compuesto o
un grupo de campos elementales. Se asocia con la clusula RENAMES.
NOTA: Los niveles 01 y 66 se definen en el margen A. Los niveles 02 a 49 se
definen en el margen B, y el 88 en los dos.

3.2 CAMPOS ELEMENTALES Y CAMPOS COMPUESTOS
En relacin con los NIVELES, es necesa rio comentar con detenimiento, una
nueva divisin de los campos en cuanto al concepto de PERTENEN CIA.
Los campos se pueden subdividir en ELEMENTALES y COMPUESTOS.
CAMPOS ELEMENTALES:
Son campos con entidad propia procesables por s mismos, sin que stos
incluyan a otros campos de menor entidad y longitud. Pueden pertenecer o no a
otros campos jerrquicamente superiores e l.

ACMSAP - ERP Learning Cobol - 18
www.acmsap.es.tl Telfono 983 11 12 84
* TODOS LOS CAMPOS ELEMENTALES, SIEMPRE LLEVAN PICTURE.
CAMPOS COMPUESTOS:

Son campos con entidad ajena es decir, que contienen a otros campos (o estn
subdivididos en otros campos), los cules les prestan su propia entidad. Pueden
pertenecer o no a otros campos jerrquicamente superiores l.

* LOS CAMPOS COMPUESTOS (GRUPOS), NUNCA LLEVAN PICTURE.

Para clarificacin de los niveles y de los campos elementales y campos
compuestos, veamos el siguiente Ejemplo de un registro de un fichero que guarde
informacin genrica sobre VENTAS de artculos:



ACMSAP - ERP Learning Cobol - 19
www.acmsap.es.tl Telfono 983 11 12 84


* LA LONGITUD TOTAL DEL REGISTRO ES DE 80 BYTES .

5.3.3 NOMBRES SIMBLICOS DUPLICADOS Y CALIFICACIN
El nombre de los CAMPOS debe de ser nico en un mismo programa. No
obstante el COBOL permite que haya nombres duplicados, siempre y cuando
estos nombres iguales (de campos de igual o distinto tipo y longitud) tengan otros
nombres de datos a nivel superior que sean distintos.
LA TCNICA que se usa para distinguir campos con nombres iguales se llama
CALIFICACIN.
Para referenciar un campo con nombre duplicado en la PROCEDURE DIVISION,
habr que indicar adems de ste, el nombre del grupo inmediato a que pertenece
el dato nombrado. Para ello se usa OF IN indistintamente.



ACMSAP - ERP Learning Cobol - 20
www.acmsap.es.tl Telfono 983 11 12 84


4. PICTURE Y CLASE DE DATO
Se define la clase de un dato dependiendo del contenido del mismo. Esto se indica
mediante la clusula PICTURE (PIC abreviado).
* Ser de clase A (alfabtico) Si contiene slo letras y/o blancos.
* Ser de clase X (alfanumrico) Si contiene letras y/o dgitos y/o signos
especiales.
* Ser de clase 9 (numrico)

Si contiene slo dgitos y signo vlido.
Ejemplos:

02 CODIGO PIC A(5).
77 CODIGO1 PIC X(7).
01 IMPORTE PIC 9(3).

MASCARAS DE EDICION
Tipifican una clase de dato especial: DATO EDITADO, que por su complejidad se
tratar aparte.
ACMSAP - ERP Learning Cobol - 21
www.acmsap.es.tl Telfono 983 11 12 84




5. PICTURE Y LONGITUD DEL DATO
Se entiende por longitud el nmero de caracteres que van a ser alojados en el
campo.
Esto se indica mediante la clusula PICTURE (PIC) y el N dgitos entre
parntesis, indicando el nmero total de caracteres que soportar el campo.
Tambin se puede dar la longitud de un campo, sin necesidad de dar el nmero de
caracteres entre parntesis; para ello bastara con repetir la clase del campo (A, X
o 9) una vez por cada uno de los caracteres que se desea almacenar en dicho
campo.

Veamos los siguientes ejemplos:


* Lo ms usado es: PIC X; PIC XX PIC x(N) siendo N >=3.
* En Cobol la mnima unidad de memoria direccionada es el octeto, por tanto la
menor PIC ser:
PIC X o PIC A o PIC 9.
* La clusula PICTURE slo se codifica en campos elementa les.
* La codificacin de la PICTURE de cualquier campo, no podr estar formada por
ms de 30
caracteres, con independencia de la longitud del campo que se est definiendo .
ACMSAP - ERP Learning Cobol - 22
www.acmsap.es.tl Telfono 983 11 12 84
* En la definicin de campos numricos, el compilador, asignar un nmero mayor,
menor o igual de BYTES DE MEMORIA para almacenar el nmero de dgitos que
indica la longitud del campo, en funcin del formato de almacenamiento que se
asigne a los datos.
* Para campos numricos con formato de coma fija, restringen la longitud hasta un
mximo de 18 dgitos decimales. (Los de coma flotante no los consideraremos)

6. FORMATO DE LOS DATOS
Existen distintos formatos de almacenamiento de datos. Estos formatos son:
FORMATO ZONA, FORMATO EMPAQUETADO y FORMATO BINARIO PURO.
Para especificar el contenido de los campos vamos a usar el cdigo EBCDIC.

6.1 FORMATO ZONA (VALORES NUMRICOS Y ALFANUMRICOS)
A razn de 1 carcter por octeto. (Cada uno de los caracteres del cdigo EBCDIC
ASCII se almacenan en un BYTE de memoria).




* Campos numricos en formato de zona
El signo +, - o absoluto se localiza en los 4 primeros bits del ltimo octeto de la
cifra, de esta forma:

Signo + = C 1100
Signo - = D 1101
Signo absoluto = F 1111
ACMSAP - ERP Learning Cobol - 23
www.acmsap.es.tl Telfono 983 11 12 84



6.2 FORMATO EMPAQUETADO (SLO VALORES NUMRICOS)
A razn de 2 dgitos por octeto, excepto el octeto extremo derecha que contiene
un slo dgito y el signo. El signo; +, -, o absoluto, se localiza en los 4 ltimos bits
del ltimo octeto de la cifra, con las mismas configuraciones de bits que en
FORMATO ZONA (C, D o F).







ACMSAP - ERP Learning Cobol - 24
www.acmsap.es.tl Telfono 983 11 12 84



6.3 FORMATO BINARIO PURO (SLO VALORES NUMRICOS)
Los valores numricos son almacenados en formato binario puro. Es decir, el valor
numrico decimal, antes de almacenarse es traducido al sistema numrico en
base 2 (ceros y unos).
Son campos de longitud fija a razn de:

2 Octetos: Media palabra (de 1 a 4 dgitos)
4 Octetos: Una palabra (de 5 a 9 dgitos)
8 Octetos: Doble palabra (de 10 a 18 dgitos)
El signo + o - se localiza en este tipo de campos en el primer bit del primer octeto
de la izquierda. Ejemplo:
signo + positivo ==>0
signo - negativo ==>1


7. CLUSULA USAGE
El formato de los datos se define en COBOL mediante la clusula USAGE.
La clusula usage admite tres posibilidades de codificacin en funcin del formato
del dato que se desee definir. Estas son DISPLAY, COMPUTACIONAL-3 y
COMPUTACIONAL.



ACMSAP - ERP Learning Cobol - 25
www.acmsap.es.tl Telfono 983 11 12 84
7.1 USAGE DISPLAY (ALFANUMRICOS, ALFABTICOS Y NUMRICOS)
Indica que el dato que se est definiendo, se utilizar en FORMATO ZONA.
Puede referirse tanto a campo de clase A y X como de clase 9.

En cualquiera de los tres casos se entiende que el dato se aloja en el campo a
razn de 1 carcter por octeto.


Nota: Por ausencia de la clusula USAGE el compilador asume DISPLAY.
7.2 USAGE COMPUTATIONAL-3 o COMP-3 (CAMPOS NUMRICOS)
Indica que el dato que se est definiendo, se utilizar en FORMATO EMPAQUE
TADO. Slo se utiliza para campos de clase 9.
Se entiende que el conjunto de dgitos indicado, se aloja a razn de 2 dgitos por
octeto, excepto el primer octeto de la derecha, que aloja slo uno, reservando el
medio octeto derecho para el signo.

ACMSAP - ERP Learning Cobol - 26
www.acmsap.es.tl Telfono 983 11 12 84


7.3 USAGE COMPUTATIONAL o COMP. (CAMPOS NUMERICOS)
Indica que el dato que se est definiendo, se utilizar en FORMATO BINARIO
PURO. Slo puede referirse a campos de clase 9.
Se entiende que el conjunto de dgitos del dato se aloja en formatos predefinidos,
teniendo en cuenta el nmero de dgitos.
As, si el nmero de dgitos est comprendido entre 1 y 4, el dato se alojar
NECESARIAMENTE en 2 octetos o, lo que es lo mismo, en MEDIA PALABRA.
Si el nmero de dgitos est comprendido entre 5 y 9, el dato se alojar
NECESARIA MENTE en 4 octetos o, lo que es lo mismo, en UNA PALABRA.
Si el nmero de dgitos est comprendido entre 10 y 18, el dato se alojar
NECESARIAMENTE en 8 octetos o, lo que es lo mismo, en una DOBLE
PALABRA.
ACMSAP - ERP Learning Cobol - 27
www.acmsap.es.tl Telfono 983 11 12 84


Nota: El valor del campo se configura en binario puro.


8. EL SIGNO EN LOS CAMPOS NUMRICOS
El indicativo de que el valor numrico que contenga un campo tiene SIGNO, es
una S delante del 9 que indica picture numrica.



Las operaciones aritmticas se realizan algebraicamente. El signo, por tanto,
como es lgico, se tiene en cuenta por el ordenador en el momento de realizar
clculos.
ACMSAP - ERP Learning Cobol - 28
www.acmsap.es.tl Telfono 983 11 12 84
Un campo numrico puede ser receptor como resultado de una operacin
aritmtica o como resultado de un movimiento unitario, es decir, si el dato procede
de otro campo elemental. En ambas situaciones la presencia o ausencia del
indicativo del signo S en la descripcin de los campos, condiciona que el dato en
el campo receptor GANE o PIERDA el SIGNO.
Como norma, es conveniente definir con signo todos aquellos campos numricos
con los que se vayan a realizar operaciones aritmticas o sean utilizados como
receptores de otros campos o valores numricos.




9. LOS DECIMALES EN LOS CAMPOS NUMRICOS
Es posible definir el lugar donde interesa colocar EL PUNTO DECIMAL para que
las operaciones se realicen de acuerdo con el mismo.

El indicativo del PUNTO DECIMAL es el carcter V . Para dicho carcter no se
reserva ningn espacio fsico dentro del campo.

El lugar donde estar el punto decimal es supuesto por el compilador a partir de
la picture declarada del campo.

ACMSAP - ERP Learning Cobol - 29
www.acmsap.es.tl Telfono 983 11 12 84


10. INICIALIZACIN DE VARIABLES. CLASULA VALUE

Los valores se incluyen en los campos de trabajo (dentro de la WORKING-
STORAGE SECTION) mediante la clusula VALUE.
La FILE SECTION y la LINKAGE SECTION no admiten la clusula VALUE.

Esquema de la clusula:
VALUE [ IS ] literal

LITERAL:
En un conjunto de caracteres alfanumricos o una cifra numrica que se incluye
como valor o contenido de un campo mediante la clusula VALUE en la
WORKING-STORAGE SECTION. (El literal asignado a un campo, a travs de
VALUE ha de estar de acuerdo con el tipo de picture de dicho campo).

ACMSAP - ERP Learning Cobol - 30
www.acmsap.es.tl Telfono 983 11 12 84
Los literales pueden ser NUMRICOS y ALFANUMRICOS.

10.1 LITERAL NUMRICO

Es una cifra de 1 a 18 dgitos numricos, un punto decimal, si es necesario y el
signo operacional +, o, -, si procede. (Los valores numricos nunca van
encerrados entre apstrofos).


10.2 LITERAL ALFANUMRICO
Conjunto de 1 a 160 caracteres alfanumricos que se incluyen como contenido de
un campo lgicamente definido con formato/usage DISPLAY.

REGLAS DE CONSTRUCCIN:
Un literal alfanumrico se escribe entre apstrofos (o entrecomillado en funcin del
compilador).
Si el literal excede la lnea donde se est codificando, se completar dicha lnea
hasta la columna 72, inclusive, con parte del texto. En la lnea siguiente se
codificar una nueva comilla y se completar el texto.

En la columna 7 de la lnea nueva se codificar un guin.

Si el literal no se parte, en dos o ms lneas, el guin no ser necesario.




ACMSAP - ERP Learning Cobol - 31
www.acmsap.es.tl Telfono 983 11 12 84
Ejemplos. HOJ A DE CODIFICACIN EN COBOL



10.3 CONSTANTES FIGURATIVAS
Son palabras reservadas a las que el compilador les asigna un VALOR. Este valor
se genera como valor inicial de un campo cuando una constante figurativa se
asocia al campo mediante la clusula VALUE.
Las constantes figurativas tambin se emplean en sentencias de proceso.

Las constantes figurativas son: SPACE/S, HIGH-VALUE/S, LOW-VALUE/S,
ZERO, ZEROS o ZEROES y ALL caracteres:

SPACE / SPACES: Rellena con el valor blancos el campo al que se asigna.









ACMSAP - ERP Learning Cobol - 32
www.acmsap.es.tl Telfono 983 11 12 84

HIGH-VALUE/S:
Rellena el campo al que se asigna, con el mayor valor del cdigo EBCDIC (FF en
hexadecimal) .




LOW-VALUE/S:
Rellena con el menor valor (00 en hexadecimal) el campo a que se asigna.












ACMSAP - ERP Learning Cobol - 33
www.acmsap.es.tl Telfono 983 11 12 84

ALL carcter/es:
Rellena con el carcter o caracteres codificado/s el campo al cual se le asigne.


ZERO/ZEROS/ZEROES: Rellena con cero o ceros el campo al cual se le asigna
como valor.


Para campos ALFANUMERICOS y NUMERICOS.



ACMSAP - ERP Learning Cobol - 34
www.acmsap.es.tl Telfono 983 11 12 84

11. EDICIN DE CAMPOS NUMERICOS (MASCARAS DE EDICION)

Los campos numricos, cuando se listan, puede ser que necesiten ser editados.
Editar significa:

- Suprimir ceros no significativos.
- Incluir comas de separacin cada tres cifras ente ras.
- Separar con punto los enteros de los decimales, si los hay.

Para editar un campo el programador deber describir, en el campo de salida del
listado, el modelo que servir de base para realizar dicha edicin.

Si la clusula DECIMAL-POINT IS COMMA est codificada, el punto decimal debe
ser sustituido por una coma y las comas de los miles por puntos.

REGLAS PARA ESCRIBIR LOS MODELOS DE EDICIN MS UTILIZADOS
- El carcter 9 define una posicin donde se coloca r un dgito numrico.
- Para suprimir ceros no significativos y reemplazar los por blancos, se escribir
una Z en cada posicin de dgito a suprimir.
- La sustitucin de ceros por blancos finaliza al terminar las Z o al llegar al primer
dgito significativo.
- Las Z deben ir, siempre, delante de los 9. Una vez escrito un 9 no podr
escribirse ninguna Z.
- Para insertar comas y el punto, hay que ponerlos, en el modelo, donde procedan.
El punto o la
coma como mscara si ocupan espacio en memoria (1 octeto).
_ El punto y la coma, cuando van entre Z, se edita rn, si van precedidos de una
cifra significativa.
- Para editar el signo, hay que escribir un - detrs del ltimo carcter del modelo.
Si el signo es positivo, se editar un espacio en blanco en su lugar.
ACMSAP - ERP Learning Cobol - 35
www.acmsap.es.tl Telfono 983 11 12 84

Ejemplos:
Sea el campo:
Con PICTURE PIC S9(7)V99.
Se quiere editar un campo para que el valor en el listado o en pantalla se visualice
de la siguiente forma: 3,456.78 y signo (signo, podr ser + - )

SE PUEDEN CONSTRUIR PARA ESTO VARIOS MODELOS:
1. El modelo podra ser: Z,ZZZ,ZZZ.ZZ-
- Las Z harn que no se impriman los ceros no significativos.
- La coma de los millones no se editar, porque el nmero no tiene millones.
- El signo no se imprimir, porque el nmero es positivo.
El modelo anterior tiene el inconveniente de que, si el nmero a editar fuera todo
ceros, el resultado en salida sera blancos. Esto podr plantear dudas sobre el
contenido del campo a editar ya que si no aparece nada en el campo editado,
podra ser por que el campo emisor estaba vaco con ceros.

2. Otro modelo, podra ser: Z,ZZZ,ZZ9.99
Este modelo, suele preferirse al anterior, ya que obliga a editar, como mnimo, la
cifra de las unidades y las cifras decimales. As pues, en el caso de que todo el
campo emisor sean ceros, se editara 0.00.

3. Si el modelo elegido fuese: 9,999,999.99-

Los 9 obligaran al sistema operativo a editar, necesariamente, la cifra que
corresponda a la posicin que ocupan, aunque sean ceros.

Y en tal caso, el resultado de la edicin, sera: 0,003,456.78-

ACMSAP - ERP Learning Cobol - 36
www.acmsap.es.tl Telfono 983 11 12 84
Este formato, no sera vlido, para conseguir lo que deseaba en el ejemplo, ya que
se ven los ceros no significativos.
Hay varios caracteres ms susceptibles de ser utilizados en msca ras de edicin
($, *, +, B, 0, CR, DB, /, P, V) que se auto explican en el cuadro de la pgina
siguiente.

NOTA: Aunque trasparente al programador es interesante saber que, el
compilador emplear el modelo de edicin seleccionado para reservar dos reas
de trabajo:

1 - Una para almacenar el modelo.
2 - Otra para efectuar la edicin.
Al realizarse, en el programa, una instruccin MOVE del campo numrico al
campo de salida, se ejecutan tres movimientos:


1) Se transfiere el modelo al campo en el que se realizar la edicin.
2) Se transfieren los datos del campo de origen al campo de edicin y se editan.
3) El resultado, ya editado, se transfiere al campo del listado.

ACMSAP - ERP Learning Cobol - 37
www.acmsap.es.tl Telfono 983 11 12 84







PROGRAMACIN CON
LENGUAJE COBOL

REPRESENTACIN DE CARACTERES Y
PALABRAS COBOL RESERVADAS










ACMSAP - ERP Learning Cobol - 38
www.acmsap.es.tl Telfono 983 11 12 84
Representacin de Caracteres EBCDIC
Extended Binary Coded Decimal Interchange Code. (Cdigo de Intercambio de
informacin Decimal Codificado en Binario Extendido).

ACMSAP - ERP Learning Cobol - 39
www.acmsap.es.tl Telfono 983 11 12 84

ASCII
ASCII : American Standard Code for Information Interchange.
(Cdigo Normalizado Americano para Intercambio de Informacin).



ACMSAP - ERP Learning Cobol - 40
www.acmsap.es.tl Telfono 983 11 12 84


ACMSAP - ERP Learning Cobol - 41
www.acmsap.es.tl Telfono 983 11 12 84
Palabras COBOL reservadas
Se trata de palabras con sentido fijo en el lenguaje COBOL. Por tanto, sern
utilizables solamente dentro de un entorno determinado. A continuacin se
detallan las palabras reservadas en COBOL II.
-
(
)
*
**
/
+
<
<=
=
>
>=
ACCEPT
ACCESS
ACTUAL
ADD
ADVANCING
AFTER
ALL
ALPHABETIC
ALSO
ALTER
ALTERNATE
AND
APPLY
ARE
AREA
AREAS
ASCENDING
ASSIGN
AT
AUTHOR
BEFORE
BEGINNING
BLANK
BLOCK
BOTTOM
BY
C 01
C 02
C03
C04
C05
C06
C07
C09
C10
C11
C12
CALL
CANCEL
CBL
CD
CF
CH
CHANGED
CHARACTER
CHARACTERS
CLOSE
CODE
CODE-SET
COLLATING
COLUMN
COMMA
COMMUNICATION
COMP
COMP-1
COMP-2
COMP-3
COMP-4
COMPUTATIONAL
COMPUTATIONAL-1
COMPU TATIONAL-2
COMPUTATIONAL-3
COMPUTATIONAL-4
COMPUTE
CONFIGURATION
CONSOLE
CONTAINS
CONTROL
CONTROLS
CONVERTING
COPY
CORE-INDEX
CORR
CORRESPONDING
COUNT
CSP
CURRENCY
CURRENT-DATE
DATA
DATE
DATE-COMPILED
DATE-WRITTEN
DAY
DE
DEBUG
DEBUG-CONTENTS
DEBUGGING
DEBUG-ITEM
DEBUG-LINE
DEBUG-NAME
DEBUG-SUB-1
DEBUG-SUB-2
DEBUG-SUB-3
DECIMAL-POINT
DECLARATIVES
DELETE
DELIMITED
DELIMITER
DEPENDING
DESCENDING
DESTINATION
DETAIL
DIS
DISABLE
DISPLAY
DISPLAY-ST
DIVIDE
DIVISION
ACMSAP - ERP Learning Cobol - 42
www.acmsap.es.tl Telfono 983 11 12 84
DOWN
DUPLICATES
DYNAMIC
EGI
EJECT
ELSE
EMI
ENABLE
END
END-ADD
END-CALL
END-DELETE
END-DIVIDE
END-EVALUATE
END-IF
ENDING
END-MULTIPLY
END-OF-PAGE
END-PERFORM
END-READ
END-RECIEVE
END-RETURN
END-REWRITE
END-SEARCH
END-START
END-STRING
END-UNSTRING
END-WRITE
ENTER
ENTRY
ENVIRONMENT
EOP
EQUAL
ERROR
ESI
EVALUATE
EVERY
EXAMINE
EXCEPTION
EXHIBIT
EXIT
EXTEND
FD
FILE
FILE-CONTROL
FILE-LIMIT
FILE-LIMITS
FILLER
FINAL
FIRST
FOOTING
FOR
FROM
GENERATE
GIVING
GO
GREATER
GROUP
HEADING
HIGH-VALUE
HIGH-VALUES
ID
IDENTIFICATION
IF
IN
INDEX
INDEXED
INDICATE
INITIAL
INITIALIZE
INITIATE
INPUT
INPUT-OUTPUT
INSERT
INSPECT
INSTALLATION
INTO
INVALID
I-O
I-O-CONTROL
IS
JUST
JUSTIFIED
KEY
LABEL
LAST
LEADING
LEAVE
LEFT
LENGTH
LESS
LIMIT
LIMITS
LINAGE
LINAGE-COUNTER
LINE
LINE-COUNTER
LINES
LINKAGE
LOCK
LOW-VALUE
LOW-VALUES
MEMORY
MERGE
MESSAGE
MODE
MODULES
MORE-LABELS
MOVE
MULTIPLE
MULTIPLY
NAMED
NATIVE
NEGATIVE
NEXT
NO
NOMINAL
NOT
NOT AT END
NOT INVALID KEY
NOT ON SIZE ERROR
NOTE
NUMBER
NUMERIC
OBJECT-COMPUTER
OCCURS
OF
OFF
OMITTED
ON
OPEN
OPTIONAL
OR
ORGANIZATION
OTHERWISE
OUTPUT
OVERFLOW
PAGE
PAGE-COUNTER
PASSWORD
PERFORM
ACMSAP - ERP Learning Cobol - 43
www.acmsap.es.tl Telfono 983 11 12 84
PF
PH
PIC
PICTURE
PLUS
POINTER
POSITION
POSITIONING
POSITIVE
PROCEDURE
PROCEDURES
PROCEED
PROCESSING
PROGRAM
PROGRAM-ID
QUEUE
QUOTE
QUOTES
RANDOM
RD
READ
READY
RECEIVE
RECORD
RECORD-OVERFLOW
RECORDS
REDEFINES
REEL
REFERENCES
RELATIVE
RELEASE
RELOAD
REMAINDER
REMARKS
REMOVAL
RENAMES
REORG-CRITERIA
REPLACING
REPORT
REPORTING
REPORTS
REREAD
RERUN
RESERVE
RESET
RETURN
RETURN-CODE
REVERSED
REWIND
REWRITE
RF
RH
RIGHT
ROUNDED
RUN
S01
S02
SAME
SD
SEARCH
SECTION
SECURITY
SEEK
SEGMENT
SEGMENT-LIMIT
SELECT
SELECTIVE
SEND
SENTENCE
SEPARATE
SEQUENCE
SEQUENTIAL
SET
SIGN
SIZE
SKIP-1
SKIP-2
SKIP-3
SORT
SORT-CORE-SIZE
SORT-FILE-SIZE
SORT-MERGE
SORT-MESSAGE
SORT-MODE-SIZE
SORT-RETURN
SOURCE
SOUR-COMPUTER
SPACE
SPACES
SPECIAL-NAMES
STANDARD
STANDARD-1
START
STATUS
STOP
STORE
STRING
SUB-QUEUE-1
SUB-QUEUE-2
SUB-QUEUE-3
SUBTRACT
SUM
SUPPRESS
SYMBOLIC
SYNC
SYNCHRONIZED
SYSIN
SYSOUT
SYSPUNCH
TABLE
TALLY
TALLYING
TAPE
TERMINAL
TERMINATE
TEXT
THAN
THEN
THROUGH
THRU
TIME
TIME-OF-DAY
TIMES
TO
TOP
TOTALED
TOTALING
TRACE
TRACK-AREA
TRACK-LIMIT
TRACKS
TRAILING
TYPE
UNIT
UNSTRING
UNTIL
UP
UPON
UPSI-0
UPSI-1
UPSI-2
ACMSAP - ERP Learning Cobol - 44
www.acmsap.es.tl Telfono 983 11 12 84
UPSI-3
UPSI-4
UPSI-5
UPSI-6
UPSI-7
USAGE
USE
USING
VALUE
VALUES
VARYING
WHEN
WHEN-COMPILED
WITH
WITH TEST AFTER
WORDS
WORKING-STORAGE
WRITE
WRITE-ONLY
ZERO
ZEROES
ZEROS






ACMSAP - ERP Learning Cobol - 45
www.acmsap.es.tl Telfono 983 11 12 84
Hoja de Codificacin en COBOL

ACMSAP - ERP Learning Cobol - 46
www.acmsap.es.tl Telfono 983 11 12 84








DESCRIPCIN DE
FICHEROS
ACMSAP - ERP Learning Cobol - 47
www.acmsap.es.tl Telfono 983 11 12 84
1. DATA DIVISION
Dentro de la DATA DIVISION, los datos, se agrupan por SECCIONES, en funcin
del origen o utilidad de esos datos.
Para cada programa se definirn nicamente aquellas secciones que sean
necesarias.

1.1 SECCIONES DE LA DATA DIVISION

- FILE SECTION
Para definicin de las caractersticas de los datos procedentes o con destino a
FICHEROS.

- WORKING-STORAGE SECTION
Para la definicin de todos los datos intermedios o de trabajo que se consideren
necesarios para un adecuado procesamiento de los datos.

- LINKAGE SECTION
Para definir datos comunes a otro programa con el que se enlaza.

2. FILE SECTION

FUNCIN
Descripcin de los FICHEROS DE ENTRADA y de SALIDA que inter vienen en el
programa.







ACMSAP - ERP Learning Cobol - 48
www.acmsap.es.tl Telfono 983 11 12 84
PECULIARIDADES DE LA FILE SECTION:

* Se define un NIVEL FD POR CADA FICHERO.
* En FILE SECTION no se utiliza la CLUSULA VALUE.
* Mediante la clusula DATA se define 1 n tipos de registro.
* Cada tipo de REGISTRO de UN FICHERO se define a nivel 01.
* Se puede utilizar la clusula REDEFINES a partir de nivel 02.
* Es la primera seccin de la DATA DIVISION.

3. NIVEL FD

FD nombre-fichero

Donde nombre-fichero es el nombre-interno del fichero del cual se va a realizar
posteriormente la definicin del registro. Este fichero tuvo que ser declarado con
anterioridad en la INPUT-OUT PUT SECTION de la ENVIRONMENT DIVISION,
en la posicin del nombre-interno.
Con este nivel, se le indica al compilador que comienza la definicin del registro
y de las caractersticas del registro de ese fichero.

ACMSAP - ERP Learning Cobol - 49
www.acmsap.es.tl Telfono 983 11 12 84
4. MODALIDAD DE GRABACIN
Esta clusula indica el modo en que los registros del FICHERO a definir, estn
grabados o se van a grabar en el dispositivo de almacenamiento.

(No es necesaria y en la prxima revisin de COBOL desaparecer).
Esquema de la clusula:
RECORDING MODE IS modo

modo:
Los modos pueden ser:
F Indica que la longitud de todos los registros es la misma.
V Indica que la longitud de los registros es VARIABLE.
En las 4 primeras posiciones de cada registro se indica su longitud.
U Indica que la longitud de los registros no es fija y adems no se especifica.
NOTA: Por ausencia de esta clusula, asume V.

5. LONGITUD DEL REGISTRO LGICO
Esta clusula indica el nmero de caracteres (nmero de octetos) del registro
lgico.
No es necesaria y en la prxima revisin de COBOL desaparecer.
Esquema de la clusula:
RECORD CONTAINS n1 [TO n2] CHARACTERS
n1: Es el nmero de posiciones del registro lgico.
n2: Si los registros tienen distintas longitudes, entonces n1 sera la longitud del
registro MENOR y n2
la longitud del registro MAYOR.





ACMSAP - ERP Learning Cobol - 50
www.acmsap.es.tl Telfono 983 11 12 84
6. LONGITUD DEL BLOQUE FSICO
Esta clusula indica o bien el nmero de registros por bloque, o bien el nmero de
caracteres por bloque en el fichero.

Es la unidad de transferencia de informacin, entre el dispositivo de
almacenamiento del fichero y la memoria principal, durante la ejecucin del
programa. No es necesaria y en la prxima revisin de COBOL desaparecer.
Esquema de la clusula:

n1: Es el nmero de registros lgicos por bloque fsico.
n2: Si los registros tienen modo V, entonces n1 sera la longitud del bloque menor
y n2 la longitud del mayor.
Si no se codifica esta clusula, para ficheros SECUENCIALES, asume por
defecto, la longitud ms adecuada, en funcin del tipo de soporte fsico real usado
para el almacenamiento del fichero.
Para los ficheros INDEXADOS y RELATIVOS el BLOCK NO se codifica.
NOTAS:
Si se desea, para ficheros SECUENCIALES, con el fin de independizar el
programa de los datos se puede poner:

BLOCK CONTAINS RECORDS.
En caso de codificar el bloque fsico para un fichero que vaya a procesarse en el
programa, el Sistema Operativo lo compara con el bloque codificado en el J CL. Si
el fichero ya existe, este dato se compara tambin con el del J CL o, en su defecto,
con el bloque existente en la etiqueta del fichero.

ACMSAP - ERP Learning Cobol - 51
www.acmsap.es.tl Telfono 983 11 12 84
En caso de no coincidir ambos, el Sistema Operativo avisar dando un error en
fase de ejecucin, al intentar abrir el fichero.

7. ETIQUETAS DE FICHEROS
Los FICHEROS grabados en DISCO o Cinta Magntica disponen de registros
especiales de identificacin propia, denominados ETIQUETAS.
Estos registros son grabados al principio y al final de fichero por el Sistema
Operativo.
Esquema de la clusula:



TIPO: Hay dos tipos de etiquetas:
STANDARD: Etiquetas generadas automticamente por el Sistema.
OMITTED: Ausencia de etiquetas.
* La codificacin LABEL a partir de la revisin del ao 85, es OPCIONAL, y si no
se codifica, asume STANDARD para todos los ficheros.

8. NOMBRE DEL REGISTRO
Mediante esta clusula se puede dar nombre al registro o a los registros del
FICHERO.
Esquema de la clusula:

nombre-1: En el supuesto de que exista un slo tipo de registro.
nombre-2: Si existen ms tipos de registros en el Fichero.

ACMSAP - ERP Learning Cobol - 52
www.acmsap.es.tl Telfono 983 11 12 84


9. EJEMPLO DE CODIFICACIN DE LA FILE SECTION

ACMSAP - ERP Learning Cobol - 53
www.acmsap.es.tl Telfono 983 11 12 84


ACMSAP - ERP Learning Cobol - 54
www.acmsap.es.tl Telfono 983 11 12 84
10. SENTENCIA COPY E INCLUSIN DE MDULOS FUENTE
La sentencia COPY ordena al compilador que recupere un fichero de una librera
de mdulos fuentes y lo inserte en el lugar donde se codific la sentencia.

FORMATO DE LA SENTENCIA

COPY nombre-de-miembro
[ IN nombre-de-librera ]

Normalmente, las libreras disponibles para el compilador se definen a travs de
sentencias de orden/control de tarea al ejecutar el compilador y la clusula IN,
normalmente no es necesaria, porque el compilador busca automticamente la
librera especificada por defecto para el compilador.

VENTAJAS QUE APORTA LA SENTENCIA COPY
Ahorro de tiempo de codificacin a los programadores, ya que las sentencias
slo es necesario escribirlas una vez aunque se utilicen en muchos programas.

Se evitan posibles errores e interpretaciones equvocas respecto a PICTURE,
USAGE y formato de los registros del archivo.

El desarrollo y mantenimiento de los programas se hace ms fcil y rpido ya
que los nombres de los archivos y de los campos se normalizan de un programa
a otro.

El uso de la sentencia COPY hace ms fcil las modificaciones de aplicaciones,
porque slo se necesita cambiar una sola vez una FD, una descripcin de
registro, una rutina, etc. Todos los programas a los que afecte el cambio, slo
deben ser recompilados sin ninguna modificacin directa en el programa fuente.

ACMSAP - ERP Learning Cobol - 55
www.acmsap.es.tl Telfono 983 11 12 84









CREACIN Y
TRATAMIENTO DE
TABLAS
ACMSAP - ERP Learning Cobol - 56
www.acmsap.es.tl Telfono 983 11 12 84
1. CLUSULA REDEFINES
Mediante esta clusula se puede definir varias veces la misma zona de memoria,
con nombre, tipo y formato distintos.

Es decir, permite definir UN MISMO CAMPO con VARIOS NOMBRES
DISTINTOS y PICTURES DISTINTAS.

FACILIDADES:
Adems de poder nombrar la misma zona con distintos nombres es posible:
- Definir un mismo campo con distintos formatos (USAGE).
- Definir un mismo campo cambiando el tipo del mismo.
- Definir un rea parcelndola en distintas longitudes.

ESQUEMA DE LA CLUSULA:

Nivel nom-campo-R REDEFINES nom-campo [ PIC... ].

Nivel: Se puede codificar bajo cualquier nivel, excepto bajo los niveles 66 y 88.

nom-campo-R: Ser el nuevo nombre con que se puede localizar una zona de
memoria que ya se defini anteriormente con otro nombre.

nom-campo: Es el nombre que se asign antes al campo que se est
redefiniendo.







ACMSAP - ERP Learning Cobol - 57
www.acmsap.es.tl Telfono 983 11 12 84
UTILIZACIN:

La clusula REDEFINES se utiliza en WORKING-STORAGE SECTION a
cualquier nivel, y en la FILE SECTION a cualquier nivel que no sea 01.

El redefinidor se sita debajo del redefinido, inmediatamente o despus de los
niveles dependientes del redefinido. Tanto el redefinidor como el redefinido deben
tener el mismo nivel.
No est per mitido utilizar la clusula VALUE en los nombres de campo redefinidos
a continua cin y en dependencia de la clusula REDEFI NES.

Las longitudes de las zonas redefinidas es conveniente que sean las mismas.



















ACMSAP - ERP Learning Cobol - 58
www.acmsap.es.tl Telfono 983 11 12 84
EJ EMPLOS DE REDEFINICIONES:





ACMSAP - ERP Learning Cobol - 59
www.acmsap.es.tl Telfono 983 11 12 84

2. CLUSULA OCCURS

Mediante esta clusula se asigna un nombre comn a varios campos
contiguos. Para que esto sea posible, estos campos adems de contiguos
debern tener la misma clase, longitud y usage.

La clusula OCCURS permite definir VARIOS CAMPOS (varias zonas de
memoria) CON EL MISMO NOMBRE; en cambio, la clusula REDEFINES permite
asignar varios nombres a una misma zona de memoria.

La clusula OCCURS no se permite a nivel 01. Y en un mismo nivel la clusula
OCCURS y VALUE a la vez son incompatibles.

ESQUEMA DE LA CLUSULA:

02 nombre-elemento [PIC ...] OCCURS n-entero [TIMES].

nombre-elemento:
Es el nombre comn, tambin denominado Elemento, asignado a una zona de
memoria, la cual se repite a continuacin un nmero de veces.

n-entero TIMES:
Es el nmero de campos contiguos que se deben crear.

No est permitido utilizar la clusula VALUE en los nombres de campo definidos a
continuacin y en dependencia de la clusula OCCURS, en las releases de
COBOL anteriores al ao 85.

PIC ... :
Se puede codificar la PICTURE de n-campo si ste no es un campo compuesto.
ACMSAP - ERP Learning Cobol - 60
www.acmsap.es.tl Telfono 983 11 12 84
3. DEFINICIN DE TABLAS
Al conjunto de campos contiguos que tienen el mismo nombre, la misma
clase, la misma longitud y el mismo usage se les denomina TABLAS (o
matrices).

A cada uno de estos campos contiguos iguales, se les denomina ELEMENTOS.
Luego, una tabla, estar formada por un conjunto de ELEMENTOS.
Para la definicin de TABLAS se utilizar la clusula OCCURS.

Las tablas, en funcin de cmo este constituido el elemento, se pueden clasificar
en SIMPLES y COMPUESTAS; y las tablas compuestas, a su vez, se pueden
subdividir en UNIDIMENSIONALES, BIDIMENSIONALES, TRIDIMENSIONALES,
etc.
3.1 TABLAS SIMPLES
Una tabla es simple, cuando el campo al que se le asocia la clusula OCCURS, es
un campo elemental.

Ejemplo:

01 TABLA1.
02 ELEM OCCURS 4 PIC X(7) .

Se habr definido la siguiente zona de memoria:


La longitud de TABLA1 ser 4 x 7 =28 BYTES.



ACMSAP - ERP Learning Cobol - 61
www.acmsap.es.tl Telfono 983 11 12 84

3.2 TABLAS COMPUESTAS
Una tabla ser compuesta cuando el campo al que se le asocia la clusula
OCCURS, es un campo compuesto (o grupo) .

Ejemplo:
01 TABLA2.
02 ELEMEN OCCURS 5.
03 COD PIC X(3).
03 CAN PIC 9(4).


La longitud de TABLA2 es (3+4)* 5 =35 OCTETOS.
3.3 TABLAS UNIDIMENSIONALES
Las tablas, en funcin del nmero de OCCURS que la integran, pueden ser
unidimensio nales, bidimensionales o tridimensionales.

As pues, se denomina UNIDIMENSIONALES a las tablas en la que hay un slo
campo afectado por la clusula OCCURS.

Con un solo ndice se puede identificar cualquiera de los campos que la
componen.

Ejemplo:
01 TABLA-UNI.
02 ELEMENTO OCCURS 3 TIMES.
03 CAMA PIC XX.
03 CAMB PIC S99.
ACMSAP - ERP Learning Cobol - 62
www.acmsap.es.tl Telfono 983 11 12 84

Para la definicin de la siguiente zona de memoria:


La longitud de TABLA-UNI es 3 * 4 =12 OCTETOS.

3.4 TABLAS BIDIMENSIONALES
Se denominan BIDIMENSIONALES, a las tablas en las que un campo afectado
por la clusula OCCURS, es dependiente a su vez de otro campo ya afectado por
la misma clusula.

Es decir, cuando un elemento de la tabla o un campo de dicho elemento es a su
vez otra tabla. Para direccionar a cualquiera de los elementos de la tabla ms
interna, ser necesario, utilizar dos ndices.

Ejemplo:
01 TABLA-BIDIMENSIONAL.
02 MES OCCURS 3.
03 SEM OCCURS 4 PIC XX.

Para la definicin de la siguiente zona de memoria:



La longitud de TABLA-BIDIMENSIONAL ser ((2*4) * 3) =24 BYTES.
ACMSAP - ERP Learning Cobol - 63
www.acmsap.es.tl Telfono 983 11 12 84

3.5 TABLAS TRIDIMENSIONALES
Se consideran TRIDIMENSIONALES, las tablas en las que un campo afectado por
la clusula OCCURS, es dependiente de otro campo afectado por otra clusula
OCCURS, la cual, a su vez, es dependiente de otro campo afectado por otra
clusula OCCURS.

Para identificar/referenciar/direccionar un campo del nivel ms interno, sern
precisos tres ndices.
Ejemplo:

01 TABLA-TRIDIMENSIONAL.
02 ARTICULO OCCURS 2.
03 CODIGO OCCURS 3.
04 PRECIO OCCURS 2 PIC X(4).

Para la definicin de la siguiente zona de memoria:

La longitud de esta TABLA-TRIDIMENSIONAL es:
(((4 * 2) * 3) * 2) =48 BYTES.
4. CLUSULA RENAMES Y NIVEL 66
Proporciona un nuevo nombre a un campo elemental, un campo compuesto o un
grupo de campos elementales. La clusula RENAMES se codifica asociado al
NIVEL 66.

Es similar a la clusula REDEFINES pero no puede cambiar las pictures de los
campos.
ACMSAP - ERP Learning Cobol - 64
www.acmsap.es.tl Telfono 983 11 12 84

FORMATO:

66 nombre-nuevo RENAMES desde-nombre-1 [THRU nombre-final]






ACMSAP - ERP Learning Cobol - 65
www.acmsap.es.tl Telfono 983 11 12 84

5. CLUSULA BLANK WHEN ZERO
El contenido de un campo, si es ceros, se cambiar por blancos, si al definir un
campo se le asigna la clusula BLANK WHEN ZERO.

Solamente es utilizada en campos elementales numricos o numricos de
edicin.
No es muy usada, ya que se consigue el mismo resultado, dotando al campo con
la PICTURE Z.
FORMATO:
[ BLANK WHEN ZERO ]
03 CANTIDAD PIC ... BLANK WHEN ZERO.
6. CREACIN DE TABLAS
Las tablas son conjuntos de campos consecutivos los cuales, tienen el mismo
Nombre, adems de la misma Clase, Longitud y Usage.
Para la definicin de tablas se emplea la clusula OCCURS. Esta clasula admite
varios formatos ms, los cuales, se vern a continuacin.
6.1. CREACIN DE TABLAS VARIABLES
Este formato, permite la creacin de tablas, con la posibilidad de que sta
contenga un nmero variable de elementos para cada una de las distintas
ejecuciones del programa.

FORMATO:
.... OCCURS valor-menor [ TO valor-mayor ]
DEPENDING ON nombre-campo.

DEPENDING ON: Esta opcin se utiliza cuando el nmero de elementos de la
tabla, no sea conocido de antemano por el programador sino que
depende del valor de otro campo.

ACMSAP - ERP Learning Cobol - 66
www.acmsap.es.tl Telfono 983 11 12 84
El nmero de elementos, variar en cada ejecucin en funcin del valor de
nombre-campo.

nombre-campo: Su valor es utilizado para fijar el nmero de elementos con los
que le tabla
ha de crearse. Debe ser numri co entero y debe estar en alguna definicin
anterior a la de la clusula OCCURS. valor-menor y valor-mayor:

Son dos nmeros enteros que indican cul ser el rango menor y mayor de
elementos que la tabla puede contener.



6.2. CREACIN DE TABLAS INDEXADAS Y ORDENADAS
Se utiliza para crear una tabla y un ndice asociado a dicha tabla.
El ndice no debe definirse por el programador, ya que lo hace el compilador
internamente.
El formato INDEXED BY permite el uso posterior del verbo SEARCH para localizar
un ele mento dentro de la tabla. (Una bsqueda secuencial se efecta mediante
el verbo SEARCH y una bsqueda dicotmica mediante el verbo SEARCH ALL).

ACMSAP - ERP Learning Cobol - 67
www.acmsap.es.tl Telfono 983 11 12 84


ASCENDING/ DESCENDING: Estas opciones indican que los elementos de la
tabla estn ordenados en ascendente o descendente en funcin del contenido de
un campo de la tabla (nombre-en-la-tabla).

INDEXED BY: Opcin que le indica al compilador que cree un ndice (nombre-de-
ndice), el cual ser utilizado para direccionar los elementos de la tabla.
Ejemplo:









ACMSAP - ERP Learning Cobol - 68
www.acmsap.es.tl Telfono 983 11 12 84
7. VERBO SET
Se emplea para dar valor a un ndice, el cul fue creado por el compilador
mediante la clusula
INDEXED BY ndice.
Este verbo tiene dos formatos, que se muestran a continuacin.
FORMATO 1:
SET nombre-de-ndice TO valor

Nombre-de-ndice: Es el ndice a inicializar. (Es el RECEPTOR).
Valor: Nombre de campo o literal numrico, con el que se desea inicializar
nombre-de-ndice.
FORMATO 2:


UP BY: Se utilizan para operaciones de Suma con ndices creados mediante la
clusula INDEXED BY, ya que, el resto de operaciones aritmticas no estn
permitidas.

DOWN BY: Se utilizan para operaciones de Resta con ndices creados mediante
la clusula INDEXED BY, ya que, el resto de operaciones aritmticas no estn
permitidas.
Ejemplo:

ACMSAP - ERP Learning Cobol - 69
www.acmsap.es.tl Telfono 983 11 12 84

8. VERBO SEARCH (BSQUEDA SECUENCIAL EN TABLAS)
Realiza una bsqueda secuencial en una tabla creada con la opcin INDEXED
BY. No es necesario que la tabla est ordenada.

Antes de efectuar la bsqueda, se debe inicializar el ndice, asociado a
INDEXED BY mediante el verbo SET. El ndice deber ser positivo y mayor que
cero. Si el valor fuera superior a nmero de elementos NO se realiza la bsqueda.

La bsqueda finaliza cuando el contenido de un elemento satisface una
condicin prefijada o cuando se llega al final de la tabla.
FORMATO:


SEARCH: Verbo que indica bsqueda secuencial.
nombre-del-elemento: Es el nombre genrico asignado a todos los elementos de
la tabla.

ACMSAP - ERP Learning Cobol - 70
www.acmsap.es.tl Telfono 983 11 12 84
WHEN condicin sentencia-imperativa-1: Se solicita el anlisis de una
condicin. Se pueden poner varios WHEN y la/s condicin/es es/son analiza da/s
para cada elemento, si no se cumple
ninguna se incrementa internamente el ndice y se continua hasta que alguna
condicin se cumple. En tal caso se ejecutan las sentencias asociadas a esa
condicin y la bsqueda concluye, saltando al siguiente punto.

AT END sentencia-imperativa:
Instrucciones que se ejecutarn si se lleva al final de la tabla sin que ninguna
condicin se cumpla.











ACMSAP - ERP Learning Cobol - 71
www.acmsap.es.tl Telfono 983 11 12 84
9. VERBO SEARCH ALL (BSQUEDA DICOTMICA)
Se emplea para realizar bsqueda binarias o dicotmicas en tablas creadas con
la opcin INDEXED BY.

Es imprescindible que la tabla est ORDENADA en ascendente o descendente
No es necesario inicializar el ndice mediante SET. El sistema gestiona el ndice
internamente.
FORMATO:



Todo lo dicho en el formato anterior es vlido para ste excepto que:

SEARCH ALL: Verbo para efectuar bsquedas binarias.

WHEN condicin: WHEN slo puede aparecer una vez y condicin nicamente
puede usarse con el operador de relacin EQUAL TO (=) y con el operador lgico
AND.







ACMSAP - ERP Learning Cobol - 72
www.acmsap.es.tl Telfono 983 11 12 84

EJ EMPLO:



10. GESTIN DE TABLAS Y VERBO PERFORM VARYING
La versin del PERFORM VARYING es la ms complicada sintcticamente. Se
suele emplear cuando se desea ejecutar un conjunto de instrucciones con todos o
algunos de los elementos de una tabla de una o ms dimensiones.

ACMSAP - ERP Learning Cobol - 73
www.acmsap.es.tl Telfono 983 11 12 84
FORMATO BSICO:

PERFORM nombre-prrafo-1 [THRU nombre-prrafo-2]
VARYING ndice-1 FROM valor-inicial BY +valor-1
UNTIL condicin-1

La ejecucin del PERFORM VARYING se desarrolla de la siguiente forma:
PRIMERO: Se inicializa internamente ndice-1 con valor-inicial.
SEGUNDO: EVALUA la condicin-1, si es cierta no se ejecutan las instrucciones
comprendidas en nombre-prrafo-1 y se pasa a la instruccin siguiente a
PERFORM. Si es falsa se ejecuta UNA VEZ nombre-prrafo-1.
TERCERO: Suma o resta a ndice-1, el valor del campo o valor numrico que
sigue a BY (valor-1). Y vuelve a analizar la condicin-1.
FIN: Y el ciclo se repite desde el segundo punto hasta que la condicin sea
cierta.










ACMSAP - ERP Learning Cobol - 74
www.acmsap.es.tl Telfono 983 11 12 84
FORMATO COMPLETO: (TABLAS DE MS DE UNA DIMENSIN).

En este formato la ejecucin se lleva a cabo de la siguiente forma:

PRIMERO: Se inicia ndice-1 con valor-inicial-1 e ndice-2 con valor-inicial-2 e
ndice-3 con el valor-inicial-3.
SEGUNDO: Evala la condicin-1, si es cierta, no se ejecuta nada del
PERFORM y se salta a la instruccin siguiente al PERFORM VARYING. Si es
falsa, se evala la condicin-2, y si tambin es falsa, se analiza la condicin-3.
TERCERO: Mientras la condicin-3 es falsa, se ejecutan sucesivamente las
declaraciones de nombre-prrafo-1 y se incrementa o decrementa ndice-3 con el
valor de su BY. Se repite hasta que la condicin-3 es cierta.
Cuando la condicin-3 es cierta, se vuelve a inicializar ndice-3 con valor-inicial-3,
se incrementa tambin ndice-2 en el valor de su BY y se pasa al punto anterior.
Se repite el proceso anterior hasta que la condicin-2 es cierta.
Cuando la condicin-2 es cierta, se vuelve a inicializar ndice-2 con valorinicial-2,
se incrementa tambin ndice-1 en el valor de su BY y se pasa al punto segundo.
FIN: Repitiendo este proceso hasta que la condicin-1 se cumple.

ACMSAP - ERP Learning Cobol - 75
www.acmsap.es.tl Telfono 983 11 12 84

Ejemplo:


ACMSAP - ERP Learning Cobol - 76
www.acmsap.es.tl Telfono 983 11 12 84













ESTRUCTURA DE UN
PROGRAMA COBOL
ACMSAP - ERP Learning Cobol - 77
www.acmsap.es.tl Telfono 983 11 12 84
1. IDENTIFICACION DEL PROGRAMA (ID DIVISION)
Los datos de identificacin de un programa COBOL se dan en la
IDENTIFICATION DIVISION (ID DIVISION abreviado).
Es la Primera Divisin con la que se inicia el programa.
FUNCIONES
* DEFINIR el nombre del PROGRAMA FUENTE Y OBJ ETO.
* INFORMAR sobre:
. AUTOR DEL PROGRAMA
. INSTALACIN
. FECHA ESCRITURA
. FECHA COMPILACIN
. OBJ ETIVO DEL PROGRAMA
* ESCRIBIR Los objetivos especficos del programa.

* Todos los prrafos son opcionales, excepto PROGRAM-ID.
* Las Sentencias de todos los prrafos, excepto PROGRAM-ID, son descriptivas.
El compilador los considera comentarios.
* Nombre-programa puede constar hasta de 30 CARACTERES, (sin ningn
carcter especial) siendo el primero una letra. El compilador toma slo los 8
primeros en el caso de que el nombre tuviese ms de 8.
* En DATE-COMPILED la fecha la pone el Compilador, con el formato: MMM.
DD.AAAA. Ejemplo: DIC.28.1991.

ACMSAP - ERP Learning Cobol - 78
www.acmsap.es.tl Telfono 983 11 12 84
EJEMPLO DE CODIFICACION DE LA IDENTIFICATION DIVISION:



Informacin esencial a codificar: PROGRAM-ID.
AUTHOR.
DATE-COMPILED.
Comentario del objetivo del programa.


2. CARACTERSTICAS DE ENTORNO. ENVIRONMENT DIVISION.

FUNCIONES:
- Definir, asignar, direccionar y especificar peculiaridades de los ficheros que van a
ser utilizados en el programa.
- Relacionar los nombres lgicos de los archivos, que van a ser utilizados por el
programa, con los nombres reales de stos en el dispositivo de lmacenamiento.
- Especificar opcionalmente, las caractersticas y tipo del ordenador que se va a
utilizar para compilar y ejecutar el programa.

ACMSAP - ERP Learning Cobol - 79
www.acmsap.es.tl Telfono 983 11 12 84


DESCRIPCIN DE SECCIONES: CONFIGURATION SECTION
Descripcin de las caractersticas del ordenador, a nivel de COMEN TARIO.

Ejemplo:
SOURCE-COMPUTER. IBM-9000 IBM-3090




ACMSAP - ERP Learning Cobol - 80
www.acmsap.es.tl Telfono 983 11 12 84
Puede describir tambin el tamao de memoria que ocupar el programa en
palabras, caracteres o mdulos. Esta opcin no es utilizada en ordenadores de
gran capacidad. (Suele referirse a este tipo de ordenadores como entorno HOST
y/o MAIN-FRAME).
En esta Seccin se pueden reasignar funciones.
Ejemplo:
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.

En cualquier campo numrico o numrico de edicin, la coma hace funciones de
punto y el punto de coma.

INPUT-OUTPUT SECTION
Permite enlazar los nombres simblicos de los ficheros, (inventado por el
programador), con los nombres reales de los mismos. Tambin, para dar la
organizacin, el tipo de acceso y otras caractersticas necesarias, para que
todos los archivos puedan ser procesados adecuadamente.

PRRAFO FILE-CONTROL
SELECT nombre-fichero-int ASSIGN TO nombre-externo.

SELECT nombre-fichero-int :
Con la clusula SELECT se definen cada uno de los ficheros del programa.
ASSIGN TO :
Con esta clusula nombre-fichero-int se asocia a un nombre-externo, que ser
el enlace, que permitir localizar el dispositivo de almacena mien to que soporta al
Fichero Real.
nombre-externo :
Nombre real del fichero o nombre de enlace con l.
(Nombre real en entorno PC y nombre de enlace de 1 a 8 caracteres que
aparecer como nombre de la DD en el J CL, si es en el entorno HOST).
ACMSAP - ERP Learning Cobol - 81
www.acmsap.es.tl Telfono 983 11 12 84

3. Data Divisin: Definicin de Ficheros y otros Datos
INTRODUCCIN A LOS DATOS
En una situacin de proceso de informacin es imprescindible que los datos a
consultar o a actualizar estn presentes en la memoria principal del ordenador as
como las instrucciones necesarias para procesarlos adecuadamente.
Los datos para su proceso han de estar perfectamente localizados. Su
localizacin se realiza en base a una direccin de comienzo del dato ms la
longitud predefinida del mismo.
Direccin y longitud definen unas posiciones contiguas de memoria donde se
alojar un dato. A este conjunto de posiciones contiguas de memoria que
almacenarn datos, se les denomina CAMPOS.
En un lenguaje simblico no se hace referencia a un direccionamiento real, sino
que se definen nombres asociados a cada uno de los campos.
En los lenguajes de alto nivel, el Programa Compilador ser el que asigne
direcciones para cada uno de los campos definidos por el programador. Para
referenciar un campo basta con usar el nombre que tiene asociado. La direccin
del campo en memoria real es transparente al programador.
En un programa codificado en LENGUAJ E COBOL, los datos y los ficheros en
los cuales se almacenan los datos, se definen en la DATA DIVISION.

DATA DIVISION
Dentro de la DATA DIVISION, los datos, se agrupan por SECCIONES, en funcin
del origen o utilidad de esos datos.
Para cada programa se definirn nicamente aquellas secciones que sean
necesarias.

SECCIONES DE LA DATA DIVISION
- FILE SECTION
Para definicin de las caractersticas de los datos procedentes o con destino a
FICHEROS.
ACMSAP - ERP Learning Cobol - 82
www.acmsap.es.tl Telfono 983 11 12 84

- WORKING-STORAGE SECTION
Para la definicin de todos datos intermedios o de trabajo que se consideren
necesarios para un adecuado procesamiento de los datos.

- LINKAGE SECTION
Para definir datos comunes a otro programa con el que se enlaza.

4. PROCEDURE DIVISION

FUNCIN

En esta divisin se codifican las instrucciones o sentencias necesarias para el
desarrollo de la lgica del PROGRAMA.

As pues, la procedure estar formada por todas las instrucciones que el
ordenador deber ejecutar con los datos de entrada definidos en las secciones
anteriores, para obtener los resultados de salida apetecidos.

Las distintas instrucciones se pueden reagrupar, en funcin del tipo de tratamiento
que realizan con los datos, en varios grupos.

Las Instrucciones codificadas en COBOL, a diferencia de otros lenguajes, sirven
como AUTODOCUMENTACION del programa ya que tienen la apariencia del
lenguaje corriente (aunque en ingls). Esto, sumado a que es un lenguaje fcil de
aprender y de mantener, explica porqu el 80% de las aplicaciones que se
desarrollan en todo El Planeta, sean en COBOL.
ACMSAP - ERP Learning Cobol - 83
www.acmsap.es.tl Telfono 983 11 12 84












DISEO DE PROGRAMAS DE
ACTUALIZACIN.
ENFRENTAMIENTO DE
FICHEROS SECUENCIALES
ACMSAP - ERP Learning Cobol - 84
www.acmsap.es.tl Telfono 983 11 12 84
1.- ENFRENTAMIENTO DE FICHEROS. Actualizacin de Ficheros
Secuenciales.

En la empresa es imprescindible guardar toda la informacin importante en
ficheros. En las tareas habituales de gestin de dicha informacin, no solamente
tenemos que consultar la informacin guardada en estos ficheros, sino que
adems, una de las tareas ms importantes es la creacin y el mantenimiento
actualizado al da de estos ficheros.

Si pensamos en un fichero del personal o de clientes o de proveedores o de
cualquier otro tipo de informacin, es imprescindible dar ALTAS (es decir, incluir
por ejemplo los nuevos empleados que van siendo contratados en la empresa),
dar BAJ AS (borrar del fichero de personal aquellas personas, que ya no trabajan
en la empresa) y hacer MODIFICACIONES en estos ficheros (cuando una persona
cambia de telfono, de direccin, ha tenido un hijo ms, se le ha subido el sueldo,
etc., etc).

1.1. Operaciones Tpicas con los registros de un fichero.
Las operaciones ms habituales que debemos realizar con los ficheros son:

- Altas: consiste en la adicin o insercin de uno o varios registros en el fichero.
Esta operacin slo ser posible si el fichero ya existe.

- Bajas: consiste en eliminar uno o varios registros del fichero. Este proceso
requiere un primer proceso de lectura para la localizacin del registro que se
pretende borrar.

- Modificaciones: consiste en realizar un cambio total o parcial de uno o varios
campos de los registros de un fichero. Primero hay que leer para localizar el
registro que se quiere modificar y posteriormente escribir para la actualizacin de
parte o de todo el registro.
ACMSAP - ERP Learning Cobol - 85
www.acmsap.es.tl Telfono 983 11 12 84

- Consultas: Nos permite acceder a uno o varios registros con la intencin de
visualizar el contenido de sus campos en pantalla o impresora en forma de
listados ordenados siguiendo criterios de clasificacin establecidos por el usuario.

1.2. Clasificacin de Ficheros.
Podemos hacer mltiples clasificaciones de los ficheros. Vamos a ver algunas de
las ms universales e importantes:

1.2.1.- FICHEROS PERMANENTES: son aquellos cuyos registros sufren pocas
alteraciones o variaciones a lo largo del tiempo y contienen informacin muy
valiosa para el buen funcionamiento de la aplicacin.

- Ficheros Histricos: contienen informacin acumulada a lo largo del tiempo
sobre las actualizaciones sufridas en los ficheros maestros y constantes. Por
ejemplo, el fichero de personal de la empresa del que guardaremos una versin al
final de cada ao, o el inventario al final de ao de las existencias de un almacn.

- Ficheros Maestros o de situacin: son los encargados de mantener
constantemente actualizados los campos cuya informacin es variable. Por
ejemplo, el fichero de personal de la empresa que da a da u hora a hora vamos
actualizando con las modificaciones que se van dando, o de un fichero de
inventario con informacin sobre la cantidad de piezas existentes en el almacn en
cada momento.

- Ficheros Constantes: contiene informacin fija y necesaria para el
funcionamiento de la aplicacin e informacin con un bajo ndice de variacin en el
tiempo. Por ejemplo un fichero de cdigos postales en el que se relacionen
cdigos postales con diversas poblaciones y distritos, o el fichero con los cdigos
de departamentos existentes en la empresa.

ACMSAP - ERP Learning Cobol - 86
www.acmsap.es.tl Telfono 983 11 12 84

1.2.2.- FICHEROS TEMPORALES:

- Ficheros de movimiento o transaccin: este tipo de ficheros suele contener
informacin necesaria para la actualizacin de los ficheros maestros. Aqu se debe
poner, los registros que se desean dar de alta en los ficheros maestros, los
registros que se quieren modificar y a qu campos afecta y los registros que se
quieren dar de baja en los ficheros maestros.
- De maniobra o transitorios: son verdaderos ficheros auxiliares creados durante
la ejecucin de
programas o aplicaciones con el fin de obtener cierta informacin que
posteriormente ser procesada para conseguir unos resultados. Son ficheros que
se crean temporalmente para un proceso, una vez que este proceso ha finalizado,
este fichero deja de tener valor y se puede borrar del sistema.

1.3.- Esquemas bsicos de ACTUALIZACIN de un fichero MAESTRO a partir
de otro fichero de TRANSACCIONES.
Los esquemas ms elementales de actualizacin o de consulta de un fichero
maestro en un enfrentamiento son los siguientes:



ACMSAP - ERP Learning Cobol - 87
www.acmsap.es.tl Telfono 983 11 12 84
Para poder realizar un enfrentamiento de ficheros deben tener las siguientes
caractersticas:

Caractersticas de los campos de enfrentamiento:

- Los registros de ambos ficheros secuenciales de entrada estn clasificados
segn el mismo criterio (por ejemplo en ascendente).
- y se enfrentan por uno o varios campos de control (que llamaremos campos
de enfrentamiento).
- Y los campos de enfrentamiento deben ser el mismo o los mismos (en caso de
ser varios) para los dos ficheros a enfrentar.

Situaciones posibles de proceso que se pueden dar en un enfrentamiento:
Cuando estamos realizando un enfrentamiento de ficheros tendremos que haber
ledo un registro de cada uno de los ficheros y despus se analiza el contenido de
los campos claves de los dos ficheros.

A partir de este contenido se pueden dar nicamente las tres situaciones
siguientes:

- QUE LA CLAVE DE ENFRENTAMIENTO DEL MAESTRO SEA MAYOR QUE
LA DE CONSULTAS O MOVIMIENTOS.
- QUE LA CLAVE DE ENFRENTAMIENTO DEL MAESTRO SEA MENOR QUE
LA DE CONSULTAS O MOVIMIENTOS.
- QUE LA CLAVE DE ENFRENTAMIENTO DEL MAESTRO SEA IGUAL QUE LA
DE CONSULTAS O MOVIMIENTOS.

Y en funcin de estas tres situaciones posibles se monta el pseudocdigo bsico
de un enfrentamiento de ficheros que reflejamos a continuacin:

ACMSAP - ERP Learning Cobol - 88
www.acmsap.es.tl Telfono 983 11 12 84


En los procesos maestro-y-movimientos-iguales, maestro-mayor, y maestro-
menor se pondrn las instrucciones oportunas en funcin de las particularidades
del programa que estemos diseando, pero el esquema universal vlido para
montar la lnea principal puede ser siempre ste.
Siempre en estas repetitivas se termina leyendo del fichero con clave menor y de
los dos si estamos en la situacin de iguales.



ACMSAP - ERP Learning Cobol - 89
www.acmsap.es.tl Telfono 983 11 12 84
Proceso enfrentamiento (formato2) con instruccin CASE del lenguaje
COBOL II



En los procesos maestro-y-movimientos-iguales, maestro-mayor, y maestro-
menor se pondrn las instrucciones oportunas en funcin de las particularidades
del programa que estemos diseando, pero el esquema universal vlido para
montar la lnea principal puede ser siempre ste.
Siempre en estas repetitivas se termina leyendo del fichero con clave menor y de
los dos si estamos en la situacin de iguales.
ACMSAP - ERP Learning Cobol - 90
www.acmsap.es.tl Telfono 983 11 12 84












FUNCIONES Y
PROCEDIMIENTOS
ACMSAP - ERP Learning Cobol - 91
www.acmsap.es.tl Telfono 983 11 12 84
1. Teora y Funciones con Funciones y Procedimientos

Funciones y Procedimientos

A lo largo ste te mostraremos diferentes clculos que puedes realizar con los
distintos lenguajes de programacin

- Funcin de cada mdulo
- Realizar una operacin independiente de los restantes desde el punto de
vista funcional, pero este puede estar relacionado con otros procedimientos
y funciones para el intercambio de valores de variables.
- Cualquier algoritmo se puede transformar en un procedimiento para ser
utilizado dentro de otro algoritmo mayor.


Parmetros Formales Actuales.



Entre los procedimientos, funciones y su entorno se producen una relacin en
base a un intercambio de valores de las variables.



ACMSAP - ERP Learning Cobol - 92
www.acmsap.es.tl Telfono 983 11 12 84
Variables Globales y Locales
La Variable global es aquella que puede ser utilizada (leda, modificada, etc.) a lo
largo de todo el algoritmo principal y tambin por cualquiera de los sub-algoritmos
(entindase funciones y procedimientos) que componen el algoritmo en s.

Variable local
Aquella que slo puede ser referenciada dentro del sub-algoritmo en el cual
ha sido Declarada.

Funciones y mbitos de las Variables
Para ver las funciones y el mbito de las variables presiona cada botn

Funciones:







ACMSAP - ERP Learning Cobol - 93
www.acmsap.es.tl Telfono 983 11 12 84
mbito de las Variables.















ACMSAP - ERP Learning Cobol - 94
www.acmsap.es.tl Telfono 983 11 12 84
Funciones y Procedimientos. Representacin Grafica




ACMSAP - ERP Learning Cobol - 95
www.acmsap.es.tl Telfono 983 11 12 84
Llamadas a Procedimientos
A travs del esquema siguiente podr ver como se realizan las llamadas a
procedimientos.














ACMSAP - ERP Learning Cobol - 96
www.acmsap.es.tl Telfono 983 11 12 84
Esquema Bsico de llamadas a Procedimientos
Ahora veremos el esquema bsico de llamadas a procedimientos.


Suma de dos nmeros. Mtodos














ACMSAP - ERP Learning Cobol - 97
www.acmsap.es.tl Telfono 983 11 12 84
METODO 1)

Sin necesidad de procedimientos. Todo en el programa principal










ACMSAP - ERP Learning Cobol - 98
www.acmsap.es.tl Telfono 983 11 12 84
METODO 2)
Usando variables GLOBALES dentro del procedimiento.









ACMSAP - ERP Learning Cobol - 99
www.acmsap.es.tl Telfono 983 11 12 84
METODO 3)
Usando variables LOCALES dentro del procedimiento..









ACMSAP - ERP Learning Cobol - 100
www.acmsap.es.tl Telfono 983 11 12 84
METODO 4)
Pasndole los valores de las variables GLOBALES al procedimiento y
ejecutndose dentro del mismo con variables LOCALES.





ACMSAP - ERP Learning Cobol - 101
www.acmsap.es.tl Telfono 983 11 12 84
METODO 5)
Pasndole los valores de las variables GLOBALES a la Funcin y ejecutndose el
proceso dentro de la misma con variables LOCALES y una vez ejecutado se
devuelve el resultado al mdulo principal .



ACMSAP - ERP Learning Cobol - 102
www.acmsap.es.tl Telfono 983 11 12 84


ACMSAP - ERP Learning Cobol - 103
www.acmsap.es.tl Telfono 983 11 12 84
METODO 6)
Pasndole los valores de las variables GLOBALES a la Funcin y ejecutndose el
proceso dentro de la misma con variables LOCALES y una vez ejecutado se
devuelve el resultado al mdulo principal .



ACMSAP - ERP Learning Cobol - 104
www.acmsap.es.tl Telfono 983 11 12 84
Anexo Tablas y Procedimiento Versin 1
Estudia el siguiente pseudocdigo y elige las salidas correctas del procedimiento:



POSIBLES SOLUCIONES:
a)2, 4, 6, 8, 10, 12, 14, 16, 18, 20
b)4, 6, 12, 16, 21, 27, 34, 42, 51, 61
c)1, 2, 3, 4, 5, 6, 7, 8, 9, 10
d)10, 9, 8, 7, 6, 5, 4, 3, 2, 1

ACMSAP - ERP Learning Cobol - 105
www.acmsap.es.tl Telfono 983 11 12 84






FUNDAMENTOS DE
FICHEROS VSAM Y
MANDATOS DEL AMS
ACMSAP - ERP Learning Cobol - 106
www.acmsap.es.tl Telfono 983 11 12 84
Definicin

El IDCAMS es una utilera para gestionar archivos VSAM (Virtual Storage Access
Method), aunque tambin puede ser usada para archivos secuenciales.

Sus funciones principales son:
- Definir y borrar un archivo VSAM
- Copiar de un archivo a otro
- Construir ndices alternativos
- Listar catlogos
- Imprimir archivos
- Transferir archivos de un sistema a otro

Un VSAM es un mtodo de acceso a los datos almacenados en un dispositivo de
acceso directo
Se llaman archivos VSAM aquellos que son accedidos de acuerdo con lo descrito
anteriormente.

Tipos de VSAM
Los archivos VSAM pueden clasificarse de la siguiente forma:

ESDS
Los registros son almacenados y recuperados en el mismo orden en el que se
graban

KSDS
Los registros se recuperan en el orden de un campo definido como clave. Son los
ms usados.

RRDS
Los registros se almacenan en el orden dado por un nmero de secuencia.
ACMSAP - ERP Learning Cobol - 107
www.acmsap.es.tl Telfono 983 11 12 84
Archivos ESDS

Los archivos ESDS (Entry Sequenced Data Storage) tienen las siguientes
caractersticas:
- No tienen ndices ni claves
- Los registros se aaden al final del archivo
- Slo pueden ser accedidos en forma secuencial
- Son similares a los archivos secuenciales, pero no pueden grabarse en cinta

Archivos KSDS

Los archivos KSDS (Key Sequenced Data Storage) tienen las siguientes
caractersticas:
- Necesitan una clave, que debe ser nica, para identificar el registro.
- La clave se utiliza para insertar el registro en el archivo y recuperarlo despus.
- Admite claves alternativas (secundarias), no nicas
- Admite acceso directo (por clave) o secuencial

Archivos RRDS

Los archivos RRDS (Relative Record Data Storage) tienen las siguientes
caractersticas:
- No tienen ndices ni claves.
- Los registros se aaden segn un nmero asignado de 1 a n, siendo n el nmero
mximo de registros del archivo.
- Este nmero puede ser asignado por el programa del usuario o por el sistema.
- Admite acceso directo (por nmero) o secuencial.




ACMSAP - ERP Learning Cobol - 108
www.acmsap.es.tl Telfono 983 11 12 84
Codificacin
//stepname EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
...
...
/*
- Debe codificarse despus de la sentencia EXEC como PGM=IDCAMS
- En SYSPRINT se encuentran los mensajes de salida del programa
- SYSIN muestra la codificacin de los mandatos

Creacin de un archivo VSAM

//DEFINIR EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(ACCEN.MASTER.EMPL)
REC(500 50)-
RECSZ(25 50)-
KEYS(10 0)-
VOLUME(DIR003)-
SHR(2 3)-
INDEXED -
DATA(NAME(ACCEN.MASTER.EMPL.DATA)
INDEX(NAME(ACCEN.MASTER.EMPL.INDEX))
/*
En algunas instalaciones la definicin de archivos VSAM es realizada por el
departamento de administracin de bases de datos
- El archivo es definido como un Cluster (DEFINE CLUSTER)
- Un CLUSTER en archivos KSDS, se encuentra formado por dos componentes:
uno de los ndices (INDEX) y otro los datos (DATA)
ACMSAP - ERP Learning Cobol - 109
www.acmsap.es.tl Telfono 983 11 12 84
- Los dems tipos de archivos slo estn formados por datos (DATA)
- El parmetro NAME identifica al archivo en el catlogo.
- El parmetro REC indica el espacio requerido, el cual puede ser especificado en
nmero de registros, tracks cilindros.
- El primer subparmetro indica la extensin primaria al crear el archivo y el
segundo subparmetro indica la extensin secundaria a incrementar.
- El parmetro RECZ indica el tamao del registro.
- El primer subparmetro indica el tamao medio en bytes de los registros y el
segundo subparmetro indica el tamao mximo en bytes de los registros.
- KEYS define la clave de acceso al archivo.
- El primer subparmetro indica el tamao en bytes de la clave y el segundo
subparmetro la posicin relativa a partir del comienzo del registro.
- La primera posicin se codifica como 0.
- El parmetro VOLUME especifica el nombre del disco en el que se va a generar
el archivo.
- El parmetro SHR indica las opciones activas, en caso de que el archivo se
encuentre compartido.
- El primer sub-parmetro indica el nivel de acceso al archivo por una sola
computadora y el segundo se refiere al nivel de acceso en caso de sean varias
computadoras conectadas a travs de una red.

- El parmetro INDEXED indica que el archivo a crear es un KSDS.
- Si este parmetro no es codificado se asume INDEXED.
DATA(NAME(ACCEN.MASTER.EMPL.DATA
- Indica el nombre del archivo donde se almacenaran los datos del archivo.
INDEX(NAME(ACCEN.MASTER.EMPL.INDEX))
- Este parmetro se utiliza para definir el nombre del ndice del archivo.




ACMSAP - ERP Learning Cobol - 110
www.acmsap.es.tl Telfono 983 11 12 84
Borrado de un archivo VSAM
//BORRADO EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE ACCEN.MASTER.EMPL
- El parmetro DELETE permite borrar archivos VSAM.
- Al borrar el CLUSTER se eliminan tambin el DATA y el INDEX que se
encuentran asociados al archivo.
- Esta sintaxis tambin puede ser usada para el borrado de archivos secuenciales
o particionados.

Copia de un archivo VSAM
//DEFINIR EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//file1 DD DSN=...
//file2 DD DSN=...
//SYSIN DD *
REPRO INFILE(file1) -
OUTFILE(file2) -
SKIP(nnn) -
COUNT(nnnn)
/*
- El parmetro REPRO permite:
* Copiar de VSAM a VSAM
* Copiar de secuencial a secuencial
* Convertir de secuencial a VSAM
- Los parmetros INFILE y OUTFILE especifican los archivos de entrada /salida.
- El parmetro SKIP es opcional y es usado cuando se quiere indicar el nmero de
registros que deben saltarse antes de comenzar la copia.
- Otra opcin es utilizar en el caso de estos archivos el parmetro FROMKEY, el
cual indica la clave inicial a partir de la cual se quiere copiar.
ACMSAP - ERP Learning Cobol - 111
www.acmsap.es.tl Telfono 983 11 12 84
FROMKEY ('LOPEZ ')
- El parmetro COUNT indica el nmero de registros que quieren copiarse.
- En vez de este parmetro puede usarse TOKEY, en el cual se puede indicar la
clave final.
TOKEY ('LOPEZ99999')

Impresin de un archivo VSAM
//DEFINIR EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//namefile DD DSN=...
//SYSIN DD *
PRINT INFILE(namefile) -
FROMKEY('LOPEZ ')
CHAR
/*
- El parmetro PRINT permite imprimir tanto archivos VSAM como secuenciales.
- Para limitar el listado se utilizan los mismos parmetros que en REPRO.
- El formato del listado puede ser de tres tipos:
* CHAR Caracteres
* HEX Hexadecimal
* DUMP caracter-Hexadecimal

ACMSAP - ERP Learning Cobol - 112
www.acmsap.es.tl Telfono 983 11 12 84







INSTRUCCIONES DE
ENTRADA/SALIDA
DE FICHEROS
SECUENCIALES
ACMSAP - ERP Learning Cobol - 113
www.acmsap.es.tl Telfono 983 11 12 84
1. INSTRUCCIONES DE ENTRADA/SALIDA

FUNCIN:

Poner en comunicacin al PROGRAMA con los DISPO SITIVOS EXTERNOS
donde estn o estarn almacenados los datos que se desean procesar.

TIPOS DE INSTRUCCIONES DE ENTRADA/SALIDA

Las instrucciones de entrada salida son las siguientes:

MISIN VERBO

* ABRIR FICHEROS > OPEN
* CERRAR FICHEROS > CLOSE
* LEER FICHEROS > READ
* ESCRIBIR REGISTROS > WRITE
* ACEPTAR DATOS > ACCEPT
* VISUALIZAR DATOS > DISPLAY

2. VERBO OPEN

FUNCIN:
Facilita la apertura de los Ficheros, para que posteriormente puedan ser utilizados
en operaciones de Lectura, de Escritura o ambas a la vez.
FORMATO:


ACMSAP - ERP Learning Cobol - 114
www.acmsap.es.tl Telfono 983 11 12 84

OPEN: Verbo de la sentencia.
INPUT: Fichero abierto para leer de l.
OUTPUT: Fichero abierto para grabar en l.
EXTEND: Fichero abierto para grabar en l, a partir del ltimo registro. (El
contenido inicial del fichero se mantiene).
nombre-fichero: Nombre del FICHERO definido en la ENVIRONMENT DIVI SION
en el lugar de nombre-interno.
NOTAS: Cuando se procesa esta sentencia, se verifican las etiquetas de cabecera
del fichero (si INPUT) o se comienzan a grabar (si OUTPUT). Con una sola
sentencia se pueden abrir varios ficheros.

Un fichero NO se puede abrir, si previamente no est cerrado.

3. VERBO CLOSE

FUNCIN:
Cerrar los ficheros previamente abiertos y realizar funciones especficas como
generar etiquetas de FIN de FICHERO.

FORMATO:
CLOSE nombre-fichero1 [, nombre-fichero2].
CLOSE: Verbo de la sentencia.
nombre-fichero1: Nombre de Fichero definido en la ENVIRONMENT DIVISION.
Se pueden cerrar varios ficheros en la misma sentencia.






ACMSAP - ERP Learning Cobol - 115
www.acmsap.es.tl Telfono 983 11 12 84
4. VERBO READ

FUNCIN:
Cada vez que desde un Programa se da una orden de LECTURA, se DISPONE
de un REGISTRO LGICO para su tratamiento.
Existen dos formatos :

1 - LECTURA SECUENCIAL.
2 - LECTURA AL AZAR. (Se tratar ms adelante).

LECTURA SECUENCIAL
Los registros se recuperan SECUENCIALMENTE. Se procesan todos los registros
del fichero, uno detrs de otro, hasta que no queda ningn registro. Hasta que se
llega al fin del fichero.
Esta situacin, se detecta, ya que, se realiza una LECTURA de ms, que no
recupera NINGN REGIS TRO, y entonces, el Sistema Operativo facilita a nuestro
programa la INDICACIN de que se est ya al FINAL DEL FICHERO.


FORMATO DE LECTURA SECUENCIAL
READ nombre-fichero [ INTO n-registro-W ]
AT END sentencia-imperativa-1

[ NOT AT END sentencia-imperativa-2 ].
READ: Verbo de la SENTENCIA.
nombre-fichero: NOMBRE del fichero interno definido en la ENVIRONMENT
DIVISION.
INTO n-registro-W: Opcin para disponer del registro tambin en una zona de
trabajo.
AT END: Condicin que ser verdadera, solamente cuan do se LEA y NO existan
ya REGIS TROS que recuperar.
ACMSAP - ERP Learning Cobol - 116
www.acmsap.es.tl Telfono 983 11 12 84
Sentencia-imperativa-1: Ser el tipo de accin a tomar cuando se ha terminado
de leer todos los registros del FICHERO.
NOT AT END: Condicin que ser verdadera cada vez que se LEA y se haya
recuperado un registro. Es decir, siempre que no se detecte el fin del fichero.
Sentencias-imperativa-2: Ser el tipo de accin a tomar si se recuper un
registro. (De la versin revisa da del COBOL-85).

ACLARACIONES AL RESPECTO.

Recuerda que:

- No se podr ejecutar una sentencia READ si previamente no se abri el fichero
(OPEN).
- Slo se pueden ejecutar sentencias de lectura, (READ) en ficheros abiertos para
entrada de datos hacia el programa (INPUT).
- No se podr ejecutar una sentencia READ una vez detectado el fin del fichero.
- La clusula FILE STATUS puede sustituir a la opcin AT END y NOT AT END. El
valor 00 indica
registro recuperado, el valor 10 indica Fin de Fichero.
- En realidad los registros lgicos se recuperan agrupados en bloques. Es decir,
en registros fsicos. El programa, sin embargo, slo dispone de UN SOLO
REGISTRO LGICO, cada vez que se ejecuta una sentencia READ.









ACMSAP - ERP Learning Cobol - 117
www.acmsap.es.tl Telfono 983 11 12 84
Ejemplo:


5. VERBO WRITE
FUNCIN:
Posibilitar la grabacin o impresin de un registro lgico en un dispositivo de
salida.
EXISTEN DOS FORMATOS LGICOS DE ESCRITURA:
- FORMATO PARA GRABAR EN SOPORTES MAGNTICOS (DISCOS).
- FORMATO PARA IMPRIMIR USANDO LA IMPRESORA (PAPEL).
5.1 FORMATO PARA GRABAR EN SOPORTES MAGNTICOS
WRITE n-registro [ FROM n-registro-W ]
Cada nuevo registro, se grabar, justamente detrs del anterior.
5.2 FORMATOS DE IMPRESIN
Estos formatos se utilizan para facilitar la IMPRESION de registros (lneas), los
cuales, posteriormente van destinados a PAPEL.
Existen bastantes opciones de impresin. A continuacin, se describen las ms
frecuentes.

ACMSAP - ERP Learning Cobol - 118
www.acmsap.es.tl Telfono 983 11 12 84
5.3 OPCIN WRITE ... AFTER ADVANCING


AFTER: Escribir el registro, pero antes de imprimir saltar una pgina, o las
lneas que indique n-campo o el valor numrico entero.

BEFORE: Escribir el registro, pero despus de imprimir salta el nmero de
lneas que se indique o comenzar en pgina nueva, en funcin de lo que se
indique.

5.4 OPCIN WRITE ... AFTER POSITIONING



WRITE: Verbo de la sentencia.
Nombre-registro: Definido en la FD correspondiente.
FROM: Como en Formatos anteriores.
AFTER POSITIONING: Imprimir despus de posicionarse el carro de la
impresora.
ACMSAP - ERP Learning Cobol - 119
www.acmsap.es.tl Telfono 983 11 12 84
Campo-salto entero: El carro de la impresora se posicionar despus de
averiguar el nmero de lneas que ha de saltar antes de imprimir. Esto se indica en
nombre-campo o mediante un literal numrico entero.
Nombre-campo tambin es conocido como campo-salto.

* Los distintos contenidos y significados que puede soportar campo-salto son:
b (blancos) Espaciado sencillo.
0 (cero) Doble espaciado.
- (guin) Triple espaciado.
+ (ms) NO espaciado.
1-9 Salto a canal 1 a 9.
A,B,C Salto a canal 10 a 12.
* Posibles valores y significados de entero:
0 Salto a canal 1.
1 Espaciado sencillo.
2 Doble espaciado.
3 Triple espaciado.

NOTAS: Ser posible codificar cualquiera de las opciones POSITIONING, o
ADVANCING en funcin del compilador y del entorno donde se vayan a ejecutar
los programas.

En un mismo programa, no esta permitido mezclar los dos formatos de
impresin.

ACMSAP - ERP Learning Cobol - 120
www.acmsap.es.tl Telfono 983 11 12 84












INSTRUCCIONES DE
ORGANIZACIN Y
CONTROL
ACMSAP - ERP Learning Cobol - 121
www.acmsap.es.tl Telfono 983 11 12 84
1. INSTRUCCIONES DE ORGANIZACIN Y CONTROL

FUNCIN:

Se agrupan aqu, aquellos VERBOS, que FACILITAN AJ USTAR LAS
DECLARACIO NES COBOL a la LGICA ESPECFICA de un PROGRAMA
CONCRETO.
Estos verbos permiten variar el orden de ejecucin SECUENCIAL de las
instrucciones (por el ordenador);
pudindose transferir el control a cualquier parte del programa, que el
programador considere necesario. Los verbos que permiten controlar la
ejecucin secuencial de instrucciones son:

- IF
- PERFORM
- EVALUATE
- STOP RUN

Funcin especfica de cada verbo:

IF : Se emplea para el desarrollo de ESTRUCTURAS de tipo alternativo.

PERFORM : Este verbo, provoca un desvo o salto con retorno a otro punto del
Programa.
Se usa para el desarrollo de rutinas. Es decir para agrupar funciones.
(INVOCACIONES de Pseudocdigo). Tambin, para desarrollar ESTRUCTURAS
de tipo repetitivo.

EVALUATE : Implementacin de la estructura DO CASE del pseudocdigo.
Facilita la codificacin de alternativas mltiples, evitndonos mltiples IF
anidados.
ACMSAP - ERP Learning Cobol - 122
www.acmsap.es.tl Telfono 983 11 12 84

STOP RUN: Indica FIN de programa. El programa deja de ejecutarse y se
devuelve el Control nuevamente al Sistema Operativo.


2. VERBO IF
El verbo IF permite analizar una condicin, y en funcin del resultado obtenido,
ejecutar selectivamente una o ms declaraciones. Permite alterar el orden de
ejecucin secuencial.
FORMATO:




El formato del IF se lee o interpreta como sigue:

Si (IF) se cumple la condicin entonces (THEN) ejectense las declaracio nes que
siguen a THEN ( y sltense las declaraciones que siguen al ELSE), sino (ELSE),
ejectense las declaraciones que siguen al ELSE.
ACMSAP - ERP Learning Cobol - 123
www.acmsap.es.tl Telfono 983 11 12 84

El punto delimita el alcance de la sentencia y a partir de la revisin del 85 es
posible usar la palabra ENDIF.

CONTINUE ordena saltar a la siguiente instruccin despus del IF. NEXT
SENTENCE obliga a saltar a la siguiente sentencia, es decir, saltar TODO hasta el
prximo punto. Su uso, facilita la codificacin de las condiciones en afirmativo o
negativo, segn convenga. Estas clusulas se codificaran, si se considerara
oportuno, en la parte del IF que no contenga ninguna declaracin.
Si se codifican varios IF ANIDADOS, slo debe de haber un punto al final de
todos ellos.








ACMSAP - ERP Learning Cobol - 124
www.acmsap.es.tl Telfono 983 11 12 84
EXPLICACIN DE LOS EJEMPLOS:

(1) Si la respuesta es S; es decir si se cumple la CONDICIN, se ejecutan las
declaraciones que siguen de inmediato a la CONDICIN hasta el primer punto.
(Parte THEN DEL IF).
En caso contrario, se ejecutan nicamente las declaraciones que siguen al primer
punto. (Parte ELSE del IF).

(2) Si la respuesta es SI, es decir si se cumple la condicin, se ejecutan las
declaraciones que estn ANTES del ELSE. En caso contrario se ejecutan las
declaraciones que siguen al ELSE hasta el punto primero. En cualquiera de los 2
casos seguir despus de este punto.

OPCIN END-IF
La implementacin del END-IF, de la versin del 85, resuelve la debilidad de la
versin anterior, ya que el uso de este recurso, facilita considerable mente la
codificacin de IF ANIDADOS; haciendo posible transcribir literalmente el diseo
del programa reflejado por el pseudocdigo al lenguaje COBOL. El mbito de cada
IF acaba en su END-IF correspondiente.
Ejemplo:


ACMSAP - ERP Learning Cobol - 125
www.acmsap.es.tl Telfono 983 11 12 84

2.1 CONDICIONES SIMPLES Y TIPOS DE COMPARACIONES.
Los operadores de las condiciones simples pueden ser:
- De RELACION
- De SIGNO
- Y de CLASE
(Los cuales se correlacionan con las condiciones de relacin, de signo y de clase,
respectiva mente).

2.2 CONDICIONES DE RELACIN
Comprueba si el operando-1 es mayor, igual o menor que el operando-2.
FORMATO SIMPLIFICADO:
IF operando-1 OPERADOR operando-2



ACMSAP - ERP Learning Cobol - 126
www.acmsap.es.tl Telfono 983 11 12 84
2.3 FORMATO COMPLETO PARA CONDICIONES RELACIONALES:


El tipo de comparacin que realizar el ordenador depender de la forma en que
estn definidos los operandos a comparar.
Si ambos son numricos, la comparacin ser numrica.
Si son alfanumricos, la comparacin ser alfanumrica.
2.4 COMPARACIONES NUMRICAS
Se realizan algebraicamente de IZQUIERDA a DERECHA. Se igualan
internamente las longitudes de los dos operandos. Cuando se encuentra un
nmero que est en contra de lo preguntado, es decir, cuando se confirma que la
condicin NO se cumple, se para la comparacin y se pasa a ejecutar el bloque
ELSE. Si se llega al final de la comparacin, y la condicin se cumple, se ejecuta
el bloque THEN. Los operandos sin signo son considerados positivos.

2.5 COMPARACIONES NO NUMRICAS
Se realizan de IZQUIERDA a DERECHA carcter a carcter. Si son de longitudes
distintas, el campo ms pequeo es expandido internamente en un campo de
trabajo que se crea el ordenador y se rellena con blancos.

La comparacin se realiza, atenindose al orden de jerar qua (mayor/menor)
preestablecido por el CDIGO usado por el ordenador para la representacin
interna de los caracteres (EBCDI C ASCII).


ACMSAP - ERP Learning Cobol - 127
www.acmsap.es.tl Telfono 983 11 12 84
2.6 CONDICIONES DE SIGNO
Comprueba si el operando-1 es positivo, cero o negativo. El operan do-1 ser un
campo o una expresin aritmtica.
Es un caso particular de las condiciones de relacin en el que el segundo
operando es cero.



El COBOL permite simplificar este tipo de condiciones, dado que:
- GREATER THAN 0 es lo mismo que POSITIVE
- LESS THAN 0 es lo mismo que NEGATIVE
- EQUAL TO 0 es lo mismo que ZERO
* Por tanto, puede suprimirse el operador, quedando, en definitiva, la condicin
como sigue:
FORMATO-2 :


2.7 CONDICIONES DE CLASE
Comprueba si el operando-1 es ALFABTICO (A a Z y espacio) o NUMRICO
(caracteres numricos de 0 al 9 adems del signo apropiado). El operando-1
ser un nombre de campo.
ACMSAP - ERP Learning Cobol - 128
www.acmsap.es.tl Telfono 983 11 12 84
Es un caso particular de las condiciones de relacin en que el operador es EQUAL
TO y el operando-2 es ALPHABETIC o NUMERIC.
Pero como EQUAL TO ALPHABETIC es lo mismo que ALPHABETIC, y EQUAL
TO NUMERIC es lo mismo que NUMERIC, se suprime el operador y en definitiva
la condicin, se codificar como sigue:
FORMATO :


NUMERIC: Para campos numricos y alfanumricos.
ALPHABETIC: Para campos alfabticos y alfanumricos.
ALPHABETIC-LOWER: Para detectar si nombre-campo tiene un contenido
alfabtico en minsculas.
ALPHABETIC-UPPER: Para detectar si nombre-campo tiene su contenido
alfabtico en maysculas.

2.8 ESQUEMA COMPARACIONES PERMITIDAS

ACMSAP - ERP Learning Cobol - 129
www.acmsap.es.tl Telfono 983 11 12 84

NN: Comparacin No Numrica, se realiza de izquierda a derecha en funcin del
cdigo EBCDIC.
CN: Comparacin Numrica.
(1) Permitido si son valores numricos enteros.
*: Error de compilacin.

2.9 CONDICIONES COMPUESTAS
Son series de dos o ms CONDICIONES DE RELACIN conectadas lgicamente
mediante los operadores lgicos AND y OR.
FORMATO SIMPLIFICADO:


IF: Verbo de la sentencia.
Cond-simple: Condiciones de relacin de cualquier tipo.
AND: Operador lgico o funtor PRODUCTO.
Todas las condiciones simples han de ser verdaderas para que la compues ta
tambin lo sea. Slo en tal caso se ejecuta la parte THEN del IF.
1 * 1 * 1 * 1 = 1 1 * 0 * 1 * 1 = 0
OR: Operador lgico o SUMA.
Basta con que una condicin sea cierta para que la condicin compuesta tambin
lo sea. En tal caso se ejecutarn las declaraciones de la parte THEN.
0 + 0 + 1 + 0 = 1 0 + 0 + 0 + 0 = 0





ACMSAP - ERP Learning Cobol - 130
www.acmsap.es.tl Telfono 983 11 12 84
FORMATO AMPLIADO:
POSICION DE OBJ ETOS, OPERADORES Y OBJ ETOS DE LA COMPARACIN

Si el operador relacional es EL MISMO en dos condiciones simples de una
condicin compuesta, se puede omitir la codificacin de dicho operador
relacional, ya que si no aparece un operador el compilador asume que es el
mismo operador relacional que aparece en la condicin simple anterior.
Si el sujeto es el mismo en varias relaciones simples de una compuesta, tambin
se puede omitir su codificacin, ya que, es lo que el compilador supone por
defecto.
La codificacin de SUJ ETO-1 y el primer operador relacional siempre es
obligatorio reflejarlos, aunque los siguientes se asuman por defecto. El objeto de
la comparacin, tambin debe de escribirse siempre.

ACMSAP - ERP Learning Cobol - 131
www.acmsap.es.tl Telfono 983 11 12 84


2.10 ORDEN DE EVALUACIN DE CONDICIONES
1. PARNTESIS (Si varios niveles, de dentro hacia fuera).
2. Operadores de RELACIN.
3. Operador lgico NOT.
4. Operador lgico AND.
5. Operador lgico OR.
6. A IGUALDAD de operadores, de izquierda a derecha.

2.11 CODIFICACIN DE CONDICIONES Y LEYES DE MORGAN
El operador lgico NOT, se usa para negar una condicin simple (de relacin, de
clase o de nombre de condicin), o una condicin compuesta.
El operador lgico NOT se puede codificar delante de la condicin completa
encerrada entre parntesis.
As pues:
A OR B es lo contrario de NOT (A OR B) y viceversa
C AND D es lo contrario de NOT (C AND D) y viceversa
NOT A AND NOT B es lo contrario de NOT (NOT A AND NOT B)
NOT C OR D es lo contrario de NOT (NOT C OR D)


ACMSAP - ERP Learning Cobol - 132
www.acmsap.es.tl Telfono 983 11 12 84
Una condicin compuesta puede simplificarse aplicando las ya conocidas LEYES
DE MORGAN. Si se aplican las LEYES DE MORGAN, para simplificar las
condiciones de la parte de la derecha del ejemplo de arriba.

Estas quedaran como sigue:
NOT (A OR B) es igual que NOT A AND NOT B
NOT (C AND D) es igual que NOT C OR NOT D
NOT (NOT A AND NOT B) es igual que A OR B
NOT (NOT C OR D) es igual que C AND NOT D
Si se prefiere, una condicin puede negarse directamente aplicando las LEYES
DE MORGAN. En tal caso:
A OR B es lo contrario de NOT A AND NOT B
C AND D es lo contrario de NOT C OR NOT D
NOT A AND NOT B es lo contrario de A OR B
NOT C OR D es lo contrario de C AND NOT D
NOTA: Es importante recordar, que un IF con una condicin en afirmativo, produce
exactamente el mismo efecto, si se niega dicha condicin y a la vez, se
intercambian las declaraciones de la parte THEN por las de las de la parte ELSE
entre s.
EJ EMPLO:


ACMSAP - ERP Learning Cobol - 133
www.acmsap.es.tl Telfono 983 11 12 84

3.- VERBO PERFORM
FUNCIN:
INVOCAR a un conjunto de instrucciones localizadas a continuacin de un
nombre de prrafo, un grupo de prrafos o secciones y que se ejecuten tantas
veces como creamos necesario.
Despus de ejecutar la o las sentencias que contiene el prrafo llamado, se
contina la ejecucin del programa, a partir de la instruccin codificada justamente
detrs de la invocacin.
PERFORM permite variar el orden secuencial de instrucciones, provocando un
salto con retorno. Este verbo, es altamente flexible y se puede presentar con
varios formatos.

ELEMENTOS BSICOS DE LOS FORMATOS DE ESTA DECLARACIN:

CDIGO OPERACIN: PERFORM (Ejecutar).
OPERANDO: Nombre-de-PARRAFO.

3.1 FORMATO 1: PERFORM BSICO.
PERFORM nombre-prrafo

Bifurcar a nombre-prrafo, se ejecutarn todas las DECLARACIONES que
pertenecen a nombre-prrafo, y retornar a la DECLARACION siguiente a
PERFORM.


ACMSAP - ERP Learning Cobol - 134
www.acmsap.es.tl Telfono 983 11 12 84


3.2 FORMATO 2: PERFORM ... THRU
PERFORM nombre-prrafo-1 THRU nombre-prrafo-2.

Se bifurca a nombre-prrafo-1, se realizan todas las declaraciones que le siguen
hasta nombre-prrafo-2, inclusive.
Entre nombre-prrafo-1 y nombre-prrafo-2, puede haber mltiples prrafos; los
cuales tambin se ejecutarn.


ACMSAP - ERP Learning Cobol - 135
www.acmsap.es.tl Telfono 983 11 12 84
Su uso es mayor o menor, en funcin de las normativas de los Centros de Clculo.
Veamos algunos ejemplos, basados en el ejemplo anterior.



3.3 FORMATO 3: PERFORM ... TIMES



Ejecutar un nombre-prrafo o varios, tantas veces, como indique un nmero
entero o el contenido de un campo.

ACMSAP - ERP Learning Cobol - 136
www.acmsap.es.tl Telfono 983 11 12 84


3.4 FORMATO 4: PERFORM ... UNTIL
PERFORM nombre-parrafo [ THRU nombre-prrafo-2]
UNTIL condicin.

Ejecutar un nombre-prrafo o varios, hasta que se cumpla la condicin
expresada.
El PERFORM UNTIL, primero evala la condicin, y si NO se cumple, ejecuta
las instrucciones que forman el prrafo. Si la condicin se cumple, considera el
PERFORM concluido, y pasa a la siguiente instruccin que le sigue.
Como se puede observar, es la implementacin del DO WHILE del
PSEUDOCDIGO.


ACMSAP - ERP Learning Cobol - 137
www.acmsap.es.tl Telfono 983 11 12 84
Ejemplo:



3.5 FORMATO 6: PERFORM EN LNEA


No hace referencia a ningn prrafo.
Se puede codificar, si se desea, una condicin para repetir ese proceso un nmero
determinado de veces.
Las instrucciones a ejecutar, estarn situadas directamente debajo de la misma
instruccin PERFORM.
Se ejecutan las instrucciones que existan hasta END-PERFORM.
Este formato, permite la codificacin del programa COBOL, prcticamente igual,
que el diseo del programa en PSEUDOCDIGO.
ACMSAP - ERP Learning Cobol - 138
www.acmsap.es.tl Telfono 983 11 12 84


3.6 SEUDO-INSTRUCCIN EXIT
FUNCIN:
Seudo-declaracin que facilita la ENTRADA a un nombre-de-prrafo sin que se
ejecute ninguna DECLARACIN.
Se suele codificar para evitar que se pueda solicitar la ejecucin de un prrafo
vaco.
CARACTERSTICAS:
nica declaracin del nombre-de-prrafo.
FORMATO:
nombre-de-prrafo.
EXIT.

ACMSAP - ERP Learning Cobol - 139
www.acmsap.es.tl Telfono 983 11 12 84

4. VERBO EVALUATE
FUNCIN:
Permitir la implementacin de alternativas mltiples.
Es la instruccin equivalente en COBOL a la Estructura DO CASE del
pseudocdigo. Se suele usar, cuando se desea evitar la codificacin de IF
anidados.
Esta instruccin tiene una gran cantidad de opciones; para facilitar su
comprensin, se opta por la representacin del formato bsico.
FORMATO:


Identificador-1: Es el campo o nombre de condicin, cuyo valor se pretende
evaluar.
ACMSAP - ERP Learning Cobol - 140
www.acmsap.es.tl Telfono 983 11 12 84
TRUE o FALSE: Con TRUE se evala cul es la primera condicin que se
cumple, y con FALSE la primera que es falsa.
Condicin-1: Cualquier tipo de condicin. En su lugar se puede poner UN
LITERAL o un NOMBRE DE CAMPO.
ALSO: Se utilizar cuando sea preciso evaluar el valor de ms de un campo.
WHEN: A esta clusula, se asocia la condicin y las sentencias que se ejecutarn,
en caso de que esa condicin se cumpla. Se pondrn tantos WHEN como se
considere necesario.
WHEN OTHER: Opcional (en cualquier otro caso). Indica que hacer en caso de
que ninguna condicin anterior se hubiera cumplido.
END-EVALUATE: Determina donde termina el alcance de la instruccin
EVALUATE. (El punto hara lo mismo).
ACMSAP - ERP Learning Cobol - 141
www.acmsap.es.tl Telfono 983 11 12 84

ACMSAP - ERP Learning Cobol - 142
www.acmsap.es.tl Telfono 983 11 12 84
5. SENTENCIA STOP RUN
FUNCIN: Finalizar la ejecucin del programa.
STOP RUN
STOP: Verbo de la Sentencia.
RUN: El programa termina y retorna el control al sistema.
ACMSAP - ERP Learning Cobol - 143
www.acmsap.es.tl Telfono 983 11 12 84










ERRORES DE EJECUCIN
DE PROGRAMAS COBOL
EN
ENTORNO PC
ACMSAP - ERP Learning Cobol - 144
www.acmsap.es.tl Telfono 983 11 12 84
CDIGO EXPLICACIN DE LOS CDIGOS DE ERROR DE EJECUCIN
de (Run-Time System Error Messages para Microsoft COBOL 3.0)

ERROR
001 Problemas de buffer de memoria.
002 Se quiere leer un fichero cerrado.
003 Errores sucesivos. Se trata de un dispositivo en lugar de un programa.
004 Nombre de archivo inapropiado.
005 Especificacin de dispositivo ilegal.
006 Se esta intentando escribir en un fichero abierto para leer.
007 Espacio insuficiente en el disco de destino.
008 Se esta intentando leer de un fichero abierto para escribir.
009 No ms entradas en el directorio. El path suele estar mal codificado.
010 No se ha dado el nombre de archivo.
012 Se intenta abrir un archivo que ya est abierto.
013 Fichero no encontrado.
014 Demasiados ficheros abiertos. Ver FILES del config.sys.
015 Demasiados ficheros indexados abiertos.
016 Demasiados dispositivos abiertos.
017 Error en registro. Es probable que la longitud sea cero.
018 Se lee solo parte de un registro. Fichero abierto inadecuadamente.
019 Error al regrabar. Se accede o se abre incorrectamente un archivo.
020 Recurso o dispositivo ocupado por otro programa.
021 Se ha dado un nombre de directorio en lugar de un fichero.
022 Modo de acceso no permitido para el open realizado.
023 Modo de acceso no permitido para el close realizado.
024 Error de E/S en disco. Se quiere leer despus de una escritura.
025 Se codifica a un terminal caractersticas que no son de un terminal.
026 Error de E/S en disco. Disco malo.
027 Dispositivo no disponible.
028 No hay espacio sobre el dispositivo.
ACMSAP - ERP Learning Cobol - 145
www.acmsap.es.tl Telfono 983 11 12 84
029 Se intenta borrar un archivo que est abierto.
030 El fichero es de solo lectura. (Es un fichero del sistema).
031 No se tienen autorizaciones sobre el archivo.
032 Demasiados ficheros indexados.
033 Error de E/S fsico.
034 El tipo de apertura es inapropiado.
035 Acceso a un archivo con permisos incorrectos.
036 El fichero no existe.
037 Acceso denegado a ese fichero.
038 El disco no es compatible.
039 El fichero no es compatible.
040 Inicializacin incorrecta del lenguaje.
041 Fichero Indexado daado.
042 Interface de E/S para escritura daado.
043 Informacin incompleta para un archivo indexado.
047 Espacio insuficiente para un archivo indexado.
065 El fichero est bloqueado.
066 Clave de registro duplicada para un archivo indexado.
067 Fichero indexado no abierto.
068 El registro que se quiere leer est bloqueado.
069 Argumento no permitido para un archivo indexado.
070 Demasiados ficheros indexados abiertos.
071 Formato errneo en un fichero indexado.
072 Final de fichero indexado.
073 Registro no encontrado en un fichero indexado.
074 Registro invlido para un archivo indexado.
075 Nombre de fichero demasiado largo.
076 No se puede crear un archivo bloqueado en un directorio indexado.
077 Error en mdulo interno indexado.
078 La descripcin de la clave es ilegal para el fichero indexado.
081 La clave ya existe en el fichero indexado.
ACMSAP - ERP Learning Cobol - 146
www.acmsap.es.tl Telfono 983 11 12 84
100 Operacin no permitida sobre un fichero.
101 Operacin no permitida sobre un fichero indexado.
102 Fichero secuencial: longitud de registro incorrecta o no es secuencial.
104 No se ha dado el nombre de fichero en una operacin sobre ficheros.
105 Error en una direccin de memoria.
106 Error interno o de E/S en un disco o en un fichero.
107 Operacin no implementada sobre este sistema.
108 Fallo al inicializar la Data Division.
109 Se ha alterado la informacin interna del Sistema.
116 No es posible asignar memoria.
117 La secuencia de clasificacin es errnea.
118 Incapaz de cargar un fichero objeto.
119 Incapaz de cargar un fichero objeto porque el punto de entrada es invalido.
120 Fichero objeto incorrecto.
121 Se quiere llamar a un subprograma que no es ejecutable.
122 Se intenta devolver el control de un call/perform por encima de la llamada.
123 Versiones de COBOL incompatibles.
129 Error se intenta acceder a un registro cero en un fichero relativo.
135 El fichero no existe.
138 No se puede abrir un fichero cerrado o bloqueado.
139 Longitud o clave del registro no correcta.
141 El fichero ya est abierto.
142 El fichero no se puede cerrar porque no esta abierto.
143 En un acceso secuencial para rewrite o delete no se ha ledo previamente.
146 La posicin del puntero es incorrecta. El read/start/invalid key fall.
147 El modo de apertura es inadecuado para una read o start.
148 Fichero abierto incorrectamente para realizar una operacin write.
149 Fichero mal abierto para realizar una operacin rewrite/delete.
150 El programa ha sido parado por el usuario.
151 Acceso ramdom para un fichero secuencial.
152 Se quiere hacer un rewrite sobre un fichero que no se ha abierto como I/O.
ACMSAP - ERP Learning Cobol - 147
www.acmsap.es.tl Telfono 983 11 12 84
153 El subndice est fuera de rango.
154 Se ha superado el nivel de anidamiento de un perform.
155 Operacin incorrecta.
156 Demasiados parntesis en una sentencia compute.
157 La memoria es insuficiente porque el fichero objeto es muy grande.
158 Rewrite no permitido en un archivo con organizacin secuencial.
159 Fichero con organizacin LINE SEQUENTIAL incorrecto.
160 Error al cargar un mdulo independiente.
161 Cdigo intermedio no vlido.
162 Divisin por cero. Desbordamiento de memoria.
163 El valor de un campo numrico no es valido para su picture.
164 El subprograma que se est llamando no existe.
165 Versin de COBOL incompatible.
166 Proceso recursivo. Se est llamando a un mdulo activo desde dentro de l.
167 Demasiados elementos a continuacin de USING.
168 El tamao de la pila ha sido sobrepasado.
169 Se intenta ejecutar una operacin invalida.
170 Programa de utilidad del Sistema no encontrado: ADIS, LINK, IXSIO, ...
171 Operacin japonesa no permitida en esta versin.
172 Final de dos perform con la misma direccin de retorno.
173 El fichero no existe en el directorio.
175 Se quiere ejecutar un programa con errores graves de compilacin.
176 Referencia inadecuada de un segmento interno.
177 Intento de cancelar un programa activo.
178 Error al salvar la informacin generada por el programa.
179 Programa no encontrado. Error al ejecutar un chain.
180 Falta la marca de fin de archivo en el fichero.
181 Error. Parmetro invalido.
182 Error. Se intenta leer de la pantalla o escribir en el teclado.
183 Se intenta abrir un archivo secuencial como I/O.
184 Error de E/S. Falta el mdulo ADIS para realizar un ACCEPT o DISPLAY.
ACMSAP - ERP Learning Cobol - 148
www.acmsap.es.tl Telfono 983 11 12 84
187 Path incorrecto. Ficheros no encontrados.
188 Nombre de archivo demasiado largo.
189 Error al cargar un mdulo intermedio.
190 Demasiados argumentos en una CALL.
191 El tipo de terminal no est definido.
192 La configuracin del terminal no tiene la operacin requerida.
193 Se quiere ejecutar un fichero errneo o que no existe.
194 Tamao del fichero demasiado grande.
195 Delete/Write no precedido por un Read.
196 Nmero de registro demasiado grande (ficheros relativos/indexados).
197 El adaptador de video mal configurado.
198 Fallo al cargar un fichero.
199 Error indefinido del sistema.
200 Error lgico interno. El sistema se para.
201 Espacio insuficiente en el disco para paginar el fichero.
202 El cdigo producido en algn preproceso o funcin interna es invalido.
203 Faltan parmetros en la CALL.
206 Se quiere leer datos que no existen de un fichero imagen.
207 Intento de acceder a una mquina que no est conectada.
208 Error en sistema multiusuario.
209 Error de comunicacin en red local.
210 El fichero est bloqueado o est cerrado.
211 Programa ensamblado con una librera errnea.
212 Rutina en ensamblador con formato incorrecto.
213 Demasiados registros bloqueados.
214 Sentencia GO TO/ALTER mal empleadas.
215 Se intenta ANIMAR un programa con mdulos de comunicaciones.
216 No se inicializar el dispositivo de comunicaciones referenciado.
217 Instruccin incompatible en esta versin de COBOL.
218 Fichero MULTIPLE REEL/UNIT mal creado.
219 El nmero de ficheros que pueden compartirse ha sido sobrepasado.
ACMSAP - ERP Learning Cobol - 149
www.acmsap.es.tl Telfono 983 11 12 84
220 Se pretende realizar simultneamente ms de un SORT/MERGE.
221 Error en SORT/MERGE. (Ver status key).
222 Error en SORT/MERGE. (Ver status key).
223 Error en SORT/MERGE. (Ver status key).
254 El programa ha sido cancelado desde teclado mientras se ANIMA el pgm.
FIN

ACMSAP - ERP Learning Cobol - 150
www.acmsap.es.tl Telfono 983 11 12 84
FILE EXPLICACIN DE LOS CDIGOS FILE-STATUS KEY DE FICHEROS
STATUS CLASICOS EN COBOL Y ENTORNO PC

ARCHIVOS SECUENCIALES:

00 OPERACIN CORRECTA. La operacin se ha realizado correctamente.
10 FIN ARCHIVO (AT END). Detectado el fin de fichero. No hay ms registros.
90 OPERACIN INVALIDA. La accin que se desea realizar con un archivo, no
es posible para el modo de apertura efectuado.
91 ARCHIVO NO ABIERTO. La accin que se desea hacer con el fichero, no es
posible ya que dicho fichero esta cerrado.
92 ARCHIVO NO CERRADO. Se quiere abrir un archivo que ya est abierto.
94 APERTURA INVALIDA. Se intenta hacer un open de un archivo que no existe
o no coincide con las caractersticas que se la han especificado.

ARCHIVOS INDEXADOS Y RELATIVOS:
00 OPERACIN CORRECTA. La operacin se ha realizado correctamente.
02 OPERACIN CORRECTA. PERO HAY REGISTROS CON CLAVE
DUPLICADA. Si da al leer, indica que ya existe una clave con ese valor. Si da al
escribir, indica que se ha grabado una clave con un valor idntico a otro ya
existente.
10 FIN ARCHIVO (AT END). Detectado el fin de fichero. No hay ms registros.
22 ERROR VALOR DE CLAVE DUPLICADA. Se intenta grabar un registro con
un valor de clave principal que ya existe en un archivo que no lo admite.
23 NO EXISTE EL REGISTRO QUE SE QUIERE LEER. (Opcin Invalid Key).
90 OPERACIN INVALIDA. La accin que se desea realizar con un archivo, no
es posible para el modo de apertura efectuado. O no se ha ledo antes de hacer
un DELETE o un REWRITE.
91 ARCHIVO NO ABIERTO. La accin que se desea hacer con el fichero, no es
posible ya que dicho fichero esta cerrado.
92 ARCHIVO NO CERRADO. Se quiere abrir un archivo que ya est abierto.
ACMSAP - ERP Learning Cobol - 151
www.acmsap.es.tl Telfono 983 11 12 84
94 APERTURA INVALIDA. Se intenta hacer un open de un archivo que no existe
o no coincide con las caractersticas que se la han especificado.
96 NO SE HA DEFINIDO EL INDICADOR DE REGISTRO ACTUAL. Se est
realizando un READ
y el resultado de la anterior READ o START no se ejecut correctamente.
98 EL NDICE ES INCORRECTO. El contenido del ndice del fichero indexado no
es vlido para la instruccin de E/S que se quiere realizar.

NOTA: La clusula FILE-STATUS nos facilita un medio adicional para
conocer la respuesta dada por el sistema y los mtodos de acceso a los
datos sobre cada una de las instrucciones de E/S que se realizan contra un
archivo (OPEN, READ, WRITE, ...).
El sistema introduce el cdigo de terminacin de cada peticin en una
variable declarada en la working-storage section cada vez que se ejecuta una
instruccin de E/S. Dicho cdigo indica al programa si la instruccin se
ejecut adecuadamente. (Es preferible usar las opciones AT END, NOT AT
END, INVALID KEY, ...).

Cada vez que se compila un programa COBOL si tiene errores se genera un
fichero con el mismo nombre del programa y con extensin .LST con un
formato parecido a ste:

ACMSAP - ERP Learning Cobol - 152
www.acmsap.es.tl Telfono 983 11 12 84



ANIMA.BAT NOMBRE-PROGRAMA (SIN EXTENSIN)

F1 (Help): Ayuda.
F2 (View): Ver pantalla de resultados en MS-DOS, para comprobar los datos
enviados a pantalla desde el programa mientras se est ejecutando.
F5 (Where): El cursor vuelve a la lnea activa de la procedure que se va a
ejecutar. ESC (Escape): Salir del animador comando.
Step : Lnea a lnea de ejecucin, segn tecleamos S.
Go: Ejecuta lnea a lnea automticamente, Para detener pulsar Esc.
Zoom: Ejecuta pgm hasta el final punto de parada.
Reset: Altera secuencia de ejecucin: Cursor-pitin: Ejecuta desde donde est el
cursor.
Next: Ejecuta la siguiente sin ejecutar la anterior.
ACMSAP - ERP Learning Cobol - 153
www.acmsap.es.tl Telfono 983 11 12 84
Start: Comenzar de nuevo (se reinicializan otra vez todas las variables de la
Working).
Quit-perform: Salir del perform sin ejecutarse.
Break: Puntos de parada.
Set: Poner punto de parada donde est el cursor (primera posicin de la lnea).
Unset: Quitar punto de parada donde est el cursor.
Cancel-all: Quitarlos todos.
Examine: Ver todos los puntos de parada.
If: Poner condicin en el punto de parada.
Do: Incluir sentencia y se ejecuta.

Query: Visualizar contenido de campos.
Q+C: Visualiza contenido de la variable sobre la que esta situado el cursor.
Q+R: Visualiza ltimo campo pedido.
Q+Enter-name: Introducir dato a visualizar.
Locate: Visualizar/localizar donde estn definidos los campos en la Data Divisin
o los prrafos/rutinas en la Procedure Divisin.
L+C: Se posiciona automticamente en la variable sobre la esta posicionad el
cursor.
L+E: Introducir (nom-fichero, nom-dato, nom-parrafo) que se quiere localizar.
Do: Ejecuta la sentencia que se teclea, incluyendo y ejecutndose
inmediatamente.









ACMSAP - ERP Learning Cobol - 154
www.acmsap.es.tl Telfono 983 11 12 84
EJ EMPLO DE PROGRAMAS COMPLETOS PARA PROGRAMAS LLAMADOS

PROGRAMA LLAMANTE: SOLICITA EL LITERAL DEL MES EN CURSO Y LE PASO UN
NMERO A TRAVS DEL CONTENIDO DE UN CAMPO

000100 IDENTIFICATION DIVISION.
000200*============
000300
000400 PROGRAM-ID. PEDIRMES.
000500 AUTHOR. PEPITO PREZ.
000600 DATE-COMPILED.
000700 ENVIRONMENT DIVISION.
000800*=====================
000900
001000 CONFIGURATION SECTION.
001100 SOURCE-COMPUTER. IBM-PC.
001200 OBJ ECT-COMPUTER. IBM-PC.
001300 SPECIAL-NAMES.
001400 DECIMAL-POINT IS COMMA.
001500
001600
001700 DATA DIVISION.
001800*==============
001900
002100 WORKING-STORAGE SECTION.
002200*
002300 77 LIT-MES PIC X(12) VALUE CUCUDRULU.
002400 01 FECHA-SYS.
002500 02 AA PIC 99.
002600 02 MM PIC 99.
002700 02 DD PIC 99.
004500 PROCEDURE DIVISION.
004600*===================
004700 ACCEPT FECHA-SYS FROM SYSIN.
004800 CALL DAMEMES USING MM LIT-MES.
004810 DISPLAY EL MES ACTUAL ES : LIT-MES.
004820 STOP RUN.
004900
ACMSAP - ERP Learning Cobol - 155
www.acmsap.es.tl Telfono 983 11 12 84

RECIBE EL CONTENIDO DEL MES A TRAVES DE LOS CAMPOS DE ENLACE DE LA LINKAGE
DEL OTRO PROGRAMA STE DEVUELVE CONTROL AL PROGRAMA LLAMADO PASNDOLE
EL LITERAL DEL MES.

MIRAR LOS CAMPOS DE LA WORKING Y LA LINKAGE.

000100 IDENTIFICATION DIVISION.
000200*============
000400 PROGRAM-ID. DAMEMES.
000500 AUTHOR. PEPITO PREZ.
000600 DATE-COMPILED.
002000 ENVIRONMENT DIVISION.
002100*=====================
002300 CONFIGURATION SECTION.
002400 SOURCE-COMPUTER. IBM-PC.
002500 OBJ ECT-COMPUTER. IBM-PC.
002600 SPECIAL-NAMES.
002700 DECIMAL-POINT IS COMMA.
003700 DATA DIVISION.
003800*==============
005900 WORKING-STORAGE SECTION.
006000*
006100 01 TABLA-MES.
006200 02 FILLER PIC X(12) VALUE ENERO.
006300 02 FILLER PIC X(12) VALUE FEBRERO.
006400 02 FILLER PIC X(12) VALUE MARZO.
006500 02 FILLER PIC X(12) VALUE ABRIL.
006600 02 FILLER PIC X(12) VALUE MAYO.
006700 02 FILLER PIC X(12) VALUE J UNIO.
006710 02 FILLER PIC X(12) VALUE J ULIO.
006720 02 FILLER PIC X(12) VALUE AGOSTO.
006730 02 FILLER PIC X(12) VALUE SEPTIEMBRE.
006740 02 FILLER PIC X(12) VALUE OCTUBRE.
006750 02 FILLER PIC X(12) VALUE NOVIEMBRE.
006760 02 FILLER PIC X(12) VALUE DICIEMBRE.
006770 01 FILLER REDEFINES TABLA-MES.
ACMSAP - ERP Learning Cobol - 156
www.acmsap.es.tl Telfono 983 11 12 84
006780 02 LIT-MES PIC X(12) OCCURS 12.
006790
007500
012100 LINKAGE SECTION.
012120 77 MES-L PIC 99.
012130 77 LIT-MES-L PIC X(12).
012140
012200 PROCEDURE DIVISION USING MES-L LIT-MES-L.
012300*===================
012400 MOVE LIT-MES(MES-L) TO LIT-MES-L.
012500 GOBACK.
012600

ACMSAP - ERP Learning Cobol - 157
www.acmsap.es.tl Telfono 983 11 12 84












PROGRAMACIN
CON TABLAS ARRAYS
ACMSAP - ERP Learning Cobol - 158
www.acmsap.es.tl Telfono 983 11 12 84
1.- CONCEPTOS BSICOS DE TABLAS.
Una de las estructuras de datos ms utilizadas en la programacin son los arrays
o tablas. Tambin se conoce como Vectores (a las tablas o arrays de una
dimensin), como Matrices (a las tablas o arrays de dos dimensiones), como
Poliedros (a las tablas o arrays de tres o ms dimensiones).
Tabla: Estructura de datos constituida por un nmero fijo de elementos, todos
ellos del mismo tipo y ubicados en direcciones de memoria fsicamente contiguas.

CARACTERSTICAS DE UNA TABLA
- ES UNA ESTRUCTURA DE DATOS DEFINIDA EN LA MEMORIA PRINCIPAL
(no es un fichero).
- TIENE UN NOMBRE QUE IDENTIFICA A TODA LA TABLA. PARA ACCEDER A
TODOS LOS ELEMENTOS DE LA TABLA A LA VEZ.
- TODOS Y CADA UNO DE LOS ELEMENTOS DE UNA TABLA TIENEN EL

MISMO NOMBRE.
- TODOS Y CADA UNO DE LOS ELEMENTOS DE UNA TABLA SON DEL
MISMO TIPO Y SU DEFINICIN ES IDENTICA.
- POR ESTO LTIMO, (TODOS LOS ELEMENTOS SE LLAMAN IGUAL) ES
IMPRESCINDIBLE UTILIZAR UN NDICE O APUNTADOR PARA PODER
REFERIRNOS E IDENTIFICAR A CUALQUIER ELEMENTO INDIVIDUALMENTE
- AL ACCEDER AL CONTENIDO DE UNA TABLA, EL NDICE SIEMPRE DEBE
TENER UN VALOR
COMPRENDIDO ENTRE 1 Y EL NMERO MXIMO DE ELEMENTOS QUE
CONTIENE.
Elemento: Cada uno de los datos consecutivos que forman parte de la tabla.
Nombre de la Tabla: Es el identificador usado para referenciar la tabla y de forma
global a todos los elementos que la forman.
Tipo de una Tabla: Marca el tipo de dato bsico que es comn a todos y cada
uno de los elementos o componentes que forman dicha estructura (entero, real,
carcter o lgico).
ACMSAP - ERP Learning Cobol - 159
www.acmsap.es.tl Telfono 983 11 12 84
ndices: Valor numrico entero y positivo a travs del cual podemos acceder
directa e individualmente a los distintos elementos o componentes que la forman,
marca la posicin relativa de cada elemento dentro de la misma.
Tamao de la Tabla: Longitud o nmero mximo de elementos que la forman.
Acceso a los elementos o componentes de una Tabla: Los elementos de una
tabla reciben el mismo trato que cualquier otra variables simple, con un tipo de
datos que coincide con el tipo de la tabla. Para acceder o referenciar a un
elemento en particular es suficiente con indicar el nombre de la tabla seguido del
ndice correspondiente entre parntesis.
Dimensin de la Tabla: Viene definida por el nmero de ndices que necesitamos
para acceder a cualquiera de los elementos que forman su estructura.
DEFINICIN DE UNA TABLA
- Definir una tabla en MEMORIA PRINCIPAL implica establecer:
1. NOMBRE SIMBLICO DE LA TABLA (para referencia global)
2. NMERO DE ELEMENTOS QUE CONTIENE
3. NOMBRE SIMBLICO DEL ELEMENTO (igual para todos).
4. DEFINIR LA ESTRUCTURA DEL ELEMENTO (la misma para todos).
- LOS CAMPOS EN QUE SE SUBDIVIDE.
- LOS ATRIBUTOS Y LONGITUD DE CADA CAMPO.

BENEFICIOS DE LAS TABLAS
- Es muy normal, en programacin, copiar el contenido de ficheros en tablas
cargadas en
memoria Principal. Las ventajas ms importantes que reporta cargar un
fichero en una
tabla para su posterior proceso son:
1. EL ACCESO A LOS DATOS DE UNA TABLA ES RAPIDSIMO EN
COMPARACIN A LOS DATOS EN UN FICHERO.
2. SLO TENEMOS ABIERTO EL FICHERO DURANTE LA CARGA.
DE ESTA FORMA SE PERMITE EL ACCESO AL FICHERO
OTROS USUARIOS y PROCESOS.
ACMSAP - ERP Learning Cobol - 160
www.acmsap.es.tl Telfono 983 11 12 84
2.- CLASIFICACIN DE TABLAS
Segn la estructura del elemento se clasifican en:
- Simples: el elemento no est subdividido en campos.
- Compuestas: el elemento est formado por varios campos.
Segn su dimensin se clasifican en:
- Unidimensionales: Se necesita un ndice para acceder al elemento.
- Bidimensionales: Se necesitan dos ndices para acceder al elemento.
- Tridimensionales: Se necesitan tres ndices para acceder al elemento.
- Multidimensionales: Se mltiples ndices para acceder al elemento.
Segn los valores de los elementos:
- Ordenadas: Sus elementos estn ordenados.
- Desordenadas: Sus elementos estn desordenados.
Segn el nmero de elementos que tienen contenido:
- Completa: Todos los elementos tiene contenido.
- Incompleta: Algunos elementos estn vacos.
2.1.- TABLAS UNIDIMENSIONALES
Tambin se les llama vectores. Los elementos se almacenan en posiciones
contiguas adyacentes en la memoria principal de un ordenador.
Los elementos se almacenan en posiciones contiguas adyacentes en la memoria
principal de un ordenador.
Ejemplos

Otra forma tpica de representarla grficamente una tabla.
Tabla-Numeros contenidos) =>


Acceso individual a los elementos de la tabla:
Es suficiente su nombre seguido de 1 ndice.

ACMSAP - ERP Learning Cobol - 161
www.acmsap.es.tl Telfono 983 11 12 84
Nombre-Elemento(ndice)
Nombre-Tabla(ndice) Vlido en algunos lenguajes, en COBOL no.
Acceso a los elementos de la Tabla-Numeros (un solo ndice):
- Accediendo al elemento Num(1) cogeramos el valor que contiene 8
- Accediendo al elemento Num(2) cogeramos el valor que contiene 14
- Accediendo al elemento Num(3) cogeramos el valor que contiene 26
- Accediendo al elemento Num(4) cogeramos el valor que contiene 38
- Accediendo al elemento Num(5) cogeramos el valor que contiene 110
- Accediendo al elemento Num(6) cogeramos el valor que contiene 212
NOTA: Algunos lenguajes consideran que el primer elemento se direcciona con
valor de ndice 0 (cero) y
otros con valor de ndice 1. PARA NOSOTROS EL VALOR DEL PRIMER NDICE
SER EL VALOR 1.
2.2.- TABLAS UNIDIMENSIONALES COMPUESTAS
Tambin en estas tablas todos los elementos son iguales tanto en tipo como en
nombre. Pero en una tabla compuesta, cada uno de los elementos de la tabla se
subdivide en varios campos distintos, tanto en sus nombres como en sus
definiciones, a los que se puede acceder por su nombre particular y un ndice.
Representacin grfica
Ejemplo 1:


Acceso a sus elementos de la Tabla-Uni-Compuesta-1 (un solo ndice):
- Accediendo a COD(2) cogeramos el valor de esta variable.
- Accediendo a CAN(5) cogeramos el valor de esta variable.
- Accediendo a ELEMEN(4) cogeramos el valor de COD(4) y de CAN(4)
simultneamente.
- OJ O: Los accesos a campos compuestos siempre son gestionados por el
sistema como alfanumrico aunque cada variable individual fuese numrica.
ACMSAP - ERP Learning Cobol - 162
www.acmsap.es.tl Telfono 983 11 12 84


Acceso a sus elementos de la Tabla-Uni-Compuesta-2 (un solo ndice):
- Con SEM-4(1) accedemos al valor de la semana 4 del mes 1.
- Con SEM-1(3) accedemos al valor de la semana 1 del mes 3.
- Con MES(2) accedemos a la vez a las 4 semanas del mes 2.
- OJ O: Los accesos a campos compuestos siempre son gestionados por el
sistema como alfanumrico aunque cada variable individual fuese numrica.

2.3.- TABLAS BIDIMENSIONALES
Cada elemento o alguno de sus campos es, a su vez, una tabla.
Tambin se les llama matrices.
Representacin grfica


Acceso individual a los elementos
Para acceder a uno de los elementos de esta tabla bidiemnsional es necesario
utilizar 2 ndices: el 1 marca la fila, el 2 la columna.
Nombre-tabla (ndice-fila, ndice-columna)

ACMSAP - ERP Learning Cobol - 163
www.acmsap.es.tl Telfono 983 11 12 84

Ejemplo: La tabla se llama NOTAS: 10 COLUMNAS >Alumnos del 1 al 10


4 FILAS >ASIGNATURAS (Matemticas, Fsica, Historia y Filosofa)

Acceso a los elementos de la tabla Notas (dos ndices):
- Accediendo al elemento Notas(4, 2) cogeramos el valor 10
(Nota en Filosofa del alumno 2)
- Accediendo al elemento Notas(3, 8) cogeramos el valor 7
(Nota en Historia del alumno 8)
- Accediendo al elemento Notas(2, 10) cogeramos el valor 1
(Nota en Fsica del alumno 10)
NOTA: Los ndices de fila y de columna nunca deben ser mayores de 4 y 10.
2.4.- EJEMPLO DE TABLAS BIDIMENSIONALES
Es una tabla con informacin de 3 meses y cada mes es una nueva tabla con
informacin de los gastos acumulados de sus 4 semanas.



ACMSAP - ERP Learning Cobol - 164
www.acmsap.es.tl Telfono 983 11 12 84
2.5.- EJEMPLO DE TABLAS TRIDIMENSIONALES:
Es una tabla con informacin sobre 2 artculos. Cada articulo se subdivide en otra tabla
con 3 cdigos y cada cdigo tiene dos precios posibles.


3.- OPERACIONES TPICAS CON TABLAS Y FICHEROS
- Inicializar/ Preparar Tablas
- Cargar una Tabla desde un fichero
- Recorrido o acceso secuencial
- Bsqueda del contenido de un elemento
* En tablas desordenadas (bsqueda secuencial)
* En tablas ordenadas (bsqueda dicotmica)
- Ordenar una tabla

3.1.- EJEMPLO PRCTICO CON TABLAS.
Vamos a desarrollar a continuacin los procesos ms utilizados en programacin con un
ejemplo real con el siguiente organigrama:


ACMSAP - ERP Learning Cobol - 165
www.acmsap.es.tl Telfono 983 11 12 84

El objetivo del programa es cargar parte del fichero de categoras en una tabla en
memoria. El fichero sabemos que est desordenado. De los 25 campos que tiene
el fichero solamente nos interesa cargar la categora, la descripcin y el salario
asociado correspondiente el resto de campos del fichero no nos interesan en este
programa. Sabemos que las categoras son 100 como mximo.
La misin del programa ser cargar una tabla en memoria con la informacin
seleccionada, despus se ordenar la tabla para poder obtener un listado
ordenado de esta informacin de categoras almacenada.
5.3.2.- DATOS DE PARTIDA SIMPLIFICADOS:
Registro de Entrada/Salida:


Diseo del LISTADO de materiales solicitado:




ACMSAP - ERP Learning Cobol - 166
www.acmsap.es.tl Telfono 983 11 12 84
RESTO DE VARIABLES DE TRABAJ O:


EJ EMPLO DE DEFINICIN DE ESTA TABLA EN LENGUAJ E COBOL II:
01 TABLA-CATEGORIAS.
02 ELEM-CATE-T OCCURS 100 TIMES.
03 CAT-T PIC X(06).
03 DES-T PIC X(25).
03 SAL-T PIC S9(10) COMP-3.
ACMSAP - ERP Learning Cobol - 167
www.acmsap.es.tl Telfono 983 11 12 84




ACMSAP - ERP Learning Cobol - 168
www.acmsap.es.tl Telfono 983 11 12 84



ACMSAP - ERP Learning Cobol - 169
www.acmsap.es.tl Telfono 983 11 12 84

ORDENAR LA TABLA: Mtodo sencillo
Con este mtodo en la primera pasada se compara el primer elemento con todos
los dems y, al final de sta, el valor ms pequeo queda en el primer elemento.


En la segunda pasada se compara el segundo elemento con todos los dems y al
final de sta el siguiente valor ms pequeo queda ordenado en el segundo
elemento y as sucesivamente.




ACMSAP - ERP Learning Cobol - 170
www.acmsap.es.tl Telfono 983 11 12 84
VARIABLES NECESARIAS PARA LA ORDENACIN DE LA TABLA










ACMSAP - ERP Learning Cobol - 171
www.acmsap.es.tl Telfono 983 11 12 84

A continuacin est el proceso que recorre secuencialmente todos y cada uno de
los elementos de una tabla para cualquier cosa que se desee realizar con cada
uno de ellos. Por ejemplo IMPRIMIR-TABLA con independencia de que est
ordenada o desordenada es indiferente.


ACMSAP - ERP Learning Cobol - 172
www.acmsap.es.tl Telfono 983 11 12 84











DEFINICIN DE
FICHEROS
ACMSAP - ERP Learning Cobol - 173
www.acmsap.es.tl Telfono 983 11 12 84
1 CARACTERISTICAS DE ENTORNO. ENVIRONMENT DIVISION.
1.1 FUNCIONES:
- Definir, asignar, direccionar y especificar peculiaridades de los ficheros que van a
ser utilizados en el programa.
- Relacionar los nombres lgicos de los archivos, que van a ser utilizados por
el programa.
Con los nombres reales de stos en el dispositivo de almacenamiento.
- Especificar opcionalmente, las caractersticas y tipo del ordenador que se va a
utilizar para compilar y ejecutar el programa.



ACMSAP - ERP Learning Cobol - 174
www.acmsap.es.tl Telfono 983 11 12 84


2 DESCRIPCIN DE SECCIONES
3.2.1 CONFIGURATION SECTION
Descripcin de las caractersticas del ordenador, a nivel de COMEN TARIO.
Ejemplo:
SOURCE-COMPUTER. IBM-9000 IBM-3090
Puede describir tambin el tamao de memoria que ocupar el programa en
palabras, caracteres o mdulos.
Esta opcin no es utilizada en ordenadores de gran capacidad. (Suele referirse a
este tipo de ordenadores como entorno HOST y/o MAIN-FRAME).
En esta Seccin se pueden reasignar funciones.
Ejemplo:
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
En cualquier campo numrico o numrico de edicin, la coma hace funciones de
punto y el punto de coma.
2.2 INPUT-OUTPUT SECTION
Permite enlazar los nombres simblicos de los ficheros, (inventado por el
programador), con los nombres reales de los mismos.
Tambin, para dar la organizacin, el tipo de acceso y otras caractersticas
necesarias, para que todos los archivos puedan ser procesados adecuadamente.
PRRAFO FILE-CONTROL
SELECT nombre-fichero-int ASSIGN TO nombre-externo.
SELECT nombre-fichero-int :
Con la clusula SELECT se definen cada uno de los ficheros del programa.
ASSIGN TO :
Con esta clusula nombre-fichero-int se asocia a un nombre-externo, que ser
el enlace, que permitir localizar el dispositivo de almacenamiento que soporta al
Fichero Real.

ACMSAP - ERP Learning Cobol - 175
www.acmsap.es.tl Telfono 983 11 12 84
nombre-externo :
Nombre real del fichero o nombre de enlace con l.
(Nombre real en entorno PC y nombre de enlace de 1 a 8 caracteres que
aparecer como nombre de la DD en el J CL, si es en el entorno HOST).

3 CONCEPTO DE ORGANIZACIN
La organizacin hace referencia a la forma en que los registros lgicos estn
almacenados, o se van a almacenar, dentro del dispositivo de memoria auxiliar
para ese fichero.
La eleccin de la organizacin de un fichero determina un mayor o menor uso de
recursos del sistema, o una mayor o menor velocidad de procesamiento as como
el tipo de acceso a la hora de procesar los registros.
La organizacin es decidida por el analista en funcin del tamao del fichero y de
la volatilidad y actividad de los registros lgicos.
Para soportar las distintas organizaciones, los sistemas operativos contienen un
conjunto de rutinas especializadas llamadas mtodos de acceso (secuencial,
aleatorio o los dos).
3.1 ORGANIZACIONES STANDARD DE FICHEROS (ANSI)
Son las organizaciones que suelen estar implementadas en todos los compilado
res. (ANSI =AMERICAN NATIONAL STANDARD INSTITUTE).
3.2 ORGANIZACIN SECUENCIAL (SEQUENTIAL)
Los registros lgicos son almacenados unos detrs de otros, por orden de llegada.
Slo se pueden procesar en forma secuencial.
Se pueden colocar en cualquier tipo de almacenamiento auxiliar.
El archivo slo contiene registros lgicos (ninguna informacin secundaria).
3.3 ORGANIZACIN INDEXADA (INDEXED)
Los registros son almacenados en orden ascendente de acuerdo con el
contenido de un CAMPO CLAVE predefinido, que identifica a cada registro
lgico.
Se pueden procesar tanto secuencialmente como aleatoriamente y slo son
posibles en dispositivos de acceso directo.
ACMSAP - ERP Learning Cobol - 176
www.acmsap.es.tl Telfono 983 11 12 84
Tambin se conoce a esta organizacin como SECUENCIAL-INDEXADA.
Los ficheros indexados estn compuestos de un rea de datos y un rea de
ndices en la cual se guarda la clave de registro y la direccin de su posicin en el
rea de datos. Esto permite el acceso directo a l.
3.4 ORGANIZACION RELATIVA (RELATIVE)
Se basa en la divisin del espacio fsico de que disponga el fichero, en celdas
destinadas a contener un solo registro. Estas celdas estn numeradas por el
nmero de posicin relativa en el fichero, y podrn o no contener registro.
El usar archivos con organizacin relativa requiere que el programador desarrolle
un algoritmo de direccionamiento que asocie la clave de los registros lgicos
con el nmero de posicin del registro en el fichero.
Es posible el proceso secuencial (en el orden del nmero de registro); tambin es
posible el acceso directo a un registro, ya que, el sistema operativo es capaz de
calcular la direccin en el disco a partir del nmero de registro.
Es imprescindible dispositivo de almacenamiento de acceso directo. Esta
organizacin tambin recibe el nombre de aleatoria. El formato de esta
declaracin es:
ORGANIZATION IS tipo-de-organizacin
En la que se sustituye tipo-de-organizacin por:
- SEQUENTIAL Para ficheros de organizacin SECUENCIAL.
- INDEXED Para ficheros de organizacin INDEXADA.
- RELATIVE Para ficheros de organizacin RELATIVA.
* Si no se especifica ninguna organizacin para el fichero, el sistema por defecto
asume SEQUENTIAL.
4 MTODOS DE ACCESO
Los mtodos de acceso a ficheros son el conjunto de tcnicas que tienen por
objeto facilitar la bsqueda de informacin dentro de la organizacin fsica de
los ficheros. Esta funcin la realizan el Subsistema de Gestin de Ficheros
integrado en el Sistema Operativo, que acta como intermediario entre la
organizacin fsica y la organizacin lgica (lo cual, es transparente al usuario).
ACMSAP - ERP Learning Cobol - 177
www.acmsap.es.tl Telfono 983 11 12 84
Los principales mtodos son: ACCESO SECUENCIAL, ACCESO DIRECTO y
ACCESO DINMICO. El acceso Dinmico, se usa, para procesar un mismo
fichero empleando los dos mtodos de acceso anteriores a la vez.
4.1 ACCESO SECUENCIAL (SEQUENTIAL)
Permite procesar registros secuencialmente, es decir, se leen o actualizan en el
mismo orden en el que se encuentren. Para acceder a un determinado registro es
imprescindible recorrer todos los anteriores hasta llegar a l.
Es el tipo de acceso que se asume por defecto.
4.2 ACCESO DIRECTO (RANDOM)
Permite acceder directa y aleatoriamente a cualquier registro del fichero.
Es posible el acceso directo con ficheros Indexados (ISAM, y VSAM-KSDS) y
tambin en ficheros Relativos (y VSAM-RRDS).
4.3 SECUENCIAL Y DIRECTO A LA VEZ (DYNAMIC)
Este tipo de acceso en realidad es una mezcla de los dos anteriores.
Nos permite acceder directamente a un determinado registro lgico y despus
secuencialmente, todos los que estn grabados a continuacin de l, hasta el
final del fichero.
El formato, de la declaracin es:
ACCESS MODE IS modo-de-acceso
Se sustituye modo-de-acceso por:
- SEQUENTIAL Para procesos secuenciales.
- RANDOM Para procesos de acceso directo.
- DYNAMIC Para procesos secuenciales y directos a la vez.








ACMSAP - ERP Learning Cobol - 178
www.acmsap.es.tl Telfono 983 11 12 84
4.4 CUADRO RESUMEN DE ORGANIZACIONES Y ACCESOS


5 DECLARACIN FILE STATUS
Esta clusula es opcional en toda declaracin de ficheros, indicar en qu campo
debe depositar el Sistema Operativo el resultado de la ejecucin de las
instrucciones de entrada/salida mientras se est procesando un fichero. El valor
resultante, indica si la instruccin se ejecut correctamente o no.
FORMATO:
FILE STATUS IS nombre-campo
En la que nombre-campo :
- Deber estar declarado en la WORKING-STORAGE SECTION como un campo
alfanumrico de dos dgitos.

6 CDIGOS DE FILE STATUS MS HABITUALES
00 OPERACIN CORRECTA.
La instruccin se ha ejecutado satisfactoriamente.
02 OPERACIN CORRECTA, PERO LA CLAVE TIENE DUPLICADOS.
ACMSAP - ERP Learning Cobol - 179
www.acmsap.es.tl Telfono 983 11 12 84
Si se trata de una operacin de lectura, indica que ya hay un valor de dicha clave.
Si se trata de una graba cin, indica que el registro que se acaba de grabar ha
creado un valor duplicado de la clave.
10 FIN DE ARCHIVO DE TECLADO (AT END).
Se ha intentado leer un registro secuencialmente, cuando no existen registros en
el archivo.
22 VALOR DE CLAVE DUPLICADA.
Se ha intentado grabar un registro que dara lugar a una clave duplicada, en un
archivo donde no se admiten.
23 NO SE HA ENCONTRADO EL REGISTRO.
No existe el registro que se intenta leer.
90 OPERACIN INVLIDA.
Se ha intentado ejecutar una instruccin DELETE, READ, REWRITE, START o
WRITE que est en desacuerdo con el modo de apertura o no se ha ledo antes
de una instruccin DELETE o REWRITE.
91 ARCHIVO NO ABIERTO.
El archivo no se encuentra abierto y no es posible ejecutar ninguna de las
instrucciones especificadas.
92 ARCHIVO NO CERRADO. ERROR LGICO
Se ha intentado una instruccin OPEN para un archivo que ya est abierto o
detectado el fin de fichero.
94 OPEN INVLIDO.
El archivo no se ha encontrado o no corresponde con las especificaciones.
96 INDICADOR DE REGISTRO ACTUAL NO DEFINIDO.
Se ha intentado una instruccin READ, cuando el resultado de la anterior
instruccin READ o START no se ha podido ejecutar satisfactoriamente.
98 INDICE INVLIDO.
El contenido del ndice de un archivo secuencial indexado no es vlido para la
operacin de E/S que se pretende efectuar.
NOTA: Del 0 al 99 podran variar, en funcin del fabricante del ordenador.
ACMSAP - ERP Learning Cobol - 180
www.acmsap.es.tl Telfono 983 11 12 84














PROGRAMACIN
CON CURSORES
ACMSAP - ERP Learning Cobol - 181
www.acmsap.es.tl Telfono 983 11 12 84
1. Introduccin
Los cursores son necesarios para procesar sentencias SELECT en las que el
resultado est formado por varias filas.

Cuando el resultado de una SELECT contenga varias filas no se puede usar la
sentencia SELECT embebida, puesto que los lenguajes de programacin no estn
concebidos para el tratamiento en grupo de la informacin, sino para su
tratamiento secuencial. En estos casos hay que emplear un mecanismo de
programacin, el cursor, que nos permite recuperar las filas y procesarlas
secuencialmente en el programa.

Tambin es posible actualizar datos por medio del posicionamiento del cursor, de
forma que la sentencia de actualizacin afectar a la fila apuntada por el cursor.

El resultado de una sentencia SELECT es una tabla temporal, formada por todas
las filas que satisfacen la condicin de seleccin. Un cursor se comporta como un
puntero, que se posiciona sobre las filas de esta tabla y las lee secuencialmente
desde la primera a la ltima. La existencia de un orden determinado entre las filas,
aunque se haya establecido arbitrariamente, implica que el cursor no se posicione
dos veces en la misma fila durante su recorrido.

En cierta manera, un cursor se comporta como un fichero secuencial, formado por
las filas de la tabla resultante de una sentencia SELECT, en un orden
determinado. Por tanto se procesar de una manera similar:

hay que definirlo, abrirlo, procesar sus filas y cerrarlo. Estas operaciones se
realizan con las siguientes sentencias SQL:
- DECLARE Define el cursor asociado a una sentencia SELECT.
- OPEN Abre el cursor, ejecutando la sentencia SELECT y construyendo una tabla
temporal con un orden determinado.
ACMSAP - ERP Learning Cobol - 182
www.acmsap.es.tl Telfono 983 11 12 84
- FETCH Avanza el cursor hasta la fila siguiente y deposita los valores de sus
columnas dentro de las variables de trabajo del programa.
- UPDATE Actualiza columnas de la fila donde est posicionado el cursor.
- DELETE Borra la fila apuntada por el cursor.
- CLOSE Cierra el cursor, perdiendo el posicionamiento y la tabla temporal.
2. Definicin del cursor
La definicin de un cursor se realiza con la sentencia DECLARE CURSOR, cuyo
formato es el siguiente:
EXEC SQL DECLARE n-cursor CURSOR FOR
SELECT.....................
FROM n-tabla
WHERE condicin-de-seleccin
Donde n-cursor es el nombre que damos a ese cursor y que permite referirse a
l con el resto de sentencias SQL relacionadas con los cursores, dentro del
programa. Debe ser un nombre de 10 caracteres como mximo y que seguir las
normas del lenguaje de programacin usado.

La sentencia SELECT que la definicin del cursor lleva asociada tiene el mismo
formato visto en captulos anteriores (no lleva la clusula INTO necesaria en le
apartado 8.1). El resultado de esta sentencia es asociar un cursor a una sentencia
SELECT, no ejecutarla.

En un programa se pueden definir tantos cursores como se deseen, incluso con
idnticas sentencias SELECT, nicamente tienen que tener distinto nombre.

La sentencia DECLARE CURSOR debe preceder en el programa fuente al resto
de sentencias sobre este cursor.
Su colocacin en el programa difiere del lenguaje utilizado. Por ejemplo en Cobol
puede situarse en cualquier punto de la WORKING-STORAGE SECTION o de la
LINKAGE SECTION de la DATA DIVISION, tambin puede colocarse en la
PROCEDURE DIVISION.
ACMSAP - ERP Learning Cobol - 183
www.acmsap.es.tl Telfono 983 11 12 84

Ejemplo:
Declaramos el cursor C-EMPLEADO, para recuperar los datos de los empleados
del departamento A00.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EXEC SQL DECLARE C-EMPLEADO CURSOR FOR
SELECT NUEMPL, NOMBRE, TLFN, SALARIO, SEXO
FROM TEMPL
WHERE DPTO =A00
ORDER BY NUEMPL
END-EXEC.
Nota: Como esta sentencia no ejecuta la SELECT, no es necesario preguntar por
el cdigo de retorno.
3. Apertura del Cursor
La apertura del cursor se realiza con la sentencia OPEN. Su formato es:
EXEC SQL OPEN n-cursor
Siendo n-cursor , el nombre del cursor previamente definido con una sentencia
DECLARE CURSOR.
En el momento del OPEN es cuando el programa pasa al Gestor la peticin de
ejecucin de la sentencia SELECT incluida en la sentencia DECLARE CURSOR.
El Gestor ejecuta la SELECT y pone a disposicin del programa la tabla temporal
resultante de la ejecucin.

Esto no implica que la tabla temporal exista fsicamente. El Gestor puede construir
la tabla completamente al ejecutar el OPEN y almacenarla en un fichero aparte
mientras el cursor est abierto, o bien ir construyndola sobre la marcha segn se
le vayan pidiendo filas.

Adems de construir lgicamente la tabla temporal, la apertura de un cursor
provoca que ste se coloque apuntando a una posicin anterior a la primera fila.

ACMSAP - ERP Learning Cobol - 184
www.acmsap.es.tl Telfono 983 11 12 84
Ejemplo:
Abrimos el cursor definido anteriormente.
...............
EXEC SQL OPEN C-EMPLEADO END-EXEC.
IF SQLCODE NOT =0
GO TO CANCELAR.
...............
4. Lectura Secuencial de las Filas
Para obtener una a una, secuencialmente, las filas de una esta tabla temporal la
sentencia SQL que se usa es la FETCH. Su formato es:
EXEC SQL FETCH n-cursor
INTO :n-campo1, :n-campo2,....

La clusula INTO tiene aqu el mismo significado que se ha visto anteriormente.
Antes de ejecutar la sentencia FETCH el cursor debe haber sido abierto. Al
ejecutarla el Gestor avanza la posicin del cursor a la siguiente fila y extrae los
contenidos de sus columnas depositndolos sobre las variables de trabajo de la
clusula INTO. En este momento el programa ya puede manipular los datos como
desee.

Desde que un cursor se abre hasta que se cierra, la posicin varia con cada una
de las sucesivas sentencias SQL ejecutadas. En cualquier momento el cursor
apuntar a una fila o al hueco que queda entre dos filas, si la fila a la que
estuviera apuntando hubiera sido borrada usando el cursor. En cualquier caso al
ejecutar una FETCH el cursor avanza hasta posicionarse en la siguiente fila y se
queda ah hasta que no haya otra sentencia SQL que le cambie de posicin.

Cuando el cursor est posicionado sobre la ltima fila, el siguiente FETCH avanza
intentando posicionarse sobre la siguiente fila, que no existe. Entonces el Gestor
deja el cursor apuntando a un hueco posterior a la ltima fila y devuelve un cdigo
ACMSAP - ERP Learning Cobol - 185
www.acmsap.es.tl Telfono 983 11 12 84
de retorno 100 al SQLCODE. Si se siguen lanzando mas FETCH el resultado ser
el mismo que antes.
Cuando se detecta el SQLCODE 100 el programa deber dejar de intentar leer
nuevas filas y cerrar el cursor.

Ejemplo:
Leemos los empleados.
..........
LEER.
EXEC SQL FETCH C-EMPLEADO
INTO :NUEMPL-W,
:NOMBRE-W,
:TLFN-W,
:SALARIO-W,
:SEXO-W
END-EXEC.
IF SQLCODE =+100
TO FIN-TABLA
ELSE
IF SQLCODE NOT =0
GO TO CANCELAR.
.......................
GO TO LEER.

5. Modificacin de Datos
Cuando un cursor est posicionado en una fila, despus de ejecutar una sentencia
FETCH, es posible modificar o borrar esta fila. Estas operaciones repercutirn
directamente sobre la tabla original, para ello la sentencia SELECT incluida dentro
de la definicin del cursor debe cumplir ciertas restricciones, similares a las de las
vistas actualizables.
ACMSAP - ERP Learning Cobol - 186
www.acmsap.es.tl Telfono 983 11 12 84
Se dice que la tabla resultante de un cursor no es actualizable si la sentencia
SELECT asociada tiene alguna de las siguientes caractersticas:
- Proviene de ms de una tabla.
- Proviene de una vista no actualizable.
- Tiene agrupamientos (GROUP BY).
- Sus columnas son funciones predefinidas o expresiones aritmticas.
- Contiene subselects relacionadas.
- Usa la clusula UNION.
- Usa la clusula ORDER BY.
Si la tabla resultante es actualizable, se pueden utilizar las sentencias UPDATE y
DELETE combinndolas con un cursor, producindose la actualizacin automtica
sobre la tabla original. Adems siempre es posible actualizar una tabla
directamente sin el uso de cursores, aun cuando sta est siendo usada en el
cursor.
* Borrado de filas con cursor.
El formato de la sentencia DELETE cuando se borra la fila apuntada por el cursor,
es similar al visto hasta ahora, slo que en la clusula WHERE no se especifica
una condicin de seleccin, si no el cursor que se usa para borrar.

EXEC SQL DELETE FROM n-tabla
WHERE CURRENT OF n-cursor

Esta sentencia borra la fila de la tabla que est apuntada, en ese momento por el
cursor, que ahora apuntar al hueco que deja esa fila. Se borrar tambin la fila de
la tabla original.
* Modificacin de filas con cursor.
La sentencia que se utiliza es la UPDATE, la nica diferencia igual que antes est
en la clusula WHERE que especifica el cursor que se usa.
EXEC SQL UPDATE n-tabla
SET...........
WHERE CURRENT OF n-cursor
ACMSAP - ERP Learning Cobol - 187
www.acmsap.es.tl Telfono 983 11 12 84
Esta sentencia actualiza la fila apuntada, en ese momento por el cursor,
modificando las columnas indicadas
en la clusula SET.
Para usar este tipo de sentencia UPDATE es necesario, cuando definimos el
cursor indicar que columnas de las filas resultantes pueden ser modificadas con el
cursor. Para ello en la sentencia DECLARE CURSOR aparece una nueva
clusula, FOR UPDATE OF.
El formato completo de la sentencia DECLARE CURSOR queda entonces as:
EXEC SQL DECLARE n-cursor CURSOR FOR
SELECT......................
FROM n-tabla
WHERE condicin-de-seleccin
FOR UPDATE OF n-columna1,
n-columna2,..
Siendo n-columna , el nombre de cada una de las columnas que pueden ser
modificadas usando el cursor.
Ejemplos:
- Vamos a borrar el empleado apuntado por el cursor despus de ejecutar una
sentencia FETCH.
.............
EXEC SQL FETCH C-EMPLEADO
INTO :NUEMPL-W,
:NOMBRE-W,
:TLFN-W,
:SALARIO-W,
:SEXO-W
END-EXEC.
IF SQLCODE =+100
GO TO FIN-TABLA
ELSE
IF SQLCODE NOT =0
ACMSAP - ERP Learning Cobol - 188
www.acmsap.es.tl Telfono 983 11 12 84
GO TO CANCELAR.
.............
.............
.............
.............
EXEC SQL DELETE FROM TEMPL
WHERE CURRENT OF C-EMPLEADO
END-EXEC.
IF SQLCODE NOT =0
GO TO CANCELAR.
.............
.............
.............
.............
- Modificacin del telfono y el salario de un empleado apuntado por
un cursor.
.............
EXEC SQL DECLARE C-MODIF CURSOR FOR
SELECT NUEMPL,
TLFN,
SALARIO
FROM TEMPL
WHERE SEXO =M
FOR UPDATE OF TLFN, SALARIO
END-EXEC.
.............
.............
.............
EXEC SQL FETCH C-EMPLEADO
INTO :NUEMPL-W,
:TLFN-W,
ACMSAP - ERP Learning Cobol - 189
www.acmsap.es.tl Telfono 983 11 12 84
:SALARIO-W
END-EXEC.
IF SQLCODE =+100
GO TO FIN-TABLA
ELSE
IF SQLCODE NOT =0
GO TO CANCELAR.
.............
.............
.............
EXEC SQL UPDATE TEMPL
SET TLFN =:TLFN-W,
SALARIO =:SALARIO-W
WHERE CURRENT OF C-MODIF
END-EXEC.
IF SQLCODE NOT =0
GO TO CANCELAR.
.............
.............
.............



6. Cierre del cursor
La sentencia que cierra el cursor es CLOSE, con el siguiente formato:
EXEC SQL CLOSE n-cursor
Al ejecutar esta sentencia se pierde el posicionamiento y la tabla resultado de la
SELECT del cursor. Despus de abrir un cursor, este puede cerrarse en cualquier
momento, aunque lo normal es hacerlo al detectar el fin de la tabla con el
SQLCODE igual a 100.
ACMSAP - ERP Learning Cobol - 190
www.acmsap.es.tl Telfono 983 11 12 84
En caso de que no se ejecute esta sentencia, al finalizar el programa el Gestor
cerrar los cursores que queden abiertos.

Ejemplo:
Cerramos el cursor.
.............
EXEC SQL CLOSE C-EMPLEADO END-EXEC.
IF SQLCODE NOT =0
GO TO CANCELAR.
.............
ACMSAP - ERP Learning Cobol - 191
www.acmsap.es.tl Telfono 983 11 12 84












PROCEDURE DIVISIN:
CODIFICACIN DE
INSTRUCCIONES

ACMSAP - ERP Learning Cobol - 192
www.acmsap.es.tl Telfono 983 11 12 84

1. PROCEDURE DIVISION: CODIFICACIN DE INSTRUCCIONES
1.1. PROCEDURE DIVISION
FUNCIN
En esta division se codifican las instrucciones o sentencias necesarias para el
desarrollo de la lgica del PROGRAMA.
As pues, la procedure estar formada por todas las instrucciones que el
ordenador deber ejecutar con los datos de entrada definidos en las secciones
anteriores, para obtener los resultados de salida apetecidos.
Las distintas instrucciones se pueden reagrupar, en funcin del tipo de tratamiento
que realizan con los datos, en varios grupos.
Las Instrucciones codificadas en COBOL, a diferencia de otros lenguajes, sirven
como AUTODOCUMENTACIN del programa ya que tienen la apariencia del
lenguaje corriente (aunque en ingls). Esto, sumado a que es un lenguaje fcil de
aprender y de mantener, explica por qu el 80% de las aplicaciones que se
desarrollan en todo El Planeta, sean en COBOL.
1.2 TIPOS DE INSTRUCCIONES
* Instrucciones de Entrada/Salida.
* Instrucciones de Manipulacin de Datos.
* Instrucciones para Clculos Aritmticos.
* Instrucciones de Organizacin y Control.
* Instrucciones de Manipulacin de Caracteres.
1.3 ORGANIZACIN DE LA PROCEDURE DIVISION
La Procedure est formada, de mayor a menor por:
- SECCIONES
- PARRAFOS
- SENTENCIAS
- DECLARACIONES.
Esta divisin al igual que las anteriores divisiones del programa est dividida en
SECCIONES. Estas, a su vez, estn formadas por PARRAFOS y cada uno de
ACMSAP - ERP Learning Cobol - 193
www.acmsap.es.tl Telfono 983 11 12 84
stos, contendr una o ms SENTENCIAS, las cuales se forman con una o ms
declaraciones.
Las INSTRUCCIONES del programa son las SENTENCIAS y las
DECLARACIONES. A continuacin se definen cada una de ellas.

1.4 DECLARACIONES
Se le da el nombre de DECLARACIN, a la unidad formada por un VERBO ms
sus operandos apropiados. Las declaraciones no terminan en punto.


1.5 SENTENCIAS
Se denomina SENTENCIA, al conjunto formado por una o ms DECLARACIONES
acotadas por un PUNTO.
Ejemplos:







ACMSAP - ERP Learning Cobol - 194
www.acmsap.es.tl Telfono 983 11 12 84

De todas las instrucciones del ejemplo, slo hay una sentencia que engloba cuatro
declaraciones, desde la lnea 70 a la 140.
Las dems, tambin son sentencias, ya que acaban en punto, y estn formadas
por una sola declaracin.

1.6 PRRAFOS
Se denomina PARRAFO, al conjunto formado por:
* UN NOMBRE de PRRAFO, que debe comenzar en el margen A, y que estar
formado por la combinacin de caracteres alfabticos, numricos y el guin. Un
nombre de PRRAFO puede comenzar por nmero.
* UNA a ms SENTENCIAS, situadas debajo de l.
Mediante el nombre del prrafo es posible referenciar a todas las sentencias que
lo siguen en secuencia.
Un prrafo COMIENZA con su nombre y TERMINA delante de otro nombre de
prrafo.
Los PRRAFOS se usan, (por regla general, en la programacin estructurada)
para crear, referenciar e identificar LAS RUTINAS.

ACMSAP - ERP Learning Cobol - 195
www.acmsap.es.tl Telfono 983 11 12 84
Ejemplo:


1.7 SECCIONES
Una seccin es un nombre de prrafo seguido de la palabra reservada SECTION.
Una seccin engloba a uno o ms prrafos. Cuando se solicita la ejecucin de una
seccin, el ordenador
intenta ejecutar todos los prrafos que estn debajo de ella, hasta que encuentra
otro nombre de seccin.
Las secciones son opcionales (excepto en la opcin SORT) y el que se usen en
mayor o menor grado, suele
depender de las normativas de los distintos centros de procesos de datos (CPDs).






ACMSAP - ERP Learning Cobol - 196
www.acmsap.es.tl Telfono 983 11 12 84
Ejemplo:









ACMSAP - ERP Learning Cobol - 197
www.acmsap.es.tl Telfono 983 11 12 84

2. INSTRUCCIONES DE ENTRADA/SALIDA
FUNCIN:
Poner en comunicacin al PROGRAMA con los DISPO SITIVOS EXTERNOS
donde estn o estarn almacenados los datos que se desean procesar.
TIPOS DE INSTRUCCIONES DE ENTRADA/SALIDA
Las instrucciones de entrada salida son las siguientes:
MISION VERBO
ABRIR FICHEROS > OPEN
CERRAR FICHEROS > CLOSE
LEER FICHEROS > READ
ESCRIBIR REGISTROS > WRITE
ACEPTAR DATOS > ACCEPT
VISUALIZAR DATOS > DISPLAY
Ahora slo veremos los verbos de Entrada de datos desde el monitor al programa
(Acept) y de salida desde el programa admonitor (Display) para nuestros primeros
programas de Cobol.
El resto de mandatos es para trabajar con Ficheros de entrada / salida que los
veremos en otros mdulos.












ACMSAP - ERP Learning Cobol - 198
www.acmsap.es.tl Telfono 983 11 12 84

2.1 VERBO ACCEPT
FUNCIN:
Facilitar la recuperacin de datos a travs de los propios Recursos del
Sistema.
FORMATO:


ACCEPT: Verbo de la Sentencia.
nombre-campo: Campo definido en la WORKING-STORAGE SECTION para
recibir la informacin, desde el dispositivo por defecto (que de momento ser la
pantalla del ordenador) o a travs de alguna de las opciones siguientes.
OPCIN FROM SYSIN
En entorno PC el cursor se sita parpadeando en la pantalla del ordenador, el
usuario teclea caracteres, y cuando pulsa la tecla ENTER, el sistema coloca los
caracteres tecleados en el campo especificado a la derecha del verbo Accept
Al terminar la operacin el campo NOMBRE contiene el literal TOMAS .
ACMSAP - ERP Learning Cobol - 199
www.acmsap.es.tl Telfono 983 11 12 84


Al terminar la operacin el campo NOMBRE contiene el literal TOMAS .
OPCIN FROM DATE
Se recupera la Fecha del da con este Formato AAMMDD.
Nombre-campo en este caso ser un NUMERICO DISPLAY =PIC 9(6).
OPCIN FROM DAY
Se recupera la fecha del da con este formato AADDD.
Nombre-campo en este caso ser un NUMERICO DISPLAY =PIC 9(5).
OPCIN FROM TIME
Se recupera la hora con este formato HHMMSSDD.
Nombre-campo en este caso ser un NUMRICO DISPLAY =PIC 9(8).
OPCIN FROM DAY-OF-WEEK
Se recupera un dgito que corresponde al da de la semana (1=LUNES,
2=MARTES, 3=MIERCOLES ... ).
Nombre-campo en este caso ser un NUMERICO DISPLAY =PIC 9.








ACMSAP - ERP Learning Cobol - 200
www.acmsap.es.tl Telfono 983 11 12 84

2.2 VERBO DISPLAY
FUNCIN:
Facilitar la escritura de datos a travs de dispositivos del Sistema. Que en el PC
ser siempre el monitor, es decir, la pantalla del ordenador.
FORMATO DE LA SENTENCIA:

DISPLAY: Verbo de la sentencia.
Literal y/o dato: Literal o dato que se desea escribir. El USAGE del campo que
soporta el dato puede ser de cualquier tipo. Si el USAGE es COMP-3 o COMP, se
convierte previamente a DISPLAY. De cualquier forma NO hay EDICIN, por lo
cual es conveniente editar los campos numricos del DISPLAY.

Pueden ser varios los campos o literales a displayar.
ACMSAP - ERP Learning Cobol - 201
www.acmsap.es.tl Telfono 983 11 12 84
Se consigue el mismo resultado que en el ejemplo anterior.

OTROS EJEMPLOS:

Nos tenemos que dar cuenta que cuando un programa se ejecuta, el usuario que
est delante de la pantalla del ordenador lo nico que ve es lo que el programa
muestra de la memoria del programa a travs del comando display. Si slo saco
nmeros, sin informacin textual, es difcil que la persona sepa de qu le estn
hablando. Por tanto siempre que mostremos informacin al exterior lo haremos:
DISPLAY EL NUMERO DE HIJ OS ES : NUM-HIJ OS.
DISPLAY EL NOMBRE ES : NOMBRE.
De la misma manera cuando solicitamos informacin a travs de la pantalla,
dijimos que el cursor se sita parpadeando para que introduzcamos informacin.
Pero no sabemos lo que nos pide. Por eso la manera es:
DISPLAY INTRODUCE EL NOMBRE :
ACCEPT NOMBRE.
ACMSAP - ERP Learning Cobol - 202
www.acmsap.es.tl Telfono 983 11 12 84

Tras dar al ENTER el literal tecleado en este caso TOMAS viaja al campo
NOMBRE









ACMSAP - ERP Learning Cobol - 203
www.acmsap.es.tl Telfono 983 11 12 84












PRCTICAS
COBOL EN PC

ACMSAP - ERP Learning Cobol - 204
www.acmsap.es.tl Telfono 983 11 12 84
EN ESTE APARTADO VAMOS A AMPLIAR NUESTROS CONOCIMIENTOS DE
COBOL II As como con los editores y compiladores.

VAMOS A SELECCIONAR 4 PROGRAMAS QUE REALIZAMOS EN EL
COLABORAR DEL MDULO COBOL II.

NOTA: EL ALUMNO DEBE CREAR CON UN EDITOR COBOL ESTOS 4
PROGRAMAS y COMPILAR Y EJ ECUTAR HASTA QUE FUNCIONEN
ADECUADAMENTE






















ACMSAP - ERP Learning Cobol - 205
www.acmsap.es.tl Telfono 983 11 12 84






ACMSAP - ERP Learning Cobol - 206
www.acmsap.es.tl Telfono 983 11 12 84































ACMSAP - ERP Learning Cobol - 207
www.acmsap.es.tl Telfono 983 11 12 84






INSTRUCCIONES DE
MANIPULACIN DE
DATOS
ACMSAP - ERP Learning Cobol - 208
www.acmsap.es.tl Telfono 983 11 12 84
1. VERBOS DE MANIPULACION DE DATOS
FUNCIN:
Transferencia de los datos para su reorganizacin y transformacin.
MISIN DEL VERBO VERBO
* TRANSFERENCIA DE DATOS >MOVE
* INICIALIZACIN DE VARIABLES >INITIALIZE
2. VERBO MOVE
FUNCIN:
TRANSFERIR DATOS desde UNA ZONA de MEMORIA A OTRA. La instruccin
MOVER implica copiar el dato de origen en el destino. El campo emisor siempre
conserva el contenido.
La instruccin MOVE admite dos formatos bsicos
FORMATO 1:

El contenido de n-dato-1 o un literal es TRANSFERIDO a uno o ms campos: n-
dato-2...n-dato-n.

ACMSAP - ERP Learning Cobol - 209
www.acmsap.es.tl Telfono 983 11 12 84

ESQUEMA DE EJECUCION DE LOS MOVIMIENTOS:

AN: Movimiento ALFANUMRICO:
NU: Movimiento NUMRICO.
E : Movimiento EDICIN.

ACMSAP - ERP Learning Cobol - 210
www.acmsap.es.tl Telfono 983 11 12 84

MOVIMIENTOS PERMITIDOS:

* Cualquier campo compuesto o grupo es alfanumrico por definicin.
* No se consideran otros movimientos posibles por considerarse inusuales.
EFECTO DE MOVIMIENTOS ALFANUMRICOS:

A: Blancos a la derecha.
B: trunca por la derecha.
J: Con clasula JUSTIFIED RIGHT.
77 CAMPO-RECEPTOR PIC X(4) JUST RIGHT.
ACMSAP - ERP Learning Cobol - 211
www.acmsap.es.tl Telfono 983 11 12 84
EFECTOS DE MOVIMIENTOS NUMRICOS:
EMISOR RECEPTOR


B: Trunca por la derecha
C: Ceros a la izquierda.
D: Trunca por la izquierda.
E: Pierde signo
F: Gana signo.

ACMSAP - ERP Learning Cobol - 212
www.acmsap.es.tl Telfono 983 11 12 84
3. VERBO INITIALIZE
FUNCIN:
Esta instruccin permite inicializar cualquier variable, con el valor apropiado, con
independencia de que el campo estuviese definido con la clusula VALUE.
Su diferencia con la clusula VALUE, consiste, en que con INITIALIZE se puede
usar tantas veces como se desee, y en cualquier sitio dentro de la PROCEDURE,
mientras que el valor asignado con el VALUE se introduce nicamente al
comienzo del programa y se define en la WORKING.
FORMATO:

campo-1, campo-2, campo-3:
Campo simple o compuesto que se desea inicializar.

REPLACING: Permite iniciar nicamente los campos elementales que
concuerdan con la clase especificada.
Si no se codifica REPLACING todos los campos NUMRICOS y de EDICIN se
inicializan con CEROS y los ALFANUMRI COS a BLANCOS.
DATA BY: Siguiendo a esta clusula se pone el valor con el que se va a inicializar
campo-1. Se permite un literal o nombre de campo.




ACMSAP - ERP Learning Cobol - 213
www.acmsap.es.tl Telfono 983 11 12 84
Ejemplo:

El contenido de CAMPO-1 despus de la iniciacin ser:



ACMSAP - ERP Learning Cobol - 214
www.acmsap.es.tl Telfono 983 11 12 84















LLAMADAS ENTRE
PROGRAMAS:
LINKAGE SECTION
ACMSAP - ERP Learning Cobol - 215
www.acmsap.es.tl Telfono 983 11 12 84


1. CONCEPTO DE SUBPROGRAMACIN
La programacin estructurada se basa, en la descomposicin del proceso general
en subprocesos ms fciles de solucionar y mantener.
La subprogramacin, permite obtener programas ms pequeos, fciles y
manejables adems de hacer ms cmodas las posibles modificaciones futuras.
Adems se evitan redundancias, ya que las tareas comunes a varios programas
pueden ser realizadas por subprogramas, los cuales sern llamados para que
realicen esas tareas.
Siempre se tendr un PROGRAMA PRINCIPAL, ( LLAMANTE ), que ser el
que se encargue de llamar a uno o ms SUBPROGRAMAS, ( LLAMADO/S ).
El programa PRINCIPAL inicia y controla la ejecucin de todo el proceso.
Un subprograma podr a su vez llamar a otros subprogramas, pero nunca al
principal.
Cuando un programa llama a otro (CALL), el control se pasa al llamado para su
ejecucin y cuando sta finaliza (EXIT PROGRAM), el control es devuelto de
nuevo al programa llamante, para continuar la ejecucin del mismo, a partir de la
sentencia que efectu la llamada.
Los subprogramas dependen para su ejecucin del programa principal. Para ello
es preciso incluir dentro de cada programa las instrucciones de transferencia de
control oportunas, a fin de indicar al Sistema Operativo el momento en que cada
programa ha de suspender su proceso para pasar el control a otro programa y
cules son los campos o variables que se pasan entre s para usar durante su
ejecucin.
Si los programas se compilan por separado, se producirn mdulos objetos
distintos, pero si se linkeditan juntos durante la ejecucin, en la memoria principal
estar cargado la unin del programa principal y todos los subprogramas.



ACMSAP - ERP Learning Cobol - 216
www.acmsap.es.tl Telfono 983 11 12 84
2. ESQUEMATIZACIN DE TRANSFERENCIAS DE CONTROL ENTRE
PROGRAMA PRINCIPAL Y SUBPROGRAMAS.


ACMSAP - ERP Learning Cobol - 217
www.acmsap.es.tl Telfono 983 11 12 84

* INSTRUCCION PROHIBIDA.

3. LINKAGE SECTION Y COMUNICACIN ENTRE PROGRAMAS
FUNCIN
Definicin en los Programas LLAMADOS o subprogramas de los CAMPOS
coinciden tes con campos del Programa LLAMANTE.
PECULIARIDADES DE LA LINKAGE SECTION:
Es una seccin de la DATA DIVISION, cuya utilizacin es OPCIONAL.
Solamente se codifica en los SUBPROGRAMAS (en los programas llamados).
Mantiene la misma estructura y caractersticas de la WORKING-STORAGE,
excepto que la clusula VALUE no est permitida.
En la LINKAGE SECTION (del programa llamado), se definen todos los campos
que el programa llamante va a permitir que sean compartidos por los dos
programas. A travs de estos campos ambos programas, podrn pasarse datos y
devolvrselos una vez procesados.
El compilador no reserva memoria para los campos definidos en esta seccin, ya
que en realidad, el sistema lo que hace es permitir a los subprogramas referenciar
y utilizar los campos definidos por el programa principal o por el subprograma que
le ha llamado.
NO es necesario utilizar los mismos nombres, para los campos comunes en
ambos programas.
Tampoco es necesario definirlos en el mismo orden en el programa llamante y
llamado. (Aunque tanto una cosa como otra puede ser aconsejables, por la
claridad que pueden aportar).
Tambin es transcendental que se respeten en la LINKAGE las mismas
PICTURES de los campos definidos en el programa principal, es decir, la misma
LONGITUD, el mismo TIPO y el mismo USAGE de los campos que comparten
ambos programas.
Para poder pasar campos de un programa a otro, adems de la LINKAGE
SECTION, se necesitan varias sentencias caractersticas de estos procesos:
ACMSAP - ERP Learning Cobol - 218
www.acmsap.es.tl Telfono 983 11 12 84
CALL, ENTRY, EXIT PROGRAM, GOBACK y CANCEL, las cuales, son propias de
la PROCEDURE DIVISION.
El orden de los campos en la PROCEDURE DIVISION asociados a la
sentencia CALL del programa llamante y a la ENTRY del programa llamado
debe de ser el mismo.

4. DECLARACIONES DE LA PROCEDURE DIVISION.
Los declaraciones caractersticas de la subprogramacin son los siguientes:
CALL
ENTRY
EXIT PROGRAM
GOBACK
CANCEL
Los distintos formatos son analizados a continuacin.





ACMSAP - ERP Learning Cobol - 219
www.acmsap.es.tl Telfono 983 11 12 84
5. DECLARACIN CALL.
Permite la llamada a un programa desde otro programa. El programa llamante
pasa el control del proceso al programa llamado.

Se llama al subprograma (CALL nombreprog) y se le permite usar (USING) el
contenido de las variables (campo1, campo2, etc.) definidos en la DATA
DIVISION del programa llamante y en la LINKAGE SECTION de nombreprog.
Nombreprog: Es el nombre del subprograma que se desea llamar, para que
contine el proceso.
Cuando se codifica en el formato nombreprog se sobreentiende que se desea
comenzar justamente en el comienzo de la procedure del programa llamado. Y,
nombreprog de la CALL coincide con el nombre del PROGRAM-ID del
subprograma.
Cuando no se asocia, con la clusula USING, es porque se desea pasar el control
a un subprograma sin necesidad de pasarle informacin alguna.
Por ejemplo: Un programa principal que sea un men y los subprogramas
sean las distintas opciones a realizarse.
Puntoentrada: Se codifica puntoentrada cuando se desee pasar el control a otro
programa, pero, a un punto distinto del comienzo de la procedure.
Tanto nombreprog como puntoentrada puede ser un literal alfanumrico o
un nombre de campo que contenga el literal.
Un mismo subprograma puede ser llamado tantas veces y a tantos puntos de
entrada distintos como se considere necesario.
ACMSAP - ERP Learning Cobol - 220
www.acmsap.es.tl Telfono 983 11 12 84
USING: Lo ms usual es que el programa LLAMANTE deba de pasar datos al
LLAMADO, para ser elaborados y posteriormente devueltos al programa principal,
para continuar con su proceso.

Si es este el caso, es necesario indicar el nombre de los campos detrs de la
palabra reservada USING.
El nmero de nombres, detrs de USING debe de ser el mismo, tanto en el
programa principal como en el subprograma. La correspondencia entre ellos es de
uno a uno, y deben estar en la misma posicin y tener la misma definicin. Los
campos pueden estar definidos en el programa principal dentro de la FILE
SECTION o de la WORKING-STORAGE SECTION y a cualquier nivel.
La diferencia entre BY CONTENT y BY REFERENCE estriba en que los campos
asociados a BY CONTENT que se pasan al subprograma, slo pueden ser
consultados, mientras que los asociados a BY REFERENCE, podrn adems
ser modificados. Por defecto asume BY REFERENCE.
ON EXCEPTION: Cada vez que llamamos a un programa va CALL ese programa
se carga en memoria. Puede ser conveniente, utilizar la opcin ON EXCEPTION,
para prevenir el caso en no haya suficiente espacio disponible en memoria para
cargarlo, o no se encontrara el programa a cargar, o cualquier otro problema.
6. DECLARACION ENTRY
Establece un punto de entrada en un programa llamado.

ACMSAP - ERP Learning Cobol - 221
www.acmsap.es.tl Telfono 983 11 12 84
En cada subprograma, pueden existir uno o ms puntos de entrada.
Cada punto de entrada, se identifica o asocia mediante un nombre-de-enlace o
literal distinto, que se pone detrs del ENTRY y que debe coincidir con el literal
que se puso en la sentencia CALL correspondiente dentro del programa principal.
Cuando se desea que el punto de entrada en el subprograma comience desde la
primera instruccin de la PROCEDURE DIVISION, (se puede prescindir de
ENTRY nombre-enlace y especificar a continuacin de las palabras
PROCEDURE DIVISION, la opcin USING seguida del nombre de los campos de
datos que le va a pasar el programa llamante.
Campo-1, campo-2, ... etc, estarn definidos necesariamente en la LINKAGE
SECTION del subprograma y a nivel 01 o 77.
7. DECLARACIONES EXIT PROGRAM Y GOBACK
Identifican el punto de bifurcacin de retorno desde el programa llamado al
programa que lo llam.
En cada programa llamado debe existir al menos una declaracin EXIT
PROGRAM o GOBACK (la funcin de ambas es equivalente).
8. DECLARACIN CANCEL
Sirve para borrar de la memoria programas que fueran anteriormente llamados por
una CALL.
FORMATO:

Cuando se trabaja en entornos pequeos, es conveniente utilizar una instruccin
CANCEL despus de cada
CALL para que no haya desborda mientos de memoria.

9. ENLACE ESTTICO Y ENLACE DINMICO
Hay dos formas de enlazar programas, el enlace esttico y el enlace dinmico.
ACMSAP - ERP Learning Cobol - 222
www.acmsap.es.tl Telfono 983 11 12 84
Un enlace esttico se produce cuando dos o ms mdulos objeto son unidos, por
un programa montador de enlaces (link-editor) para producir un nico mdulo de
carga ejecutable. En un enlace esttico el o los subprogramas ocupan memoria en
todo momento independientemente de que sean o no llamados.
En cambio, en un enlace dinmico, el o los subprogramas no estn unidos al
mdulo de carga del programa de llamada, sino que estn almacenados como un
mdulo de carga independientes en una biblioteca de mdulos ejecutables. El
subprograma no est inicialmente cargado en memoria junto con el programa de
llamada. Es cargado nicamente si se le llama a travs de la ejecucin de la
instruccin CALL correspondiente.
ENLACE ESTTICO VERSUS ENLACE DINMICO
La principal ventaja del enlace dinmico estriba en que el subprograma no
necesita ocupar memoria hasta que se le llame, y la principal desventaja es que se
tarda ms tiempo en ejecutar una CALL dinmica (puesto que se deber cargar
desde la librera donde resida)
El enlace esttico se ejecuta ms rpido que el dinmico, aunque requiere una
mayor preparacin, ya que el programa y el subprograma deben estar enlazados
de antemano por el montador de enlace (o el equivalente). El enlace esttico es
ms conveniente para subprogramas externos que tienden a ser plenamente
utilizados.
La codificacin de la sentencia CALL de ambos tipos de enlaces es idntica
excepto que, para implementar un enlace esttico el nombre del subprograma que
se quiere llamar (PROGRAM-ID) est colocado en un campo alfanumrico
(generalmente en la WORKING-STORAGE SECTION) antes de que la instruccin
CALL sea ejecutada.
El encontrar un nombre de campo en vez de un literal alfanumrico le indica al
compilador que se trata de un enlace esttico. El subprograma externo estar
escrito exactamente de la misma forma para los dos tipos de llamadas.
ACMSAP - ERP Learning Cobol - 223
www.acmsap.es.tl Telfono 983 11 12 84

ACMSAP - ERP Learning Cobol - 224
www.acmsap.es.tl Telfono 983 11 12 84

ACMSAP - ERP Learning Cobol - 225
www.acmsap.es.tl Telfono 983 11 12 84











INTERFASE DE
PROGRAMACIN
DE ALTO NIVEL









ACMSAP - ERP Learning Cobol - 226
www.acmsap.es.tl Telfono 983 11 12 84
1. RESTRICCIONES DEL COMPILADOR COBOL
En un programa COBOL no se podr usar:
- En la ENVIRONMENT DIVISION: la INPUT-OUTPUT SECTION.
- En la DATA DIVISION: la FILE SECTION.
- En la PROCEDURE DIVISION, los verbos:
ACCEPT, CLOSE, DELETE, DISPLAY, MERGE, OPEN, READ, RERUN,
REWRITE, START, WRITE Nuestro programa se comunicar con el CICS, por
medio de ste interfase, que se soporta para cuatro lenguajes diferentes: COBOL,
ENSAMBLADOR, PL/I y RPGII.
2. BLOQUE DE EJECUCION DE LA INTERFASE (EIB)
Automticamente el traductor copia la EIB. Durante la ejecucin las EIB sin
inicializadas por el programa de ejecucin de la interfase. El programa de
aplicacin puede recuperar informacin del EIB usando el nombre de campo
apropiado. Estos nombres de campos de la EIB son palabras reserva das.
La informacin que contienen los campos ms usados es:
- EIBTIME; La hora en que fue inicializada una tarea (hhmmss).
- EIBDATE; La fecha en que fue inicializada una tarea (YYDDD).
- EIBTRNID; El cdigo de transaccin asociado a esa tarea.
- EIBTASKN; El nmero de tarea que el CICS ha asignado a una tarea.
- EIBTRMID; El identificador del terminal asociado a esa tarea.
- EIBCPOSN; La posicin del cursor al realizarse una transmisin desde un
terminal.
- EIBCALEN; La longitud de la COMMAREA que se recibe en este progra ma.
- EIBAID; Contiene un cdigo que identifica el tipo de tecla pulsada.
- EIBFN; Cdigo de la ltima funcin usada.
- EIBRCODE; Cdigo de retorno del CICS despus de ejecutar un mandato.
- EIBDS; El identificador simblico del ltimo conjunto de datos en una peticin al
Control de Ficheros.
- EIBREQUID; El identificador de peticin para una peticin al Control de
Intervalos.
ACMSAP - ERP Learning Cobol - 227
www.acmsap.es.tl Telfono 983 11 12 84
- EIBERR; Es un switch de error, que indica si est activo que se ha producido un
error en un mandato CICS.
La codificacin en COBOL de los campos de este bloque es:
01 DFHEIBLK.
02 EIBTIME PIC S9(7) COMP-3. (Fecha)
02 EIBDATE PIC S9(7) COMP-3. (Hora)
02 EIBTRNID PIC X(4). (Cod. de TRN. asoc. a la tarea)
02 EIBTASKN PIC S9(7) COMP-3. (N de la tarea)
02 EIBTRMID PIC X(4). (Terminal asociado a la tarea)
02 DFHEIGDI PIC S9(4) COMP. (Reservado por el cics)
02 EIBCPOSN PIC S9(4) COMP. (Posicin del cursor en la entrada)
02 EIBCALEN PIC S9(4) COMP. (Long. comarea del ltimo mand.)
02 EIBAID PIC X. (Valor de la TECLA pulsada)
02 EIBFN PIC X(2). (Ident. del ltimo mand. cics ejec.)
02 EIBRCODE PIC X(6). (Cdigo del lti. mand. cics ejec.)
02 EIBDS PIC X(8). (Nombre de fichero usado en ...)
02 EIBREQUID PIC X(8).
02 EIBRSRCE PIC X(8).
02 EIBSYNC PIC X.
02 EIBFREE PIC X.
02 EIBRECV PIC X.
02 EIBFILO2 PIC X.
02 EIBATT PIC X.
02 EIBEOC PIC X.
02 EIBFMH PIC X.
02 EIBCOMPL PIC X.
02 EIBSIG PIC X.
02 EIBCONF PIC X.
02 EIBERR PIC X.
02 EIBERCD PIC X.
02 EIBSYNRB PIC X.
ACMSAP - ERP Learning Cobol - 228
www.acmsap.es.tl Telfono 983 11 12 84
02 EIBNODAT PIC X.
02 EIBSYNRB PIC X.
02 EIBNODAT PIC X.
02 EIBRESP PIC S9(8) COMP. (N de la condicin de ERROR)
02 EIBRESP2 PIC S9(8) COMP. (Ms infor. Sobre el error)
3. FORMATO DE LOS MANDATOS
El formato general de un mandato CICS es:
EXECUTE CICS funcin opcin
opcin(argumento)
.
.
.
.
(Podemos codificar EXEC en lugar EXECUTE).
Donde:
- funcin Describe la operacin requerida. Slo puede haber una funcin
asociada con cada mandato CICS.
- opcin Describe cada una de las facilidades opcionales utilizables para cada
funcin.
Algunas opciones van seguidas por un argumento entre parntesis, otras no.
Las opciones pueden ser incluidas en cualquier orden.
- argumento Es el valor de un dato o el nombre de un rea de datos.
Si ste rea no est definida en nuestro programa ir codifica do entre comillas, si
ya lo est en el programa, ir sin ellas.







ACMSAP - ERP Learning Cobol - 229
www.acmsap.es.tl Telfono 983 11 12 84
4. MANDATO DE CONDICIONES DE EXCEPCIN
EXEC CICS HANDLE CONDITION condicin(etiqueta)
condicin(etiqueta)
.
.
.
La condicin es el identificador de error. Puede haber hasta 16 condiciones en un
mandato HANDLE.
La etiqueta es el nombre del punto del programa a donde bifurca en el caso de
cumplirse esta condicin.
Ejemplo:
EXEC CICS HANDLE CONDITION ENDFILE(FIN-FICHERO)
ERROR(OTRO-FICHERO)
END-EXEC
Este mandato debe codificarse previamente al mandato CICS al que afecte; de
forma que en el primer paso de traduccin es transformado, en Cobol, en GO TO
DEPENDING ON o ALTER, afectando a todos los mandatos CICS que hubiera por
detrs hasta el siguiente mandato HANDLE CONDITION existente.
5. MANDATO IGNORE
El mandato CICS IGNORE se encarga de anular el tratamiento de una
determinada condicin excepcional para todos los mandatos CICS posteriores a
l.
Formato:
EXEC CICS IGNORE CONDITION condicin
Si quisiramos anular todas las condiciones excepcionales de un determinado
mandato lo haremos con la opcin NOHANDLE en ese mandato.
Formato:
EXEC CICS ........
........
........
NOHANDLE
ACMSAP - ERP Learning Cobol - 230
www.acmsap.es.tl Telfono 983 11 12 84
6. CONTROL DE LAS CONDICIONES DE EXCEPCION USANDO LA OPCION
RESP
El problema de la anterior forma de trabajar es que se obtenan programas poco
estructurados. A partir de la versin 1.7 todos los mandatos CICS soportan una
opcin nueva, RESP. Esta opcin permite el control de las condiciones
excepcionales de forma estructurada.
- Control con HANDLE CONDITION
WORKING-STORAGE SECTION.
.
.
.
PROCEDURE DIVISION.
.
.
.
EXEC CICS HANDLE CONDITION
MAPFAIL (MAPA-VACIO)
ERROR (CANCELAR)
END-EXEC.
EXEC CICS SEND MAP (MAPA)
MAPSET (FYC100F)
ALARM
ERASE
FREEKB
FRSET
END-EXEC.
.
.
.


ACMSAP - ERP Learning Cobol - 231
www.acmsap.es.tl Telfono 983 11 12 84
- Control con la opcin RESP.
WORKING-STORAGE SECTION.
77 RESPUESTA PIC S9(8) COMP.
.
.
.
PROCEDURE DIVISION.
EXEC CICS HANDLE CONDITION
ERROR (CANCELAR)
END-EXEC.
.
.
.
EXEC CICS SEND MAP (MAPA)
MAPSET (FYC100F)
ALARM
ERASE
FREEKB
FRSET
RESP (RESPUESTA)
END-EXEC.
IF RESPUESTA =DFHRESP (MAPFAIL)
PERFORM MAPA-VACIO.
.
.
.
Aunque usemos la opcin RESP conviene tener, al principio de la PROCEDURE
DIVISION, un mandato HANDLE CONDITION para controlar un posible error
general no contemplado.

ACMSAP - ERP Learning Cobol - 232
www.acmsap.es.tl Telfono 983 11 12 84













TECLAS
ACMSAP - ERP Learning Cobol - 233
www.acmsap.es.tl Telfono 983 11 12 84
1 TECLAS DE PANTALLA
CLEAR
Elimina el contenido total de la pantalla.
El contenido se puede recuperar, presionando la tecla PA2.
ERASE EOF
Elimina el contenido o parte del contenido del campo a partir de donde est
el cursor.
El contenido se puede recuperar, presionando la tecla PA2.
RESET CURSOR
Enva el cursor a la primera posicin del primer campo del usuario definido
en el panel.
TAB
Enva el cursor a la primera posicin del prximo campo del usuario, (en
sentido dearriba abajo y de izquierda a derecha).
Bloq
Fija letras maysculas, quedan disponibles las funciones de arriba de las
teclas standard con doble funcin.

Igual que la anterior, pero slo mientras se fija la tecla. Elimina la funcin de
la anterior.
RESET
Restaura efectos de otras teclas, tales como INS MODE, etc...

Mueve el cursor de derecha a izquierda.
RETURN
Enva el cursor a la primera posicin del prximo campo del usuario, (en
sentido de arriba abajo).

ACMSAP - ERP Learning Cobol - 234
www.acmsap.es.tl Telfono 983 11 12 84
ENTER
Libera y enva al ordenador central los mandatos del usuario.

INSERT
Facilita la insercin de nuevos caracteres MODE entre los ya escritos en una
lnea. Su efecto se
neutraliza por medio de la tecla RESET.
SUPRIMIR o DEL
Elimina caracteres que se encuentren a continuacin del cursor, uno a uno.
PA1
Cancela comandos de TSO en ejecucin.
Tambin es til en consultas de IMS
PA2
Es til en consultas de IMS.
FLECHA ARRIBA
Desplaza el cursor, posicin a posicin, hacia arriba.
FLECHA ABAJO
Desplaza el cursor, posicin a posicin, abajo.
FLECHA IZQUIER.
Desplaza el cursor, posicin a posicin, hacia la izquierda.
FLECHA DERECHA
Desplaza el cursor, posicin a posicin, hacia la derecha.
2 TECLAS PROGRAMABLES
ISPF facilita 12 funciones que, para mayor comodidad del usuario, se asignan a
las teclas que a continuacin se describirn. Las 6 primeras teclas, disponen de
doble funcin. Para el usuario de ISPF son aplicables las funciones de la parte
baja de las teclas. Las funciones de programa suelen estar asignadas de la forma
que aqu se indica. En todo caso, el usuario podra modificar, si lo estimara
conveniente, estas asignaciones de acuerdo con lo indicado en la opcin 0.3


ACMSAP - ERP Learning Cobol - 235
www.acmsap.es.tl Telfono 983 11 12 84
PF1
HELP
Facilita informacin adicional sobre mensajes de condicin de error o sobre
opciones y mandatos ISPF.
PF2
SPLIT
Parte la pantalla en dos permitiendo disponer en el mismo Terminal de dos
pantallas de trabajo.
PF3
END
Origina el retorno al panel anterior.
PF4
PRINT
Graba el contenido de la pantalla actual en el fichero spf(n).list para que
poste riormente pueda ser impreso.
PF5
FIND
Reitera la accin del mandato FIND, utilizando en distintas opciones, como
se ver ms adelante.
PF6
CHANGE
Reitera la accin del mandato CHANGE utilizado en la opcin 2 (edit), como
se ver ms adelante.
PF7
UP
Visualiza informacin situada por arriba de la actual de pantalla. Esta funcin
acta de acuerdo con lo escrito en SCROLL.
PF8
DOWN
Visualiza informacin situada por debajo de la actual de pantalla. Esta
funcin acta de acuerdo con lo escrito en SCROLL.
ACMSAP - ERP Learning Cobol - 236
www.acmsap.es.tl Telfono 983 11 12 84
PF9
SWAP
Desplaza el cursor desde una pantalla a otra cuando la funcin SPLIT esta
acti va.
PF10
LEFT
Visualiza informacin situada a la izquierda de la actual de pantalla. Esta
funcin acta de acuerdo con lo escrito en SCROLL.
PF11
RIGHT
Visualiza informacin situada a la derecha de la actual de pantalla. Esta
funcin acta de acuerdo con lo escrito en SCROLL.
PF12
RETURN
Origina el retorno al men primario u a otra opcin mediante el signo = y el
numero de la misma.

ACMSAP - ERP Learning Cobol - 237
www.acmsap.es.tl Telfono 983 11 12 84


NOTAS PRELIMINARES................................................................................................................ 2
DEFINICIN DE CONCEPTOS................................................................................................... 11
OTRAS FUNCIONES DEL COMPILADOR: ............................................................................. 12
DEFINICIN DE DATOS.............................................................................................................. 14
FORMATO GENERAL DE DEFINICIN DE CAMPOS.......................................................... 15
NORMAS DE CONSTRUCCION DE NOMBRES..................................................................... 16
CAMPOS COMPUESTOS............................................................................................................ 18
SPACE / SPACES. ........................................................................................................................ 31
HIGH-VALUE/S:............................................................................................................................. 32
LOW-VALUE/S:.............................................................................................................................. 32
ALL carcter/es: ......................................................................................................................... 33
LENGUAJE COBOL ..................................................................................................................... 37
REPRESENTACIN DE CARACTERES ................................................................................. 37
PALABRAS COBOL RESERVADAS........................................................................................ 37
Representacin de Caracteres EBCDIC................................................................................. 38
Hoja de Codificacin en COBOL .............................................................................................. 45
COPY .............................................................................................................................................. 54
PERFORM ...................................................................................................................................... 73
SPECIAL-NAMES.......................................................................................................................... 80
DECIMAL-POINT IS COMMA. .................................................................................................... 80
INPUT-OUTPUT SECTION.......................................................................................................... 80
PRRAFO FILE-CONTROL ........................................................................................................ 80
INTRODUCCIN A LOS DATOS ............................................................................................... 81
DATA DIVISION............................................................................................................................. 81
SECCIONES DE LA DATA DIVISION ....................................................................................... 81
FUNCIN......................................................................................................................................... 82
FUNCIONES Y PROCEDIMIENTOS.......................................................................................... 90
Variables Globales y Locales.................................................................................................... 92
FUNDAMENTOS DE FICHEROS VSAM Y MANDANTOS DEL AMS............................... 105
INSTRUCCIONES DE ENTRADA / SALIDA .......................................................................... 112
STOP RUN.................................................................................................................................... 142
ERRORES DE EJECUCIN .................................................................................................. 143
ARCHIVOS SECUENCIALES ................................................................................................... 150
ARCHIVOS INDEXADOS Y RELATIVOS............................................................................... 150
ANIMA.BAT NOMBRE-PROGRAMA (SIN EXTENSIN) .................................................... 152
F1 (Help) Ayuda. .......................................................................................................................... 152
PROGRAMACIN CON TABLAS O ARRAYS...................................................................... 157
CARACTERISTICAS DE ENTORNO. ENVIRONMENT DIVISION..................................... 173
FILE STATUS............................................................................................................................... 178
PROGRAMACIN CON CURSORES ..................................................................................... 180
PROCEDURE DIVISIN............................................................................................................. 191
TIPOS DE INSTRUCCIONES DE ENTRADA/SALIDA......................................................... 197
COBOL EN PC............................................................................................................................. 203
INSTRUCCIONES DE MANIPULACIN DE DATOS........................................................... 207
LLAMADAS ENTRE PROGRAMAS: LINKAGE SECTION................................................. 214
TECLAS......................................................................................................................................... 232
ACMSAP - ERP Learning Cobol - 238
www.acmsap.es.tl Telfono 983 11 12 84

También podría gustarte