Vous êtes sur la page 1sur 59

Estructura de un Programa

COBOL
Ing. Ronald Pérez

ronperez@ucab.edu.ve
ronaldrr@cantv.net
ronaldperezr@hotmail.com

Procesamiento de Datos
Notaciones sobre formatos de
instrucciones COBOL
Para definir la sintaxis de una instrucción se
utiliza un formato estándar usado en todos los
manuales de Cobol, cuyos símbolos y
significados se explican en este punto. Para ello
usamos como ejemplo el formato de la
instrucción MULTIPLY que permite realizar
multiplicaciones.

Procesamiento de Datos
Notaciones sobre formatos de
instrucciones COBOL

MULTIPLY { literal-numérico-1 |
identificador-1 } BY identificador-2
[ ROUNDED ]
[, identificador-3 [ ROUNDED ] ] …
[; ON SIZE ERROR instrucción-
imperativa ]

Procesamiento de Datos
Estructura de un programa COBOL

Un programa fuente Cobol es un conjunto de


instrucciones, párrafos y secciones que se
agrupan en cuatro DIVISIONES obligatorias
que, escritas en orden, son las siguientes:

oIDENTIFICATION DIVISION.
oENVIRONMENT DIVISION.
oDATA DIVISION.
oPROCEDURE DIVISION.

Procesamiento de Datos
IDENTIFICATION DIVISION
(División de identificación)
Tiene que ser incluida en cada programa
fuente. Sirve para proporcionar un nombre para
identificar el programa. Opcionalmente se
puede especificar información acerca del autor,
fecha en que fue escrito, etc.
Consta de siete posibles párrafos siendo
obligatorio solamente el primero de ellos. Su
formato general es el siguiente:

Procesamiento de Datos
IDENTIFICATION DIVISION
(División de identificación)
IDENTIFICATION DIVISION.
PROGRAM-ID. Nombre del programa.
[AUTHOR. Nombre programador.]
[INSTALLATION. Instalación.]
[DATE-WRITTEN. Fecha de escritura.]
[DATE-COMPILED. Fecha de compilación.]
[SECURITY. Comentario.]
[REMARKS. Comentario.]
Procesamiento de Datos
ENVIR0NMENT DIVISION
(División de entorno)
Permite definir el tipo de ordenador para el que
fue escrito el programa, así como los
dispositivos periféricos necesarios para soportar
los ficheros utilizados en el programa. El
formato general para esta división es el
siguiente:

Procesamiento de Datos
ENVIR0NMENT DIVISION
(División de entorno)
ENVIRONMENT DIVISION.
[CONFIGURATION SECTION.
[SOURCE-COMPUTER. Nombre ordenador.]
[OBJECT-COMPUTER. Nombre ordenador.]
[SPECIAL-NAMES. Nombre especiales.] ]
[INPUT-OUTPUT SECTION.
FILE-CONTROL.

Control de archivos.
[I-O CONTROL.
Control de entrada / salida.] ]

Procesamiento de Datos
ENVIR0NMENT DIVISION
(División de entorno)
CONFIGURATION SECTION
Esta sección es opcional. Su utilidad es indicar al
programa el modelo de ordenador a utilizar y asociar
nombres especiales que van a ser usados en el
programa.

Para esta última opción se utiliza el párrafo SPECIAL-


NAMES siendo interesante la posibilidad de
intercambiar la función de la coma y el punto decimal :
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.

Procesamiento de Datos
ENVIR0NMENT DIVISION
(División de entorno)
INPUT-OUTPUT SECTION
(Sección de entrada / salida)

Esta sección es también opcional. Proporciona


información al compilador sobre los archivos
utilizados en el programa y su relación con los
dispositivos externos. Se explicará con detalle a
la hora de trabajar con ficheros.

Procesamiento de Datos
DATA DIVISION (División de datos)

Se utiliza para realizar una descripción


completa de los ficheros que intervienen en el
programa, de sus registros lógicos y de las
variables de trabajo. Su formato es el siguiente:

Procesamiento de Datos
DATA DIVISION (División de datos)
DATA DIVISION.
[FILE SECTION.
[Declaración del archivo.
[Declaración del registro. ] ] ]
[WORKING-STORAGE SECTION.
[77 Declaración de variables independientes.]
[01 Declaración de registros.] ]
[LINKAGE SECTION.
[77 Declaración de variables independientes.]
[01 Declaración de registros.] ]
[COMMUNICATION SECTION.
[Descripción comunicación.]
[Declaración de registros. ] ]
[SCREEN SECTION.
[01 Descripción de pantallas.]]
Procesamiento de Datos
DATA DIVISION (División de datos)

FILE SECTION
(Sección de Ficheros)

En esta sección se describen detalladamente


toda la información referente a los archivos
utilizados en el programa, así como los
registros junto con sus campos y el tipo de
datos que se va a almacenar en ellos. Se verá
con más detalle en los apuntes de ficheros.

Procesamiento de Datos
DATA DIVISION (División de datos)

WORKING-STORAGE SECTION
(Sección de Trabajo)

En ella se describen las variables usadas por el


programa, ya sea con estructura de registro o
como campos independientes.
Para declarar una variable es necesario
especificar su número de nivel, su nombre, su
tipo y longitud, opcionalmente también se le
puede asignar un valor inicial.

Procesamiento de Datos
DATA DIVISION (División de datos)

Números de nivel
Sirven para indicar la relación que existe un campo
y otros campos. Los campos de datos pueden
clasificarse en:
Campos elementales: Un campo elemental es
aquel que no puede subdividirse.
Campos compuestos: Un campo compuesto está
formado por varios elementales.
Campos independientes: Un campo
independiente es un campo de trabajo que no
depende de ningún otro.

Procesamiento de Datos
DATA DIVISION (División de datos)

Números de nivel
Los números de nivel que pueden utilizarse son
del 01 al 49, 66, 77 y 88. El nivel superior es el
01.
Las normas a seguir para utilizar los números de nivel
son las siguientes:
•El número de nivel 01 sólo puede ir delante del
nombre de registro.
•Los números de nivel 02 a 49 pueden preceder a
cualquier campo del registro, elemental o compuesto.
•El número de nivel 77 se utiliza para describir los
campos independientes, las variables

Procesamiento de Datos
DATA DIVISION (División de datos)

Cláusula PICTURE
Permite declarar el nombre, el tipo y el tamaño
de un campo elemental. Su formato es el
siguiente:

nn identificador PIC IS especificación de formato.

•nn especifica el numero de nivel.


•identificador es el nombre que se le da a ese
campo. Nombre al que podremos hacer
referencia posteriormente.

Procesamiento de Datos
DATA DIVISION (División de datos)

Cláusula PICTURE

nn identificador PIC IS especificación de formato.

•El tipo del campo depende de los caracteres que


se empleen para definir la especificación de
formato.
•La longitud de un campo viene dada por el
número de caracteres empleados en la
especificación de formato para declarar el campo.
•Los campos pueden ser alfabéticos,
alfanuméricos y numéricos.

Procesamiento de Datos
DATA DIVISION (División de datos)

Cláusula PICTURE

nn identificador PIC IS especificación de formato.

•El tipo del campo depende de los caracteres que


se empleen para definir la especificación de
formato.
•La longitud de un campo viene dada por el
número de caracteres empleados en la
especificación de formato para declarar el campo.
•Los campos pueden ser alfabéticos,
alfanuméricos y numéricos.

Procesamiento de Datos
DATA DIVISION (División de datos)
Cláusula PICTURE

Campos alfabéticos
Permiten almacenar letras y/o espacios en blanco. Para
definirlos se emplea el carácter A.
77 NOMBRE PIC A(10).

Campos alfanuméricos
Permiten almacenar cualquier carácter del alfabeto que
se esté utilizando. El carácter empleado para definirlos
es la X.
77 NIF PIC X(10).

Procesamiento de Datos
DATA DIVISION (División de datos)
Cláusula PICTURE

Campos numéricos

Almacenan cualquier valor numérico que no tenga más


de 18 cifras. Los caracteres que se emplean para definir
un campo de este tipo son 9, S y V. El 9 representa una
cifra del 0 al 9, es decir un dígito decimal.

77 PRECIO PIC 9(6).


La S indica la aparición de signo. No es obligatorio,
pero si conveniente porque si no Cobol, después de
cada operación lo suprime. No ocupa espacio en
memoria y cuando se pone, debe ser el primer carácter
de la especificación de formato.
Procesamiento de Datos
DATA DIVISION (División de datos)
Cláusula PICTURE

Campos numéricos

77 SALDO PIC S9(7).

La V representa la posición del punto decimal. Se


denomina punto decimal implícito ya que no ocupa
espacio en memoria y sólo se usa internamente para
alinear las partes decimales de los campos cuando se
quiere realizar una operación.

77 NOTA PIC 99V99.

Procesamiento de Datos
DATA DIVISION (División de datos)
PICTURE para edición

Los caracteres descritos hasta ahora para definir los


datos numéricos, no sirven para ser visualizados por
pantalla. Para se utilizan los caracteres de edición, que
son los siguientes:

La Z representa una cifra del 0 al 9. Si la cifra a escribir


se corresponde con un 0 no significativo, en su lugar se
escribe un espacio en blanco.

El * (asterisco) representa una cifra del 0 al 9. Si la cifra


a escribir se corresponde con un 0 no significativo, se
escribe en su lugar un asterisco.
Procesamiento de Datos
DATA DIVISION (División de datos)
PICTURE para edición

Los caracteres Z y * no pueden ir precedidos, pero si


seguidos, del carácter 9.

El . (punto) hace que se inserte un punto decimal para


separar la parte entera de la parte fraccionaria al
escribir el campo.

La , (coma) hace que se inserte este mismo carácter en


el lugar que se indica de la especificación de formato.

Procesamiento de Datos
DATA DIVISION (División de datos)
Cláusula VALUE

Permite asignar un valor inicial para un campo que se


define con PICTURE dentro de la WORKING-
STORAGE SECTION.

77 TOTAL PIC 9(5) VALUE 0.

Procesamiento de Datos
DATA DIVISION (División de datos)

LINKAGE SECTION (Sección de Enlace)


Permite declarar campos de memoria para ser
utilizados por otros programas y por consiguiente,
conservar los datos de un programa para otro.

COMMUNICATION SECTION (Sección de


Comunicaciones)
Permite procesar mensajes y controlar el flujo de
los mismos.

SCREEN SECTION (Sección de Pantalla)


Controla la representación de los datos en la
pantalla de la forma más optima.
Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
Indica la secuencia de operaciones necesarias
para resolver un problema dado. Es la parte del
programa que se ejecuta (el algoritmo).

Puede ser dividida en secciones y estás a su


vez en párrafos. Cada párrafo generalmente
agrupará varias sentencias. La división en
secciones es opcional y poco utilizada, en
cambio, la división en párrafos es muy
frecuente.

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
VISUALIZAR DATOS: DISPLAY

Esta sentencia permite escribir datos en el dispositivos


estándar de salida, la pantalla.

DISPLAY “RESULTADO:” A

Permite visualizar un dato en una posición de pantalla


determinada. LINE y POSITION sirven para especificar
la fila y la columna donde va a comenzar la operación
de escritura.

DISPLAY “ENTRADA DE DATOS:” LINE 10 POSITION 20

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
VISUALIZAR DATOS: DISPLAY
Otras opciones:

ERASE: Borra la pantalla completa. Si se escribe ERASE


EOL borrar desde la posición del cursor hasta el final de
esa línea, y si se escribe ERASE EOS borra desde la
posición del cursor hasta el final de la pantalla.
NO ADVANCING: Hace que el cursor no avance de línea,
una vez que se ha ejecutado la sentencia DISPLAY.
HIGH y LOW: Permite visualizar la información en alta
(HIGH) o baja (LOW) intensidad de vídeo. El valor por
defecto es HIGH.
BLINK: Hace parpadear los datos visualizados.

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
VISUALIZAR DATOS: DISPLAY
Otras opciones:

REVERSE: Los elementos visualizados aparecerán en


vídeo inverso.
CONTROL: Permite especificar el color de fondo y el color
de los caracteres que se escriben.
FCOLOR = color: Especifica el color de los caracteres.
BCOLOR = color: Especifica el color de fondo.
color puede ser una constante de las siguientes: BLACK,
BLUE, GREEN, CYAN, RED, MAGENTA, BROWN o
WHITE.
DISPLAY ‘HOLA MUNDO’ CONTROL
‘FCOLOR=WHITE,BCOLOR=BLUE’
Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
LEER DATOS: ACCEPT
Permite asignar valores a uno o más variables desde el
teclado.

ACCEPT A

Al igual que DISPLAY, también permite efectuar la entrada


de datos colocando el cursor en una determinada
posición, usando LINE y POSITION.

ACCEPT A LINE 10 POSITION 20

También funcionan con ACCEPT las opciones ERASE,


HIGH, LOW, BLINK, REVERSE y CONTROL, todas ellas
con las mismas funciones que en DISPLAY.
Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
LEER DATOS: ACCEPT

Además existen las siguientes posibilidades:

TAB: Obliga a pulsar Enter cuando tecleando la entrada


del campo leído se llega al final del campo. Si no se
especifica TAB no es necesario.

NO SEP: Suprime el sonido emitido por defecto al ejecutar


la orden.

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
LEER DATOS: ACCEPT

Además existen las siguientes posibilidades:

PROMPT [literal]: Marca sobre pantalla con el carácter


especificado las posiciones vacías mientras se ejecuta la
orden. Si no se indica carácter por defecto se utiliza el
subrayado.

UPPER - Convierte la entrada a mayúsculas. Tiene que


utilizarse con CONTROL.

ACCEPT NOMBRE NO BEEP CONTROL


“UPPER,BCOLOR=BLUE"
Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
INTRUCCIÓN DE ASIGNACIÓN: MOVE

Esta sentencia permite transferir datos de una variable


a otra u otras. Los datos que se transfieren deben ser
del mismo tipo que la variable a la que se mueven.
Después de realizarse la operación de mover, las dos
variables contendrán los mismos datos.

MOVE 0 TO SUMA  SUMA=0

MOVE A TO MAYOR  MAYOR=A

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA ADD

Permite sumar dos o más operandos numéricos y


almacenar el resultado en uno o más campos de datos.

Opción TO
Esta opción hace que los valores de los operandos a su
izquierda sean añadidos a los valores de los operandos
a su derecha. Todos los operandos tienen que ser
numéricos de trabajo.

ADD 1 TO CONT  CONT = CONT + 1


ADD A TO B C  B = B + A C = C + A

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA ADD

Opción GIVING

La suma de los valores de los operandos que preceden


a GIVING se almacenan en los campos que están a
continuación. Los campos que están a continuación de
GIVING pueden ser numéricos de trabajo o de edición.

ADD A B GIVING CONT  CONT = A + B


ADD A B GIVING S T  S=A+BT=A+B

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA SUBTRACT

Se utiliza para restar un dato numérico, o la suma de


dos o más datos numéricos, del valor de una o más
variables, dejando el resultado en uno o más campos.

Opción FROM

Los operandos que preceden a FROM se suman y el


total se resta del valor actual de la variable que esta a
continuación, almacenando el resultado en ella misma.
El proceso se repite para el resto de variables que sigan
a FROM.

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA SUBTRACT

SUBTRACT 1 FROM A A=A-1


SUBTRACT A B FROM R  R = R - ( A + B)
SUBTRACT A B FROM R T  R = R- ( A + B) T = T - (
A + B)

Opción GIVING
Los operandos que preceden a FROM se suman y el
total se resta del valor actual de la variable que esta a
continuación, almacenando el resultado en las variables
que siguen a la palabra GIVING.
SUBTRACT 1 FROM A GIVING B  B = A - 1
SUBTRACT A B FROM R GIVING T  T = R - ( A + B )
Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA MULTIPLY

Es utilizada para multiplicar un dato numérico por otro u


otros datos numéricos y dejar el resultado en una o más
variables.

Opción BY
El operando que precede a BY se multiplica por el valor
actual de la variable que se indica a continuación,
almacenando el resultado en ella misma. El proceso se
repite para el resto de variables que siguen a BY.
MULTIPLY 2 BY A  A = A * 2
MULTIPLY A BY P T  P = P * A T = T * A

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA MULTIPLY

Opción GIVING

El operando que precede a BY se multiplica por el que


está a continuación suya, almacenando el resultado en
las variables que siguen a la palabra GIVING.

MULTIPLY 2 BY A GIVING P  P = A * 2
MULTIPLY A BY P GIVING T  T = P * A

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA DIVIDE

Se utiliza para dividir uno o más datos numéricos por


otro y dejar el resultado en uno o más campos.

Opción INTO

El operando que precede a INTO actúa como divisor del


valor actual del dato que va a continuación suyo,
almacenando el resultado en este mismo campo y
repitiendo el proceso para el resto de los campos que
siguen a la palabra INTO.
DIVIDE 5 INTO A  A = A / 5

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA DIVIDE

Opción GIVING

El operando que precede a INTO actúa como divisor del


valor actual del dato que va a continuación suyo,
almacenando el resultado de dicha división en las
variables que aparecen después de GIVING.

DIVIDE 5 INTO A GIVING R  A = A / 5

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA DIVIDE

Opción BY

El operando que precede a BY se divide por valor del


dato que va a continuación suyo, almacenando el
resultado de dicha división en las variables que
aparecen después de GIVING.

DIVIDE A BY 5 GIVING R  R = A / 5

Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA DIVIDE

Opción REMAINDER

Se encarga de recoger el resto de una división entre


dos datos de tipo entero. Se puede usar tanto con INTO
como con BY, pero en ambos casos con la opción
GIVING.

DIVIDE 5 INTO A GIVING A REMAINDER R 


A = A div 5 R = A mod 5

DIVIDE A BY 10 GIVING R REMAINDER V 


R = A div 10 V = A mod 10
Procesamiento de Datos
PROCEDURE DIVISION
(División de procedimientos)
SENTENCIA COMPUTE

Permite asignar a una o más variables numéricas el


valor de una constante numérica, de otro campo
numérico o de una expresión aritmética.

COMPUTE A = 0
COMPUTE AUX = A
COMPUTE RESULTADO = A * B + (B - 2) / 5

Procesamiento de Datos
SENTENCIAS DE CONTROL

Procesamiento de Datos
SENTENCIA IF

Permite tomar una decisión referente a una acción a


ejecutar en un programa, basándose en el resultado,
verdadero o falso, de una determinada condición.

IF A > 0
MOVE 1 TO A Se ejecuta si la condición es verdadera.
END-IF

Procesamiento de Datos
SENTENCIA IF

Si el resultado de la condición es falso la instrucción no


se ejecuta.

IF A + 1 > B AND B > C * 2


MOVE 0 TO A Se ejecuta si la condición es verdadera.
ELSE
ADD 1 TO A Se ejecuta si la condición es falsa.
END-IF

Procesamiento de Datos
SENTENCIA IF

El ámbito de una sentencia IF finaliza de cualquiera de


las dos formas siguientes:
1- Por un punto.

IF B NOT = 0 DISPLAY "B es distinto de 0".

2- Por una cláusula END-IF

IF B NOT = 0 DISPLAY "B es distinto de 0" END-IF


Cuando dentro del condicional hay varias sentencias,
solamente puede llevar punto la última, ya que este es
el que indica el final de la sentencia.

Procesamiento de Datos
SENTENCIA IF

IF A < B
COMPUTE C = B – A
DISPLAY "B - A = " NO ADVANCING
ELSE
COMPUTE C = A – B
DISPLAY "A - B = " NO ADVANCING
DISPLAY C.

Procesamiento de Datos
SENTENCIA IF

Las sentencias IF… ELSE pueden estar


anidadas.
IF A = 0
IF B NOT = 0
ADD B TO C
END-IF
ELSE
ADD A TO C
END-IF

Procesamiento de Datos
SENTENCIA PERFORM

Es la sentencia COBOL que se adapta a la construcción


de estructura repetitivas. Tiene varios formatos que
estudiaremos a continuación.

Formato 1

Nos permite llamar a un párrafo para que se ejecute


una vez. Un párrafo está formado por una serie de
instrucciones encabezadas por un nombre de párrafo.
Después de ejecutadas dichas instrucciones, el
programa seguirá en la siguiente a la instrucción
PERFORM ejecutada.

Procesamiento de Datos
SENTENCIA PERFORM

Formato 1

PERFORM CONTAR
...
CONTAR. Area
ADD 1 TO I
DISPLAY I.

Procesamiento de Datos
SENTENCIA PERFORM

Formato 2

Permite ejecutar un grupo de instrucciones un cierto número


de veces.
PERFORM CONTAR 10 TIMES
...
CONTAR.
ADD 1 TO I
DISPLAY I.
También se podría ejecutar bajo el siguiente formato, con
igual resultado.
PERFORM 10 TIMES
ADD 1 TO I
DISPLAY I
END-PERFORM
Procesamiento de Datos
SENTENCIA PERFORM

Formato 3

Ejecuta un conjunto de instrucciones hasta que la


condición especificada sea cierta.

MOVE 0 TO I
PERFORM CONTAR UNTIL I = 10
...
CONTAR.
ADD 1 TO I
DISPLAY I.

Procesamiento de Datos
SENTENCIA PERFORM

Formato 3

También puede ejecutarse utilizando la sentencia END-


PERFORM.
MOVE 0 TO I
PERFORM UNTIL I = 10
ADD 1 TO I
DISPLAY I
END-PERFORM

Procesamiento de Datos
SENTENCIA PERFORM

Formato 3

En ambos casos la condición de salida se evalúa


antes de entrar (mientras). Si es cierta, se da por
finalizada la ejecución de la sentencia PERFORM y
se pasa a la sentencia siguiente. Si es falsa se
ejecutan las sentencias que se encuentran dentro
de la estructura repetitiva.

Procesamiento de Datos
SENTENCIA PERFORM

Formato 3

La opción TEST AFTER evalúa la condición después de


la primera ejecución (repetir).

MOVE 7 TO I
PERFORM WITH TEST AFTER UNTIL I > 5
DISPLAY I Las instrucciones del bucle se ejecutan
una vez.
ADD 7 TO I
END-PERFORM

Procesamiento de Datos
SENTENCIA PERFORM

Formato 3

MOVE 7 TO I

PERFORM UNTIL I > 5


DISPLAY I Sin la opción TEST AFTER, no se ejecutan nunca.
ADD 7 TO I
END-PERFORM

Procesamiento de Datos

Vous aimerez peut-être aussi