cobol

71
1 LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ELEMENTOS DEL LENGUAJE COBOL LENGUAJE COBOL 2 LENGUAJE COBOL Cobol, es un lenguaje de alto nivel (3ª generación) de tipo imperativo y orientado a resolver problemas de gestión. COBOL significa: Co mmon B usiness O riented Lenguaje Fue creado en 1.960, por la comisión CODASYL (Conference on Data System Lenguaje), formada por fabricantes, usuarios y gobierno USA, esta comisión además han dado normas sobre Bases de Datos, Comunicaciones, etc.. Existen numerosas versiones, las mas importantes son, las del 60, 65, 74 y 85; siendo los compiladores más utilizados los de: MICROFOCUS MICROSOFT RM/COBOL (McFarland) COBOL2 (IBM)

Upload: carlos-fernandez-fernandez

Post on 29-Oct-2014

49 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Cobol

1

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

ELEMENTOS DEL LENGUAJE COBOL

LENGUAJE COBOL 2

LENGUAJE COBOLCobol, es un lenguaje de alto nivel (3ª generación) de tipo imperativo y orientado a resolver problemas de gestión.COBOL significa:• Common• Business• Oriented

Lenguaje• Fue creado en 1.960, por la comisión CODASYL (Conference on Data System

Lenguaje), formada por fabricantes, usuarios y gobierno USA, esta comisión además han dado normas sobre Bases de Datos, Comunicaciones, etc..

• Existen numerosas versiones, las mas importantes son, las del 60, 65, 74 y 85; siendo los compiladores más utilizados los de:

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

Page 2: Cobol

2

LENGUAJE COBOL 3

ELEMENTOS DEL LENGUAJE

Caracteres de Cobol• Caracteres numéricos. 0/9.• Caracteres alfabéticos. A/Z.• Caracteres especiales. $, blanco, +, .........

• Caracteres empleados en puntuación • { $, (, ), ,, ; }

• Caracteres aritméticos. • { +, -, *, **, /, =, (, ) }

• Caracteres empleados en declaraciones condicionales.

• { <, >, = }

LENGUAJE COBOL 4

ELEMENTOS DEL LENGUAJEConstantes• Literales numéricos

• Literales de coma fija• Literales de coma flotante.

[ +/- ] mantisa E [ +/- ] exponente• Literales no numéricos. • Constantes figurativas.

• ZERO.• SPACE.• ALL ‘carácter’.• HIGH-VALUE .• LOW-VALUE.

Page 3: Cobol

3

LENGUAJE COBOL 5

ELEMENTOS DEL LENGUAJEPalabras Reservadas.• Identificadores predefinidos que tienen un significado especial en

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

REWRITEIdentificadores• Son los nombres creados por el programador.• Se forman por la combinación de los tres grupos de caracteres

siguientes: dígitos (0/9), letras (A/Z) y el guión (-).• Estan compuesto por una combinación de 30 caracteres como

máximo.• No pueden comenzar ni finalizar con un guión.• Deberán comenzar por un carácter alfabético, excepto los

nombres de párrafos.• No pueden tener el mismo nombre que una palabra reservada.

LENGUAJE COBOL 6

ELEMENTOS DEL LENGUAJEOperadores.• Los operadores son símbolos que indican cómo son

manipulados los datos

D = (A + B)*CDar Prioridad( )

C = A + BAsignación=

A ** BExponenciación**

A / BDivisión/

A * BProducto*

A - BResta-

A + BSuma+

EjemploSignificadoOperador

Operadores Aritméticos

Page 4: Cobol

4

LENGUAJE COBOL 7

ELEMENTOS DEL LENGUAJE

A = B OR A < BDisyunciónOR

A = B AND A > BConjunciónAND

NOT ( A = B )NegaciónNOT

Operadores Lógicos

A >= BMayor o igual que>=

A <= BMenor o igual que<=

A > BMayor que>

A < BMenor que<

A = BIgual que=

Operadores de Relación

LENGUAJE COBOL 8

ELEMENTOS DEL LENGUAJEExpresiones Aritméticas.• Una expresión aritmética puede ser una constante,

una variable o un conjunto de constantes y variables unidas por operadores aritméticos.

• El punto, punto y coma o coma no pueden ir precedidos por un espacio, pero si tienen que ir seguidos por un espacio.

• Un paréntesis izquierdo no puede ir seguido por un espacio, un paréntesis derecho no puede ir precedido por un espacio.

• Un operador aritmético o un signo igual tiene que ir precedido por un espacio y seguido por un espacio.

Page 5: Cobol

5

LENGUAJE COBOL 9

ELEMENTOS DEL LENGUAJE

Expresiones Aritméticas.• A la hora de evaluar una expresión

• Primero se evalúan las operaciones entre paréntesis, del más interno al más externo.

• Después se evalúan los operadores con la prioridad siguiente:

• + y - unarios• **• *, /• +,-

LENGUAJE COBOL 10

ELEMENTOS DEL LENGUAJE

Expresiones de Boole.• Una expresión de Boole da como resultado

un valor VERDADERO o FALSO.• Los operadores que intervienen en una

expresión de Boole pueden ser: operadores de relación y operadores lógicos.

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

Page 6: Cobol

6

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

ESTRUCTURA DE UN PROGRAMA EN COBOL

LENGUAJE COBOL 12

DIVISIONES, SECCIONES Y PÁRRAFOS

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

Page 7: Cobol

7

LENGUAJE COBOL 13

DIVISIONES, SECCIONES Y PÁRRAFOS

IDENTIFICATION DIVISION. divisiónPROGRAM-ID. EJEMPLO.AUTHOR. EUI. párrafoDATE-WRITTEN. 01-ENERO-93.DATE-COMPILED. 01-ENERO-93.

ENVIRONMENT DIVISION.CONFIGURATION SECTION. sección

SOURCE-COMPUTER. IBM PERSONAL COMPUTER.OBJECT-COMPUTER. IBM PERSONAL COMPUTER.SPECIAL-NAMES. párrafo

DECIMAL-POINT IS COMMA. cláusulaINPUT-OUTPUT SECTION. secciónFILE-CONTROL. párrafo

SELECT IMPRESORA ASSING TO PRINTER.cláusulas

LENGUAJE COBOL 14

DIVISIONES EN COBOLIDENTIFICATION DIVISION

• PROPÓSITO: Identificar el programa de forma que se distinga de los otros, además de proporcionar el nombre del autor, cuando se escribió etc.

• PÁRRAFOS• PROGRAM-ID.• AUTHOR.• INSTALLATION.• DATE-WRITTEN.• DATE-COMPILED.• SECURITY.• REMARKS.

Page 8: Cobol

8

LENGUAJE COBOL 15

DIVISIONES EN COBOL

ENVIRONMENT DIVISION• PROPÓSITO: En esta división se describe el

entorno físico en el cual se va a desarrollar el programa. Entendiéndose por entorno, la clase de sistema que se va a utilizar así como los dispositivos de entrada/salida.

• SECCIONES• CONFIGURATION SECTION.• INPUT-OUPUT SECTION.

LENGUAJE COBOL 16

DIVISIONES EN COBOLCONFIGURATION SECTION.

• PROPÓSITO: Tiene como finalidad describir las características del computador usado para compilar y ejecutar el programa, todo ello a nivel de comentarios

• PÁRRAFOS• SOURCE-COMPUTER. Modelo de ordenador.• OBJECT-COMPUTER. Modelo de ordenador.• SPECIAL-NAMES.

• [[Nombre de función IS nombre nemotécnico]• [CURRENCY SIGN IS literal]• [DECIMAL-POINT IS COMMA].]

INPUT-OUTPUT SECTION.• PROPÓSITO: Declarar los ficheros utilizados y la asignación a los

dispositivos de E/S.• PÁRRAFOS

• FILE-CONTROL

Page 9: Cobol

9

LENGUAJE COBOL 17

DIVISIONES EN COBOLNombre de función es un nombre reconocido por el compilador y nombre nemotécnico es un nombre creado por el programador. De esta forma podemos poner:

• CONSOLE IS CONSOLA• SYSOUT IS ARCHI-PANTALLALa función de CURRENCY SING es indicar que el sistema tiene que utilizar un carácter monetario distinto del que tiene por defecto ($). El carácter sustituto de éste, tiene que ser uno solo y alfabético. La función del DECIMAL-POINT IS COMMA es indicar que el sistema tiene que sustituir la notación anglosajona por la castellana en la función del punto decimal y la coma, en los campos de edición.

LENGUAJE COBOL 18

DIVISIONES EN COBOLDATA DIVISION

• PROPÓSITO: En este apartado se definen los datos que van a ser utilizados, tales como ficheros, los registros de cada fichero etc. Cualquier dato utilizado en la codificación del programa debe estar definido en esta división.

• PÁRRAFOS• WORKING-STORAGE SECTION.• FILE SECTION.

PROCEDURE DIVISION• PROPÓSITO: Es en esta división donde se codifica el

algoritmo propiamente dicho, esto es, donde se especifican las instrucciones adecuadas para resolver el problema.

Page 10: Cobol

10

LENGUAJE COBOL 19

HOJA DE CODIFICACIÓN

73 A 8012 A 728 A 117123456Se utilizaban para indicar los números de secuencia, permitiendo ordenar fácilmente el programa

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

MARGEN BMARGEN ASon opcionales, se utilizan normalmente para escribir comentarios que identifican el programa.

LENGUAJE COBOL 20

HOJA DE CODIFICACIÓNMargen A

• Cabeceras de división: IDENTIFICATION DIVISION...• Cabeceras de sección : CONFIGURATION SECTION...• Cabeceras de párrafos: PROGRAM-ID...• Nombre de procedimientos: ABRIR-FICHEROS...• Descripciones de nivel FD: FD IMPRESO..• Los números de nivel 01 y 77Margen B

• Todo aquello que no esté en los apartados anteriores.Casi todas estas reglas son innecesarias hoy en día, con la simple elección de un editor adecuado y un estilo de programación racional y estructurado.

Page 11: Cobol

11

LENGUAJE COBOL 21

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

LENGUAJE COBOL 22

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-párrafo.

{Sentencia}...}...nombre-de-párrafo.

{Sentencia}...}...

Page 12: Cobol

12

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

ESTRUCTURA DE UN PROGRAMA EN COBOL

LENGUAJE COBOL 24

DIVISIONES, SECCIONES Y PÁRRAFOS

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

Page 13: Cobol

13

LENGUAJE COBOL 25

DIVISIONES, SECCIONES Y PÁRRAFOS

IDENTIFICATION DIVISION. divisiónPROGRAM-ID. EJEMPLO.AUTHOR. EUI. párrafoDATE-WRITTEN. 01-ENERO-93.DATE-COMPILED. 01-ENERO-93.

ENVIRONMENT DIVISION.CONFIGURATION SECTION. sección

SOURCE-COMPUTER. IBM PERSONAL COMPUTER.OBJECT-COMPUTER. IBM PERSONAL COMPUTER.SPECIAL-NAMES. párrafo

DECIMAL-POINT IS COMMA. cláusulaINPUT-OUTPUT SECTION. secciónFILE-CONTROL. párrafo

SELECT IMPRESORA ASSING TO PRINTER.cláusulas

LENGUAJE COBOL 26

DIVISIONES EN COBOLIDENTIFICATION DIVISION

• PROPÓSITO: Identificar el programa de forma que se distinga de los otros, además de proporcionar el nombre del autor, cuando se escribió etc.

• PÁRRAFOS• PROGRAM-ID.• AUTHOR.• INSTALLATION.• DATE-WRITTEN.• DATE-COMPILED.• SECURITY.• REMARKS.

Page 14: Cobol

14

LENGUAJE COBOL 27

DIVISIONES EN COBOL

ENVIRONMENT DIVISION• PROPÓSITO: En esta división se describe el

entorno físico en el cual se va a desarrollar el programa. Entendiéndose por entorno, la clase de sistema que se va a utilizar así como los dispositivos de entrada/salida.

• SECCIONES• CONFIGURATION SECTION.• INPUT-OUPUT SECTION.

LENGUAJE COBOL 28

DIVISIONES EN COBOLCONFIGURATION SECTION.

• PROPÓSITO: Tiene como finalidad describir las características del computador usado para compilar y ejecutar el programa, todo ello a nivel de comentarios

• PÁRRAFOS• SOURCE-COMPUTER. Modelo de ordenador.• OBJECT-COMPUTER. Modelo de ordenador.• SPECIAL-NAMES.

• [[Nombre de función IS nombre nemotécnico]• [CURRENCY SIGN IS literal]• [DECIMAL-POINT IS COMMA].]

INPUT-OUTPUT SECTION.• PROPÓSITO: Declarar los ficheros utilizados y la asignación a los

dispositivos de E/S.• PÁRRAFOS

• FILE-CONTROL

Page 15: Cobol

15

LENGUAJE COBOL 29

DIVISIONES EN COBOLNombre de función es un nombre reconocido por el compilador y nombre nemotécnico es un nombre creado por el programador. De esta forma podemos poner:

• CONSOLE IS CONSOLA• SYSOUT IS ARCHI-PANTALLALa función de CURRENCY SING es indicar que el sistema tiene que utilizar un carácter monetario distinto del que tiene por defecto ($). El carácter sustituto de éste, tiene que ser uno solo y alfabético. La función del DECIMAL-POINT IS COMMA es indicar que el sistema tiene que sustituir la notación anglosajona por la castellana en la función del punto decimal y la coma, en los campos de edición.

LENGUAJE COBOL 30

DIVISIONES EN COBOLDATA DIVISION

• PROPÓSITO: En este apartado se definen los datos que van a ser utilizados, tales como ficheros, los registros de cada fichero etc. Cualquier dato utilizado en la codificación del programa debe estar definido en esta división.

• PÁRRAFOS• WORKING-STORAGE SECTION.• FILE SECTION.

PROCEDURE DIVISION• PROPÓSITO: Es en esta división donde se codifica el

algoritmo propiamente dicho, esto es, donde se especifican las instrucciones adecuadas para resolver el problema.

Page 16: Cobol

16

LENGUAJE COBOL 31

HOJA DE CODIFICACIÓN

73 A 8012 A 728 A 117123456Se utilizaban para indicar los números de secuencia, permitiendo ordenar fácilmente el programa

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

MARGEN BMARGEN ASon opcionales, se utilizan normalmente para escribir comentarios que identifican el programa.

LENGUAJE COBOL 32

HOJA DE CODIFICACIÓNMargen A

• Cabeceras de división: IDENTIFICATION DIVISION...• Cabeceras de sección : CONFIGURATION SECTION...• Cabeceras de párrafos: PROGRAM-ID...• Nombre de procedimientos: ABRIR-FICHEROS...• Descripciones de nivel FD: FD IMPRESO..• Los números de nivel 01 y 77Margen B

• Todo aquello que no esté en los apartados anteriores.Casi todas estas reglas son innecesarias hoy en día, con la simple elección de un editor adecuado y un estilo de programación racional y estructurado.

Page 17: Cobol

17

LENGUAJE COBOL 33

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

LENGUAJE COBOL 34

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-párrafo.

{Sentencia}...}...nombre-de-párrafo.

{Sentencia}...}...

Page 18: Cobol

18

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

LOS DATOS

LENGUAJE COBOL 36

DATA DIVISIONFUNCIÓN

• Se describen los datos que van a ser usados, creados, o producidos por el programa.

• Se describe la estructura de los ficheros que se van a utilizar, así como las variables utilizadas en el programa y que no son parte de los ficheros.

FORMATODATA DIVISION.[FILE SECTION.{ Entrada de descripción de ficheros....}{ Entrada de descripción de registros...}][WORKING-STORAGE SECTION.[ Entrada de descripción de variables o registros ]]

Page 19: Cobol

19

LENGUAJE COBOL 37

TIPOS DE DATOS

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

LENGUAJE COBOL 38

CAMPOS INDEPENDIENTESEs un campo de trabajo que será definido en la sección de “working”. No forman parte de la descripción de los ficheros.Formato mínimo para su definición:

número-de-nivel nombre-de-datoPICTURE especificación de formato.

Donde:• Número-de-nivel. Se utiliza el nivel 77.• Nombre-de-datos. Un nombre de datos sirve para nombrar un campo

con el fin de poder referenciar en el programa, el contenido delmismo.

• PICTURE. Determina la información que puede almacenarse en el campo, así como las operaciones que con él pueden realizarse. Permite definir el tipo y el tamaño del campo.

Page 20: Cobol

20

LENGUAJE COBOL 39

CLÁUSULA PICTURE

PICTURE/PIC IS especificación de formato.

1. PIC S9992. PIC S99v99

SignoS

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

Posición DecimalV

1. PIC 99999 2. PIC 9(5)

Cualquier dígito del 0 al 9

9

EjemplosDescripción Carácter

LENGUAJE COBOL 40

CLÁUSULA PICTURE

0325^18-325.1877 CANT S9(4)V99

0000^10-0.1077 CANT S9(4)V99

1251^16-1251.1677 CANT S9(3)V99

156^29156.2977 CANT PIC S999V99

23561^0023561.0077 CANT 99999V99

55055077 CANT PIC 999

0452^39452.3977 CANT PIC 9(4)V99

38^538.5077 CANT PIC 99V9

028528577 CANT PIC 9999

0001234567123456777 CANT PIC 9(10)

8956895677 CANT PIC 9999

0122341223477 CANT PIC 9(6)

Representación INTERNAValor NuméricoDescripción

Page 21: Cobol

21

LENGUAJE COBOL 41

CLÁUSULA PICTURE

1. PIC XXXXX2. PIC X(5)

Cualquier carácterX

1. PIC AAAAA2. PIC A(5)

Cualquier carácter letraA

EjemplosDescripciónCarácter

LIG.DD. GIL77 VALOR PIC X(8)

ONEUBBUENOS77 VALOR PIC X(5)

NEUBBUEN77 VALOR PIC X(5)

ONEUBBUENO77 VALOR PIC XXXXX

Representado en el Almacenamiento como

EjemploDescripción

LENGUAJE COBOL 42

CLÁUSULA PICTURE

Se inserta en el extremo izquierdo o derecho. Representa la aparición del signo. Si el número es positivo apareceráun + y si es negativo aparecerá un -.

+

Sirve para reemplazar los ceros no significativos por blancos

Z

Sirve para reemplazar los ceros no significativos (a la izquierda) por asteriscos

*

Indica la posición de la coma como carácter de separación de millares. La utilización de la cláusula DECIMAL POINT IS COMMA en la SPECIAL-NAMES de la ENVIRONMENT DIVISIONinvierte el uso de los puntos y coma.

,

Indica la posición del punto decimal.

Se escribe el signo $ en el lugar correcto en que debe aparecer en la salida

$

DescripciónCarácter

Page 22: Cobol

22

LENGUAJE COBOL 43

CLÁUSULA PICTURE

Se usan para insertar blancos en las posiciones en que deben aparecer

B

Se usan para insertar ceros en las posiciones en que deben aparecer

0

Representa la aparición del signo bancario DB de débito. Cuando el valor es positivo aparecerán blancos, si el valor es negativo aparece los caracteres DB.

DB

Representa la aparición del signo bancario CR de crédito. Cuando el valor es positivo aparecerán blancos, si el valor es negativo aparece los caracteres CR.

CR

Se inserta en el extremo izquierdo o derecho. Representa la aparición del signo. Si el número es positivo apareceráun blanco y si es negativo aparecerá un -.

-

DescripciónCarácter

LENGUAJE COBOL 44

CLÁUSULA PICTURE

000.00999.995000009999V99

54.0099.995499

NO VALIDO99V.995679V99

000.54999.990005469(3)V999

0543.219(4).990543219(4)V99

6543.219(4).996543219(4)V99

Resultado Editado

PICTURE EDICIÓN

CONTENIDOPICTURE

Page 23: Cobol

23

LENGUAJE COBOL 45

CLÁUSULA PICTURE

bbb.01ZZZ.ZZ00001999V99

bb12.34Z(4).ZZ0012349(4)V99

blancosZ(3).ZZ00000999V99

bb1.03ZZZ.99001039(3)V99

103.00ZZZ.99103999V

b704ZZZ907049999

Resultado Editado

PICTURE EDICIÓN

CONTENIDOPICTURE

LENGUAJE COBOL 46

CLÁUSULA PICTURE

**123.45*****.9900123459(5)V99

***123***9990001239(6)

***012***9990000129(6)

*12345***9990123459(6)

Resultado Editado

PICTURE EDICIÓN

CONTENIDOPICTURE

Page 24: Cobol

24

LENGUAJE COBOL 47

CLÁUSULA PICTURE

1002390099123999

1bb239BB99123999

1,002,3409,009,99012349(4)

1b00b2309B00B990123999

1,230,000.459,990,000.99123459(3)V99

1,234,5679,999,99912345679(7)

Resultado Editado

PICTURE EDICIÓN

CONTENIDOPICTURE

LENGUAJE COBOL 48

CLÁUSULA PICTURE

$*1,234.56$**,***.9901234569(5)V99

$**123.45$*****.9900123459(5)V99

$*123$*99901239(4)

$b123$Z99901239(4)

$0123$999901239(4)

Resultado Editado

PICTURE EDICIÓN

CONTENIDOPICTURE

Page 25: Cobol

25

LENGUAJE COBOL 49

CLÁUSULA PICTURE

+$579.50+$999.99+57950S9(3)V99

-$651.25+$999.99-65125S9(3)V99

157.68bb999.99DB+15768S9(3)V99

$182.00CR$999.99CR-18200S999V99

123.45DB999.99DB-12345S9(3)V99

456+999++456S999

628-999+628S999

-123+999-123S999

Resultado Editado

PICTURE EDICIÓN

CONTENIDOPICTURE

LENGUAJE COBOL 50

CLÁUSULA PICTURE

$4,756.82$$$,$$$.9904756829(5)V99

blancos++++.++00000999V99

-5.55++++.99-00555999V99

$4.40$$$$$$.9900004409(5)V99

Resultado Editado

PICTURE EDICIÓN

CONTENIDOPICTURE

Page 26: Cobol

26

LENGUAJE COBOL 51

CLÁUSULA PICTURE

CASO 3000XXXXBX000CASO3X(5)

H 0 L AABABABAHOLAAAAA

CN 1005XXBBX(4)CN1005X(6)

Resultado Editado

PICTURE EDICIÓN

CONTENIDOPICTURE

LENGUAJE COBOL 52

CLÁUSULA VALUELa inicialización de los campos independientes se debe realizar a través de la cláusula VALUE, cuando se están definiendo.Formato

• VALUE IS literal/constante figurativa

WORKING-STORAGE SECTION.77 VARIABLE PIC X(20) VALUE “Listado Empleados”.77 VARIABLE PIC 99 VALUE 10.77 VARIABLE PIC V99 VALUE 0.03.77 VARIABLE PIC 9(8) VALUE ZEROS.77 VARIABLE PIC X(10) VALUE SPACES.77 VARIABLE PIC X(9) VALUE ‘---------’ .77 VARIABLE PIC X(9) VALUE ALL ‘-’.77 CERO PIC 99999 VALUE ZEROS.77 CERO PIC 99999 VALUE 0.

Page 27: Cobol

27

LENGUAJE COBOL 53

JUSTIFIED RIGHT

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

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

BA

LENGUAJE COBOL 54

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

AÑOMESDIANCALLECALLEPROVINCIAAPELLIDO2APELLIDO1NOMBRENUM-VEN

FECHA-ALTADATOS-DIRECCIÓNDATOS-VENDEDOR

Page 28: Cobol

28

LENGUAJE COBOL 55

CAMPOS COMPUESTOS

01 VENDEDOR.

02 NUMERO PIC 999. 02 DATOS-VENDEDOR.

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

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

02 FECHA-ALTA. 03 DÍA PIC 99.03 MES PIC 99.03 ANIO PIC 99.

ESPECIFICACIÓN DE FORMATO

NUMERO DE NIVEL

NOMBRE DE DATO

LENGUAJE COBOL 56

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

• [01] Sólo precede al nombre del registro.• [02 a 49] Preceden a cualquier campo grupo o elemental.

Page 29: Cobol

29

LENGUAJE COBOL 57

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

LENGUAJE COBOL 58

CAMPOS COMPUESTOSCalificación de los nombres de datos.

• En la declaración de campos compuestos, dos campos elementales pueden tener el mismo nombre de datos.

01 DATOS.02 TOTALES-SEMANALES.

03 HORAS PIC 99V99.03 DEPTO-NO PIC 9(5).

02 TOTALES-MENSUALES.03 HORAS PIC 99V99.03 MAS-INFORMACION PIC 9(5).

HORAS OF/IN TOTALES-SEMANALESHORAS OF/IN TOTALES-MENSUALES

Page 30: Cobol

30

LENGUAJE COBOL 59

CAMPOS COMPUESTOS01 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 60

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

88 nombre-de-dato VALUE IS/VALUES ARE constante-1 [THRU constante-2]

77 FINAL-FICHERO PIC XX.88 FIN-FICHERO VALUE `SI`.

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

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

Page 31: Cobol

31

LENGUAJE COBOL 61

NOMBRES DE CONDICIÓN

01 DATOS-PERSONALES.02 NUMERO-ID...02 NOMBRE......02 DIRECCION....02 EDUCACION PICTURE 99.

88 NO-BACHILLER VALUES ARE 0 THRU 11.88 BACHILLER VALUE IS 12.88 ALGO-UNIVERSIDAD VALUES ARE 13 THRU 15.88 PROFESIONAL VALUE IS 16.88 POSTGRADO VALUES ARE 17 THRU 20.88 CODIGO-ERROR VALUES ARE 21 THRU 99.

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

LENGUAJE COBOL 62

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

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

01 REG-IMPUESTO.02 NO-SEG-SOCIAL PIC X(9).02 NOMBRE-COMPLETO.

03 NOMBRE PIC X(10).03 INICIAL PIC XX.03 APELLIDO PIC X(15).

02 TOTAL-A-LA-FECHA.03 PAGO-BRUTO PIC 9(8)V99.03 PAGO-NETO PIC 9(8)V99.03 IMPUESTO-TRIBUTADO PIC 9(6)V99.03 IMPUESTO-ESTADO PIC 9(4)V99.

66 ULTIMO-PAGO RENAMES APELLIDO THRU PAGO-NETO.

IMPUESTO-ESTADO

IMPUESTO-TRIBUTADO

PAGO-NETOPAGO-BRUTOAPELLIDOINICIALNOMBRENO-SEG-SOCIAL

TOTAL-A-LA-FECHANOMBRE-COMPLETO

Page 32: Cobol

32

LENGUAJE COBOL 63

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

WORKING-STORAGE SECTION.01 Nombre-de-tabla.

02 Nombre-de-elemento OCCURS número-de-elementos TIMES PICTURE tipo-de-elemento.

LENGUAJE COBOL 64

TABLAS01TABLA- INGRESOS- ESTADO.

02 INGRESOS- PROMEDIOS OCCURS 50 TIMES PIC 9(6)V99.

INGRESOS- PROMEDIOS (Índice) donde Índice es mayor o igual que 1 y menor o igual que 50.

INGRESOS-PROMEDIO(50)INGRESOS-PROMEDIO(1)

TABLA-INGRESOS-ESTADO

Page 33: Cobol

33

LENGUAJE COBOL 65

TABLAS01 TABLA-INGRESOS-ESTADO.

02 INGRESOS-PROMEDIOS OCCURS 50 TIMES PIC 9(6)V99.02 PROMEDIO-NACIONAL PIC 9(7)V99.

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

PROMEDIO-NACIONALINGRESOS-PROMEDIOS

TABLA-INGRESOS-ESTADO

LENGUAJE COBOL 66

TABLAS01TABLA- INGRESOS- ESTADO.

02 NOMBRE- INGRESO OCCURS 50 TIMES.03 NOMBRE PIC X(4).03 INGRESO PIC 9(6)V99.

INGRESO (50)NOMBRE(50)INGRESO(1)NOMBRE(1)

NOMBRE-INGRESO (50)---NOMBRE-INGRESO (1)

TABLA-INGRESOS-ESTADO

Page 34: Cobol

34

LENGUAJE COBOL 67

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

LENGUAJE COBOL 68

TABLAS

Inicialización de una tabla en tiempo de compilación.

nombre-de-dato-1 REDEFINES nombre-de-dato-2

01 FECHA.

02 DÍA PIC 99.

02 MES PIC 99.02 AÑO PIC 99.

01 FECHA-ACTUAL REDEFINES FECHA PIC X(6).

Page 35: Cobol

35

LENGUAJE COBOL 69

TABLAS01TABLA-S.

02 FILLER PIC X(10) VALUE "LUNES".02 FILLER PIC X(10) VALUE "MARTES".02 FILLER PIC X(10) VALUE "MIÉRCOLES".02 FILLER PIC X(10) VALUE "JUEVES".02 FILLER PIC X(10) VALUE "VIERNES".02 FILLER PIC X(10) VALUE "SÁBADO".02 FILLER PIC X(10) VALUE "DOMINGO".

01TABLA-DIA-S REDEFINES TABLA-S.02 DIA-SEMANA OCCURS 7 TIMES PIC X(10).

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

VERBOS ARITMÉTICOS

Page 36: Cobol

36

LENGUAJE COBOL 71

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

LENGUAJE COBOL 72

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]

Page 37: Cobol

37

LENGUAJE COBOL 73

SUMA. OPCIONESOpción ROUNDED• Si en una suma (o cualquier otra operación) el número

de decimales del resultado es mayor que el número de ellos especificados en el campo receptor, trunca el número sobrante de dígitos por la derecha.

PICTURE RESULTADO VALOR DESPUÉS VALOR DESPUÉSCALCULADO DE TRUNCAR DE REDONDEAR

S99V9 -12.36 -12.3 12.49V9 8.432 8.4 8.4

99V9 35.6 35.6 35.6S99V 65.6 65 66

SV999 .0058 .005 .006

LENGUAJE COBOL 74

SUMA. OPCIONES

Opción ON SIZE ERROR• Si la parte entera de un cálculo no cupiera en el

campo receptor, se produciría un desbordamiento.• La utilización de esta cláusula permite al

programador especificar una serie de instrucciones que solo se ejecutarían cuando se produzca dicho desbordamiento.

ADD HORAS-SEMANA TO TOTAL -HORAS-AÑOON SIZE ERROR DISPLAY 'DESBORDAMIENTO DEL CAMPO ' ADD A B TO C ON SIZE ERROR DISPLAY 'ERROR.......'.

Page 38: Cobol

38

LENGUAJE COBOL 75

SUMA. EJEMPLOS

010020+20

010020-10

77 IDA PIC 9(3)77 IDB PIC 99977 IDC PIC S99

DESPUÉSANTESADD IDA IDB TO IDC

030010+15-005

030010+05-15

77 IDA PIC 9(3)77 IDB PIC 99977 IDC PIC S9(2)77 IDD PIC S999

DESPUÉSANTESADD IDA IDB -30 TO IDD IDC

LENGUAJE COBOL 76

SUMA. EJEMPLOS

-10+020+0010

-10+020+0030

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

DESPUÉSANTESADD IDA IDB GIVING IDC

-10+020+0005

-10+020+0030

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

DESPUÉSANTESADD -15 IDA IDB GIVING IDC

Page 39: Cobol

39

LENGUAJE COBOL 77

SUMA. EJEMPLOS

219874593---80 Se han perdidodígitos (26580)

21987459352

77 IDA PIC 9(5)77 IDB PIC 9(4)77 IDC PIC 99

DESPUÉSANTESADD IDA IDB GIVING IDC

000005000-- se han

perdidodígitos (0.0008)

000005038

77 IDA PIC 9V9(5)77 IDC PIC 9V99

DESPUÉSANTESADD 0.0003 IDA GIVING IDC

LENGUAJE COBOL 78

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

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

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

Page 40: Cobol

40

LENGUAJE COBOL 79

RESTA. EJEMPLOS

10032

10042

77 IDA PIC 9977 IDB PIC 999

DESPUÉSANTESSUBTRACT IDA FROM IDB

100271106

100275247

77 IDA PIC 9977 IDB PIC 99977 IDC PIC 9977 IDD PIC 99

DESPUÉSANTESSUBTRACT IDA 4 IDB FROM IDC IDD

LENGUAJE COBOL 80

RESTA. EJEMPLOS

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.

SUBTRACT CANTIDAD-1, CANTIDAD-2, CANTIDAD-FROMCANTIDAD-4 GIVING CANTIDAD-5, CANTIDAD-6 ROUNDEDON SIZE ERROR PERFORM DESBORDAMIENTO.

Page 41: Cobol

41

LENGUAJE COBOL 81

RESTA. EJEMPLOS

1003222

1003241

77 IDA PIC 9977 IDB PIC 99977 IDC PIC 99

DESPUÉSANTESSUBTRACT IDA FROM IDBGIVING IDC

072000122000020000030000

000123122000020000030000

77 IDA PIC 9(6)77 IDB PIC 9(6)77 IDC PIC 9(6)77 IDD PIC 9(6)

DESPUÉSANTESSUBTRACT IDD IDC FROM IDB GIVING IDA

LENGUAJE COBOL 82

MULTIPLICACIÓN

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

125002500077 IDA PIC 9(5)DESPUÉSANTESMULTIPLY 0.5 BY IDA

2500025

0100025

77 IDA PIC 9(5)77 IDB PIC 99

DESPUÉSANTESMULTIPLY IDB BY IDA

Page 42: Cobol

42

LENGUAJE COBOL 83

MULTIPLICACIÓN

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

1250006250

1250050000

77 IDA PIC 9(5)77 IDB PIC 9(5)

DESPUÉSANTESMULTIPLY IDA BY 0.5 GIVING IDB

MULTIPLY A BY B GIVING C ROUNDED, E ON SIZE ERRORPERFORM RUTINA-DESBORDAMIENTO.

LENGUAJE COBOL 84

DIVISIÓN

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

DIVIDE A INTO B, C ROUNDEDON SIZE ERROR PERFORM RUTINA-DE-DESBORDAMIENTO.

Las operaciones que se realizan son B=B/A y C=C/A, en el caso de que en algún campo receptor, no cupiera el resultado de lasoperaciones realizadas se rompería la secuencia del programa ejecutándose el párrafo RUTINA DE DESBORDAMIENTO.

Page 43: Cobol

43

LENGUAJE COBOL 85

DIVISIÓN

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

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

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

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

LENGUAJE COBOL 86

DIVISIÓN. EJEMPLOS

365001000

3650077 IDA PIC 9(5)77 IDB PIC 9999

DESPUÉSANTESDIVIDE 365 INTO IDA GIVING IDB

365001000

3650077 IDA PIC 9(5)77 IDB PIC 9999

DESPUÉSANTESDIVIDE IDA BY 365 GIVING IDB

0100050

5000050

77 IDA PIC 9(5)77 IDB PIC 99

DESPUÉSANTESDIVIDE IDB INTO IDA

Page 44: Cobol

44

LENGUAJE COBOL 87

DIVISIÓN. EJEMPLOS

100030100 (01.00)33

1000355

77 DIVIDENDO PIC 99977 DIVISOR PIC 9977 RESTO PIC 99V9977 COCIENTE PIC 99

DESPUÉSANTESDIVIDE DIVIDENDOBY DIVISORGIVING COCIENTE REMAINDER RESTO

LENGUAJE COBOL 88

COMPUTE

Esta sentencia se utiliza para realizar operaciones aritméticas sin necesidad de utilizar las declaraciones aritméticas vistas hasta ahora.

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

Page 45: Cobol

45

LENGUAJE COBOL 89

COMPUTE

MAYORExponenciación**

Cociente/

Producto*

Resta-

MENORSuma+

PRIORIDADOPERACIÓNREPRESENTADA

SÍMBOLO

LENGUAJE COBOL 90

COMPUTE

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

Page 46: Cobol

46

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

VERBOS ENTRADA SALIDA

LENGUAJE COBOL 92

INTRODUCCIÓN

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

Page 47: Cobol

47

LENGUAJE COBOL 93

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

DISPLAY ident/literal ...[UPON nombre nemónico/de función][WITH NO ADVANCING]

DISPLAY ident-1/literal-1 [LINE ident-2/entero-2][POSITION ident-3/entero-3] [opciones] ....

LENGUAJE COBOL 94

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

Page 48: Cobol

48

LENGUAJE COBOL 95

DISPLAY. OPCIONES

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

LENGUAJE COBOL 96

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

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

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

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

Page 49: Cobol

49

LENGUAJE COBOL 97

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 carácter especificado las posiciones vacías mientras se ejecuta una operación ACCEPT. Por defecto es el carácter subrayado.

LENGUAJE COBOL 98

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 cláusula implica también conversión de los datos de entrada.UNDERLINE.UPPER: Convierte la entrada a mayúsculas.

Page 50: Cobol

50

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

VERBOS TRANSFERENCIA DE

DATOS

LENGUAJE COBOL 100

GENERALIDADEScampo emisor = contiene la información a transferircampo receptor = recibe dicha información.Los datos se pueden transferir a un campo receptor de varias formas:

• El efecto de usar la opción GIVING con verbos aritméticos.

• El verbo COMPUTE por si mismo incluye una transferencia de datos al almacenar los resultados en un campo específico.

• Las opciones READ .... INTO y WRITE.... FROM incluye transferencia de información implícitas.

• La cláusula VALUE de la DATA DIVISION incluye una transferencia de información implícita, aunque sólo se ejecutará una vez al principio del programa.

Page 51: Cobol

51

LENGUAJE COBOL 101

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

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

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

LENGUAJE COBOL 102

VERBO MOVE

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

Page 52: Cobol

52

LENGUAJE COBOL 103

TIPOS DE MOVIMIENTOS

SISINONumérico Editado

SINONONumérico No Entero

SISINONumérico Entero

NOSISIAlfanumérico editado

NOSISIAlfanumérico

NOSISIAlfabético

NUM ENTERONUM NO ENTERNUM EDITADO

ALFANUMÉRICOALFANUMÉRICO EDITADO

ALFABÉTICOCAMPO EMISOR

CAMPO RECEPTOR

LENGUAJE COBOL 104

TIPOS DE MOVIMIENTOS

De un campo numérico a otro numérico de edición o no.• Los campos emisor y receptor se alinean por el

punto decimal.• Si tamaño (campo receptor) < tamaño (campo

emisor), se produce truncamiento de la parte entero y/o decimal.

• Si tamaño (campo receptor) > tamaño (campo emisor), se rellena con ceros no significativos en cualquiera de las partes.

Page 53: Cobol

53

LENGUAJE COBOL 105

TIPOS DE MOVIMIENTOS

De un campo alfabético o alfanumérico a otro de tipo alfabético o alfanumérico de edición o no.

• El contenido del campo emisor se va colocando en el campo receptor de izquierda a derecha, excepto cuando el campo receptor se ha especificado la cláusula JUSTIFIED RIGHT.

• Si tamaño (campo receptor) < tamaño(campoemisor), se produce truncamiento.

• Si tamaño (campo receptor) > tamaño(campoemisor), se rellena con blancos.

LENGUAJE COBOL 106

VERBO MOVE CORRESPONDINGLa 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 opción del verbo MOVE se transfiere el contenido de los campos elementales de identificador-1 a los campos elementales de igual nombre de identificador-2.

Page 54: Cobol

54

LENGUAJE COBOL 107

EJEMPLOS

1234 (12.34)01234 (012.34)

1234 (12.34)98765 (987.65)

77 EMISOR PIC 99V9977 RECEPTOR PIC 999V99

DESPUÉSANTESMOVE EMISOR TO RECEPTOR

12345 (1234.5)34500 (34.500)

12345 (1234.5)98765 (98.765)

77 EMISOR PIC 9(4)V977 RECEPTOR PIC 99V999

DESPUESANTESMOVE EMISOR TO RECEPTOR

11 (1.1)001100 (001.100)

11 (1.1)123123 (123.123)

77 EMISOR PIC 9V977 RECEPTOR PIC 999V999

DESPUÉSANTESMOVE EMISOR TO RECEPTOR

12312 (123.12)123.12

12312 (123.12)321.98

77 EMISOR PIC 999V9977 RECEPTOR PIC 999.99.

DESPUÉSANTESMOVE EMISOR TO RECEPTOR

LENGUAJE COBOL 108

EJEMPLOS01 GRUPO-1

05 NUMERO PIC 99.05 DIA PIC X(7).05 AÑO PIC 99.

01 GRUPO-205 LOCALIDAD PIC X(15).05 MUNICIPIO PIC 999.05 PRESUPUESTO PIC 9(5)V99.

GRUPO-1 12JUEVESb95GRUPO-2 ARANDAbDEbDUERO9815321572

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

GRUPO-1 12JUEVESb95

Page 55: Cobol

55

LENGUAJE COBOL 109

EJEMPLOS

Si se ha declarado la tabla siguiente:

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

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

LENGUAJE COBOL 110

EJEMPLOS01 REGISTRO-PERSONAL.

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

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

MOVE CORRESPONDING REGISTRO-PERSONAL TO LINEA-IMPRESION

Page 56: Cobol

56

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

ESTRUCTURAS DE CONTROL

LENGUAJE COBOL 112

INTRODUCCIÓNEl 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.

Page 57: Cobol

57

LENGUAJE COBOL 113

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

PROCEDURE DIVISION.Nombre-párrafo-1.

.............................................

.............................................Nombre-párrafo-2.

.............................................

.............................................

LENGUAJE COBOL 114

ESTRUCTURA SECUENCIALSe emplea para especificar la secuencia de ejecución de un programa modular representado por párrafos.

PERFORM nombre-párrafo

PROCEDURE DIVISION.PROGRAMA.

PERFORM P-PROGRAMA.........................................................................................STOP RUN.

P-PROGRAMA.sentencia 1.sentencia 2.

PROGRAMA

P-PROGRAMA

Page 58: Cobol

58

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

ESTRUCTURAS DE CONTROL

LENGUAJE COBOL 116

VERBO IF

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

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

[ELSE acción-2/NEXT SENTENCE]

Page 59: Cobol

59

LENGUAJE COBOL 117

VERBO IFPROGRAMA

CIERTOP-PROGRAMA F-PROGRAMA

SENTENCIA 1

SENTENCIA 2

CONDICIÓN

PROCEDURE DIVISION.PROGRAMA.

PERFORM P-PROGRAMA.IF condición

THEN PERFORM CIERTO.PERFORM F-PROGRAMA.

.

.CIERTO.

sentencia-1sentencia-2

LENGUAJE COBOL 118

VERBO IFPROGRAMA

FALSOCIERTOP-PROGRAMA F-PROGRAMA

SENTENCIA 1

SENTENCIA 2

CONDICIÓN

PROCEDURE DIVISION.PROGRAMA.

PERFORM P-PROGRAMA.IF condición

THEN PERFORM CIERTOELSE PERFORM FALSO.

PERFORM F-PROGRAMA.

CIERTO.sentencia-1.sentencia-2.

FALSO.sentencia-3.sentencia-4.

SENTENCIA 3

SENTENCIA 4

Page 60: Cobol

60

LENGUAJE COBOL 119

CONDICIONES. TIPOSCondiciones de relación.• Las condiciones de relación se refieren a las

comparaciones entre dos items. El tipo de comparación se indica por el operador relacional que puede estar en forma de palabras o de símbolos.

identificador-2literal-2exp-artimética-2

IS operadoridentificador-1

literal-1exp-aritmética-1

LENGUAJE COBOL 120

CONDICIONES. TIPOS

No igual aNOT =NOT EQUAL TO

No menor queNOT <NOT LESS THAN

No mayor queNOT >NOT GREATER THAN

Igual a=EQUAL TO

Menor que<LESS THAN

Mayor que>GREATER THAN

SignificadoSímboloOperador

Page 61: Cobol

61

LENGUAJE COBOL 121

CONDICIONES. TIPOS

Condiciones de clase.• El uso de una condición de clase hace posible

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

NUMERICALPHABETICALPHABETIC-LOWERALPHABETIC-UPPER

IS [NOT] Identificador

LENGUAJE COBOL 122

CONDICIONES. TIPOS

Condiciones de signo.• Permiten determinar si el valor de una campo

numérico o de una expresión aritmética es positivo, negativo o cero. El Formato general es el siguiente:

POSITIVENEGATIVE

ZEROIS [NOT] Expresión Aritmética

Page 62: Cobol

62

LENGUAJE COBOL 123

CONDICIONES. TIPOS

Condiciones de nombre de condición.• Este tipo de condición facilita la asociación de uno o

varios valores a un nombre, el cual se puede interrogar durante el proceso. Los valores asociados al nombre se definen en la DATA DIVISION al definir el campo.

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

LENGUAJE COBOL 124

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

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

‘3’ THRU HIGH-VALUES.

Page 63: Cobol

63

LENGUAJE COBOL 125

CONDICIONES. TIPOSCondiciones compuestas.• Son varias condiciones simples enlazadas mediante

operaciones lógicas AND y OR.• Orden de evaluación de las condiciones• 1 - PARÉNTESIS• 2 - NOT• 3 - AND• 4 - OR• 5 - A igualdad de operadores de izquierda a derecha

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

LENGUAJE COBOL 126

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

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

Page 64: Cobol

64

LENGUAJE COBOL 127

VERBO EVALUATEPROGRAMA

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

IDENTIFICADOR = V1

PÁRRAFO-2

= V2= V3

PROCEDURE DIVISION.PROGRAMA.

PERFORM P-PROGRAMA.EVALUATE identificador

WHEN v1 PERFORM PARRAFO-1WHEN v2 PERFORM PARRAFO-2WHEN OTHER PERFORM PARRAFO-3

END-EVALUATE.PERFORM F-PROGRAMA.STOP RUN.

LENGUAJE COBOL 128

VERBO EVALUATE

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

VALOR-CÓDIGO

AÑADIRP-VALOR-CÓDIGO F-VALOR-CÓDIGO

CÓDIGO 0 1

FALSOBORRAR

CÓDIGO = 2

ERRORMODIFICAR

CODIGO = 3

Page 65: Cobol

65

LENGUAJE COBOL 129

VERBO EVALUATE

VALOR-CÓDIGO

MODIFICARAÑADIRP-VALOR-CÓDIGO F-VALOR-CÓDIGO

CÓDOGO = 1

BORRAR

= 2 = 3

ERROR

OTRO

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

LENGUAJE COBOL 130

VERBO EVALUATE

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

DATA DIVISION.WORKING-STORAGE SECTION.01 CODIGO PIC 9.

88 AÑADIR-REGISTRO VALUE 1.88 SUPRIMIR-REGISTRO VALUE 2.88 MODIFICAR-REGISTRO VALUE 3.88 ERROR-CODIGO VALUE ARE 0 4 THRU 9.

EVALUATE TRUEWHEN añadir-registro PERFORM AÑADIRWHEN suprimir-registro PERFORM SUPRIMIRWHEN modificar-registro PERFORM MODIFICARWHEN OTHER PERFORM CODIGO-ERRONEO

END-EVALUATE.

Page 66: Cobol

66

LENGUAJE COBOL 131

VERBO EVALUATE

PÁRRAFO-1PÁRRAFO-2PÁRRAFO-3PÁRRAFO-4

A, B o CA o Bcualquieracualquiera

1 o 234cualquier otro

ACCIÓN A REALIZARCALIFICACIÓNCÓDIGO

CONDICIÓN

EVALUATE CÓDIGO ALSO CALIFICACIÓNWHEN 1 THRU 2 ALSO “A” THRU “C” PERFORM PARRAFO-1WHEN 3 ALSO “A” THRU “B” PERFORM PARRAFO-2WHEN 4 ALSO ANY PERFORM PARRAFO-3WHEN OTHER PERFORM PARRAFO-4

END-EVALUATE.

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

ESTRUCTURAS DE CONTROL

Page 67: Cobol

67

LENGUAJE COBOL 133

VERBO PERFORM

PERFORM párrafo entero/identificador TIMES

PROCEDURE DIVISION.PROGRAMA.

..............................PERFORM BUCLE 5 TIMES.............................

BUCLE.sentencia 1.sentencia 2.

BUCLE5 VECES

LENGUAJE COBOL 134

VERBO PERFORM

PERFORM párrafo [WITH TEST BEFORE]UNTIL condición

PROGRAMA

PÁRRAFOP-PROGRAMA F-PROGRAMACONDICIÓN

Page 68: Cobol

68

LENGUAJE COBOL 135

VERBO PERFORM

PERFORM párrafo WITH TEST AFTERUNTIL condición

PROGRAMA

PÁRRAFOP-PROGRAMA F-PROGRAMACONDICIÓN (DESPUÉS)

LENGUAJE COBOL 136

VERBO PERFORM

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

Page 69: Cobol

69

LENGUAJE COBOL 137

VERBO PERFORMLa ejecución, si no se ha especificado la opción TESTAFTER se realiza de la siguiente forma:a)El identificador-1 se inicializa al valor especificado por

literal-1 o identificador-2 que sigue al FROM.b)Se evalúa la condición-1.

1. Si es cierta, se da por finalizada la ejecución de la sentencia PERFORM y se pasa a ejecutar la siguiente sentencia del programa.

2. Si es falsa, se pasa al punto c.c) Se ejecuta el párrafod)Se suma a identificador-1 el valor especificado por

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

LENGUAJE COBOL 138

VERBO PERFORM

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

PROGRAMA

PÁRRAFOP-PROGRAMA F-PROGRAMACONDICIÓN

IDEN-1 = IDEN-2 , IDEN-3

Page 70: Cobol

70

LENGUAJE COBOL 139

VERBO PERFORM

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

LENGUAJE COBOL 140

VERBO PERFORMa) El identificador-1 y el identificador-4 se inicializan a los

valores respectivos que siguen a cada FROM.b) Se evalúa la condición-1.

1. Si es cierta, se da por finalizada la ejecución de la sentencia PERFORM y se pasa a ejecutar la siguiente sentencia del programa.

2. Si es falsa, se pasa al punto c.c) Se evalúa la condición-2.

1. Si es cierta, el identificador-4 se inicializa al valor especificado por literal-5 o identificador-5 que sigue a FROM, también se suma a identificador-1 el valor especificado por identificador-3 que sigue a BY y se continúa en el punto b.

2. Si es falsa se pasa al punto d.d) Se ejecuta el e) Se suma a identificador-4 el valor especificado por

identificador-6 que sigue a BY y se vuelve al punto c.

Page 71: Cobol

71

LENGUAJE COBOL 141

VERBO PERFORM

PROGRAMA

PÁRRAFOP-PROGRAMA F-PROGRAMA

CONDICIÓN 1

CONDICIÓN 2

IDEN-1 = IDEN-2 , IDEN-3

PERFORM párrafo [VARYING iden-1 FROM iden-2BY iden-3 UNTIL condición-1AFTER iden-4 FROM iden-5BY iden-6 UNTIL condición-2

IDEN-4 = IDEN-5 , IDEN-6