You are on page 1of 71

LENGUAJE ORIENTADO A SISTEMAS DE GESTIN

ELEMENTOS DEL LENGUAJE COBOL

LENGUAJE COBOL
Cobol, es un lenguaje de alto nivel (3 generacin) de tipo imperativo y orientado a resolver problemas de gestin. COBOL significa:

Common Business Oriented 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:

Lenguaje

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

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


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


Constantes

Literales numricos

Literales de coma fija Literales de coma flotante.


[ +/- ] mantisa E [ +/- ] exponente

Literales no numricos. Constantes figurativas.

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


Operadores.

Operador + * / ** = ()

Los operadores son smbolos que indican cmo son manipulados los datos
Significado Suma Resta Producto Divisin Exponenciacin Asignacin Dar Prioridad Ejemplo A+B A-B A*B A/B A ** B C=A+B D = (A + B)*C

Operadores Aritmticos

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


Operadores de Relacin = < > <= >= Operadores Lgicos NOT AND OR Negacin Conjuncin Disyuncin NOT ( A = B ) A = B AND A > B A = B OR A < B Igual que Menor que Mayor que Menor o igual que Mayor o igual que A=B A<B A>B A <= B A >= B

LENGUAJE COBOL

ELEMENTOS DEL LENGUAJE


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


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


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

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

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

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

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

Margen B
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
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] [ INPUT-OUTPUT SECTION. { FILE CONTROL. control de archivos.} [ I-O CONTROL. control entrada/salida.]] DATA DIVISION [ FILE SECTION.] [ WORKING-STORAGE SECTION.] PROCEDURE DIVISION. nombre-de-prrafo. {Sentencia}...}... nombre-de-prrafo. {Sentencia}...}...

LENGUAJE COBOL

22

11

LENGUAJE ORIENTADO A SISTEMAS DE GESTIN

ESTRUCTURA DE UN PROGRAMA EN COBOL

DIVISIONES, SECCIONES Y PRRAFOS

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

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

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

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

Margen B
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
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] [ INPUT-OUTPUT SECTION. { FILE CONTROL. control de archivos.} [ I-O CONTROL. control entrada/salida.]] DATA DIVISION [ FILE SECTION.] [ WORKING-STORAGE SECTION.] PROCEDURE DIVISION. nombre-de-prrafo. {Sentencia}...}... nombre-de-prrafo. {Sentencia}...}...

LENGUAJE COBOL

34

17

LENGUAJE ORIENTADO A SISTEMAS DE GESTIN

LOS DATOS

DATA DIVISION

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
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 9 V S

Descripcin Cualquier dgito del 0 al 9 Posicin Decimal Signo

Ejemplos 1. PIC 99999 2. PIC 9(5) 1. PIC 99v99 2. PIC 9(2)v99 1. PIC S999 2. PIC S99v99
LENGUAJE COBOL 39

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

LENGUAJE COBOL

40

20

CLUSULA PICTURE
Carcter A X Descripcin Cualquier carcter letra Cualquier carcter Ejemplos 1. 2. 1. 2. PIC AAAAA PIC A(5) PIC XXXXX PIC X(5)

Descripcin 77 VALOR PIC XXXXX 77 VALOR PIC X(5) 77 VALOR PIC X(5) 77 VALOR PIC X(8)

Ejemplo BUENO BUEN BUENOS D. GIL

Representado en el Almacenamiento como B B B D . U U U G E E E I L N N N O O

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

* Z +

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

CR

DB

0 B

LENGUAJE COBOL

43

CLUSULA PICTURE
PICTURE 9(4)V99 9(4)V99 9(3)V999 9V99 99 9999V99 CONTENIDO 654321 054321 000546 567 54 500000 PICTURE EDICIN 9(4).99 9(4).99 999.99 99V.99 99.99 999.99 Resultado Editado 6543.21 0543.21 000.54
NO VALIDO

54.00 000.00

LENGUAJE COBOL

44

22

CLUSULA PICTURE
PICTURE 9999 999V 9(3)V99 999V99 9(4)V99 999V99 CONTENIDO 0704 103 00103 00000 001234 00001 PICTURE Resultado EDICIN Editado ZZZ9 ZZZ.99 ZZZ.99 Z(3).ZZ Z(4).ZZ ZZZ.ZZ b704 103.00 bb1.03 blancos bb12.34 bbb.01

LENGUAJE COBOL

45

CLUSULA PICTURE
PICTURE 9(6) 9(6) 9(6) 9(5)V99 CONTENIDO 012345 000012 000123 0012345 PICTURE EDICIN ***999 ***999 ***999 *****.99 Resultado Editado *12345 ***012 ***123 **123.45

LENGUAJE COBOL

46

23

CLUSULA PICTURE
PICTURE CONTENIDO PICTURE EDICIN 9,999,999 9,990,000.99 9B00B990 9,009,990 9BB99 90099 Resultado Editado 1,234,567 1,230,000.45 1b00b230 1,002,340 1bb23 10023

9(7) 9(3)V99 999 9(4) 999 999

1234567 12345 123 1234 123 123

LENGUAJE COBOL

47

CLUSULA PICTURE
PICTURE CONTENIDO PICTURE EDICIN $9999 $Z999 $*999 $*****.99 $**,***.99 Resultado Editado $0123 $b123 $*123 $**123.45 $*1,234.56

9(4) 9(4) 9(4) 9(5)V99 9(5)V99

0123 0123 0123 0012345 0123456

LENGUAJE COBOL

48

24

CLUSULA PICTURE
PICTURE S999 S999 S999 S9(3)V99 S999V99 S9(3)V99 S9(3)V99 S9(3)V99 CONTENIDO -123 +628 +456 -12345 -18200 +15768 -65125 +57950 PICTURE EDICIN +999 -999 999+ 999.99DB $999.99CR 999.99DB +$999.99 +$999.99 Resultado Editado -123 628 456+ 123.45DB $182.00CR 157.68bb -$651.25 +$579.50

LENGUAJE COBOL

49

CLUSULA PICTURE
PICTURE CONTENIDO PICTURE EDICIN Resultado Editado

9(5)V99 999V99 999V99

0000440 -00555 00000

$$$$$$.99 ++++.99 ++++.++

$4.40 -5.55 blancos

9(5)V99

0475682

$$$,$$$.99

$4,756.82

LENGUAJE COBOL

50

25

CLUSULA PICTURE

PICTURE X(6) AAAA X(5)

CONTENIDO CN1005 HOLA CASO3

PICTURE EDICIN XXBBX(4) ABABABA XXXXBX000

Resultado Editado CN 1005

H 0 L A CASO 3000

LENGUAJE COBOL

51

CLUSULA VALUE
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
VALUE Listado Empleados. VALUE 10. VALUE 0.03. VALUE ZEROS. VALUE SPACES. VALUE --------- . VALUE ALL -. VALUE ZEROS. VALUE 0.
52

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

LENGUAJE COBOL

26

JUSTIFIED RIGHT
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.

LENGUAJE COBOL

53

CAMPOS COMPUESTOS
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 DATOS-DIRECCIN FECHA-ALTA

NUM-VEN

NOMBRE

APELLIDO1

APELLIDO2

PROVINCIA

CALLE

NCALLE

DIA

MES

AO

LENGUAJE COBOL

54

27

CAMPOS COMPUESTOS
NUMERO DE NIVEL

01

VENDEDOR. 02 02 NUMERO DATOS-VENDEDOR. 03 03 03 02 NOMBRE APELLIDO1 APELLIDO2 PIC 999.

ESPECIFICACIN DE FORMATO

PIC PIC PIC

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

DATOS-DIRECCION. 03 PROVINCIA 03 CALLE 03 NCALLE FECHA-ALTA. 03 DA 03 MES 03 ANIO

PIC PIC PIC

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

02

NOMBRE DE DATO

PIC PIC PIC

99. 99. 99.

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.

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

LENGUAJE COBOL

57

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


LENGUAJE COBOL 61

RENAMES
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]
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 X(9). PIC X(10). PIC XX. PIC X(15). PIC 9(8)V99. PIC 9(8)V99. PIC 9(6)V99. PIC 9(4)V99.

01 REG-IMPUESTO. 02 02

02

66

ULTIMO-PAGO RENAMES APELLIDO THRU PAGO-NETO.


NOMBRE-COMPLETO TOTAL-A-LA-FECHA

NO-SEG-SOCIAL

NOMBRE

INICIAL

APELLIDO

PAGO-BRUTO

PAGO-NETO

IMPUESTOTRIBUT ADO

IMPUESTOESTADO

LENGUAJE COBOL

62

31

TABLAS
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 ETADO. S 02 INGRESOS- P ROMEDIOS OCCURS 50 TIMES PIC 9(6)V99. INGRESOS- P ROMEDIOS (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) INGRESOS-PROMEDIOS (50) PROMEDIO-NACIONAL

PROMEDIO-NACIONAL

LENGUAJE COBOL

65

TABLAS
01TABLA INGRESOS ETADO. S 02 NOMBRE I GRESO OCCURS 50 TIMES. - N 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) INGRESO (50)

LENGUAJE COBOL

66

33

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

LENGUAJE COBOL

67

TABLAS
Inicializacin de una tabla en tiempo de compilacin.
nombre-de-dato-1 REDEFINES nombre-de-dato-2
01 FECHA. 02 DA PIC 99. 02 MES PIC 99. 02 AO PIC 99. FECHA-ACTUAL REDEFINES

01

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

PICTURE S99V9 9V9 99V9 S99V SV999

LENGUAJE COBOL

73

SUMA. OPCIONES
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 77 IDA PIC 9(3) 77 IDB PIC 999 77 IDC PIC S99 ANTES 010 020 -10 ANTES 030 010 +05 -15 DESPUS 010 020 +20 DESPUS 030 010 +15 -005

ADD IDA IDB -30 TO IDD IDC 77 77 77 77 IDA IDB IDC IDD PIC 9(3) PIC 999 PIC S9(2) PIC S999

LENGUAJE COBOL

75

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

ADD -15 IDA IDB GIVING IDC 77 IDA PIC S9(2) 77 IDB PIC S9(3) 77 IDC PIC S9(4)

ANTES -10 +020 +0030

DESPUS -10 +020 +0005

LENGUAJE COBOL

76

38

SUMA. EJEMPLOS
ADD IDA IDB GIVING IDC 77 IDA PIC 9(5) 77 IDB PIC 9(4) 77 IDC PIC 99 ANTES 21987 4593 52 DESPUS 21987 4593 ---80 Se han perdido dgitos (26580) DESPUS 000005 000-- se han perdido dgitos (0.0008)

ADD 0.0003 IDA GIVING IDC 77 IDA PIC 9V9(5) 77 IDC PIC 9V99

ANTES 000005 038

LENGUAJE COBOL

77

RESTA
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 77 IDA PIC 99 77 IDB PIC 999 SUBTRACT IDA 4 IDB FROM IDC IDD 77 77 77 77 IDA IDB IDC IDD PIC 99 PIC 999 PIC 99 PIC 99 ANTES 10 042 ANTES DESPUS 10 032 DESPUS

10 027 52 47
LENGUAJE COBOL

10 027 11 06
79

RESTA. EJEMPLOS
SUBTRACT CANTIDAD-1, CANTIDAD-2, CANTIDAD-FROM CANTIDAD-4 GIVING CANTIDAD-5, CANTIDAD-6 ROUNDED ON SIZE ERROR PERFORM DESBORDAMIENTO. 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 77 IDA PIC 99 77 IDB PIC 999 77 IDC PIC 99 ANTES 10 032 41 DESPUS 10 032 22 DESPUS 072000 122000 020000 030000
81

SUBTRACT IDD IDC FROM IDB ANTES GIVING IDA 77 77 77 77 IDA IDB IDC IDD PIC 9(6) PIC 9(6) PIC 9(6) PIC 9(6) 000123 122000 020000 030000
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 77 IDA PIC 9(5) 77 IDB PIC 99 MULTIPLY 0.5 BY IDA 77 IDA PIC 9(5)

ANTES 01000 25 ANTES 25000

DESPUS 25000 25 DESPUS 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 77 IDA PIC 9(5) 77 IDB PIC 9(5)

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

LENGUAJE COBOL

85

DIVISIN. EJEMPLOS
DIVIDE IDB INTO IDA 77 IDA PIC 9(5) 77 IDB PIC 99 DIVIDE IDA BY 365 GIVING IDB 77 IDA PIC 9(5) 77 IDB PIC 9999 ANTES 50000 50 ANTES 36500 DESPUS 01000 50 DESPUS 36500 1000 DESPUS 36500 1000

DIVIDE 365 INTO IDA GIVING IDB ANTES 77 IDA PIC 9(5) 77 IDB PIC 9999 36500

LENGUAJE COBOL

86

43

DIVISIN. EJEMPLOS
DIVIDE DIVIDENDO BY DIVISOR GIVING COCIENTE REMAINDER RESTO 77 77 77 77 DIVIDENDO DIVISOR RESTO COCIENTE PIC 999 PIC 99 PIC 99V99 PIC 99 ANTES DESPUS

100 03 55

100 03 0100 (01.00) 33

LENGUAJE COBOL

87

COMPUTE
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 Suma Resta Producto Cociente Exponenciacin MAYOR PRIORIDAD MENOR

LENGUAJE COBOL

89

COMPUTE
COMPUTE A = B ** C. No tiene sentencia equivalente. 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

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.

LENGUAJE COBOL

90

45

LENGUAJE ORIENTADO A SISTEMAS DE GESTIN

VERBOS ENTRADA SALIDA

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

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
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 Alfanumrico Alfanumrico editado Numrico Entero Numrico No Entero Numrico Editado

SI SI SI NO NO NO

SI SI SI SI NO SI

NO NO NO SI SI SI

LENGUAJE COBOL

103

TIPOS DE MOVIMIENTOS
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


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 77 EMISOR PIC 99V99 77 RECEPTOR PIC 999V99 MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 9V9 77 RECEPTOR PIC 999V999 MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 999V99 77 RECEPTOR PIC 999.99. MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 9(4)V9 77 RECEPTOR PIC 99V999 ANTES 1234 98765 ANTES 11 (1.1) 123123 (123.123) ANTES 12312 (123.12) 321.98 ANTES 12345 (1234.5) 98765 (98.765) (12.34) (987.65) DESPUS 1234 01234 DESPUS 11 (1.1) 001100 (001.100) DESPUS 12312 (123.12) 123.12 DESPUES 12345 (1234.5) 34500 (34.500) (12.34) (012.34)

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.

LENGUAJE COBOL

109

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

01

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

CIERTO

F-PROGRAMA

SENTENCIA 1 SENTENCIA 2

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

. . CIERTO. sentencia-1 sentencia-2

LENGUAJE COBOL

117

VERBO IF
PROGRAMA

CONDICIN

P-PROGRAMA

CIERTO

FALSO

F-PROGRAMA

SENTENCIA 1 SENTENCIA 2

SENTENCIA 3 SENTENCIA 4

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

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


LENGUAJE COBOL 118

59

CONDICIONES. TIPOS
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 identificador-2 literal-2 exp-artimtica-2

IS operador

LENGUAJE COBOL

119

CONDICIONES. TIPOS
Operador GREATER THAN LESS THAN EQUAL TO NOT GREATER THAN NOT LESS THAN NOT EQUAL TO Smbolo > < = NOT > NOT < NOT = Significado Mayor que Menor que Igual a No mayor que No menor que No igual a

LENGUAJE COBOL

120

60

CONDICIONES. TIPOS
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

LENGUAJE COBOL

121

CONDICIONES. TIPOS
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]

POSITIVE NEGATIVE ZERO

LENGUAJE COBOL

122

61

CONDICIONES. TIPOS
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
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
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
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

= V3

P-PROGRAMA

PRRAFO-1

PRRAFO-2

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.

LENGUAJE COBOL

127

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

AADIR
CDIGO = 2

F-VALOR-CDIGO

BORRAR

FALSO

CODIGO = 3

MODIFICAR

ERROR

LENGUAJE COBOL

128

64

VERBO EVALUATE
VALOR-CDIGO

CDOGO = 1 =2 =3

OTRO

P-VALOR-CDIGO

AADIR

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.

LENGUAJE COBOL

129

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 AADIR SUPRIMIR MODIFICAR CODIGO-ERRONEO

LENGUAJE COBOL

130

65

VERBO EVALUATE
CONDICIN CDIGO 1o2 3 4 cualquier otro CALIFICACIN A, B o C AoB cualquiera cualquiera ACCIN A REALIZAR 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

LENGUAJE COBOL

133

VERBO PERFORM
PERFORM prrafo [WITH TEST BEFORE] UNTIL condicin

PROGRAMA

P-PROGRAMA

PRRAFO
CONDICIN

F-PROGRAMA

LENGUAJE COBOL

134

67

VERBO PERFORM
PERFORM prrafo WITH TEST AFTER UNTIL condicin

PROGRAMA

P-PROGRAMA

PRRAFO
CONDICIN (DESPUS)

F-PROGRAMA

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

LENGUAJE COBOL

137

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

PRRAFO
CONDICIN

F-PROGRAMA

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

c)

Se evala la condicin-2.
1.

2.

d) e)

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

PRRAFO
CONDICIN 1 CONDICIN 2

F-PROGRAMA

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