You are on page 1of 71

LENGUAJE ORIENTADO A

SISTEMAS DE GESTIÓN

ELEMENTOS DEL
LENGUAJE COBOL

LENGUAJE COBOL
z Cobol, es un lenguaje de alto nivel (3ª generación) de tipo imperativo y
orientado a resolver problemas de gestión.
z COBOL significa:
• Common
• Business
• Oriented
z Lenguaje
• Fue creado en 1.960, por la comisión CODASYL (Conference on Data System
Lenguaje), formada por fabricantes, usuarios y gobierno USA, esta comisión
además han dado normas sobre Bases de Datos, Comunicaciones, etc..
• Existen numerosas versiones, las mas importantes son, las del 60, 65, 74 y 85;
siendo los compiladores más utilizados los de:
• MICROFOCUS
• MICROSOFT
• RM/COBOL (McFarland)
• COBOL2 (IBM)

LENGUAJE COBOL 2

1
ELEMENTOS DEL LENGUAJE
z Caracteres de Cobol
• Caracteres numéricos. 0/9.
• Caracteres alfabéticos. A/Z.
• Caracteres especiales. $, blanco, +, .........
• Caracteres empleados en puntuación
• { $, (, ), ,, ; }
• Caracteres aritméticos.
• { +, -, *, **, /, =, (, ) }
• Caracteres empleados en declaraciones
condicionales.
• { <, >, = }

LENGUAJE COBOL 3

ELEMENTOS DEL LENGUAJE


z Constantes
• Literales numéricos
• Literales de coma fija
• Literales de coma flotante.
[ +/- ] mantisa E [ +/- ] exponente
• Literales no numéricos.
• Constantes figurativas.
• ZERO.
• SPACE.
• ALL ‘carácter’.
• HIGH-VALUE .
• LOW-VALUE.

LENGUAJE COBOL 4

2
ELEMENTOS DEL LENGUAJE
z Palabras Reservadas.
• Identificadores predefinidos que tienen un significado especial en
COBOL.
• Por ejemplo: IDENTIFICATION, FILLER, ADD, COMPUTE, READ,
REWRITE
z Identificadores
• Son los nombres creados por el programador.
• Se forman por la combinación de los tres grupos de caracteres
siguientes: dígitos (0/9), letras (A/Z) y el guión (-).
• Estan compuesto por una combinación de 30 caracteres como
máximo.
• No pueden comenzar ni finalizar con un guión.
• Deberán comenzar por un carácter alfabético, excepto los
nombres de párrafos.
• No pueden tener el mismo nombre que una palabra reservada.

LENGUAJE COBOL 5

ELEMENTOS DEL LENGUAJE


z Operadores.
• Los operadores son símbolos que indican cómo son
manipulados los datos
Operadores Aritméticos
Operador Significado Ejemplo
+ Suma A+B
- Resta A-B
* Producto A*B
/ División A/B
** Exponenciación A ** B
= Asignación C=A+B
() Dar Prioridad D = (A + B)*C

LENGUAJE COBOL 6

3
ELEMENTOS DEL LENGUAJE
Operadores de Relación

= Igual que A=B

< Menor que A<B

> Mayor que A>B

<= Menor o igual que A <= B

>= Mayor o igual que A >= B

Operadores Lógicos

NOT Negación NOT ( A = B )

AND Conjunción A = B AND A > B

OR Disyunción A = B OR A < B

LENGUAJE COBOL 7

ELEMENTOS DEL LENGUAJE


z Expresiones Aritméticas.
• Una expresión aritmética puede ser una constante,
una variable o un conjunto de constantes y variables
unidas por operadores aritméticos.
• El punto, punto y coma o coma no pueden ir
precedidos por un espacio, pero si tienen que ir
seguidos por un espacio.
• Un paréntesis izquierdo no puede ir seguido por un
espacio, un paréntesis derecho no puede ir precedido
por un espacio.
• Un operador aritmético o un signo igual tiene que ir
precedido por un espacio y seguido por un espacio.

LENGUAJE COBOL 8

4
ELEMENTOS DEL LENGUAJE
z Expresiones Aritméticas.
• A la hora de evaluar una expresión
• Primero se evalúan las operaciones entre
paréntesis, del más interno al más externo.
• Después se evalúan los operadores con la
prioridad siguiente:
•+ y - unarios
• **
• *, /
• +,-

LENGUAJE COBOL 9

ELEMENTOS DEL LENGUAJE


z Expresiones de Boole.
• Una expresión de Boole da como resultado
un valor VERDADERO o FALSO.
• Los operadores que intervienen en una
expresión de Boole pueden ser: operadores
de relación y operadores lógicos.
A >= 30 AND B = C
A = 0 AND B * 2 NOT= 0 OR C = 0

LENGUAJE COBOL 10

5
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN

ESTRUCTURA DE UN
PROGRAMA EN COBOL

DIVISIONES, SECCIONES Y
PÁRRAFOS

z IDENTIFICATION DIVISION.
z [ENVIRONMENT DIVISION.]
z [DATA DIVISION.]
z PROCEDURE DIVISION.

LENGUAJE COBOL 12

6
DIVISIONES, SECCIONES Y
PÁRRAFOS
IDENTIFICATION DIVISION. división
PROGRAM-ID. EJEMPLO.
AUTHOR. EUI. párrafo
DATE-WRITTEN. 01-ENERO-93.
DATE-COMPILED. 01-ENERO-93.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION. sección
SOURCE-COMPUTER. IBM PERSONAL COMPUTER.
OBJECT-COMPUTER. IBM PERSONAL COMPUTER.
SPECIAL-NAMES. párrafo
DECIMAL-POINT IS COMMA. cláusula
INPUT-OUTPUT SECTION. sección
FILE-CONTROL. párrafo
SELECT IMPRESORA ASSING TO PRINTER.
cláusulas
LENGUAJE COBOL 13

DIVISIONES EN COBOL
z IDENTIFICATION DIVISION
• PROPÓSITO: Identificar el programa de forma que se distinga de
los otros, además de proporcionar el nombre del autor, cuando se
escribió etc.
• PÁRRAFOS
• PROGRAM-ID.
• AUTHOR.
• INSTALLATION.
• DATE-WRITTEN.
• DATE-COMPILED.
• SECURITY.
• REMARKS.

LENGUAJE COBOL 14

7
DIVISIONES EN COBOL
z ENVIRONMENT DIVISION
• PROPÓSITO: En esta división se describe el
entorno físico en el cual se va a desarrollar el
programa. Entendiéndose por entorno, la clase de
sistema que se va a utilizar así como los dispositivos
de entrada/salida.
• SECCIONES
• CONFIGURATION SECTION.
• INPUT-OUPUT SECTION.

LENGUAJE COBOL 15

DIVISIONES EN COBOL
z CONFIGURATION SECTION.
• PROPÓSITO: Tiene como finalidad describir las características del
computador usado para compilar y ejecutar el programa, todo ello a
nivel de comentarios
• PÁRRAFOS
• SOURCE-COMPUTER. Modelo de ordenador.
• OBJECT-COMPUTER. Modelo de ordenador.
• SPECIAL-NAMES.
• [[Nombre de función IS nombre nemotécnico]
• [CURRENCY SIGN IS literal]
• [DECIMAL-POINT IS COMMA].]
z INPUT-OUTPUT SECTION.
• PROPÓSITO: Declarar los ficheros utilizados y la asignación a los
dispositivos de E/S.
• PÁRRAFOS
• FILE-CONTROL

LENGUAJE COBOL 16

8
DIVISIONES EN COBOL
z Nombre de función es un nombre reconocido por el
compilador y nombre nemotécnico es un nombre creado por
el programador. De esta forma podemos poner:
• CONSOLE IS CONSOLA
• SYSOUT IS ARCHI-PANTALLA
z La función de CURRENCY SING es indicar que el sistema
tiene que utilizar un carácter monetario distinto del que tiene
por defecto ($). El carácter sustituto de éste, tiene que ser
uno solo y alfabético.
z La función del DECIMAL-POINT IS COMMA es indicar que el
sistema tiene que sustituir la notación anglosajona por la
castellana en la función del punto decimal y la coma, en los
campos de edición.

LENGUAJE COBOL 17

DIVISIONES EN COBOL
z DATA DIVISION
• PROPÓSITO: En este apartado se definen los datos que
van a ser utilizados, tales como ficheros, los registros de
cada fichero etc. Cualquier dato utilizado en la
codificación del programa debe estar definido en esta
división.
• PÁRRAFOS
• WORKING-STORAGE SECTION.
• FILE SECTION.
z PROCEDURE DIVISION
• PROPÓSITO: Es en esta división donde se codifica el
algoritmo propiamente dicho, esto es, donde se
especifican las instrucciones adecuadas para resolver el
problema.

LENGUAJE COBOL 18

9
HOJA DE CODIFICACIÓN
123456 7 8 A 11 12 A 72 73 A 80
Se utilizaban para
indicar los números de
secuencia, permitiendo MARGEN A MARGEN B
ordenar fácilmente el Son opcionales, se utilizan normalmente
programa para escribir comentarios que identifican
el programa.

Se utiliza para poner un carácter especial (*) que


indica comienzo de un comentario. Si el carácter
especial que se incluye en esta columna es (-) indica
que es continuación de un literal no numérico, cuando
la longitud de éste, ocupa más de una línea.

LENGUAJE COBOL 19

HOJA DE CODIFICACIÓN
z Margen A
• Cabeceras de división: IDENTIFICATION DIVISION...
• Cabeceras de sección : CONFIGURATION SECTION...
• Cabeceras de párrafos: PROGRAM-ID...
• Nombre de procedimientos: ABRIR-FICHEROS...
• Descripciones de nivel FD: FD IMPRESO..
• Los números de nivel 01 y 77
z Margen B
• Todo aquello que no esté en los apartados anteriores.
z Casi todas estas reglas son innecesarias hoy en día, con la
simple elección de un editor adecuado y un estilo de
programación racional y estructurado.

LENGUAJE COBOL 20

10
REGLAS DE CODIFICACIÓN
z Los nombres de división, sección y párrafos deben escribirse solos en
una línea y finalizar con un punto.
z Cada entrada y cada sentencia del programa debe finalizar con un
punto.
z Si a lo largo de una línea física no se encuentra un punto, la siguiente
línea será tomada como continuación de la anterior, esto es, cada
entrada y cada sentencia del programa puede ocupar varias líneas
físicas.
z Si una entrada o una sentencia del programa no cabe en una línea
física, se continúa en la línea o líneas siguientes pero en el área B.
z No es obligatorio llenar totalmente una línea física.
z Se deben dejar líneas en blanco.
z El punto, la coma y el punto y coma no deben ir precedidos de un
espacio, pero sí seguidos de un espacio. La coma y el punto y coma
son opcionales y cuando se utilizan es para hacer más clara la
redacción del programa.
z Si se utiliza más de un espacio como separador entre palabras, el
compilador lo interpreta como uno solo.

LENGUAJE COBOL 21

ESTRUCTURA GENERAL
IDENTIFICATION DIVISION.
PROGRAM-ID. nombre de programa.
[ AUTHOR. comentarios... ] DATA DIVISION
[ INSTALLATION. comentarios... ] [ FILE SECTION.]
[ DATE-WRITTEN. comentarios... ] [ WORKING-STORAGE SECTION.]
[ DATE-COMPILED. comentarios... ]
[ SECURITY. comentarios... ] PROCEDURE DIVISION.
[ REMARKS. comentarios... ] nombre-de-párrafo.
{Sentencia}...}...
ENVIRONMENT DIVISION. nombre-de-párrafo.
[ CONFIGURATION SECTION. {Sentencia}...}...
SOURCE-COMPUTER. modelo-ord.
OBJECT-COMPUTER. modelo-ord.
SPECIAL-NAMES. nombres especiales]

[ INPUT-OUTPUT SECTION.
{ FILE CONTROL. control de archivos.}
[ I-O CONTROL. control entrada/salida.]]

LENGUAJE COBOL 22

11
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN

ESTRUCTURA DE UN
PROGRAMA EN COBOL

DIVISIONES, SECCIONES Y
PÁRRAFOS

z IDENTIFICATION DIVISION.
z [ENVIRONMENT DIVISION.]
z [DATA DIVISION.]
z PROCEDURE DIVISION.

LENGUAJE COBOL 24

12
DIVISIONES, SECCIONES Y
PÁRRAFOS
IDENTIFICATION DIVISION. división
PROGRAM-ID. EJEMPLO.
AUTHOR. EUI. párrafo
DATE-WRITTEN. 01-ENERO-93.
DATE-COMPILED. 01-ENERO-93.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION. sección
SOURCE-COMPUTER. IBM PERSONAL COMPUTER.
OBJECT-COMPUTER. IBM PERSONAL COMPUTER.
SPECIAL-NAMES. párrafo
DECIMAL-POINT IS COMMA. cláusula
INPUT-OUTPUT SECTION. sección
FILE-CONTROL. párrafo
SELECT IMPRESORA ASSING TO PRINTER.
cláusulas
LENGUAJE COBOL 25

DIVISIONES EN COBOL
z IDENTIFICATION DIVISION
• PROPÓSITO: Identificar el programa de forma que se distinga de
los otros, además de proporcionar el nombre del autor, cuando se
escribió etc.
• PÁRRAFOS
• PROGRAM-ID.
• AUTHOR.
• INSTALLATION.
• DATE-WRITTEN.
• DATE-COMPILED.
• SECURITY.
• REMARKS.

LENGUAJE COBOL 26

13
DIVISIONES EN COBOL
z ENVIRONMENT DIVISION
• PROPÓSITO: En esta división se describe el
entorno físico en el cual se va a desarrollar el
programa. Entendiéndose por entorno, la clase de
sistema que se va a utilizar así como los dispositivos
de entrada/salida.
• SECCIONES
• CONFIGURATION SECTION.
• INPUT-OUPUT SECTION.

LENGUAJE COBOL 27

DIVISIONES EN COBOL
z CONFIGURATION SECTION.
• PROPÓSITO: Tiene como finalidad describir las características del
computador usado para compilar y ejecutar el programa, todo ello a
nivel de comentarios
• PÁRRAFOS
• SOURCE-COMPUTER. Modelo de ordenador.
• OBJECT-COMPUTER. Modelo de ordenador.
• SPECIAL-NAMES.
• [[Nombre de función IS nombre nemotécnico]
• [CURRENCY SIGN IS literal]
• [DECIMAL-POINT IS COMMA].]
z INPUT-OUTPUT SECTION.
• PROPÓSITO: Declarar los ficheros utilizados y la asignación a los
dispositivos de E/S.
• PÁRRAFOS
• FILE-CONTROL

LENGUAJE COBOL 28

14
DIVISIONES EN COBOL
z Nombre de función es un nombre reconocido por el
compilador y nombre nemotécnico es un nombre creado por
el programador. De esta forma podemos poner:
• CONSOLE IS CONSOLA
• SYSOUT IS ARCHI-PANTALLA
z La función de CURRENCY SING es indicar que el sistema
tiene que utilizar un carácter monetario distinto del que tiene
por defecto ($). El carácter sustituto de éste, tiene que ser
uno solo y alfabético.
z La función del DECIMAL-POINT IS COMMA es indicar que el
sistema tiene que sustituir la notación anglosajona por la
castellana en la función del punto decimal y la coma, en los
campos de edición.

LENGUAJE COBOL 29

DIVISIONES EN COBOL
z DATA DIVISION
• PROPÓSITO: En este apartado se definen los datos que
van a ser utilizados, tales como ficheros, los registros de
cada fichero etc. Cualquier dato utilizado en la
codificación del programa debe estar definido en esta
división.
• PÁRRAFOS
• WORKING-STORAGE SECTION.
• FILE SECTION.
z PROCEDURE DIVISION
• PROPÓSITO: Es en esta división donde se codifica el
algoritmo propiamente dicho, esto es, donde se
especifican las instrucciones adecuadas para resolver el
problema.

LENGUAJE COBOL 30

15
HOJA DE CODIFICACIÓN
123456 7 8 A 11 12 A 72 73 A 80
Se utilizaban para
indicar los números de
secuencia, permitiendo MARGEN A MARGEN B
ordenar fácilmente el Son opcionales, se utilizan normalmente
programa para escribir comentarios que identifican
el programa.

Se utiliza para poner un carácter especial (*) que


indica comienzo de un comentario. Si el carácter
especial que se incluye en esta columna es (-) indica
que es continuación de un literal no numérico, cuando
la longitud de éste, ocupa más de una línea.

LENGUAJE COBOL 31

HOJA DE CODIFICACIÓN
z Margen A
• Cabeceras de división: IDENTIFICATION DIVISION...
• Cabeceras de sección : CONFIGURATION SECTION...
• Cabeceras de párrafos: PROGRAM-ID...
• Nombre de procedimientos: ABRIR-FICHEROS...
• Descripciones de nivel FD: FD IMPRESO..
• Los números de nivel 01 y 77
z Margen B
• Todo aquello que no esté en los apartados anteriores.
z Casi todas estas reglas son innecesarias hoy en día, con la
simple elección de un editor adecuado y un estilo de
programación racional y estructurado.

LENGUAJE COBOL 32

16
REGLAS DE CODIFICACIÓN
z Los nombres de división, sección y párrafos deben escribirse solos en
una línea y finalizar con un punto.
z Cada entrada y cada sentencia del programa debe finalizar con un
punto.
z Si a lo largo de una línea física no se encuentra un punto, la siguiente
línea será tomada como continuación de la anterior, esto es, cada
entrada y cada sentencia del programa puede ocupar varias líneas
físicas.
z Si una entrada o una sentencia del programa no cabe en una línea
física, se continúa en la línea o líneas siguientes pero en el área B.
z No es obligatorio llenar totalmente una línea física.
z Se deben dejar líneas en blanco.
z El punto, la coma y el punto y coma no deben ir precedidos de un
espacio, pero sí seguidos de un espacio. La coma y el punto y coma
son opcionales y cuando se utilizan es para hacer más clara la
redacción del programa.
z Si se utiliza más de un espacio como separador entre palabras, el
compilador lo interpreta como uno solo.

LENGUAJE COBOL 33

ESTRUCTURA GENERAL
IDENTIFICATION DIVISION.
PROGRAM-ID. nombre de programa.
[ AUTHOR. comentarios... ] DATA DIVISION
[ INSTALLATION. comentarios... ] [ FILE SECTION.]
[ DATE-WRITTEN. comentarios... ] [ WORKING-STORAGE SECTION.]
[ DATE-COMPILED. comentarios... ]
[ SECURITY. comentarios... ] PROCEDURE DIVISION.
[ REMARKS. comentarios... ] nombre-de-párrafo.
{Sentencia}...}...
ENVIRONMENT DIVISION. nombre-de-párrafo.
[ CONFIGURATION SECTION. {Sentencia}...}...
SOURCE-COMPUTER. modelo-ord.
OBJECT-COMPUTER. modelo-ord.
SPECIAL-NAMES. nombres especiales]

[ INPUT-OUTPUT SECTION.
{ FILE CONTROL. control de archivos.}
[ I-O CONTROL. control entrada/salida.]]

LENGUAJE COBOL 34

17
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN

LOS DATOS

DATA DIVISION
z FUNCIÓN
• Se describen los datos que van a ser usados, creados, o
producidos por el programa.
• Se describe la estructura de los ficheros que se van a
utilizar, así como las variables utilizadas en el programa y
que no son parte de los ficheros.
z FORMATO
DATA DIVISION.
[FILE SECTION.
{ Entrada de descripción de ficheros....}
{ Entrada de descripción de registros...}]
[WORKING-STORAGE SECTION.
[ Entrada de descripción de variables o registros ]]

LENGUAJE COBOL 36

18
TIPOS DE DATOS
z Una de las características típicas de
los datos que se usan en las
aplicaciones de gestión es la variedad
de formas y estructuras.
z Los datos se clasifican en:
• Campos Independientes
• Campos Compuestos
• Tablas

LENGUAJE COBOL 37

CAMPOS INDEPENDIENTES
z Es un campo de trabajo que será definido en la sección de
“working”. No forman parte de la descripción de los ficheros.
z Formato mínimo para su definición:
número-de-nivel nombre-de-dato
PICTURE especificación de formato.
z Donde:
• Número-de-nivel. Se utiliza el nivel 77.
• Nombre-de-datos. Un nombre de datos sirve para nombrar un campo
con el fin de poder referenciar en el programa, el contenido del
mismo.
• PICTURE. Determina la información que puede almacenarse en el
campo, así como las operaciones que con él pueden realizarse.
Permite definir el tipo y el tamaño del campo.

LENGUAJE COBOL 38

19
CLÁUSULA PICTURE

PICTURE/PIC IS especificación de formato.

Carácter Descripción Ejemplos


9 Cualquier dígito 1. PIC 99999
del 0 al 9 2. PIC 9(5)
V Posición Decimal 1. PIC 99v99
2. PIC 9(2)v99
S Signo 1. PIC S999
2. PIC S99v99

LENGUAJE COBOL 39

CLÁUSULA PICTURE
Descripción Valor Numérico Representación INTERNA

77 CANT PIC 9(6) 12234 012234


77 CANT PIC 9999 8956 8956
77 CANT PIC 9(10) 1234567 0001234567
77 CANT PIC 9999 285 0285
77 CANT PIC 99V9 38.50 38^5
77 CANT PIC 9(4)V99 452.39 0452^39
77 CANT PIC 999 550 550
77 CANT 99999V99 23561.00 23561^00
77 CANT PIC S999V99 156.29 156^29
77 CANT S9(3)V99 -1251.16 1251^16
77 CANT S9(4)V99 -0.10 0000^10
77 CANT S9(4)V99 -325.18 0325^18

LENGUAJE COBOL 40

20
CLÁUSULA PICTURE
Carácter Descripción Ejemplos
A Cualquier carácter letra 1. PIC AAAAA
2. PIC A(5)
X Cualquier carácter 1. PIC XXXXX
2. PIC X(5)

Descripción Ejemplo Representado en el Almacenamiento


como
77 VALOR PIC XXXXX BUENO B U E N O
77 VALOR PIC X(5) BUEN B U E N

77 VALOR PIC X(5) BUENOS B U E N O


77 VALOR PIC X(8) D. GIL D . G I L

LENGUAJE COBOL 41

CLÁUSULA PICTURE
Carácter Descripción

$ Se escribe el signo $ en el lugar correcto en que debe


aparecer en la salida
. Indica la posición del punto decimal
, Indica la posición de la coma como carácter de separación de
millares. La utilización de la cláusula DECIMAL POINT IS
COMMA en la SPECIAL-NAMES de la ENVIRONMENT DIVISION
invierte el uso de los puntos y coma.
* Sirve para reemplazar los ceros no significativos (a la
izquierda) por asteriscos
Z Sirve para reemplazar los ceros no significativos por
blancos
+ Se inserta en el extremo izquierdo o derecho. Representa la
aparición del signo. Si el número es positivo aparecerá
un + y si es negativo aparecerá un -.

LENGUAJE COBOL 42

21
CLÁUSULA PICTURE
Carácter Descripción

- Se inserta en el extremo izquierdo o derecho. Representa la


aparición del signo. Si el número es positivo aparecerá
un blanco y si es negativo aparecerá un -.
CR Representa la aparición del signo bancario CR de crédito.
Cuando el valor es positivo aparecerán blancos, si el
valor es negativo aparece los caracteres CR.
DB Representa la aparición del signo bancario DB de débito.
Cuando el valor es positivo aparecerán blancos, si el
valor es negativo aparece los caracteres DB.
0 Se usan para insertar ceros en las posiciones en que deben
aparecer
B Se usan para insertar blancos en las posiciones en que deben
aparecer

LENGUAJE COBOL 43

CLÁUSULA PICTURE
PICTURE CONTENIDO PICTURE Resultado
EDICIÓN Editado
9(4)V99 654321 9(4).99 6543.21
9(4)V99 054321 9(4).99 0543.21
9(3)V999 000546 999.99 000.54
9V99 567 99V.99 NO VALIDO

99 54 99.99 54.00
9999V99 500000 999.99 000.00

LENGUAJE COBOL 44

22
CLÁUSULA PICTURE

PICTURE CONTENIDO PICTURE Resultado


EDICIÓN Editado
9999 0704 ZZZ9 b704
999V 103 ZZZ.99 103.00
9(3)V99 00103 ZZZ.99 bb1.03
999V99 00000 Z(3).ZZ blancos
9(4)V99 001234 Z(4).ZZ bb12.34
999V99 00001 ZZZ.ZZ bbb.01

LENGUAJE COBOL 45

CLÁUSULA PICTURE

PICTURE CONTENIDO PICTURE Resultado


EDICIÓN Editado

9(6) 012345 ***999 *12345

9(6) 000012 ***999 ***012

9(6) 000123 ***999 ***123

9(5)V99 0012345 *****.99 **123.45

LENGUAJE COBOL 46

23
CLÁUSULA PICTURE
PICTURE CONTENIDO PICTURE Resultado
EDICIÓN Editado

9(7) 1234567 9,999,999 1,234,567

9(3)V99 12345 9,990,000.99 1,230,000.45

999 123 9B00B990 1b00b230

9(4) 1234 9,009,990 1,002,340

999 123 9BB99 1bb23

999 123 90099 10023

LENGUAJE COBOL 47

CLÁUSULA PICTURE
PICTURE CONTENIDO PICTURE Resultado
EDICIÓN Editado

9(4) 0123 $9999 $0123

9(4) 0123 $Z999 $b123

9(4) 0123 $*999 $*123

9(5)V99 0012345 $*****.99 $**123.45

9(5)V99 0123456 $**,***.99 $*1,234.56

LENGUAJE COBOL 48

24
CLÁUSULA PICTURE
PICTURE CONTENIDO PICTURE Resultado
EDICIÓN Editado
S999 -123 +999 -123
S999 +628 -999 628
S999 +456 999+ 456+
S9(3)V99 -12345 999.99DB 123.45DB
S999V99 -18200 $999.99CR $182.00CR
S9(3)V99 +15768 999.99DB 157.68bb
S9(3)V99 -65125 +$999.99 -$651.25
S9(3)V99 +57950 +$999.99 +$579.50

LENGUAJE COBOL 49

CLÁUSULA PICTURE
PICTURE CONTENIDO PICTURE Resultado
EDICIÓN Editado

9(5)V99 0000440 $$$$$$.99 $4.40

999V99 -00555 ++++.99 -5.55

999V99 00000 ++++.++ blancos

9(5)V99 0475682 $$$,$$$.99 $4,756.82

LENGUAJE COBOL 50

25
CLÁUSULA PICTURE

PICTURE CONTENIDO PICTURE Resultado


EDICIÓN Editado

X(6) CN1005 XXBBX(4) CN 1005

AAAA HOLA ABABABA H 0 L A

X(5) CASO3 XXXXBX000 CASO 3000

LENGUAJE COBOL 51

CLÁUSULA VALUE
z La inicialización de los campos independientes se debe
realizar a través de la cláusula VALUE, cuando se
están definiendo.
z Formato
• VALUE IS literal/constante figurativa
WORKING-STORAGE SECTION.
77 VARIABLE PIC X(20) VALUE “Listado Empleados”.
77 VARIABLE PIC 99 VALUE 10.
77 VARIABLE PIC V99 VALUE 0.03.
77 VARIABLE PIC 9(8) VALUE ZEROS.
77 VARIABLE PIC X(10) VALUE SPACES.
77 VARIABLE PIC X(9) VALUE ‘---------’ .
77 VARIABLE PIC X(9) VALUE ALL ‘-’.
77 CERO PIC 99999 VALUE ZEROS.
77 CERO PIC 99999 VALUE 0.

LENGUAJE COBOL 52

26
JUSTIFIED RIGHT
z Se utiliza únicamente con variables de tipo
alfabético o alfanumérico y su efecto es
eliminar la convención de justificación a la
izquierda de los datos no numéricos.

77 CAMPO PIC X(4) VALUE ‘AB’ JUST RIGHT.

A B

LENGUAJE COBOL 53

CAMPOS COMPUESTOS
z Son campos que pueden subdividirse.
z Se le conoce también con el nombre de registros.
z Pueden definirse en el área de trabajo (WORKING
-
STORAGE SECTION) y es obligada su utilización al
describir la estructura de los ficheros.

DATOS-VENDEDOR DATOS-DIRECCIÓN FECHA-ALTA

NUM-VEN NOMBRE APELLIDO1 APELLIDO2 PROVINCIA CALLE NCALLE DIA MES AÑO

LENGUAJE COBOL 54

27
CAMPOS COMPUESTOS
NUMERO DE NIVEL
01 VENDEDOR. ESPECIFICACIÓN
DE FORMATO
02 NUMERO PIC 999.
02 DATOS-VENDEDOR.

03 NOMBRE PIC X(10).


03 APELLIDO1 PIC X(10).
03 APELLIDO2 PIC X(10).

02 DATOS-DIRECCION.
03 PROVINCIA PIC X(30).
03 CALLE PIC X(15).
03 NCALLE PIC 99.

02 FECHA-ALTA.
03 DÍA NOMBRE PIC 99.
DE DATO
03 MES PIC 99.
03 ANIO PIC 99.

LENGUAJE COBOL 55

CAMPOS COMPUESTOS
z Los nombre de datos sirven para nombrar un campo
con el fin de poder referenciar en el programa, el
contenido del mismo.
z Si la información no se va a referenciar, el nombre de
datos puede sustituirse por la palabra reservada
FILLER.
z Los números de Nivel sirven para indicar la relación
existente entre un campo y el resto de los campos.
z Los números de nivel que pueden utilizarse son: del 01
al 49.
• [01] Sólo precede al nombre del registro.
• [02 a 49] Preceden a cualquier campo grupo o elemental.

LENGUAJE COBOL 56

28
CAMPOS COMPUESTOS
z Un campo grupo tiene un nivel superior que cualquiera de sus
campos elementales.
z Los números de nivel utilizados no tiene porque ser correlativos.
z Cualquier nombre de datos debe ir precedido por su número de
nivel.
z El número de nivel 01 deberá escribirse en el margen A, mientras
que su nombre asociado lo será en el margen B.
z Cualquiera de los restantes números de nivel dentro del campo
compuesto pueden situarse en cualquier columna.
z Se aconseja un escalonado progresivo de los niveles para una
mejor interpretación
z El tipo del campo determina la información que puede almacenarse
en el campo, así como las operaciones que con él pueden
realizarse. Se hace a través de la cláusula PICTURE.
z La longitud del campo viene dada por el número de caracteres
empleados en la especificación del formato para declarar el campo.

LENGUAJE COBOL 57

CAMPOS COMPUESTOS
z Calificación de los nombres de datos.
• En la declaración de campos compuestos, dos campos
elementales pueden tener el mismo nombre de datos.

01 DATOS.
02 TOTALES-SEMANALES.
03 HORAS PIC 99V99.
03 DEPTO-NO PIC 9(5).
02 TOTALES-MENSUALES.
03 HORAS PIC 99V99.
03 MAS-INFORMACION PIC 9(5).

HORAS OF/IN TOTALES-SEMANALES


HORAS OF/IN TOTALES-MENSUALES

LENGUAJE COBOL 58

29
CAMPOS COMPUESTOS
01 REG-VIEJO.
02 A-LA-FECHA.
03 MES....
03 ANUAL....
02 ULTIMO-PERIODO.
03 MES.... MES OF ULTIMO-PERIODO OF REG-VIEJO
03 ANUAL....
03 TOTAL.... TOTAL OF REG-NUEVO
01 REG-NUEVO.
02 A-LA-FECHA.
03 MES....
03 ANUAL....
02 ULTIMO-PERIODO.
03 MES....
03 ANUAL....
03 TOTAL....

LENGUAJE COBOL 59

NOMBRES DE CONDICIÓN
z Permite al programador definir constantes figurativas
adicionales para usarlas en el programa COBOL

88 nombre-de-dato VALUE IS/VALUES ARE constante-1


[THRU constante-2]

77 FINAL-FICHERO PIC XX.


88 FIN-FICHERO VALUE `SI`.

Si se desea preguntar SI ES FINAL DE FICHERO bastará con


decir:
IF FIN-FICHERO
en lugar de preguntar IF FINAL-FICHERO = `SI`.

LENGUAJE COBOL 60

30
NOMBRES DE CONDICIÓN
01 DATOS-PERSONALES.
02 NUMERO-ID...
02 NOMBRE......
02 DIRECCION....
02 EDUCACION PICTURE 99.
88 NO-BACHILLER VALUES ARE 0 THRU 11.
88 BACHILLER VALUE IS 12.
88 ALGO-UNIVERSIDAD VALUES ARE 13 THRU 15.
88 PROFESIONAL VALUE IS 16.
88 POSTGRADO VALUES ARE 17 THRU 20.
88 CODIGO-ERROR VALUES ARE 21 THRU 99.

IF BACHILLER ....
IF ALGO-UNIVERSIDAD OR PROFESIONAL
IF EDUCACION < 16

LENGUAJE COBOL 61

RENAMES
z La cláusula RENAMES provee al programador la capacidad de reagrupar los items de
datos elementales.

66 nombre-de-datos-1 RENAMES nombre-de -datos-2 [THRU nombre-de-datos-3]

01 REG-IMPUESTO.
02 NO-SEG-SOCIAL PIC X(9).
02 NOMBRE-COMPLETO.
03 NOMBRE PIC X(10).
03 INICIAL PIC XX.
03 APELLIDO PIC X(15).
02 TOTAL-A-LA-FECHA.
03 PAGO-BRUTO PIC 9(8)V99.
03 PAGO-NETO PIC 9(8)V99.
03 IMPUESTO-TRIBUTADO PIC 9(6)V99.
03 IMPUESTO-ESTADO PIC 9(4)V99.
66 ULTIMO-PAGO RENAMES APELLIDO THRU PAGO-NETO.

NOMBRE-COMPLETO TOTAL-A-LA-FECHA

NO-SEG-SOCIAL NOMBRE INICIAL APELLIDO PAGO-BRUTO PAGO-NETO IMPUESTO- IMPUESTO-


TRIBUT ESTADO
ADO

LENGUAJE COBOL 62

31
TABLAS
z Una tabla es un conjunto de valores almacenados en
posiciones consecutivas de memoria y con un nombre
de datos asignado.
z La referencia a entradas específicas de la tabla se
hace mediante un sólo nombre junto con un subíndice
que indica la posición de entrada particular.

WORKING-STORAGE SECTION.
01 Nombre-de-tabla.
02 Nombre-de-elemento OCCURS número-de-elementos TIMES
PICTURE tipo-de-elemento.

LENGUAJE COBOL 63

TABLAS
01TABLA
- INGRESOS - ESTADO.
02 INGRESOS- PROMEDIOS
OCCURS 50 TIMES PIC 9(6)V99.
z INGRESOS- PROMEDIOS (Índice) donde Índice es
mayor o igual que 1 y menor o igual que 50.

TABLA-INGRESOS-ESTADO
INGRESOS-PROMEDIO(1) INGRESOS-PROMEDIO(50)

LENGUAJE COBOL 64

32
TABLAS
01 TABLA-INGRESOS-ESTADO.
02 INGRESOS-PROMEDIOS OCCURS 50 TIMES PIC 9(6)V99.
02 PROMEDIO-NACIONAL PIC 9(7)V99.

TABLA-INGRESOS-ESTADO

INGRESOS-PROMEDIOS PROMEDIO-NACIONAL

INGRESOS-PROMEDIOS (1) INGRESOS-PROMEDIOS (50) PROMEDIO-NACIONAL

LENGUAJE COBOL 65

TABLAS
01TABLA
- INGRESOS - ESTADO.
02 NOMBRE - INGRESO OCCURS 50 TIMES.
03 NOMBRE PIC X(4).
03 INGRESO PIC 9(6)V99.

TABLA-INGRESOS-ESTADO
NOMBRE-INGRESO (1) --- NOMBRE-INGRESO (50)
NOMBRE(1) INGRESO(1) NOMBRE(50) INGRESO (50)

LENGUAJE COBOL 66

33
TABLAS
z La cláusula OCCURS no puede aplicarse a nivel 01.
z La cláusula OCCURS no puede aplicarse a nivel 77.
z La dimensión de una tabla debe ser menor o igual que
7, aunque depende del compilador.
z La cláusula PICTURE se aplica sólo a campos
elementales.
z Los subíndices pueden ser constantes o variables de
tipo entero. Sus valores deben ser positivos.
z El subíndice o subíndices se encierran en un conjunto
de paréntesis y se separan del nombre de la tabla por
un espacio. Los subíndices múltiples se separan uno
de otros por comas y espacios.

LENGUAJE COBOL 67

TABLAS
z Inicialización de una tabla en tiempo de
compilación.
nombre-de-dato-1 REDEFINES nombre-de-dato-2
01 FECHA.
02 DÍA PIC 99.
02 MES PIC 99.
02 AÑO PIC 99.
01 FECHA-ACTUAL REDEFINES FECHA PIC X(6).

LENGUAJE COBOL 68

34
TABLAS
01 TABLA-S.
02 FILLER PIC X(10) VALUE "LUNES".
02 FILLER PIC X(10) VALUE "MARTES".
02 FILLER PIC X(10) VALUE "MIÉRCOLES".
02 FILLER PIC X(10) VALUE "JUEVES".
02 FILLER PIC X(10) VALUE "VIERNES".
02 FILLER PIC X(10) VALUE "SÁBADO".
02 FILLER PIC X(10) VALUE "DOMINGO".
01 TABLA-DIA-S REDEFINES TABLA-S.
02 DIA-SEMANA OCCURS 7 TIMES PIC X(10).

LENGUAJE COBOL 69

LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN

VERBOS ARITMÉTICOS

35
INTRODUCCIÓN
z Los verbos aritméticos permiten realizar las
típicas operaciones de suma, resta, producto y
división, además podremos almacenar el resto
de una división y realizar conjuntamente todas
estas operaciones en una sola sentencia.
z Verbos Aritméticos.
• Suma ADD
• Resta SUBSTRACT
• Producto MULTIPLY
• División DIVIDE
• O. Aritméticas COMPUTE

LENGUAJE COBOL 71

SUMA

ADD ident-1literal-1 [ident-2/literal-2] ....


TO ident-n [ident-m]

ADD ident-1/literal-1 ident-2/literal-2


GIVING ident-n [ident-m]

LENGUAJE COBOL 72

36
SUMA. OPCIONES
z Opción ROUNDED
• Si en una suma (o cualquier otra operación) el número
de decimales del resultado es mayor que el número
de ellos especificados en el campo receptor, trunca el
número sobrante de dígitos por la derecha.

PICTURE RESULTADO VALOR DESPUÉS VALOR DESPUÉS


CALCULADO DE TRUNCAR DE REDONDEAR
S99V9 -12.36 -12.3 12.4
9V9 8.432 8.4 8.4
99V9 35.6 35.6 35.6
S99V 65.6 65 66
SV999 .0058 .005 .006

LENGUAJE COBOL 73

SUMA. OPCIONES
z Opción ON SIZE ERROR
• Si la parte entera de un cálculo no cupiera en el
campo receptor, se produciría un desbordamiento.
• La utilización de esta cláusula permite al
programador especificar una serie de instrucciones
que solo se ejecutarían cuando se produzca dicho
desbordamiento.

ADD HORAS-SEMANA TO TOTAL -HORAS-AÑO


ON SIZE ERROR DISPLAY 'DESBORDAMIENTO DEL CAMPO '
ADD A B TO C ON SIZE ERROR DISPLAY 'ERROR.......'.

LENGUAJE COBOL 74

37
SUMA. EJEMPLOS
ADD IDA IDB TO IDC ANTES DESPUÉS
77 IDA PIC 9(3) 010 010
77 IDB PIC 999 020 020
77 IDC PIC S99 -10 +20

ADD IDA IDB -30 TO IDD IDC ANTES DESPUÉS


77 IDA PIC 9(3) 030 030
77 IDB PIC 999 010 010
77 IDC PIC S9(2) +05 +15
77 IDD PIC S999 -15 -005

LENGUAJE COBOL 75

SUMA. EJEMPLOS
ADD IDA IDB GIVING IDC ANTES DESPUÉS
77 IDA PIC S9(2) -10 -10
77 IDB PIC S9(3) +020 +020
77 IDC PIC S9(4) +0030 +0010

ADD -15 IDA IDB GIVING IDC ANTES DESPUÉS

77 IDA PIC S9(2) -10 -10


77 IDB PIC S9(3) +020 +020
77 IDC PIC S9(4) +0030 +0005

LENGUAJE COBOL 76

38
SUMA. EJEMPLOS
ADD IDA IDB GIVING IDC ANTES DESPUÉS
77 IDA PIC 9(5) 21987 21987
77 IDB PIC 9(4) 4593 4593
77 IDC PIC 99 52 ---80 Se han perdido
dígitos (26580)

ADD 0.0003 IDA GIVING IDC ANTES DESPUÉS


77 IDA PIC 9V9(5) 000005 000005
77 IDC PIC 9V99 038 000-- se han
perdido
dígitos (0.0008)

LENGUAJE COBOL 77

RESTA
z La sentencia SUBTRACT se utiliza para restar uno o más
items de datos numéricos de otro u otros items de datos
numéricos, sustituyendo el valor de la diferencia en el
último items de la declaración.

SUBTRACT ident-1/literal-1 .... FROM ident-2

SUBTRACT ident-1/literal-1....FROM
ident-2/literal-2 GIVING ident-3

LENGUAJE COBOL 78

39
RESTA. EJEMPLOS
SUBTRACT IDA FROM IDB ANTES DESPUÉS

77 IDA PIC 99 10 10
77 IDB PIC 999 042 032

SUBTRACT IDA 4 IDB ANTES DESPUÉS


FROM IDC IDD

77 IDA PIC 99 10 10
77 IDB PIC 999 027 027
77 IDC PIC 99 52 11
77 IDD PIC 99 47 06

LENGUAJE COBOL 79

RESTA. EJEMPLOS
SUBTRACT CANTIDAD-1, CANTIDAD-2, CANTIDAD-FROM
CANTIDAD-4 GIVING CANTIDAD-5,
CANTIDAD-6 ROUNDED
ON SIZE ERROR PERFORM DESBORDAMIENTO.

z Las operaciones que se realizan en este caso son:


• CANTIDAD-5 = CANTIDAD-4 - (CANTIDAD-3 + CANTIDAD-2 +
CANTIDAD-1).
• CANTIDAD-6 = CANTIDAD-4 - (CANTIDAD-3 + CANTIDAD-2 +
CANTIDAD-1).
z En el caso de que se produzca el desbordamiento de alguno
de los campos receptores ( CANTIDAD-5, CANTIDAD-6 ) el
programa será desviado a la rutina de desbordamiento.

LENGUAJE COBOL 80

40
RESTA. EJEMPLOS
SUBTRACT IDA FROM IDB ANTES DESPUÉS
GIVING IDC
77 IDA PIC 99 10 10
77 IDB PIC 999 032 032
77 IDC PIC 99 41 22

SUBTRACT IDD IDC FROM IDB ANTES DESPUÉS


GIVING IDA
77 IDA PIC 9(6) 000123 072000
77 IDB PIC 9(6) 122000 122000
77 IDC PIC 9(6) 020000 020000
77 IDD PIC 9(6) 030000 030000

LENGUAJE COBOL 81

MULTIPLICACIÓN

MULTIPLY ident-1/literal-1 BY ident-2


siendo:
ident-1: multiplicando.
ident-2: multiplicador y campo receptor del resultado de la operación.

MULTIPLY IDB BY IDA ANTES DESPUÉS


77 IDA PIC 9(5) 01000 25000
77 IDB PIC 99 25 25
MULTIPLY 0.5 BY IDA ANTES DESPUÉS
77 IDA PIC 9(5) 25000 12500

LENGUAJE COBOL 82

41
MULTIPLICACIÓN

MULTIPLY ident-1/literal-1 BY ident-2 GIVING ident-3

MULTIPLY A BY B GIVING C ROUNDED, E ON SIZE ERROR


PERFORM RUTINA-DESBORDAMIENTO.

MULTIPLY IDA BY 0.5 GIVING IDB ANTES DESPUÉS

77 IDA PIC 9(5) 12500 12500


77 IDB PIC 9(5) 50000 06250

LENGUAJE COBOL 83

DIVISIÓN

DIVIDE ident-1/literal-1 INTO ident-2

DIVIDE A INTO B, C ROUNDED


ON SIZE ERROR
PERFORM RUTINA-DE-DESBORDAMIENTO.

Las operaciones que se realizan son B=B/A y C=C/A, en el caso


de que en algún campo receptor, no cupiera el resultado de las
operaciones realizadas se rompería la secuencia del programa
ejecutándose el párrafo RUTINA DE DESBORDAMIENTO.

LENGUAJE COBOL 84

42
DIVISIÓN

DIVIDE ident-1/literal-1. INTO ident-2 GIVING ident-3

DIVIDE ident-1/literal-1 BY ident-2 GIVING ident-3

DIVIDE ident-1/literal-1 INTO ident-2 GIVING ident-3


REMAINDER ident-4

DIVIDE ident-1/literal-1 BY ident-2 GIVING ident-3


REMAINDER ident-4

LENGUAJE COBOL 85

DIVISIÓN. EJEMPLOS
DIVIDE IDB INTO IDA ANTES DESPUÉS
77 IDA PIC 9(5) 50000 01000
77 IDB PIC 99 50 50
DIVIDE IDA BY 365 GIVING IDB ANTES DESPUÉS
77 IDA PIC 9(5) 36500 36500
77 IDB PIC 9999 1000

DIVIDE 365 INTO IDA GIVING IDB ANTES DESPUÉS


77 IDA PIC 9(5) 36500 36500
77 IDB PIC 9999 1000

LENGUAJE COBOL 86

43
DIVISIÓN. EJEMPLOS
DIVIDE DIVIDENDO ANTES DESPUÉS
BY DIVISOR
GIVING COCIENTE
REMAINDER RESTO

77 DIVIDENDO PIC 999 100 100


77 DIVISOR PIC 99 03 03
77 RESTO PIC 99V99 55 0100 (01.00)
77 COCIENTE PIC 99 33

LENGUAJE COBOL 87

COMPUTE

z Esta sentencia se utiliza para realizar


operaciones aritméticas sin necesidad de
utilizar las declaraciones aritméticas vistas
hasta ahora.

COMPUTE ident-1
[ROUNDED] = expresión-aritmética
[ON SIZE ERROR sentencia-1]

LENGUAJE COBOL 88

44
COMPUTE
SÍMBOLO OPERACIÓN PRIORIDAD
REPRESENTADA
+ Suma MENOR
- Resta
* Producto
/ Cociente
** Exponenciación MAYOR

LENGUAJE COBOL 89

COMPUTE
COMPUTE A = B ** C.
No tiene sentencia
COMPUTE A = B + C. equivalente.
ADD B, C GIVING A.
COMPUTE A = B / C.
COMPUTE A = B - C. DIVIDE B BY C GIVING A.
SUBTRACT C FROM B GIVING A.
COMPUTE A = -B.
COMPUTE A = B * C. SUBTRACT B FROM
MULTIPLY B BY C GIVING A. ZERO GIVING A,
MULTIPLY -1 BY B
GIVING A

LENGUAJE COBOL 90

45
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN

VERBOS ENTRADA
SALIDA

INTRODUCCIÓN
z La función es poner en comunicación el
programa con los dispositivos externos
donde se encuentran o se encontrarán
los datos.
z Sentencias:
• Display
• Accept

LENGUAJE COBOL 92

46
DISPLAY
z Mediante esta declaración se proporciona
información o mensajes a la consola,
impresora u otro dispositivo de salida.

DISPLAY ident/literal ...


[UPON nombre nemónico/de función]
[WITH NO ADVANCING]

DISPLAY ident-1/literal-1 [LINE ident-2/entero-2]


[POSITION ident-3/entero-3] [opciones] ....

LENGUAJE COBOL 93

DISPLAY. OPCIONES
z BEEP: Emite un sonido cada vez que display es
ejecutado.
z BLINK: Hace parpadear el elemento visualizado.
z CONVERT: Esta opción se aplica a campos numéricos o
numéricos editados. El valor a visualizar es convertido de
su formato interno a los dígitos correspondiente,
eliminando los ceros no significativos. El valor se ajusta a
la izquierda, y el espacio sobrante a la derecha se rellena
con blancos.
z ERASE[EOL/EOS]: ERASE borra pantalla. ERASE EOL
borra desde la posición del cursor hasta el final de la
línea. ERASE EOS borra desde la posición del cursor
hasta el final de la pantalla.

LENGUAJE COBOL 94

47
DISPLAY. OPCIONES

z HIGH: Visualiza el dato en intensidad alta. Por defecto.


z LOW: Visualiza el dato en intensidad baja.
z REVERSE: Visualiza el dato en vídeo inverso.
z SIZE: Especifica el tamaño del campo físico presentado
sobre la misma pantalla. Si el tamaño especificado es
menor que el definido en la cláusula PIC, solamente
aparecerá sobre la pantalla la porción de la parte
izquierda, y si el tamaño especificado es más grande, se
rellena con blancos.
z UNDERLINE: Visualiza el dato subrayado.

LENGUAJE COBOL 95

ACCEPT
z Esta declaración permite introducir pequeños volúmenes
de datos, necesarios para el programa, desde la consola
u otro dispositivo de entrada.

ACCEPT identificador FROM ATE/DAY/TIME/DAY-OF-WEEK

ACCEPT identificador [FROM nombre-nemónico/CONSOLE/SYSIN]

ACCEPT identificador-1
[LINE identificador-2/entero-2]
[POSITION identificador-3/entero-3] [opciones]
....

LENGUAJE COBOL 96

48
ACCEPT. OPCIONES

z BEEP.
z BLINK.
z CONVERT.
z ECHO: Hace que el dato aceptado sea visualizado sobre el
campo de pantalla una vez finalizada la entrada.
z ERASE[EOL/EOS].
z HIGH.
z LOW.
z PROMPT [literal]: Marca la pantalla con el carácter
especificado las posiciones vacías mientras se ejecuta una
operación ACCEPT. Por defecto es el carácter subrayado.

LENGUAJE COBOL 97

ACCEPT. OPCIONES

z REVERSE.
z SIZE.
z TAB: Obliga a pulsar la tecla Enter.
z UPDATE: Permite visualizar el contenido del campo
antes de efectuar la entrada. Esto permite modificar
el contenido del correspondiente campo. Esta
cláusula implica también conversión de los datos de
entrada.
z UNDERLINE.
z UPPER: Convierte la entrada a mayúsculas.

LENGUAJE COBOL 98

49
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN

VERBOS
TRANSFERENCIA DE
DATOS

GENERALIDADES
z campo emisor = contiene la información a transferir
z campo receptor = recibe dicha información.
z Los datos se pueden transferir a un campo receptor de
varias formas:
• El efecto de usar la opción GIVING con verbos
aritméticos.
• El verbo COMPUTE por si mismo incluye una
transferencia de datos al almacenar los resultados en un
campo específico.
• Las opciones READ .... INTO y WRITE.... FROM incluye
transferencia de información implícitas.
• La cláusula VALUE de la DATA DIVISION incluye una
transferencia de información implícita, aunque sólo se
ejecutará una vez al principio del programa.

LENGUAJE COBOL 100

50
VERBO MOVE
z Transfiere información de una zona a otra de memoria,
este verbo modifica el contenido del campo receptor por
el contenido del campo emisor, permaneciendo
inalterado éste último campo.

MOVE identificador-1/literal TO identificador-2...

z Los efectos de la sentencia MOVE dependen de los tamaños y


especificaciones PICTURE de los campos emisor (identificador-1)
y receptor (identificador-2).
z Además, la categoría de los campos emisor y receptor es un
factor al determinar si una instrucción MOVE es válida o no válida.

LENGUAJE COBOL 101

VERBO MOVE

z La constante figurativa SPACE, o un campo


alfanumérico editado o alfabético no puede
moverse a un campo numérico o numérico
editado.
z Una constante numérica, la constante figurativa
ZERO, un campo numérico o numérico editado no
puede moverse a un campo alfabético.
z Una constante o campo numérico no entero no se
puede mover a un campo alfanumérico editado o
no,

LENGUAJE COBOL 102

51
TIPOS DE MOVIMIENTOS
CAMPO RECEPTOR

CAMPO EMISOR ALFABÉTICO ALFANUMÉRICO NUM ENTERO


ALFANUMÉRICO NUM NO ENTER
EDITADO NUM EDITADO

Alfabético SI SI NO

Alfanumérico SI SI NO

Alfanumérico editado SI SI NO

Numérico Entero NO SI SI

Numérico No Entero NO NO SI

Numérico Editado NO SI SI

LENGUAJE COBOL 103

TIPOS DE MOVIMIENTOS
z De un campo numérico a otro numérico de
edición o no.
• Los campos emisor y receptor se alinean por el
punto decimal.
• Si tamaño (campo receptor) < tamaño (campo
emisor), se produce truncamiento de la parte entero
y/o decimal.
• Si tamaño (campo receptor) > tamaño (campo
emisor), se rellena con ceros no significativos en
cualquiera de las partes.

LENGUAJE COBOL 104

52
TIPOS DE MOVIMIENTOS
z De un campo alfabético o alfanumérico a otro
de tipo alfabético o alfanumérico de edición o
no.
• El contenido del campo emisor se va colocando en
el campo receptor de izquierda a derecha, excepto
cuando el campo receptor se ha especificado la
cláusula JUSTIFIED RIGHT.
• Si tamaño (campo receptor) < tamaño(campo
emisor), se produce truncamiento.
• Si tamaño (campo receptor) > tamaño(campo
emisor), se rellena con blancos.

LENGUAJE COBOL 105

VERBO MOVE CORRESPONDING


z La transferencia de un campo compuesto puede
realizarse como un campo elemental, cuya longitud es la
suma de los campos elementales que lo forman, o bien
moviendo los campos elementales uno a uno.

MOVE CORRESPONDING/CORR identificador-1 TO identificador-2 ...

z Con esta opción del verbo MOVE se transfiere el contenido


de los campos elementales de identificador-1 a los campos
elementales de igual nombre de identificador-2.

LENGUAJE COBOL 106

53
EJEMPLOS
MOVE EMISOR TO RECEPTOR ANTES DESPUÉS

77 EMISOR PIC 99V99 1234 (12.34) 1234 (12.34)


77 RECEPTOR PIC 999V99 98765 (987.65) 01234 (012.34)

MOVE EMISOR TO RECEPTOR ANTES DESPUÉS


77 EMISOR PIC 9V9 11 (1.1) 11 (1.1)
77 RECEPTOR PIC 999V999 123123 (123.123) 001100 (001.100)

MOVE EMISOR TO RECEPTOR ANTES DESPUÉS


77 EMISOR PIC 999V99 12312 (123.12) 12312 (123.12)
77 RECEPTOR PIC 999.99. 321.98 123.12

MOVE EMISOR TO RECEPTOR ANTES DESPUES


77 EMISOR PIC 9(4)V9 12345 (1234.5) 12345 (1234.5)
77 RECEPTOR PIC 99V999 98765 (98.765) 34500 (34.500)

LENGUAJE COBOL 107

EJEMPLOS
01 GRUPO-1
05 NUMERO PIC 99.
05 DIA PIC X(7).
05 AÑO PIC 99.
01 GRUPO-2
05 LOCALIDAD PIC X(15).
05 MUNICIPIO PIC 999.
05 PRESUPUESTO PIC 9(5)V99.
GRUPO-1 12JUEVESb95
GRUPO-2 ARANDAbDEbDUERO9815321572

Después de ejecutar MOVE GRUPO-1 TO GRUPO-2

GRUPO-1 12JUEVESb95

LENGUAJE COBOL 108

54
EJEMPLOS

Si se ha declarado la tabla siguiente:

01 TABLA
02 TABLA-CELDA OCCURS 50 TIMES PIC 9(5)V99.

MOVE ZEROS TO TABLA rellena los 350 bytes del campo de TABLA
con ceros. Como resultado cada uno de los 7 bytes de los campos de
TABLA-CELDA también tendrá valores cero.

LENGUAJE COBOL 109

EJEMPLOS
01 REGISTRO-PERSONAL.
03 NUMERO PIC 9(5).
03 NOMBRE PIC X(30).
03 DIRECCION PIC X(20).
03 DIS-POSTAL PIC 99.

01 LINEA-IMPRESION.
02 FILLER PIC X(10) VALUE SPACES.
02 NUMERO PIC Z(5).
02 FILLER PIC X(5) VALUE SPACES.
02 NOMBRE PIC X(30).
02 FILLER PIC X(5) VALUE SPACES.
02 DIRECCION PIC X(20).
02 FILLER PIC X(5) VALUE SPACES.
02 DIS-POSTAL PIC ZZ.

MOVE CORRESPONDING REGISTRO-PERSONAL TO LINEA-IMPRESION

LENGUAJE COBOL 110

55
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN

ESTRUCTURAS DE
CONTROL

INTRODUCCIÓN
z El teorema de la estructura establece que un
programa propio puede ser escrito utilizando
solamente tres tipos de estructuras de control:
secuencial, repetitiva y condicional.
z Un programa se define como propio si cumple:
• Posee un solo punto de entrada y otro de salida para
el control del programa.
• Existen caminos desde la entrada hasta la salida que
se pueden seguir y que pasan por todas las partes del
programa.
• Todas las instrucciones son ejecutables y no existen
bucles infinitos.

LENGUAJE COBOL 112

56
PROCEDURE DIVISION
z Es precisamente en esta división donde se escriben las
instrucciones de ejecución.
z Es la división que permite especificar con la sintaxis del
lenguaje de programación COBOL, el conjunto de
acciones a realizar.

PROCEDURE DIVISION.
Nombre-párrafo-1.
.............................................
.............................................
Nombre-párrafo-2.
.............................................
.............................................

LENGUAJE COBOL 113

ESTRUCTURA SECUENCIAL
z Se emplea para especificar la secuencia de ejecución
de un programa modular representado por párrafos.
PERFORM nombre-párrafo
PROCEDURE DIVISION.
PROGRAMA PROGRAMA.
PERFORM P-PROGRAMA.
............................................
............................................
STOP RUN.
P-PROGRAMA.
sentencia 1.
P-PROGRAMA
sentencia 2.

LENGUAJE COBOL 114

57
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN

ESTRUCTURAS DE
CONTROL

VERBO IF
z Este verbo produce la evaluación de una
condición, dependiendo la siguiente
acción del programa a realizar, de la
evaluación de la misma.

IF condición THEN acción-1/ NEXT SENTENCE

[ELSE acción-2/NEXT SENTENCE]

LENGUAJE COBOL 116

58
VERBO IF
PROGRAMA

CONDICIÓN

P-PROGRAMA CIERTO F-PROGRAMA

SENTENCIA 1
SENTENCIA 2

PROCEDURE DIVISION. .
PROGRAMA. .
PERFORM P-PROGRAMA. CIERTO.
IF condición sentencia-1
THEN PERFORM CIERTO. sentencia-2
PERFORM F-PROGRAMA.

LENGUAJE COBOL 117

VERBO IF
PROGRAMA

CONDICIÓN

P-PROGRAMA CIERTO FALSO F-PROGRAMA

SENTENCIA 1 SENTENCIA 3
SENTENCIA 2 SENTENCIA 4

PROCEDURE DIVISION. CIERTO.


PROGRAMA. sentencia-1.
PERFORM P-PROGRAMA. sentencia-2.
IF condición FALSO.
THEN PERFORM CIERTO sentencia-3.
ELSE PERFORM FALSO. sentencia-4.
PERFORM F-PROGRAMA.

LENGUAJE COBOL 118

59
CONDICIONES. TIPOS
z Condiciones de relación.
• Las condiciones de relación se refieren a las
comparaciones entre dos items. El tipo de comparación
se indica por el operador relacional que puede estar en
forma de palabras o de símbolos.

identificador-1 identificador-2
literal-1 IS operador literal-2
exp-aritmética-1 exp-artimética-2

LENGUAJE COBOL 119

CONDICIONES. TIPOS

Operador Símbolo Significado


GREATER THAN > Mayor que
LESS THAN < Menor que
EQUAL TO = Igual a
NOT GREATER THAN NOT > No mayor que

NOT LESS THAN NOT < No menor que


NOT EQUAL TO NOT = No igual a

LENGUAJE COBOL 120

60
CONDICIONES. TIPOS
z Condiciones de clase.
• El uso de una condición de clase hace posible
determinar si un identificador pertenece o no a una de
las cuatro clases incluidas en el Formato siguiente:

NUMERIC
ALPHABETIC
Identificador IS [NOT]
ALPHABETIC-LOWER
ALPHABETIC-UPPER

LENGUAJE COBOL 121

CONDICIONES. TIPOS
z Condiciones de signo.
• Permiten determinar si el valor de una campo
numérico o de una expresión aritmética es positivo,
negativo o cero. El Formato general es el siguiente:

POSITIVE
Expresión Aritmética IS [NOT] NEGATIVE
ZERO

LENGUAJE COBOL 122

61
CONDICIONES. TIPOS
z Condiciones de nombre de condición.
• Este tipo de condición facilita la asociación de uno o
varios valores a un nombre, el cual se puede
interrogar durante el proceso. Los valores asociados
al nombre se definen en la DATA DIVISION al definir
el campo.

02 campo-n PIC.....
88 nomb-condición VALUE IS lit-1 THRU lit-n

LENGUAJE COBOL 123

CONDICIONES. TIPOS
z Supongamos que disponemos de un fichero secuencial
en el que la estructura de sus registros soporta un campo
de tipo alfanumérico para determinar el sexo de los
empleados.

02 SEXO-EM PIC X.
88 MASCULINO VALUE ‘1’.
88 FEMENINO VALUE ‘2’.
88 ERROR-CODIGO VALUES ARE LOW-VALUES THRU ZERO,
‘3’ THRU HIGH-VALUES.

LENGUAJE COBOL 124

62
CONDICIONES. TIPOS
z Condiciones compuestas.
• Son varias condiciones simples enlazadas mediante
operaciones lógicas AND y OR.
• Orden de evaluación de las condiciones
• 1 - PARÉNTESIS
• 2 - NOT
• 3 - AND
• 4 - OR
• 5 - A igualdad de operadores de izquierda a derecha

condición-1 [NOT] AND/[NOT] OR condición-2

LENGUAJE COBOL 125

VERBO EVALUATE
z Este verbo produce la evaluación de una condición,
dependiendo la siguiente acción del programa a realizar,
de la evaluación de la misma. Es una forma de
implementar la estructura Casos.

EVALUATE identificador
WHEN literal-1 THRU literal-2 instrucción imperativa-1
...........
WHEN OTHER instrucción imperativa-n

LENGUAJE COBOL 126

63
VERBO EVALUATE
PROGRAMA

IDENTIFICADOR = V1
= V3
= V2

P-PROGRAMA PÁRRAFO-1 PÁRRAFO-2 PÁRRAFO-3 F-PROGRAMA

PROCEDURE DIVISION.
PROGRAMA.
PERFORM P-PROGRAMA.
EVALUATE identificador
WHEN v1 PERFORM PARRAFO-1
WHEN v2 PERFORM PARRAFO-2
WHEN OTHER PERFORM PARRAFO-3
END-EVALUATE.
PERFORM F-PROGRAMA.
STOP RUN.

LENGUAJE COBOL 127

VERBO EVALUATE
Si tenemos un código que puede tener como valores: 1, 2, y 3. El
siguiente árbol programático representa la estructura condicional anidada
que verifica el valor del código y ejecuta el párrafo adecuado.

VALOR-CÓDIGO

CÓDIGO 0 1

P-VALOR-CÓDIGO AÑADIR F-VALOR-CÓDIGO


CÓDIGO = 2

BORRAR FALSO

CODIGO = 3

MODIFICAR ERROR

LENGUAJE COBOL 128

64
VERBO EVALUATE

VALOR-CÓDIGO

CÓDOGO = 1
OTRO
=2 =3

P-VALOR-CÓDIGO AÑADIR BORRAR MODIFICAR ERROR F-VALOR-CÓDIGO

Si tenemos un código que puede tener como valores: 1, 2, y 3. El siguiente árbol


programático también representa la estructura condicional que verifica el valor
del código y ejecuta el párrafo adecuado.

LENGUAJE COBOL 129

VERBO EVALUATE
EVALUATE TRUE
WHEN NOMBRE-DE-CONDICION instrucción imperativa-1
...........
WHEN OTHER instrucción imperativa-n

DATA DIVISION.
WORKING-STORAGE SECTION.
01 CODIGO PIC 9.
88 AÑADIR-REGISTRO VALUE 1.
88 SUPRIMIR-REGISTRO VALUE 2.
88 MODIFICAR-REGISTRO VALUE 3.
88 ERROR-CODIGO VALUE ARE 0 4 THRU 9.
EVALUATE TRUE
WHEN añadir-registro PERFORM AÑADIR
WHEN suprimir-registro PERFORM SUPRIMIR
WHEN modificar-registro PERFORM MODIFICAR
WHEN OTHER PERFORM CODIGO-ERRONEO
END-EVALUATE.

LENGUAJE COBOL 130

65
VERBO EVALUATE
CONDICIÓN
CÓDIGO CALIFICACIÓN ACCIÓN A REALIZAR
1o2 A, B o C PÁRRAFO-1
3 AoB PÁRRAFO-2
4 cualquiera PÁRRAFO-3
cualquier otro cualquiera PÁRRAFO-4

EVALUATE CÓDIGO ALSO CALIFICACIÓN


WHEN 1 THRU 2 ALSO “A” THRU “C” PERFORM PARRAFO-1
WHEN 3 ALSO “A” THRU “B” PERFORM PARRAFO-2
WHEN 4 ALSO ANY PERFORM PARRAFO-3
WHEN OTHER PERFORM PARRAFO-4
END-EVALUATE.

LENGUAJE COBOL 131

LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN

ESTRUCTURAS DE
CONTROL

66
VERBO PERFORM

PERFORM párrafo entero/identificador TIMES

PROCEDURE DIVISION.
PROGRAMA.
..............................
PERFORM BUCLE 5 TIMES
.............................
BUCLE.
sentencia 1. BUCLE
sentencia 2. 5 VECES

LENGUAJE COBOL 133

VERBO PERFORM

PERFORM párrafo [WITH TEST BEFORE]


UNTIL condición

PROGRAMA

P-PROGRAMA PÁRRAFO F-PROGRAMA


CONDICIÓN

LENGUAJE COBOL 134

67
VERBO PERFORM

PERFORM párrafo WITH TEST AFTER


UNTIL condición

PROGRAMA

P-PROGRAMA PÁRRAFO F-PROGRAMA


CONDICIÓN
(DESPUÉS)

LENGUAJE COBOL 135

VERBO PERFORM

PERFORM párrafo
[WITH TEST BEFORE/AFTER]
VARYING iden-1 FROM lit-1/iden-2
BY lit-2/iden-3 UNTIL condición-1

LENGUAJE COBOL 136

68
VERBO PERFORM
z La ejecución, si no se ha especificado la opción TEST
AFTER se realiza de la siguiente forma:
a) El identificador-1 se inicializa al valor especificado por
literal-1 o identificador-2 que sigue al FROM.
b) Se evalúa la condición-1.
1. Si es cierta, se da por finalizada la ejecución de la sentencia
PERFORM y se pasa a ejecutar la siguiente sentencia del
programa.
2. Si es falsa, se pasa al punto c.
c) Se ejecuta el párrafo
d) Se suma a identificador-1 el valor especificado por
identificador-3 que sigue a BY y se vuelve al punto b.

LENGUAJE COBOL 137

VERBO PERFORM
PERFORM párrafo WITH TEST BEFORE
VARYING iden-1 FROM iden-2
BY iden-3 UNTIL condición

PROGRAMA

IDEN-1 = IDEN-2 , IDEN-3

P-PROGRAMA PÁRRAFO F-PROGRAMA


CONDICIÓN

LENGUAJE COBOL 138

69
VERBO PERFORM

PERFORM párrafo
[WITH TEST BEFORE/AFTER]
VARYING iden-1 FROM lit-1/iden-2
BY lit-3/iden-3 UNTIL condición-1
AFTER iden-4 FROM lit-5/iden-5
BY lit-4/iden-6 UNTIL condición-2

LENGUAJE COBOL 139

VERBO PERFORM
a) El identificador-1 y el identificador-4 se inicializan a los
valores respectivos que siguen a cada FROM.
b) Se evalúa la condición-1.
1. Si es cierta, se da por finalizada la ejecución de la sentencia
PERFORM y se pasa a ejecutar la siguiente sentencia del
programa.
2. Si es falsa, se pasa al punto c.
c) Se evalúa la condición-2.
1. Si es cierta, el identificador-4 se inicializa al valor especificado por
literal-5 o identificador-5 que sigue a FROM, también se suma a
identificador-1 el valor especificado por identificador-3 que sigue a
BY y se continúa en el punto b.
2. Si es falsa se pasa al punto d.
d) Se ejecuta el
e) Se suma a identificador-4 el valor especificado por
identificador-6 que sigue a BY y se vuelve al punto c.

LENGUAJE COBOL 140

70
VERBO PERFORM

PROGRAMA

IDEN-1 = IDEN-2 , IDEN-3


IDEN-4 = IDEN-5 , IDEN-6

P-PROGRAMA PÁRRAFO F-PROGRAMA

CONDICIÓN 1
CONDICIÓN 2

PERFORM párrafo [VARYING iden-1 FROM iden-2


BY iden-3 UNTIL condición-1
AFTER iden-4 FROM iden-5
BY iden-6 UNTIL condición-2

LENGUAJE COBOL 141

71

You might also like