You are on page 1of 71

LENGUAJE ORIENTADO A

SISTEMAS DE GESTIN

ELEMENTOS DEL
LENGUAJE COBOL

LENGUAJE COBOL
z
z

Cobol, es un lenguaje de alto nivel (3 generacin) de tipo imperativo y


orientado a resolver problemas de gestin.
COBOL significa:

Common
Business
Oriented

Lenguaje

Fue creado en 1.960, por la comisin CODASYL (Conference on Data System


Lenguaje), formada por fabricantes, usuarios y gobierno USA, esta comisin
adems 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 ms utilizados los de:

MICROFOCUS
MICROSOFT
RM/COBOL (McFarland)
COBOL2 (IBM)

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


z

Caracteres de Cobol

Caracteres numricos. 0/9.


Caracteres alfabticos. A/Z.
Caracteres especiales. $, blanco, +, .........

Caracteres empleados en puntuacin

{ $, (, ), ,, ; }

{ +, -, *, **, /, =, (, ) }

Caracteres aritmticos.
Caracteres empleados en declaraciones
condicionales.

{ <, >, = }

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


z

Constantes

Literales numricos

Literales no numricos.
Constantes figurativas.

Literales de coma fija


Literales de coma flotante.
[ +/- ] mantisa E [ +/- ] exponente

ZERO.
SPACE.
ALL carcter.
HIGH-VALUE .
LOW-VALUE.

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


Palabras Reservadas.

Identificadores predefinidos que tienen un significado especial en


COBOL.
Por ejemplo: IDENTIFICATION, FILLER, ADD, COMPUTE, READ,
REWRITE

Identificadores

Son los nombres creados por el programador.


Se forman por la combinacin de los tres grupos de caracteres
siguientes: dgitos (0/9), letras (A/Z) y el guin (-).
Estan compuesto por una combinacin de 30 caracteres como
mximo.
No pueden comenzar ni finalizar con un guin.
Debern comenzar por un carcter alfabtico, excepto los
nombres de prrafos.
No pueden tener el mismo nombre que una palabra reservada.

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


z

Operadores.

Los operadores son smbolos que indican cmo son


manipulados los datos

Operadores Aritmticos
Operador

Significado

Ejemplo

Suma

A+B

Resta

A-B

Producto

A*B

Divisin

A/B

**

Exponenciacin

A ** B

Asignacin

C=A+B

()

Dar Prioridad

D = (A + B)*C

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


Operadores de Relacin
=

Igual que

A=B

<

Menor que

A<B

>

Mayor que

A>B

<=

Menor o igual que

A <= B

>=

Mayor o igual que

A >= B

NOT

Negacin

NOT ( A = B )

AND

Conjuncin

A = B AND A > B

OR

Disyuncin

A = B OR A < B

Operadores Lgicos

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


z

Expresiones Aritmticas.

Una expresin aritmtica puede ser una constante,


una variable o un conjunto de constantes y variables
unidas por operadores aritmticos.
El punto, punto y coma o coma no pueden ir
precedidos por un espacio, pero si tienen que ir
seguidos por un espacio.
Un parntesis izquierdo no puede ir seguido por un
espacio, un parntesis derecho no puede ir precedido
por un espacio.
Un operador aritmtico o un signo igual tiene que ir
precedido por un espacio y seguido por un espacio.

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


z

Expresiones Aritmticas.

A la hora de evaluar una expresin


Primero se evalan las operaciones entre
parntesis, del ms interno al ms externo.
Despus se evalan los operadores con la
prioridad siguiente:

+ y
**
*, /
+,-

- unarios

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


z

Expresiones de Boole.

Una expresin de Boole da como resultado

un valor VERDADERO o FALSO.


Los operadores que intervienen en una
expresin de Boole pueden ser: operadores
de relacin y operadores lgicos.

A >= 30 AND B = C
A = 0 AND B * 2 NOT= 0 OR C = 0
LENGUAJE COBOL

10

LENGUAJE ORIENTADO A
SISTEMAS DE GESTIN

ESTRUCTURA DE UN
PROGRAMA EN COBOL

DIVISIONES, SECCIONES Y
PRRAFOS

z
z
z
z

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

LENGUAJE COBOL

12

DIVISIONES, SECCIONES Y
PRRAFOS
IDENTIFICATION DIVISION.
divisin
PROGRAM-ID. EJEMPLO.
AUTHOR. EUI.
prrafo
DATE-WRITTEN. 01-ENERO-93.
DATE-COMPILED. 01-ENERO-93.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
seccin
SOURCE-COMPUTER. IBM PERSONAL COMPUTER.
OBJECT-COMPUTER. IBM PERSONAL COMPUTER.
SPECIAL-NAMES.
prrafo
DECIMAL-POINT IS COMMA.
clusula
INPUT-OUTPUT SECTION.
seccin
FILE-CONTROL.
prrafo
SELECT IMPRESORA ASSING TO PRINTER.
clusulas
LENGUAJE COBOL

13

DIVISIONES EN COBOL
IDENTIFICATION DIVISION

PROPSITO: Identificar el programa de forma que se distinga de


los otros, adems de proporcionar el nombre del autor, cuando se
escribi etc.
PRRAFOS

PROGRAM-ID.
AUTHOR.
INSTALLATION.
DATE-WRITTEN.
DATE-COMPILED.
SECURITY.
REMARKS.

LENGUAJE COBOL

14

DIVISIONES EN COBOL
ENVIRONMENT DIVISION

PROPSITO: En esta divisin se describe el


entorno fsico en el cual se va a desarrollar el
programa. Entendindose 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.
PROPSITO: Tiene como finalidad describir las caractersticas del
computador usado para compilar y ejecutar el programa, todo ello a
nivel de comentarios
PRRAFOS

SOURCE-COMPUTER. Modelo de ordenador.


OBJECT-COMPUTER. Modelo de ordenador.
SPECIAL-NAMES.

[[Nombre de funcin IS nombre nemotcnico]


[CURRENCY SIGN IS literal]
[DECIMAL-POINT IS COMMA].]
INPUT-OUTPUT SECTION.
PROPSITO: Declarar los ficheros utilizados y la asignacin a los
dispositivos de E/S.
PRRAFOS

FILE-CONTROL

LENGUAJE COBOL

16

DIVISIONES EN COBOL
Nombre de funcin es un nombre reconocido por el
compilador y nombre nemotcnico es un nombre creado por
el programador. De esta forma podemos poner:

CONSOLE IS CONSOLA
SYSOUT IS ARCHI-PANTALLA

La funcin de CURRENCY SING es indicar que el sistema


tiene que utilizar un carcter monetario distinto del que tiene
por defecto ($). El carcter sustituto de ste, tiene que ser
uno solo y alfabtico.
La funcin del DECIMAL-POINT IS COMMA es indicar que el
sistema tiene que sustituir la notacin anglosajona por la
castellana en la funcin del punto decimal y la coma, en los
campos de edicin.

LENGUAJE COBOL

17

DIVISIONES EN COBOL
z

DATA DIVISION
PROPSITO: 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
codificacin del programa debe estar definido en esta
divisin.
PRRAFOS

WORKING-STORAGE SECTION.
FILE SECTION.

PROCEDURE DIVISION
PROPSITO: Es en esta divisin donde se codifica el
algoritmo propiamente dicho, esto es, donde se
especifican las instrucciones adecuadas para resolver el
problema.

LENGUAJE COBOL

18

HOJA DE CODIFICACIN
123456 7 8 A 11
Se utilizaban para
indicar los nmeros de
secuencia, permitiendo
ordenar fcilmente el
programa

12 A 72

73 A 80

MARGEN A MARGEN B
Son opcionales, se utilizan normalmente
para escribir comentarios que identifican
el programa.

Se utiliza para poner un carcter especial (*) que


indica comienzo de un comentario. Si el carcter
especial que se incluye en esta columna es (-) indica
que es continuacin de un literal no numrico, cuando
la longitud de ste, ocupa ms de una lnea.
LENGUAJE COBOL

19

HOJA DE CODIFICACIN
Margen A

Margen B

Cabeceras de divisin: IDENTIFICATION DIVISION...


Cabeceras de seccin : CONFIGURATION SECTION...
Cabeceras de prrafos: PROGRAM-ID...
Nombre de procedimientos: ABRIR-FICHEROS...
Descripciones de nivel FD: FD IMPRESO..
Los nmeros de nivel 01 y 77
Todo aquello que no est en los apartados anteriores.

Casi todas estas reglas son innecesarias hoy en da, con la


simple eleccin de un editor adecuado y un estilo de
programacin racional y estructurado.

LENGUAJE COBOL

20

10

REGLAS DE CODIFICACIN
z
z
z

z
z
z
z

Los nombres de divisin, seccin y prrafos deben escribirse solos en


una lnea y finalizar con un punto.
Cada entrada y cada sentencia del programa debe finalizar con un
punto.
Si a lo largo de una lnea fsica no se encuentra un punto, la siguiente
lnea ser tomada como continuacin de la anterior, esto es, cada
entrada y cada sentencia del programa puede ocupar varias lneas
fsicas.
Si una entrada o una sentencia del programa no cabe en una lnea
fsica, se contina en la lnea o lneas siguientes pero en el rea B.
No es obligatorio llenar totalmente una lnea fsica.
Se deben dejar lneas en blanco.
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 ms clara la
redaccin del programa.
Si se utiliza ms 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... ]
[ INSTALLATION. comentarios... ]
[ DATE-WRITTEN. comentarios... ]
[ DATE-COMPILED. comentarios... ]
[ SECURITY. comentarios... ]
[ REMARKS. comentarios... ]
ENVIRONMENT DIVISION.
[ CONFIGURATION SECTION.
SOURCE-COMPUTER. modelo-ord.
OBJECT-COMPUTER. modelo-ord.
SPECIAL-NAMES. nombres especiales]

DATA DIVISION
[ FILE SECTION.]
[ WORKING-STORAGE SECTION.]
PROCEDURE DIVISION.
nombre-de-prrafo.
{Sentencia}...}...
nombre-de-prrafo.
{Sentencia}...}...

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

LENGUAJE COBOL

22

11

LENGUAJE ORIENTADO A
SISTEMAS DE GESTIN

ESTRUCTURA DE UN
PROGRAMA EN COBOL

DIVISIONES, SECCIONES Y
PRRAFOS

z
z
z
z

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

LENGUAJE COBOL

24

12

DIVISIONES, SECCIONES Y
PRRAFOS
IDENTIFICATION DIVISION.
divisin
PROGRAM-ID. EJEMPLO.
AUTHOR. EUI.
prrafo
DATE-WRITTEN. 01-ENERO-93.
DATE-COMPILED. 01-ENERO-93.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
seccin
SOURCE-COMPUTER. IBM PERSONAL COMPUTER.
OBJECT-COMPUTER. IBM PERSONAL COMPUTER.
SPECIAL-NAMES.
prrafo
DECIMAL-POINT IS COMMA.
clusula
INPUT-OUTPUT SECTION.
seccin
FILE-CONTROL.
prrafo
SELECT IMPRESORA ASSING TO PRINTER.
clusulas
LENGUAJE COBOL

25

DIVISIONES EN COBOL
IDENTIFICATION DIVISION

PROPSITO: Identificar el programa de forma que se distinga de


los otros, adems de proporcionar el nombre del autor, cuando se
escribi etc.
PRRAFOS

PROGRAM-ID.
AUTHOR.
INSTALLATION.
DATE-WRITTEN.
DATE-COMPILED.
SECURITY.
REMARKS.

LENGUAJE COBOL

26

13

DIVISIONES EN COBOL
ENVIRONMENT DIVISION

PROPSITO: En esta divisin se describe el


entorno fsico en el cual se va a desarrollar el
programa. Entendindose 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.
PROPSITO: Tiene como finalidad describir las caractersticas del
computador usado para compilar y ejecutar el programa, todo ello a
nivel de comentarios
PRRAFOS

SOURCE-COMPUTER. Modelo de ordenador.


OBJECT-COMPUTER. Modelo de ordenador.
SPECIAL-NAMES.

[[Nombre de funcin IS nombre nemotcnico]


[CURRENCY SIGN IS literal]
[DECIMAL-POINT IS COMMA].]
INPUT-OUTPUT SECTION.
PROPSITO: Declarar los ficheros utilizados y la asignacin a los
dispositivos de E/S.
PRRAFOS

FILE-CONTROL

LENGUAJE COBOL

28

14

DIVISIONES EN COBOL
Nombre de funcin es un nombre reconocido por el
compilador y nombre nemotcnico es un nombre creado por
el programador. De esta forma podemos poner:

CONSOLE IS CONSOLA
SYSOUT IS ARCHI-PANTALLA

La funcin de CURRENCY SING es indicar que el sistema


tiene que utilizar un carcter monetario distinto del que tiene
por defecto ($). El carcter sustituto de ste, tiene que ser
uno solo y alfabtico.
La funcin del DECIMAL-POINT IS COMMA es indicar que el
sistema tiene que sustituir la notacin anglosajona por la
castellana en la funcin del punto decimal y la coma, en los
campos de edicin.

LENGUAJE COBOL

29

DIVISIONES EN COBOL
z

DATA DIVISION
PROPSITO: 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
codificacin del programa debe estar definido en esta
divisin.
PRRAFOS

WORKING-STORAGE SECTION.
FILE SECTION.

PROCEDURE DIVISION
PROPSITO: Es en esta divisin 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 CODIFICACIN
123456 7 8 A 11
Se utilizaban para
indicar los nmeros de
secuencia, permitiendo
ordenar fcilmente el
programa

12 A 72

73 A 80

MARGEN A MARGEN B
Son opcionales, se utilizan normalmente
para escribir comentarios que identifican
el programa.

Se utiliza para poner un carcter especial (*) que


indica comienzo de un comentario. Si el carcter
especial que se incluye en esta columna es (-) indica
que es continuacin de un literal no numrico, cuando
la longitud de ste, ocupa ms de una lnea.
LENGUAJE COBOL

31

HOJA DE CODIFICACIN
Margen A

Margen B

Cabeceras de divisin: IDENTIFICATION DIVISION...


Cabeceras de seccin : CONFIGURATION SECTION...
Cabeceras de prrafos: PROGRAM-ID...
Nombre de procedimientos: ABRIR-FICHEROS...
Descripciones de nivel FD: FD IMPRESO..
Los nmeros de nivel 01 y 77
Todo aquello que no est en los apartados anteriores.

Casi todas estas reglas son innecesarias hoy en da, con la


simple eleccin de un editor adecuado y un estilo de
programacin racional y estructurado.

LENGUAJE COBOL

32

16

REGLAS DE CODIFICACIN
z
z
z

z
z
z
z

Los nombres de divisin, seccin y prrafos deben escribirse solos en


una lnea y finalizar con un punto.
Cada entrada y cada sentencia del programa debe finalizar con un
punto.
Si a lo largo de una lnea fsica no se encuentra un punto, la siguiente
lnea ser tomada como continuacin de la anterior, esto es, cada
entrada y cada sentencia del programa puede ocupar varias lneas
fsicas.
Si una entrada o una sentencia del programa no cabe en una lnea
fsica, se contina en la lnea o lneas siguientes pero en el rea B.
No es obligatorio llenar totalmente una lnea fsica.
Se deben dejar lneas en blanco.
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 ms clara la
redaccin del programa.
Si se utiliza ms 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... ]
[ INSTALLATION. comentarios... ]
[ DATE-WRITTEN. comentarios... ]
[ DATE-COMPILED. comentarios... ]
[ SECURITY. comentarios... ]
[ REMARKS. comentarios... ]
ENVIRONMENT DIVISION.
[ CONFIGURATION SECTION.
SOURCE-COMPUTER. modelo-ord.
OBJECT-COMPUTER. modelo-ord.
SPECIAL-NAMES. nombres especiales]

DATA DIVISION
[ FILE SECTION.]
[ WORKING-STORAGE SECTION.]
PROCEDURE DIVISION.
nombre-de-prrafo.
{Sentencia}...}...
nombre-de-prrafo.
{Sentencia}...}...

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

LENGUAJE COBOL

34

17

LENGUAJE ORIENTADO A
SISTEMAS DE GESTIN

LOS DATOS

DATA DIVISION
z

FUNCIN
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.

FORMATO
DATA DIVISION.
[FILE SECTION.
{ Entrada de descripcin de ficheros....}
{ Entrada de descripcin de registros...}]
[WORKING-STORAGE SECTION.
[ Entrada de descripcin de variables o registros ]]

LENGUAJE COBOL

36

18

TIPOS DE DATOS
Una de las caractersticas tpicas de
los datos que se usan en las
aplicaciones de gestin es la variedad
de formas y estructuras.
Los datos se clasifican en:

Campos Independientes
Campos Compuestos
Tablas
LENGUAJE COBOL

37

CAMPOS INDEPENDIENTES
z
z

Es un campo de trabajo que ser definido en la seccin de


working. No forman parte de la descripcin de los ficheros.
Formato mnimo para su definicin:
nmero-de-nivel nombre-de-dato
PICTURE especificacin de formato.
Donde:

Nmero-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 informacin que puede almacenarse en el
campo, as como las operaciones que con l pueden realizarse.
Permite definir el tipo y el tamao del campo.

LENGUAJE COBOL

38

19

CLUSULA PICTURE
PICTURE/PIC IS especificacin de formato.

Carcter

Descripcin

Ejemplos

Cualquier dgito
del 0 al 9

1. PIC 99999
2. PIC 9(5)

Posicin Decimal

1. PIC 99v99
2. PIC 9(2)v99

Signo

1. PIC S999
2. PIC S99v99
39

LENGUAJE COBOL

CLUSULA PICTURE
Descripcin

Valor Numrico

77 CANT PIC 9(6)

12234

77 CANT PIC 9999

8956

77 CANT PIC 9(10)

1234567

Representacin INTERNA
012234
8956
0001234567

77 CANT PIC 9999

285

77 CANT PIC 99V9

38.50

38^5

77 CANT PIC 9(4)V99

452.39

0452^39

77 CANT PIC 999


77 CANT 99999V99
77 CANT PIC S999V99

550
23561.00

0285

550
23561^00

156.29

156^29

-1251.16

1251^16

77 CANT S9(4)V99

-0.10

0000^10

77 CANT S9(4)V99

-325.18

0325^18

77 CANT S9(3)V99

LENGUAJE COBOL

40

20

CLUSULA PICTURE
Carcter

Descripcin

Ejemplos

Cualquier carcter letra

1.
2.

PIC AAAAA
PIC A(5)

Cualquier carcter

1.
2.

PIC XXXXX
PIC X(5)

Descripcin

Ejemplo

Representado en el Almacenamiento
como

77 VALOR PIC XXXXX

BUENO

77 VALOR PIC X(5)

BUEN

77 VALOR PIC X(5)

BUENOS

77 VALOR PIC X(8)

D.

GIL

U
.

E
G

N
I

LENGUAJE COBOL

41

CLUSULA PICTURE
Carcter

Descripcin

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


aparecer en la salida

Indica la posicin del punto decimal

Indica la posicin de la coma como carcter de separacin de


millares. La utilizacin de la clusula 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

Sirve para reemplazar los ceros no significativos por


blancos

Se inserta en el extremo izquierdo o derecho. Representa la


aparicin del signo. Si el nmero es positivo aparecer
un + y si es negativo aparecer un -.

LENGUAJE COBOL

42

21

CLUSULA PICTURE
Carcter

Descripcin

Se inserta en el extremo izquierdo o derecho. Representa la


aparicin del signo. Si el nmero es positivo aparecer
un blanco y si es negativo aparecer un -.

CR

Representa la aparicin del signo bancario CR de crdito.


Cuando el valor es positivo aparecern blancos, si el
valor es negativo aparece los caracteres CR.

DB

Representa la aparicin del signo bancario DB de dbito.


Cuando el valor es positivo aparecern blancos, si el
valor es negativo aparece los caracteres DB.

Se usan para insertar ceros en las posiciones en que deben


aparecer

Se usan para insertar blancos en las posiciones en que deben


aparecer

43

LENGUAJE COBOL

CLUSULA PICTURE
PICTURE

CONTENIDO

PICTURE
EDICIN

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

9999V99

500000

999.99

LENGUAJE COBOL

Resultado
Editado

54.00
000.00

44

22

CLUSULA PICTURE
PICTURE

CONTENIDO

PICTURE
Resultado
EDICIN
Editado

9999

0704

ZZZ9

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

b704

bbb.01

45

LENGUAJE COBOL

CLUSULA PICTURE
PICTURE

CONTENIDO

PICTURE
EDICIN

9(6)

012345

***999

*12345

9(6)

000012

***999

***012

9(6)

000123

***999

***123

9(5)V99

0012345

*****.99

LENGUAJE COBOL

Resultado
Editado

**123.45

46

23

CLUSULA PICTURE
PICTURE

CONTENIDO

PICTURE
EDICIN

Resultado
Editado

9(7)

1234567

9,999,999

9(3)V99

12345

9,990,000.99

999

123

9B00B990

9(4)

1234

9,009,990

999

123

9BB99

1bb23

999

123

90099

10023

1,234,567
1,230,000.45
1b00b230
1,002,340

47

LENGUAJE COBOL

CLUSULA PICTURE
PICTURE

CONTENIDO

PICTURE
EDICIN

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

Resultado
Editado

48

24

CLUSULA PICTURE
PICTURE

CONTENIDO

PICTURE
EDICIN

Resultado
Editado

S999

-123

+999

-123

S999

+628

-999

628

S999

+456

999+

456+

S9(3)V99

-12345

999.99DB

S999V99

-18200

$999.99CR

S9(3)V99

+15768

999.99DB

157.68bb

S9(3)V99

-65125

+$999.99

-$651.25

S9(3)V99

+57950

+$999.99

+$579.50

123.45DB
$182.00CR

49

LENGUAJE COBOL

CLUSULA PICTURE
PICTURE

CONTENIDO

PICTURE
EDICIN

9(5)V99

0000440

$$$$$$.99

$4.40

999V99

-00555

++++.99

-5.55

999V99

00000

++++.++

blancos

9(5)V99

0475682

$$$,$$$.99

LENGUAJE COBOL

Resultado
Editado

$4,756.82

50

25

CLUSULA PICTURE

PICTURE

CONTENIDO

PICTURE
EDICIN

Resultado
Editado

X(6)

CN1005

XXBBX(4)

CN

AAAA

HOLA

ABABABA

H 0 L A

X(5)

CASO3

XXXXBX000

CASO

1005

3000

LENGUAJE COBOL

51

CLUSULA VALUE
z

La inicializacin de los campos independientes se debe


realizar a travs de la clusula VALUE, cuando se
estn definiendo.
Formato
VALUE IS literal/constante figurativa

WORKING-STORAGE SECTION.
77 VARIABLE
PIC
X(20)
77 VARIABLE
PIC
99
77 VARIABLE
PIC
V99
77 VARIABLE
PIC
9(8)
77 VARIABLE
PIC
X(10)
77 VARIABLE
PIC
X(9)
77 VARIABLE
PIC
X(9)
77 CERO
PIC
99999
77 CERO
PIC
99999

VALUE
Listado Empleados.
VALUE
10.
VALUE
0.03.
VALUE
ZEROS.
VALUE
SPACES.
VALUE --------- .
VALUE
ALL -.
VALUE ZEROS.
VALUE 0.

LENGUAJE COBOL

52

26

JUSTIFIED RIGHT
z

Se utiliza nicamente con variables de tipo


alfabtico o alfanumrico y su efecto es
eliminar la convencin de justificacin a la
izquierda de los datos no numricos.
77 CAMPO

PIC

X(4)

VALUE AB

JUST RIGHT.

53

LENGUAJE COBOL

CAMPOS COMPUESTOS
z
z
z

Son campos que pueden subdividirse.


Se le conoce tambin con el nombre de registros.
Pueden definirse en el rea de trabajo (WORKING
STORAGE SECTION) y es obligada su utilizacin al
describir la estructura de los ficheros.
DATOS-VENDEDOR

NUM-VEN

NOMBRE

APELLIDO1

DATOS-DIRECCIN

APELLIDO2

PROVINCIA

LENGUAJE COBOL

CALLE

FECHA-ALTA

NCALLE

DIA

MES

AO

54

27

CAMPOS COMPUESTOS
NUMERO DE NIVEL

01

VENDEDOR.
02
02

02

02

ESPECIFICACIN
DE FORMATO

NUMERO
DATOS-VENDEDOR.

PIC

999.

03
03
03

NOMBRE
APELLIDO1
APELLIDO2

PIC
PIC
PIC

X(10).
X(10).
X(10).

DATOS-DIRECCION.
03
PROVINCIA
03
CALLE
03
NCALLE

PIC
PIC
PIC

X(30).
X(15).
99.

FECHA-ALTA.
03
DA
03
MES
03
ANIO

PIC
PIC
PIC

99.
99.
99.

NOMBRE
DE DATO

LENGUAJE COBOL

55

CAMPOS COMPUESTOS
Los nombre de datos sirven para nombrar un campo
con el fin de poder referenciar en el programa, el
contenido del mismo.
Si la informacin no se va a referenciar, el nombre de
datos puede sustituirse por la palabra reservada
FILLER.
Los nmeros de Nivel sirven para indicar la relacin
existente entre un campo y el resto de los campos.
Los nmeros de nivel que pueden utilizarse son: del 01
al 49.

z
z

[01] Slo precede al nombre del registro.


[02 a 49] Preceden a cualquier campo grupo o elemental.

LENGUAJE COBOL

56

28

CAMPOS COMPUESTOS
Un campo grupo tiene un nivel superior que cualquiera de sus
campos elementales.
Los nmeros de nivel utilizados no tiene porque ser correlativos.
Cualquier nombre de datos debe ir precedido por su nmero de
nivel.
El nmero de nivel 01 deber escribirse en el margen A, mientras
que su nombre asociado lo ser en el margen B.
Cualquiera de los restantes nmeros de nivel dentro del campo
compuesto pueden situarse en cualquier columna.
Se aconseja un escalonado progresivo de los niveles para una
mejor interpretacin
El tipo del campo determina la informacin que puede almacenarse
en el campo, as como las operaciones que con l pueden
realizarse. Se hace a travs de la clusula PICTURE.
La longitud del campo viene dada por el nmero de caracteres
empleados en la especificacin del formato para declarar el campo.

z
z
z
z
z
z
z

57

LENGUAJE COBOL

CAMPOS COMPUESTOS
Calificacin de los nombres de datos.

01

En la declaracin de campos compuestos, dos campos


elementales pueden tener el mismo nombre de datos.
DATOS.
02

02

TOTALES-SEMANALES.
03
HORAS
03
DEPTO-NO
TOTALES-MENSUALES.
03
HORAS
03
MAS-INFORMACION

PIC 99V99.
PIC
9(5).
PIC 99V99.
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....
03
ANUAL....
03
TOTAL....
01 REG-NUEVO.
02
A-LA-FECHA.
03
MES....
03
ANUAL....
02
ULTIMO-PERIODO.
03
MES....
03
ANUAL....
03
TOTAL....

MES OF ULTIMO-PERIODO OF REG-VIEJO


TOTAL OF REG-NUEVO

LENGUAJE COBOL

59

NOMBRES DE CONDICIN
z

Permite al programador definir constantes figurativas


adicionales para usarlas en el programa COBOL
88

77

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


[THRU constante-2]

FINAL-FICHERO
88
FIN-FICHERO

PIC
VALUE

XX.
`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 CONDICIN
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
61

LENGUAJE COBOL

RENAMES
z

La clusula 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
02

02

66

NO-SEG-SOCIAL
NOMBRE-COMPLETO.
03
NOMBRE
03
INICIAL
03
APELLIDO
TOTAL-A-LA-FECHA.
03
PAGO-BRUTO
03
PAGO-NETO
03
IMPUESTO-TRIBUTADO
03
IMPUESTO-ESTADO

PIC 9(8)V99.
PIC 9(8)V99.
PIC 9(6)V99.
PIC 9(4)V99.

ULTIMO-PAGO RENAMES APELLIDO THRU PAGO-NETO.


NOMBRE-COMPLETO

NO-SEG-SOCIAL

PIC X(9).
PIC X(10).
PIC XX.
PIC X(15).

NOMBRE

INICIAL

TOTAL-A-LA-FECHA

APELLIDO

PAGO-BRUTO

LENGUAJE COBOL

PAGO-NETO

IMPUESTOTRIBUT
ADO

IMPUESTOESTADO

62

31

TABLAS
z

Una tabla es un conjunto de valores almacenados en


posiciones consecutivas de memoria y con un nombre
de datos asignado.
La referencia a entradas especficas de la tabla se
hace mediante un slo nombre junto con un subndice
que indica la posicin de entrada particular.

WORKING-STORAGE SECTION.
01 Nombre-de-tabla.
02 Nombre-de-elemento OCCURS nmero-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
INGRESOS-PROMEDIOS (1)

PROMEDIO-NACIONAL

INGRESOS-PROMEDIOS (50)

PROMEDIO-NACIONAL

65

LENGUAJE COBOL

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(1)

INGRESO(1)

---

NOMBRE-INGRESO (50)
NOMBRE(50)

LENGUAJE COBOL

INGRESO (50)

66

33

TABLAS
z
z
z
z
z
z

La clusula OCCURS no puede aplicarse a nivel 01.


La clusula OCCURS no puede aplicarse a nivel 77.
La dimensin de una tabla debe ser menor o igual que
7, aunque depende del compilador.
La clusula PICTURE se aplica slo a campos
elementales.
Los subndices pueden ser constantes o variables de
tipo entero. Sus valores deben ser positivos.
El subndice o subndices se encierran en un conjunto
de parntesis y se separan del nombre de la tabla por
un espacio. Los subndices mltiples se separan uno
de otros por comas y espacios.

67

LENGUAJE COBOL

TABLAS
z

Inicializacin de una tabla en tiempo de


compilacin.
nombre-de-dato-1 REDEFINES nombre-de-dato-2
01 FECHA.

01

02
DA
PIC 99.
02
MES
PIC 99.
02
AO
PIC 99.
FECHA-ACTUAL REDEFINES

LENGUAJE COBOL

FECHA PIC X(6).

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 "MIRCOLES".
02 FILLER
PIC X(10)
VALUE "JUEVES".
02 FILLER
PIC X(10)
VALUE "VIERNES".
02 FILLER
PIC X(10)
VALUE "SBADO".
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 GESTIN

VERBOS ARITMTICOS

35

INTRODUCCIN
z

Los verbos aritmticos permiten realizar las


tpicas operaciones de suma, resta, producto y
divisin, adems podremos almacenar el resto
de una divisin y realizar conjuntamente todas
estas operaciones en una sola sentencia.
Verbos Aritmticos.

Suma
Resta
Producto
Divisin
O. Aritmticas

ADD
SUBSTRACT
MULTIPLY
DIVIDE
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

Opcin ROUNDED

Si en una suma (o cualquier otra operacin) el nmero


de decimales del resultado es mayor que el nmero
de ellos especificados en el campo receptor, trunca el
nmero sobrante de dgitos por la derecha.

PICTURE
S99V9
9V9
99V9
S99V
SV999

RESULTADO
CALCULADO
-12.36
8.432
35.6
65.6
.0058

VALOR DESPUS VALOR DESPUS


DE TRUNCAR
DE REDONDEAR
-12.3
12.4
8.4
8.4
35.6
35.6
65
66
.005
.006

LENGUAJE COBOL

73

SUMA. OPCIONES
z

Opcin ON SIZE ERROR

Si la parte entera de un clculo no cupiera en el


campo receptor, se producira un desbordamiento.
La utilizacin de esta clusula permite al
programador especificar una serie de instrucciones
que solo se ejecutaran cuando se produzca dicho
desbordamiento.

ADD HORAS-SEMANA TO TOTAL -HORAS-AO


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

DESPUS

77 IDA PIC 9(3)


77 IDB PIC 999
77 IDC PIC S99

010
020
-10

010
020
+20

ADD IDA IDB -30 TO IDD IDC

ANTES

DESPUS

77
77
77
77

030
010
+05
-15

030
010
+15
-005

IDA
IDB
IDC
IDD

PIC 9(3)
PIC 999
PIC S9(2)
PIC S999

75

LENGUAJE COBOL

SUMA. EJEMPLOS
ADD IDA IDB GIVING IDC

ANTES

DESPUS

77 IDA PIC S9(2)


77 IDB PIC S9(3)
77 IDC PIC S9(4)

-10
+020
+0030

-10
+020
+0010

ADD -15 IDA IDB GIVING IDC

ANTES

DESPUS

77 IDA PIC S9(2)


77 IDB PIC S9(3)
77 IDC PIC S9(4)

-10
+020
+0030

-10
+020
+0005

LENGUAJE COBOL

76

38

SUMA. EJEMPLOS
ADD IDA IDB GIVING IDC

ANTES

DESPUS

77 IDA PIC 9(5)


77 IDB PIC 9(4)
77 IDC PIC 99

21987
4593
52

21987
4593
---80 Se han perdido
dgitos (26580)

ADD 0.0003 IDA GIVING IDC

ANTES

DESPUS

77 IDA PIC 9V9(5)


77 IDC PIC 9V99

000005
038

000005
000-- se han
perdido
dgitos (0.0008)

LENGUAJE COBOL

77

RESTA
z

La sentencia SUBTRACT se utiliza para restar uno o ms


items de datos numricos de otro u otros items de datos
numricos, sustituyendo el valor de la diferencia en el
ltimo items de la declaracin.

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

DESPUS

77 IDA PIC 99
77 IDB PIC 999

10
042

10
032

SUBTRACT IDA 4 IDB


FROM IDC IDD

ANTES

DESPUS

77
77
77
77

10
027
52
47

10
027
11
06

IDA
IDB
IDC
IDD

PIC 99
PIC 999
PIC 99
PIC 99

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).

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
GIVING IDC

ANTES

DESPUS

77 IDA PIC 99
77 IDB PIC 999
77 IDC PIC 99

10
032
41

10
032
22

SUBTRACT IDD IDC FROM IDB ANTES


GIVING IDA

DESPUS

77
77
77
77

072000
122000
020000
030000

IDA
IDB
IDC
IDD

PIC 9(6)
PIC 9(6)
PIC 9(6)
PIC 9(6)

000123
122000
020000
030000

81

LENGUAJE COBOL

MULTIPLICACIN
MULTIPLY ident-1/literal-1 BY ident-2
siendo:
ident-1: multiplicando.
ident-2: multiplicador y campo receptor del resultado de la operacin.

MULTIPLY IDB BY IDA

ANTES

DESPUS

77 IDA PIC 9(5)


77 IDB PIC 99

01000
25

25000
25

MULTIPLY 0.5 BY IDA

ANTES

DESPUS

77 IDA PIC 9(5)

25000

12500

LENGUAJE COBOL

82

41

MULTIPLICACIN
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 DESPUS

77 IDA PIC 9(5)


77 IDB PIC 9(5)

12500
50000

12500
06250

LENGUAJE COBOL

83

DIVISIN
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 algn campo receptor, no cupiera el resultado de las
operaciones realizadas se rompera la secuencia del programa
ejecutndose el prrafo RUTINA DE DESBORDAMIENTO.

LENGUAJE COBOL

84

42

DIVISIN
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

85

LENGUAJE COBOL

DIVISIN. EJEMPLOS
DIVIDE IDB INTO IDA

ANTES

DESPUS

77 IDA PIC 9(5)


77 IDB PIC 99

50000
50

01000
50

DIVIDE IDA BY 365 GIVING IDB

ANTES

DESPUS

77 IDA PIC 9(5)


77 IDB PIC 9999

36500

36500
1000

DIVIDE 365 INTO IDA GIVING IDB ANTES

DESPUS

77 IDA PIC 9(5)


77 IDB PIC 9999

36500
1000

36500

LENGUAJE COBOL

86

43

DIVISIN. EJEMPLOS
DIVIDE DIVIDENDO
BY DIVISOR
GIVING COCIENTE
REMAINDER RESTO

ANTES

DESPUS

77
77
77
77

100
03
55

100
03
0100 (01.00)
33

DIVIDENDO
DIVISOR
RESTO
COCIENTE

PIC 999
PIC 99
PIC 99V99
PIC 99

LENGUAJE COBOL

87

COMPUTE
z

Esta sentencia se utiliza para realizar


operaciones aritmticas sin necesidad de
utilizar las declaraciones aritmticas vistas
hasta ahora.

COMPUTE ident-1
[ROUNDED] = expresin-aritmtica
[ON SIZE ERROR sentencia-1]
LENGUAJE COBOL

88

44

COMPUTE
SMBOLO

OPERACIN
REPRESENTADA

PRIORIDAD

Suma

MENOR

Resta

Producto

Cociente

**

Exponenciacin

MAYOR

LENGUAJE COBOL

89

COMPUTE
COMPUTE A = B ** C.
No tiene sentencia
equivalente.

COMPUTE A = B + C.
ADD B, C GIVING A.
COMPUTE A = B - C.
SUBTRACT C FROM B GIVING A.
COMPUTE A = B * C.
MULTIPLY B BY C GIVING A.

COMPUTE A = B / C.
DIVIDE B BY C GIVING A.
COMPUTE A = -B.
SUBTRACT B FROM
ZERO GIVING A,
MULTIPLY -1 BY B
GIVING A

LENGUAJE COBOL

90

45

LENGUAJE ORIENTADO A
SISTEMAS DE GESTIN

VERBOS ENTRADA
SALIDA

INTRODUCCIN
z

La funcin es poner en comunicacin el


programa con los dispositivos externos
donde se encuentran o se encontrarn
los datos.
Sentencias:

Display
Accept
LENGUAJE COBOL

92

46

DISPLAY
z

Mediante esta declaracin se proporciona


informacin o mensajes a la consola,
impresora u otro dispositivo de salida.

DISPLAY ident/literal ...


[UPON nombre nemnico/de funcin]
[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
z
z

BEEP: Emite un sonido cada vez que display es


ejecutado.
BLINK: Hace parpadear el elemento visualizado.
CONVERT: Esta opcin se aplica a campos numricos o
numricos editados. El valor a visualizar es convertido de
su formato interno a los dgitos correspondiente,
eliminando los ceros no significativos. El valor se ajusta a
la izquierda, y el espacio sobrante a la derecha se rellena
con blancos.
ERASE[EOL/EOS]: ERASE borra pantalla. ERASE EOL
borra desde la posicin del cursor hasta el final de la
lnea. ERASE EOS borra desde la posicin del cursor
hasta el final de la pantalla.

LENGUAJE COBOL

94

47

DISPLAY. OPCIONES
z
z
z
z

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


LOW: Visualiza el dato en intensidad baja.
REVERSE: Visualiza el dato en vdeo inverso.
SIZE: Especifica el tamao del campo fsico presentado
sobre la misma pantalla. Si el tamao especificado es
menor que el definido en la clusula PIC, solamente
aparecer sobre la pantalla la porcin de la parte
izquierda, y si el tamao especificado es ms grande, se
rellena con blancos.
UNDERLINE: Visualiza el dato subrayado.

LENGUAJE COBOL

95

ACCEPT
z

Esta declaracin permite introducir pequeos volmenes


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-nemnico/CONSOLE/SYSIN]

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

96

48

ACCEPT. OPCIONES
z
z
z
z
z
z
z
z

BEEP.
BLINK.
CONVERT.
ECHO: Hace que el dato aceptado sea visualizado sobre el
campo de pantalla una vez finalizada la entrada.
ERASE[EOL/EOS].
HIGH.
LOW.
PROMPT [literal]: Marca la pantalla con el carcter
especificado las posiciones vacas mientras se ejecuta una
operacin ACCEPT. Por defecto es el carcter subrayado.

LENGUAJE COBOL

97

ACCEPT. OPCIONES
z
z
z
z

z
z

REVERSE.
SIZE.
TAB: Obliga a pulsar la tecla Enter.
UPDATE: Permite visualizar el contenido del campo
antes de efectuar la entrada. Esto permite modificar
el contenido del correspondiente campo. Esta
clusula implica tambin conversin de los datos de
entrada.
UNDERLINE.
UPPER: Convierte la entrada a maysculas.

LENGUAJE COBOL

98

49

LENGUAJE ORIENTADO A
SISTEMAS DE GESTIN
VERBOS
TRANSFERENCIA DE
DATOS

GENERALIDADES
z
z
z

campo emisor = contiene la informacin a transferir


campo receptor = recibe dicha informacin.
Los datos se pueden transferir a un campo receptor de
varias formas:
El efecto de usar la opcin GIVING con verbos
aritmticos.
El verbo COMPUTE por si mismo incluye una
transferencia de datos al almacenar los resultados en un
campo especfico.
Las opciones READ .... INTO y WRITE.... FROM incluye
transferencia de informacin implcitas.
La clusula VALUE de la DATA DIVISION incluye una
transferencia de informacin implcita, aunque slo se
ejecutar una vez al principio del programa.

LENGUAJE COBOL

100

50

VERBO MOVE
Transfiere informacin 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 tamaos y


especificaciones PICTURE de los campos emisor (identificador-1)
y receptor (identificador-2).
Adems, la categora de los campos emisor y receptor es un
factor al determinar si una instruccin MOVE es vlida o no vlida.

LENGUAJE COBOL

101

VERBO MOVE
z

La constante figurativa SPACE, o un campo


alfanumrico editado o alfabtico no puede
moverse a un campo numrico o numrico
editado.
Una constante numrica, la constante figurativa
ZERO, un campo numrico o numrico editado no
puede moverse a un campo alfabtico.
Una constante o campo numrico no entero no se
puede mover a un campo alfanumrico editado o
no,

LENGUAJE COBOL

102

51

TIPOS DE MOVIMIENTOS
CAMPO RECEPTOR

CAMPO EMISOR

ALFABTICO

ALFANUMRICO
ALFANUMRICO
EDITADO

NUM ENTERO
NUM NO ENTER
NUM EDITADO

Alfabtico

SI

SI

NO

Alfanumrico

SI

SI

NO

Alfanumrico editado

SI

SI

NO

Numrico Entero

NO

SI

SI

Numrico No Entero

NO

NO

SI

Numrico Editado

NO

SI

SI

LENGUAJE COBOL

103

TIPOS DE MOVIMIENTOS
z

De un campo numrico a otro numrico de


edicin o no.

Los campos emisor y receptor se alinean por el


punto decimal.
Si tamao (campo receptor) < tamao (campo
emisor), se produce truncamiento de la parte entero
y/o decimal.
Si tamao (campo receptor) > tamao (campo
emisor), se rellena con ceros no significativos en
cualquiera de las partes.

LENGUAJE COBOL

104

52

TIPOS DE MOVIMIENTOS
De un campo alfabtico o alfanumrico a otro
de tipo alfabtico o alfanumrico de edicin 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
clusula JUSTIFIED RIGHT.
Si tamao (campo receptor) < tamao(campo
emisor), se produce truncamiento.
Si tamao (campo receptor) > tamao(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 ...

Con esta opcin 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

77 EMISOR PIC 99V99


77 RECEPTOR PIC 999V99

1234
98765

DESPUS
(12.34)
(987.65)

1234
01234

(12.34)
(012.34)

MOVE EMISOR TO RECEPTOR

ANTES

DESPUS

77 EMISOR
PIC 9V9
77 RECEPTOR PIC 999V999

11 (1.1)
123123 (123.123)

11 (1.1)
001100 (001.100)

MOVE EMISOR TO RECEPTOR

ANTES

DESPUS

77 EMISOR
PIC 999V99
77 RECEPTOR PIC 999.99.

12312 (123.12)
321.98

12312 (123.12)
123.12

MOVE EMISOR TO RECEPTOR

ANTES

DESPUES

77 EMISOR PIC 9(4)V9


77 RECEPTOR PIC 99V999

12345 (1234.5)
98765 (98.765)

12345 (1234.5)
34500 (34.500)

LENGUAJE COBOL

107

EJEMPLOS
01

GRUPO-1
05
NUMERO
PIC
99.
05
DIA
PIC
X(7).
05
AO
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
Despus 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 tambin tendr valores cero.

109

LENGUAJE COBOL

EJEMPLOS
01

01

REGISTRO-PERSONAL.
03
NUMERO
03
NOMBRE
03
DIRECCION
03
DIS-POSTAL

PIC
PIC
PIC
PIC

9(5).
X(30).
X(20).
99.

LINEA-IMPRESION.
02
FILLER
02
NUMERO
02
FILLER
02
NOMBRE
02
FILLER
02
DIRECCION
02
FILLER
02
DIS-POSTAL

PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC

X(10)
Z(5).
X(5)
X(30).
X(5)
X(20).
X(5)
ZZ.

VALUE SPACES.
VALUE SPACES.
VALUE SPACES.
VALUE SPACES.

MOVE CORRESPONDING REGISTRO-PERSONAL TO LINEA-IMPRESION

LENGUAJE COBOL

110

55

LENGUAJE ORIENTADO A
SISTEMAS DE GESTIN

ESTRUCTURAS DE
CONTROL

INTRODUCCIN
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.
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
z

Es precisamente en esta divisin donde se escriben las


instrucciones de ejecucin.
Es la divisin que permite especificar con la sintaxis del
lenguaje de programacin COBOL, el conjunto de
acciones a realizar.
PROCEDURE DIVISION.
Nombre-prrafo-1.
.............................................
.............................................
Nombre-prrafo-2.
.............................................
.............................................

LENGUAJE COBOL

113

ESTRUCTURA SECUENCIAL
z

Se emplea para especificar la secuencia de ejecucin


de un programa modular representado por prrafos.
PERFORM nombre-prrafo
PROGRAMA

P-PROGRAMA

PROCEDURE DIVISION.
PROGRAMA.
PERFORM P-PROGRAMA.
............................................
............................................
STOP RUN.
P-PROGRAMA.
sentencia 1.
sentencia 2.

LENGUAJE COBOL

114

57

LENGUAJE ORIENTADO A
SISTEMAS DE GESTIN

ESTRUCTURAS DE
CONTROL

VERBO IF
z

Este verbo produce la evaluacin de una


condicin, dependiendo la siguiente
accin del programa a realizar, de la
evaluacin de la misma.
IF condicin THEN accin-1/ NEXT SENTENCE
[ELSE accin-2/NEXT SENTENCE]

LENGUAJE COBOL

116

58

VERBO IF
PROGRAMA

CONDICIN

P-PROGRAMA

F-PROGRAMA

CIERTO

SENTENCIA 1
SENTENCIA 2

PROCEDURE DIVISION.
PROGRAMA.
PERFORM P-PROGRAMA.
IF condicin
THEN PERFORM CIERTO.
PERFORM F-PROGRAMA.

.
.
CIERTO.
sentencia-1
sentencia-2

117

LENGUAJE COBOL

VERBO IF
PROGRAMA

CONDICIN

P-PROGRAMA

CIERTO

FALSO

SENTENCIA 1

SENTENCIA 3

SENTENCIA 2

SENTENCIA 4

PROCEDURE DIVISION.
PROGRAMA.
PERFORM P-PROGRAMA.
IF condicin
THEN PERFORM CIERTO
ELSE PERFORM FALSO.
PERFORM F-PROGRAMA.

F-PROGRAMA

CIERTO.
sentencia-1.
sentencia-2.
FALSO.
sentencia-3.
sentencia-4.
LENGUAJE COBOL

118

59

CONDICIONES. TIPOS
z

Condiciones de relacin.

Las condiciones de relacin se refieren a las


comparaciones entre dos items. El tipo de comparacin
se indica por el operador relacional que puede estar en
forma de palabras o de smbolos.
identificador-1
literal-1
exp-aritmtica-1

IS operador

identificador-2
literal-2
exp-artimtica-2

119

LENGUAJE COBOL

CONDICIONES. TIPOS
Operador

Significado

Smbolo

GREATER THAN

>

Mayor que

LESS THAN

<

Menor que

EQUAL TO

NOT GREATER THAN

NOT >

Igual a
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 condicin de clase hace posible


determinar si un identificador pertenece o no a una de
las cuatro clases incluidas en el Formato siguiente:

Identificador

IS [NOT]

NUMERIC
ALPHABETIC
ALPHABETIC-LOWER
ALPHABETIC-UPPER

121

LENGUAJE COBOL

CONDICIONES. TIPOS
z

Condiciones de signo.

Permiten determinar si el valor de una campo


numrico o de una expresin aritmtica es positivo,
negativo o cero. El Formato general es el siguiente:

Expresin Aritmtica

IS [NOT]

LENGUAJE COBOL

POSITIVE
NEGATIVE
ZERO

122

61

CONDICIONES. TIPOS
z

Condiciones de nombre de condicin.

Este tipo de condicin facilita la asociacin 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-condicin 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 alfanumrico 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 lgicas AND y OR.
Orden de evaluacin de las condiciones
1 - PARNTESIS
2 - NOT
3 - AND
4 - OR
5 - A igualdad de operadores de izquierda a derecha

condicin-1 [NOT] AND/[NOT] OR condicin-2

LENGUAJE COBOL

125

VERBO EVALUATE
z

Este verbo produce la evaluacin de una condicin,


dependiendo la siguiente accin del programa a realizar,
de la evaluacin de la misma. Es una forma de
implementar la estructura Casos.

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

LENGUAJE COBOL

126

63

VERBO EVALUATE
PROGRAMA

IDENTIFICADOR = V1
= V2

P-PROGRAMA

PRRAFO-1

PRRAFO-2

= V3

PRRAFO-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.

127

LENGUAJE COBOL

VERBO EVALUATE
Si tenemos un cdigo que puede tener como valores: 1, 2, y 3. El
siguiente rbol programtico representa la estructura condicional anidada
que verifica el valor del cdigo y ejecuta el prrafo adecuado.
VALOR-CDIGO

CDIGO 0 1

P-VALOR-CDIGO

F-VALOR-CDIGO

AADIR
CDIGO = 2

FALSO

BORRAR

CODIGO = 3

MODIFICAR

LENGUAJE COBOL

ERROR

128

64

VERBO EVALUATE
VALOR-CDIGO

CDOGO = 1
=2

P-VALOR-CDIGO

AADIR

OTRO

=3

BORRAR

MODIFICAR

ERROR

F-VALOR-CDIGO

Si tenemos un cdigo que puede tener como valores: 1, 2, y 3. El siguiente rbol


programtico tambin representa la estructura condicional que verifica el valor
del cdigo y ejecuta el prrafo adecuado.

129

LENGUAJE COBOL

VERBO EVALUATE
EVALUATE TRUE
WHEN NOMBRE-DE-CONDICION instruccin imperativa-1
...........
WHEN OTHER instruccin imperativa-n
DATA DIVISION.
WORKING-STORAGE SECTION.
01
CODIGO
PIC 9.
88
AADIR-REGISTRO
88
SUPRIMIR-REGISTRO
88
MODIFICAR-REGISTRO
88
ERROR-CODIGO
EVALUATE TRUE
WHEN aadir-registro
WHEN suprimir-registro
WHEN modificar-registro
WHEN OTHER
END-EVALUATE.

VALUE
1.
VALUE
2.
VALUE
3.
VALUE ARE 0 4 THRU 9.
PERFORM
PERFORM
PERFORM
PERFORM

LENGUAJE COBOL

AADIR
SUPRIMIR
MODIFICAR
CODIGO-ERRONEO

130

65

VERBO EVALUATE
CONDICIN
CDIGO

CALIFICACIN

ACCIN A REALIZAR

1o2
3
4
cualquier otro

A, B o C
AoB
cualquiera
cualquiera

PRRAFO-1
PRRAFO-2
PRRAFO-3
PRRAFO-4

EVALUATE CDIGO ALSO


WHEN 1 THRU 2
WHEN 3
WHEN 4
WHEN OTHER
END-EVALUATE.

CALIFICACIN
ALSO A THRU C
ALSO A THRU B
ALSO ANY

PERFORM PARRAFO-1
PERFORM PARRAFO-2
PERFORM PARRAFO-3
PERFORM PARRAFO-4

LENGUAJE COBOL

131

LENGUAJE ORIENTADO A
SISTEMAS DE GESTIN

ESTRUCTURAS DE
CONTROL

66

VERBO PERFORM
PERFORM prrafo entero/identificador TIMES
PROCEDURE DIVISION.
PROGRAMA.
..............................
PERFORM BUCLE 5 TIMES
.............................
BUCLE.
sentencia 1.
sentencia 2.

BUCLE
5 VECES

133

LENGUAJE COBOL

VERBO PERFORM
PERFORM prrafo [WITH TEST BEFORE]
UNTIL condicin

PROGRAMA

P-PROGRAMA

F-PROGRAMA

PRRAFO
CONDICIN

LENGUAJE COBOL

134

67

VERBO PERFORM
PERFORM prrafo WITH TEST AFTER
UNTIL condicin

PROGRAMA

P-PROGRAMA

F-PROGRAMA

PRRAFO
CONDICIN
(DESPUS)

LENGUAJE COBOL

135

VERBO PERFORM

PERFORM prrafo
[WITH TEST BEFORE/AFTER]
VARYING iden-1 FROM lit-1/iden-2
BY lit-2/iden-3 UNTIL condicin-1

LENGUAJE COBOL

136

68

VERBO PERFORM
z

La ejecucin, si no se ha especificado la opcin 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 evala la condicin-1.

1. Si es cierta, se da por finalizada la ejecucin 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 prrafo
d) Se suma a identificador-1 el valor especificado por

identificador-3 que sigue a BY y se vuelve al punto b.

137

LENGUAJE COBOL

VERBO PERFORM
PERFORM prrafo WITH TEST BEFORE
VARYING iden-1 FROM iden-2
BY iden-3 UNTIL condicin

PROGRAMA

IDEN-1 = IDEN-2 , IDEN-3

P-PROGRAMA

F-PROGRAMA

PRRAFO
CONDICIN

LENGUAJE COBOL

138

69

VERBO PERFORM
PERFORM prrafo
[WITH TEST BEFORE/AFTER]
VARYING iden-1 FROM lit-1/iden-2
BY lit-3/iden-3 UNTIL condicin-1
AFTER iden-4 FROM lit-5/iden-5
BY lit-4/iden-6 UNTIL condicin-2

LENGUAJE COBOL

139

VERBO PERFORM
a)
b)

El identificador-1 y el identificador-4 se inicializan a los


valores respectivos que siguen a cada FROM.
Se evala la condicin-1.
1.
2.

c)

Se evala la condicin-2.
1.

2.

d)
e)

Si es cierta, se da por finalizada la ejecucin de la sentencia


PERFORM y se pasa a ejecutar la siguiente sentencia del
programa.
Si es falsa, se pasa al punto c.
Si es cierta, el identificador-4 se inicializa al valor especificado por
literal-5 o identificador-5 que sigue a FROM, tambin se suma a
identificador-1 el valor especificado por identificador-3 que sigue a
BY y se contina en el punto b.
Si es falsa se pasa al punto d.

Se ejecuta el
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

F-PROGRAMA

PRRAFO
CONDICIN 1
CONDICIN 2

PERFORM prrafo [VARYING iden-1 FROM iden-2


BY iden-3 UNTIL condicin-1
AFTER iden-4 FROM iden-5
BY iden-6 UNTIL condicin-2

LENGUAJE COBOL

141

71

You might also like