lenguaje orientado a sistemas de gestión

Anuncio
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN
ELEMENTOS DEL
LENGUAJE COBOL
LENGUAJE COBOL
z
z
z
Cobol, 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)
LENGUAJE COBOL
2
1
ELEMENTOS DEL LENGUAJE
z
Caracteres de Cobol
•
•
•
Caracteres numéricos. 0/9.
Caracteres alfabéticos. A/Z.
Caracteres especiales. $, blanco, +, .........
• Caracteres empleados en puntuación
•
{ $, (, ), ,, ; }
•
{ +, -, *, **, /, =, (, ) }
• Caracteres aritméticos.
• Caracteres empleados en declaraciones
condicionales.
•
{ <, >, = }
LENGUAJE COBOL
3
ELEMENTOS DEL LENGUAJE
z
Constantes
•
Literales numéricos
•
•
Literales no numéricos.
Constantes figurativas.
• Literales de coma fija
• Literales de coma flotante.
[ +/- ] mantisa E [ +/- ] exponente
• ZERO.
• SPACE.
• ALL ‘carácter’.
• HIGH-VALUE .
• LOW-VALUE.
LENGUAJE COBOL
4
2
ELEMENTOS DEL LENGUAJE
Palabras Reservadas.
z
•
•
Identificadores predefinidos que tienen un significado especial en
COBOL.
Por ejemplo: IDENTIFICATION, FILLER, ADD, COMPUTE, READ,
REWRITE
Identificadores
z
•
•
•
•
•
•
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.
5
LENGUAJE COBOL
ELEMENTOS DEL LENGUAJE
z
Operadores.
•
Los operadores son símbolos que indican cómo son
manipulados los datos
Operadores Aritméticos
Operador
Significado
Ejemplo
+
Suma
A+B
-
Resta
A-B
*
Producto
A*B
/
División
A/B
**
Exponenciación
A ** B
=
Asignación
C=A+B
()
Dar Prioridad
D = (A + B)*C
LENGUAJE COBOL
6
3
ELEMENTOS DEL LENGUAJE
Operadores de Relación
=
Igual que
A=B
<
Menor que
A<B
>
Mayor que
A>B
<=
Menor o igual que
A <= B
>=
Mayor o igual que
A >= B
NOT
Negación
NOT ( A = B )
AND
Conjunción
A = B AND A > B
OR
Disyunción
A = B OR A < B
Operadores Lógicos
LENGUAJE COBOL
7
ELEMENTOS DEL LENGUAJE
z
Expresiones Aritméticas.
•
•
•
•
Una expresión aritmética puede ser una constante,
una variable o un conjunto de constantes y variables
unidas por operadores aritméticos.
El punto, punto y coma o coma no pueden ir
precedidos por un espacio, pero si tienen que ir
seguidos por un espacio.
Un paréntesis izquierdo no puede ir seguido por un
espacio, un paréntesis derecho no puede ir precedido
por un espacio.
Un operador aritmético o un signo igual tiene que ir
precedido por un espacio y seguido por un espacio.
LENGUAJE COBOL
8
4
ELEMENTOS DEL LENGUAJE
z
Expresiones Aritméticas.
• A la hora de evaluar una expresión
• Primero se evalúan las operaciones entre
paréntesis, del más interno al más externo.
• Después se evalúan los operadores con la
prioridad siguiente:
•+ y
• **
• *, /
• +,-
- unarios
LENGUAJE COBOL
9
ELEMENTOS DEL LENGUAJE
z
Expresiones de Boole.
• Una expresión de Boole da como resultado
•
un valor VERDADERO o FALSO.
Los operadores que intervienen en una
expresión de Boole pueden ser: operadores
de relación y operadores lógicos.
A >= 30 AND B = C
A = 0 AND B * 2 NOT= 0 OR C = 0
LENGUAJE COBOL
10
5
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN
ESTRUCTURA DE UN
PROGRAMA EN COBOL
DIVISIONES, SECCIONES Y
PÁRRAFOS
z
z
z
z
IDENTIFICATION DIVISION.
[ENVIRONMENT DIVISION.]
[DATA DIVISION.]
PROCEDURE DIVISION.
LENGUAJE COBOL
12
6
DIVISIONES, SECCIONES Y
PÁRRAFOS
IDENTIFICATION DIVISION.
división
PROGRAM-ID. EJEMPLO.
AUTHOR. EUI.
párrafo
DATE-WRITTEN. 01-ENERO-93.
DATE-COMPILED. 01-ENERO-93.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
sección
SOURCE-COMPUTER. IBM PERSONAL COMPUTER.
OBJECT-COMPUTER. IBM PERSONAL COMPUTER.
SPECIAL-NAMES.
párrafo
DECIMAL-POINT IS COMMA.
cláusula
INPUT-OUTPUT SECTION.
sección
FILE-CONTROL.
párrafo
SELECT IMPRESORA ASSING TO PRINTER.
cláusulas
LENGUAJE COBOL
13
DIVISIONES EN COBOL
IDENTIFICATION DIVISION
z
•
•
PROPÓSITO: Identificar el programa de forma que se distinga de
los otros, además de proporcionar el nombre del autor, cuando se
escribió etc.
PÁRRAFOS
•
•
•
•
•
•
•
PROGRAM-ID.
AUTHOR.
INSTALLATION.
DATE-WRITTEN.
DATE-COMPILED.
SECURITY.
REMARKS.
LENGUAJE COBOL
14
7
DIVISIONES EN COBOL
ENVIRONMENT DIVISION
z
•
•
PROPÓSITO: En esta división se describe el
entorno físico en el cual se va a desarrollar el
programa. Entendiéndose por entorno, la clase de
sistema que se va a utilizar así como los dispositivos
de entrada/salida.
SECCIONES
•
•
CONFIGURATION SECTION.
INPUT-OUPUT SECTION.
LENGUAJE COBOL
15
DIVISIONES EN COBOL
z
•
•
z
•
•
CONFIGURATION SECTION.
PROPÓSITO: Tiene como finalidad describir las características del
computador usado para compilar y ejecutar el programa, todo ello a
nivel de comentarios
PÁRRAFOS
•
•
•
SOURCE-COMPUTER. Modelo de ordenador.
OBJECT-COMPUTER. Modelo de ordenador.
SPECIAL-NAMES.
• [[Nombre de función IS nombre nemotécnico]
• [CURRENCY SIGN IS literal]
• [DECIMAL-POINT IS COMMA].]
INPUT-OUTPUT SECTION.
PROPÓSITO: Declarar los ficheros utilizados y la asignación a los
dispositivos de E/S.
PÁRRAFOS
•
FILE-CONTROL
LENGUAJE COBOL
16
8
DIVISIONES EN COBOL
Nombre de función es un nombre reconocido por el
compilador y nombre nemotécnico es un nombre creado por
el programador. De esta forma podemos poner:
z
•
•
CONSOLE IS CONSOLA
SYSOUT IS ARCHI-PANTALLA
La función de CURRENCY SING es indicar que el sistema
tiene que utilizar un carácter monetario distinto del que tiene
por defecto ($). El carácter sustituto de éste, tiene que ser
uno solo y alfabético.
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.
z
z
LENGUAJE COBOL
17
DIVISIONES EN COBOL
z
•
•
z
•
DATA DIVISION
PROPÓSITO: En este apartado se definen los datos que
van a ser utilizados, tales como ficheros, los registros de
cada fichero etc. Cualquier dato utilizado en la
codificación del programa debe estar definido en esta
división.
PÁRRAFOS
•
•
WORKING-STORAGE SECTION.
FILE SECTION.
PROCEDURE DIVISION
PROPÓSITO: Es en esta división donde se codifica el
algoritmo propiamente dicho, esto es, donde se
especifican las instrucciones adecuadas para resolver el
problema.
LENGUAJE COBOL
18
9
HOJA DE CODIFICACIÓN
123456 7 8 A 11
Se utilizaban para
indicar los números de
secuencia, permitiendo
ordenar fácilmente 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 carácter especial (*) que
indica comienzo de un comentario. Si el carácter
especial que se incluye en esta columna es (-) indica
que es continuación de un literal no numérico, cuando
la longitud de éste, ocupa más de una línea.
LENGUAJE COBOL
19
HOJA DE CODIFICACIÓN
Margen A
z
•
•
•
•
•
•
Margen B
z
•
z
Cabeceras de división: IDENTIFICATION DIVISION...
Cabeceras de sección : CONFIGURATION SECTION...
Cabeceras de párrafos: PROGRAM-ID...
Nombre de procedimientos: ABRIR-FICHEROS...
Descripciones de nivel FD: FD IMPRESO..
Los números de nivel 01 y 77
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.
LENGUAJE COBOL
20
10
REGLAS DE CODIFICACIÓN
z
z
z
z
z
z
z
z
Los 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 un
punto.
Si a lo largo de una línea física no se encuentra un punto, la siguiente
línea será tomada como continuación de la anterior, esto es, cada
entrada y cada sentencia del programa puede ocupar varias líneas
físicas.
Si una entrada o una sentencia del programa no cabe en una línea
física, se continúa en la línea o líneas siguientes pero en el área B.
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 un
espacio, pero sí seguidos de un espacio. La coma y el punto y coma
son opcionales y cuando se utilizan es para hacer más clara la
redacción del programa.
Si se utiliza más de un espacio como separador entre palabras, el
compilador lo interpreta como uno solo.
LENGUAJE COBOL
21
ESTRUCTURA GENERAL
IDENTIFICATION DIVISION.
PROGRAM-ID. nombre de programa.
[ AUTHOR. comentarios... ]
[ INSTALLATION. comentarios... ]
[ DATE-WRITTEN. comentarios... ]
[ DATE-COMPILED. comentarios... ]
[ SECURITY. comentarios... ]
[ REMARKS. comentarios... ]
ENVIRONMENT DIVISION.
[ CONFIGURATION SECTION.
SOURCE-COMPUTER. modelo-ord.
OBJECT-COMPUTER. modelo-ord.
SPECIAL-NAMES. nombres especiales]
DATA DIVISION
[ FILE SECTION.]
[ WORKING-STORAGE SECTION.]
PROCEDURE DIVISION.
nombre-de-párrafo.
{Sentencia}...}...
nombre-de-párrafo.
{Sentencia}...}...
[ INPUT-OUTPUT SECTION.
{ FILE CONTROL. control de archivos.}
[ I-O CONTROL. control entrada/salida.]]
LENGUAJE COBOL
22
11
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN
ESTRUCTURA DE UN
PROGRAMA EN COBOL
DIVISIONES, SECCIONES Y
PÁRRAFOS
z
z
z
z
IDENTIFICATION DIVISION.
[ENVIRONMENT DIVISION.]
[DATA DIVISION.]
PROCEDURE DIVISION.
LENGUAJE COBOL
24
12
DIVISIONES, SECCIONES Y
PÁRRAFOS
IDENTIFICATION DIVISION.
división
PROGRAM-ID. EJEMPLO.
AUTHOR. EUI.
párrafo
DATE-WRITTEN. 01-ENERO-93.
DATE-COMPILED. 01-ENERO-93.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
sección
SOURCE-COMPUTER. IBM PERSONAL COMPUTER.
OBJECT-COMPUTER. IBM PERSONAL COMPUTER.
SPECIAL-NAMES.
párrafo
DECIMAL-POINT IS COMMA.
cláusula
INPUT-OUTPUT SECTION.
sección
FILE-CONTROL.
párrafo
SELECT IMPRESORA ASSING TO PRINTER.
cláusulas
LENGUAJE COBOL
25
DIVISIONES EN COBOL
IDENTIFICATION DIVISION
z
•
•
PROPÓSITO: Identificar el programa de forma que se distinga de
los otros, además de proporcionar el nombre del autor, cuando se
escribió etc.
PÁRRAFOS
•
•
•
•
•
•
•
PROGRAM-ID.
AUTHOR.
INSTALLATION.
DATE-WRITTEN.
DATE-COMPILED.
SECURITY.
REMARKS.
LENGUAJE COBOL
26
13
DIVISIONES EN COBOL
ENVIRONMENT DIVISION
z
•
•
PROPÓSITO: En esta división se describe el
entorno físico en el cual se va a desarrollar el
programa. Entendiéndose por entorno, la clase de
sistema que se va a utilizar así como los dispositivos
de entrada/salida.
SECCIONES
•
•
CONFIGURATION SECTION.
INPUT-OUPUT SECTION.
LENGUAJE COBOL
27
DIVISIONES EN COBOL
z
•
•
z
•
•
CONFIGURATION SECTION.
PROPÓSITO: Tiene como finalidad describir las características del
computador usado para compilar y ejecutar el programa, todo ello a
nivel de comentarios
PÁRRAFOS
•
•
•
SOURCE-COMPUTER. Modelo de ordenador.
OBJECT-COMPUTER. Modelo de ordenador.
SPECIAL-NAMES.
• [[Nombre de función IS nombre nemotécnico]
• [CURRENCY SIGN IS literal]
• [DECIMAL-POINT IS COMMA].]
INPUT-OUTPUT SECTION.
PROPÓSITO: Declarar los ficheros utilizados y la asignación a los
dispositivos de E/S.
PÁRRAFOS
•
FILE-CONTROL
LENGUAJE COBOL
28
14
DIVISIONES EN COBOL
Nombre de función es un nombre reconocido por el
compilador y nombre nemotécnico es un nombre creado por
el programador. De esta forma podemos poner:
z
•
•
CONSOLE IS CONSOLA
SYSOUT IS ARCHI-PANTALLA
La función de CURRENCY SING es indicar que el sistema
tiene que utilizar un carácter monetario distinto del que tiene
por defecto ($). El carácter sustituto de éste, tiene que ser
uno solo y alfabético.
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.
z
z
LENGUAJE COBOL
29
DIVISIONES EN COBOL
z
•
•
z
•
DATA DIVISION
PROPÓSITO: En este apartado se definen los datos que
van a ser utilizados, tales como ficheros, los registros de
cada fichero etc. Cualquier dato utilizado en la
codificación del programa debe estar definido en esta
división.
PÁRRAFOS
•
•
WORKING-STORAGE SECTION.
FILE SECTION.
PROCEDURE DIVISION
PROPÓSITO: Es en esta división donde se codifica el
algoritmo propiamente dicho, esto es, donde se
especifican las instrucciones adecuadas para resolver el
problema.
LENGUAJE COBOL
30
15
HOJA DE CODIFICACIÓN
123456 7 8 A 11
Se utilizaban para
indicar los números de
secuencia, permitiendo
ordenar fácilmente 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 carácter especial (*) que
indica comienzo de un comentario. Si el carácter
especial que se incluye en esta columna es (-) indica
que es continuación de un literal no numérico, cuando
la longitud de éste, ocupa más de una línea.
LENGUAJE COBOL
31
HOJA DE CODIFICACIÓN
Margen A
z
•
•
•
•
•
•
Margen B
z
•
z
Cabeceras de división: IDENTIFICATION DIVISION...
Cabeceras de sección : CONFIGURATION SECTION...
Cabeceras de párrafos: PROGRAM-ID...
Nombre de procedimientos: ABRIR-FICHEROS...
Descripciones de nivel FD: FD IMPRESO..
Los números de nivel 01 y 77
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.
LENGUAJE COBOL
32
16
REGLAS DE CODIFICACIÓN
z
z
z
z
z
z
z
z
Los 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 un
punto.
Si a lo largo de una línea física no se encuentra un punto, la siguiente
línea será tomada como continuación de la anterior, esto es, cada
entrada y cada sentencia del programa puede ocupar varias líneas
físicas.
Si una entrada o una sentencia del programa no cabe en una línea
física, se continúa en la línea o líneas siguientes pero en el área B.
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 un
espacio, pero sí seguidos de un espacio. La coma y el punto y coma
son opcionales y cuando se utilizan es para hacer más clara la
redacción del programa.
Si se utiliza más de un espacio como separador entre palabras, el
compilador lo interpreta como uno solo.
LENGUAJE COBOL
33
ESTRUCTURA GENERAL
IDENTIFICATION DIVISION.
PROGRAM-ID. nombre de programa.
[ AUTHOR. comentarios... ]
[ INSTALLATION. comentarios... ]
[ DATE-WRITTEN. comentarios... ]
[ DATE-COMPILED. comentarios... ]
[ SECURITY. comentarios... ]
[ REMARKS. comentarios... ]
ENVIRONMENT DIVISION.
[ CONFIGURATION SECTION.
SOURCE-COMPUTER. modelo-ord.
OBJECT-COMPUTER. modelo-ord.
SPECIAL-NAMES. nombres especiales]
DATA DIVISION
[ FILE SECTION.]
[ WORKING-STORAGE SECTION.]
PROCEDURE DIVISION.
nombre-de-párrafo.
{Sentencia}...}...
nombre-de-párrafo.
{Sentencia}...}...
[ INPUT-OUTPUT SECTION.
{ FILE CONTROL. control de archivos.}
[ I-O CONTROL. control entrada/salida.]]
LENGUAJE COBOL
34
17
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN
LOS DATOS
DATA DIVISION
z
z
•
•
FUNCIÓN
Se describen los datos que van a ser usados, creados, o
producidos por el programa.
Se describe la estructura de los ficheros que se van a
utilizar, así como las variables utilizadas en el programa y
que no son parte de los ficheros.
FORMATO
DATA DIVISION.
[FILE SECTION.
{ Entrada de descripción de ficheros....}
{ Entrada de descripción de registros...}]
[WORKING-STORAGE SECTION.
[ Entrada de descripción de variables o registros ]]
LENGUAJE COBOL
36
18
TIPOS DE DATOS
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:
z
z
•
•
•
Campos Independientes
Campos Compuestos
Tablas
LENGUAJE COBOL
37
CAMPOS INDEPENDIENTES
z
z
z
Es un campo de trabajo que será definido en la sección de
“working”. No forman parte de la descripción de los ficheros.
Formato mínimo para su definición:
número-de-nivel nombre-de-dato
PICTURE 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 del
mismo.
PICTURE. Determina la información que puede almacenarse en el
campo, así como las operaciones que con él pueden realizarse.
Permite definir el tipo y el tamaño del campo.
LENGUAJE COBOL
38
19
CLÁUSULA PICTURE
PICTURE/PIC IS especificación de formato.
Carácter
Descripción
Ejemplos
9
Cualquier dígito
del 0 al 9
1. PIC 99999
2. PIC 9(5)
V
Posición Decimal
1. PIC 99v99
2. PIC 9(2)v99
S
Signo
1. PIC S999
2. PIC S99v99
39
LENGUAJE COBOL
CLÁUSULA PICTURE
Descripción
Valor Numérico
77 CANT PIC 9(6)
12234
77 CANT PIC 9999
8956
77 CANT PIC 9(10)
1234567
Representación INTERNA
012234
8956
0001234567
77 CANT PIC 9999
285
77 CANT PIC 99V9
38.50
38^5
77 CANT PIC 9(4)V99
452.39
0452^39
77 CANT PIC 999
77 CANT 99999V99
77 CANT PIC S999V99
550
23561.00
0285
550
23561^00
156.29
156^29
-1251.16
1251^16
77 CANT S9(4)V99
-0.10
0000^10
77 CANT S9(4)V99
-325.18
0325^18
77 CANT S9(3)V99
LENGUAJE COBOL
40
20
CLÁUSULA PICTURE
Carácter
Descripción
Ejemplos
A
Cualquier carácter letra
1.
2.
PIC AAAAA
PIC A(5)
X
Cualquier carácter
1.
2.
PIC XXXXX
PIC X(5)
Descripción
Ejemplo
Representado en el Almacenamiento
como
77 VALOR PIC XXXXX
BUENO
B
U
E
N
77 VALOR PIC X(5)
BUEN
B
U
E
N
77 VALOR PIC X(5)
BUENOS
77 VALOR PIC X(8)
D.
B
GIL
D
U
.
E
G
N
I
O
O
L
LENGUAJE COBOL
41
CLÁUSULA PICTURE
Carácter
Descripción
$
Se escribe el signo $ en el lugar correcto en que debe
aparecer en la salida
.
Indica la posición del punto decimal
,
Indica la posición de la coma como carácter de separación de
millares. La utilización de la cláusula DECIMAL POINT IS
COMMA en la SPECIAL-NAMES de la ENVIRONMENT DIVISION
invierte el uso de los puntos y coma.
*
Sirve para reemplazar los ceros no significativos (a la
izquierda) por asteriscos
Z
Sirve para reemplazar los ceros no significativos por
blancos
+
Se inserta en el extremo izquierdo o derecho. Representa la
aparición del signo. Si el número es positivo aparecerá
un + y si es negativo aparecerá un -.
LENGUAJE COBOL
42
21
CLÁUSULA PICTURE
Carácter
Descripción
-
Se inserta en el extremo izquierdo o derecho. Representa la
aparición del signo. Si el número es positivo aparecerá
un blanco y si es negativo aparecerá un -.
CR
Representa la aparición del signo bancario CR de crédito.
Cuando el valor es positivo aparecerán blancos, si el
valor es negativo aparece los caracteres CR.
DB
Representa la aparición del signo bancario DB de débito.
Cuando el valor es positivo aparecerán blancos, si el
valor es negativo aparece los caracteres DB.
0
Se usan para insertar ceros en las posiciones en que deben
aparecer
B
Se usan para insertar blancos en las posiciones en que deben
aparecer
43
LENGUAJE COBOL
CLÁUSULA PICTURE
PICTURE
CONTENIDO
PICTURE
EDICIÓN
9(4)V99
654321
9(4).99
6543.21
9(4)V99
054321
9(4).99
0543.21
9(3)V999
000546
999.99
000.54
9V99
567
99V.99
NO VALIDO
99
54
99.99
9999V99
500000
999.99
LENGUAJE COBOL
Resultado
Editado
54.00
000.00
44
22
CLÁUSULA PICTURE
PICTURE
CONTENIDO
PICTURE
Resultado
EDICIÓN
Editado
9999
0704
ZZZ9
999V
103
ZZZ.99
103.00
9(3)V99
00103
ZZZ.99
bb1.03
999V99
00000
Z(3).ZZ
blancos
9(4)V99
001234
Z(4).ZZ
bb12.34
999V99
00001
ZZZ.ZZ
b704
bbb.01
45
LENGUAJE COBOL
CLÁUSULA PICTURE
PICTURE
CONTENIDO
PICTURE
EDICIÓN
9(6)
012345
***999
*12345
9(6)
000012
***999
***012
9(6)
000123
***999
***123
9(5)V99
0012345
*****.99
LENGUAJE COBOL
Resultado
Editado
**123.45
46
23
CLÁUSULA PICTURE
PICTURE
CONTENIDO
PICTURE
EDICIÓN
Resultado
Editado
9(7)
1234567
9,999,999
9(3)V99
12345
9,990,000.99
999
123
9B00B990
9(4)
1234
9,009,990
999
123
9BB99
1bb23
999
123
90099
10023
1,234,567
1,230,000.45
1b00b230
1,002,340
47
LENGUAJE COBOL
CLÁUSULA PICTURE
PICTURE
CONTENIDO
PICTURE
EDICIÓN
9(4)
0123
$9999
$0123
9(4)
0123
$Z999
$b123
9(4)
0123
$*999
$*123
9(5)V99
0012345
$*****.99
$**123.45
9(5)V99
0123456
$**,***.99
$*1,234.56
LENGUAJE COBOL
Resultado
Editado
48
24
CLÁUSULA PICTURE
PICTURE
CONTENIDO
PICTURE
EDICIÓN
Resultado
Editado
S999
-123
+999
-123
S999
+628
-999
628
S999
+456
999+
456+
S9(3)V99
-12345
999.99DB
S999V99
-18200
$999.99CR
S9(3)V99
+15768
999.99DB
157.68bb
S9(3)V99
-65125
+$999.99
-$651.25
S9(3)V99
+57950
+$999.99
+$579.50
123.45DB
$182.00CR
49
LENGUAJE COBOL
CLÁUSULA PICTURE
PICTURE
CONTENIDO
PICTURE
EDICIÓN
9(5)V99
0000440
$$$$$$.99
$4.40
999V99
-00555
++++.99
-5.55
999V99
00000
++++.++
blancos
9(5)V99
0475682
$$$,$$$.99
LENGUAJE COBOL
Resultado
Editado
$4,756.82
50
25
CLÁUSULA PICTURE
PICTURE
CONTENIDO
PICTURE
EDICIÓN
Resultado
Editado
X(6)
CN1005
XXBBX(4)
CN
AAAA
HOLA
ABABABA
H 0 L A
X(5)
CASO3
XXXXBX000
CASO
1005
3000
LENGUAJE COBOL
51
CLÁUSULA VALUE
z
z
•
La 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)
77 VARIABLE
PIC
99
77 VARIABLE
PIC
V99
77 VARIABLE
PIC
9(8)
77 VARIABLE
PIC
X(10)
77 VARIABLE
PIC
X(9)
77 VARIABLE
PIC
X(9)
77 CERO
PIC
99999
77 CERO
PIC
99999
VALUE
“Listado Empleados”.
VALUE
10.
VALUE
0.03.
VALUE
ZEROS.
VALUE
SPACES.
VALUE ‘---------’ .
VALUE
ALL ‘-’.
VALUE ZEROS.
VALUE 0.
LENGUAJE COBOL
52
26
JUSTIFIED RIGHT
z
Se utiliza únicamente con variables de tipo
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’
A
JUST RIGHT.
B
53
LENGUAJE COBOL
CAMPOS COMPUESTOS
z
z
z
Son 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.
DATOS-VENDEDOR
NUM-VEN
NOMBRE
APELLIDO1
DATOS-DIRECCIÓN
APELLIDO2
PROVINCIA
LENGUAJE COBOL
CALLE
FECHA-ALTA
NCALLE
DIA
MES
AÑO
54
27
CAMPOS COMPUESTOS
NUMERO DE NIVEL
01
VENDEDOR.
02
02
02
02
ESPECIFICACIÓN
DE FORMATO
NUMERO
DATOS-VENDEDOR.
PIC
999.
03
03
03
NOMBRE
APELLIDO1
APELLIDO2
PIC
PIC
PIC
X(10).
X(10).
X(10).
DATOS-DIRECCION.
03
PROVINCIA
03
CALLE
03
NCALLE
PIC
PIC
PIC
X(30).
X(15).
99.
FECHA-ALTA.
03
DÍA
03
MES
03
ANIO
PIC
PIC
PIC
99.
99.
99.
NOMBRE
DE DATO
LENGUAJE COBOL
55
CAMPOS COMPUESTOS
Los nombre de datos sirven para nombrar un campo
con el fin de poder referenciar en el programa, el
contenido del mismo.
Si la 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.
z
z
z
z
•
•
[01] Sólo 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 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, mientras
que 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ón
El tipo del campo determina la información que puede almacenarse
en el campo, así como las operaciones que con él pueden
realizarse. Se hace a través de la cláusula PICTURE.
La longitud del campo viene dada por el número de caracteres
empleados en la especificación del formato para declarar el campo.
z
z
z
z
z
z
z
z
57
LENGUAJE COBOL
CAMPOS COMPUESTOS
Calificación de los nombres de datos.
z
•
01
En la declaración 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 CONDICIÓN
z
Permite al programador definir constantes figurativas
adicionales para usarlas en el programa COBOL
88
77
nombre-de-dato VALUE IS/VALUES ARE constante-1
[THRU constante-2]
FINAL-FICHERO
88
FIN-FICHERO
PIC
VALUE
XX.
`SI`.
Si se desea preguntar SI ES FINAL DE FICHERO bastará con
decir:
IF FIN-FICHERO
en lugar de preguntar IF FINAL-FICHERO = `SI`.
LENGUAJE COBOL
60
30
NOMBRES DE CONDICIÓN
01 DATOS-PERSONALES.
02
NUMERO-ID...
02
NOMBRE......
02
DIRECCION....
02
EDUCACION PICTURE 99.
88
NO-BACHILLER
VALUES ARE 0 THRU 11.
88
BACHILLER
VALUE IS 12.
88
ALGO-UNIVERSIDAD VALUES ARE 13 THRU 15.
88
PROFESIONAL
VALUE IS 16.
88
POSTGRADO
VALUES ARE 17 THRU 20.
88
CODIGO-ERROR
VALUES ARE 21 THRU 99.
IF BACHILLER ....
IF ALGO-UNIVERSIDAD OR PROFESIONAL
IF EDUCACION < 16
61
LENGUAJE COBOL
RENAMES
z
La cláusula RENAMES provee al programador la capacidad de reagrupar los items de
datos elementales.
66
nombre-de-datos-1 RENAMES nombre-de -datos-2 [THRU nombre-de-datos-3]
01 REG-IMPUESTO.
02
02
02
66
NO-SEG-SOCIAL
NOMBRE-COMPLETO.
03
NOMBRE
03
INICIAL
03
APELLIDO
TOTAL-A-LA-FECHA.
03
PAGO-BRUTO
03
PAGO-NETO
03
IMPUESTO-TRIBUTADO
03
IMPUESTO-ESTADO
PIC 9(8)V99.
PIC 9(8)V99.
PIC 9(6)V99.
PIC 9(4)V99.
ULTIMO-PAGO RENAMES APELLIDO THRU PAGO-NETO.
NOMBRE-COMPLETO
NO-SEG-SOCIAL
PIC X(9).
PIC X(10).
PIC XX.
PIC X(15).
NOMBRE
INICIAL
TOTAL-A-LA-FECHA
APELLIDO
PAGO-BRUTO
LENGUAJE COBOL
PAGO-NETO
IMPUESTOTRIBUT
ADO
IMPUESTOESTADO
62
31
TABLAS
z
z
Una tabla es un conjunto de valores almacenados en
posiciones consecutivas de memoria y con un nombre
de datos asignado.
La referencia a entradas específicas de la tabla se
hace mediante un sólo nombre junto con un subíndice
que indica la posición de entrada particular.
WORKING-STORAGE SECTION.
01 Nombre-de-tabla.
02 Nombre-de-elemento OCCURS número-de-elementos TIMES
PICTURE tipo-de-elemento.
LENGUAJE COBOL
63
TABLAS
01TABLA
- INGRESOS
- ESTADO.
02 INGRESOS- PROMEDIOS
OCCURS 50 TIMES PIC 9(6)V99.
z INGRESOS- PROMEDIOS (Índice) donde Índice es
mayor o igual que 1 y menor o igual que 50.
TABLA-INGRESOS-ESTADO
INGRESOS-PROMEDIO(1)
INGRESOS-PROMEDIO(50)
LENGUAJE COBOL
64
32
TABLAS
01 TABLA-INGRESOS-ESTADO.
02 INGRESOS-PROMEDIOS OCCURS 50 TIMES PIC 9(6)V99.
02 PROMEDIO-NACIONAL PIC 9(7)V99.
TABLA-INGRESOS-ESTADO
INGRESOS-PROMEDIOS
INGRESOS-PROMEDIOS (1)
PROMEDIO-NACIONAL
INGRESOS-PROMEDIOS (50)
PROMEDIO-NACIONAL
65
LENGUAJE COBOL
TABLAS
01TABLA
- INGRESOS
- ESTADO.
02 NOMBRE
- INGRESO OCCURS 50 TIMES.
03
NOMBRE PIC X(4).
03
INGRESO PIC 9(6)V99.
TABLA-INGRESOS-ESTADO
NOMBRE-INGRESO (1)
NOMBRE(1)
INGRESO(1)
---
NOMBRE-INGRESO (50)
NOMBRE(50)
LENGUAJE COBOL
INGRESO (50)
66
33
TABLAS
z
z
z
z
z
z
La 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.
67
LENGUAJE COBOL
TABLAS
z
Inicialización de una tabla en tiempo de
compilación.
nombre-de-dato-1 REDEFINES nombre-de-dato-2
01 FECHA.
01
02
DÍA
PIC 99.
02
MES
PIC 99.
02
AÑO
PIC 99.
FECHA-ACTUAL REDEFINES
LENGUAJE COBOL
FECHA PIC X(6).
68
34
TABLAS
01 TABLA-S.
02 FILLER
PIC X(10)
VALUE "LUNES".
02 FILLER
PIC X(10)
VALUE "MARTES".
02 FILLER
PIC X(10)
VALUE "MIÉRCOLES".
02 FILLER
PIC X(10)
VALUE "JUEVES".
02 FILLER
PIC X(10)
VALUE "VIERNES".
02 FILLER
PIC X(10)
VALUE "SÁBADO".
02 FILLER
PIC X(10)
VALUE "DOMINGO".
01 TABLA-DIA-S
REDEFINES TABLA-S.
02 DIA-SEMANA OCCURS 7 TIMES PIC X(10).
LENGUAJE COBOL
69
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN
VERBOS ARITMÉTICOS
35
INTRODUCCIÓN
z
z
Los verbos aritméticos permiten realizar las
típicas operaciones de suma, resta, producto y
división, además podremos almacenar el resto
de una división y realizar conjuntamente todas
estas operaciones en una sola sentencia.
Verbos Aritméticos.
• Suma
• Resta
• Producto
• División
• O. Aritméticas
ADD
SUBSTRACT
MULTIPLY
DIVIDE
COMPUTE
LENGUAJE COBOL
71
SUMA
ADD ident-1literal-1 [ident-2/literal-2] ....
TO ident-n [ident-m]
ADD ident-1/literal-1 ident-2/literal-2
GIVING ident-n [ident-m]
LENGUAJE COBOL
72
36
SUMA. OPCIONES
z
Opción ROUNDED
•
Si en una suma (o cualquier otra operación) el número
de decimales del resultado es mayor que el número
de ellos especificados en el campo receptor, trunca el
número sobrante de dígitos por la derecha.
PICTURE
S99V9
9V9
99V9
S99V
SV999
RESULTADO
CALCULADO
-12.36
8.432
35.6
65.6
.0058
VALOR DESPUÉS VALOR DESPUÉS
DE TRUNCAR
DE REDONDEAR
-12.3
12.4
8.4
8.4
35.6
35.6
65
66
.005
.006
LENGUAJE COBOL
73
SUMA. OPCIONES
z
Opción ON SIZE ERROR
•
•
Si la parte entera de un cálculo no cupiera en el
campo receptor, se produciría un desbordamiento.
La utilización de esta cláusula permite al
programador especificar una serie de instrucciones
que solo se ejecutarían cuando se produzca dicho
desbordamiento.
ADD HORAS-SEMANA TO TOTAL -HORAS-AÑO
ON SIZE ERROR DISPLAY 'DESBORDAMIENTO DEL CAMPO '
ADD A B TO C ON SIZE ERROR DISPLAY 'ERROR.......'.
LENGUAJE COBOL
74
37
SUMA. EJEMPLOS
ADD IDA IDB TO IDC
ANTES
DESPUÉS
77 IDA PIC 9(3)
77 IDB PIC 999
77 IDC PIC S99
010
020
-10
010
020
+20
ADD IDA IDB -30 TO IDD IDC
ANTES
DESPUÉS
77
77
77
77
030
010
+05
-15
030
010
+15
-005
IDA
IDB
IDC
IDD
PIC 9(3)
PIC 999
PIC S9(2)
PIC S999
75
LENGUAJE COBOL
SUMA. EJEMPLOS
ADD IDA IDB GIVING IDC
ANTES
DESPUÉS
77 IDA PIC S9(2)
77 IDB PIC S9(3)
77 IDC PIC S9(4)
-10
+020
+0030
-10
+020
+0010
ADD -15 IDA IDB GIVING IDC
ANTES
DESPUÉS
77 IDA PIC S9(2)
77 IDB PIC S9(3)
77 IDC PIC S9(4)
-10
+020
+0030
-10
+020
+0005
LENGUAJE COBOL
76
38
SUMA. EJEMPLOS
ADD IDA IDB GIVING IDC
ANTES
DESPUÉS
77 IDA PIC 9(5)
77 IDB PIC 9(4)
77 IDC PIC 99
21987
4593
52
21987
4593
---80 Se han perdido
dígitos (26580)
ADD 0.0003 IDA GIVING IDC
ANTES
DESPUÉS
77 IDA PIC 9V9(5)
77 IDC PIC 9V99
000005
038
000005
000-- se han
perdido
dígitos (0.0008)
LENGUAJE COBOL
77
RESTA
z
La sentencia SUBTRACT se utiliza para restar uno o más
items de datos numéricos de otro u otros items de datos
numéricos, sustituyendo el valor de la diferencia en el
último items de la declaración.
SUBTRACT ident-1/literal-1 .... FROM ident-2
SUBTRACT ident-1/literal-1....FROM
ident-2/literal-2 GIVING ident-3
LENGUAJE COBOL
78
39
RESTA. EJEMPLOS
SUBTRACT IDA FROM IDB
ANTES
DESPUÉS
77 IDA PIC 99
77 IDB PIC 999
10
042
10
032
SUBTRACT IDA 4 IDB
FROM IDC IDD
ANTES
DESPUÉS
77
77
77
77
10
027
52
47
10
027
11
06
IDA
IDB
IDC
IDD
PIC 99
PIC 999
PIC 99
PIC 99
LENGUAJE COBOL
79
RESTA. EJEMPLOS
SUBTRACT CANTIDAD-1, CANTIDAD-2, CANTIDAD-FROM
CANTIDAD-4 GIVING CANTIDAD-5,
CANTIDAD-6 ROUNDED
ON SIZE ERROR PERFORM DESBORDAMIENTO.
z
z
Las operaciones que se realizan en este caso son:
•
•
CANTIDAD-5 = CANTIDAD-4 - (CANTIDAD-3 + CANTIDAD-2 +
CANTIDAD-1).
CANTIDAD-6 = CANTIDAD-4 - (CANTIDAD-3 + CANTIDAD-2 +
CANTIDAD-1).
En el caso de que se produzca el desbordamiento de alguno
de los campos receptores ( CANTIDAD-5, CANTIDAD-6 ) el
programa será desviado a la rutina de desbordamiento.
LENGUAJE COBOL
80
40
RESTA. EJEMPLOS
SUBTRACT IDA FROM IDB
GIVING IDC
ANTES
DESPUÉS
77 IDA PIC 99
77 IDB PIC 999
77 IDC PIC 99
10
032
41
10
032
22
SUBTRACT IDD IDC FROM IDB ANTES
GIVING IDA
DESPUÉS
77
77
77
77
072000
122000
020000
030000
IDA
IDB
IDC
IDD
PIC 9(6)
PIC 9(6)
PIC 9(6)
PIC 9(6)
000123
122000
020000
030000
81
LENGUAJE COBOL
MULTIPLICACIÓN
MULTIPLY ident-1/literal-1 BY ident-2
siendo:
ident-1: multiplicando.
ident-2: multiplicador y campo receptor del resultado de la operación.
MULTIPLY IDB BY IDA
ANTES
DESPUÉS
77 IDA PIC 9(5)
77 IDB PIC 99
01000
25
25000
25
MULTIPLY 0.5 BY IDA
ANTES
DESPUÉS
77 IDA PIC 9(5)
25000
12500
LENGUAJE COBOL
82
41
MULTIPLICACIÓN
MULTIPLY ident-1/literal-1 BY ident-2 GIVING ident-3
MULTIPLY A BY B GIVING C ROUNDED, E ON SIZE ERROR
PERFORM RUTINA-DESBORDAMIENTO.
MULTIPLY IDA BY 0.5 GIVING IDB
ANTES DESPUÉS
77 IDA PIC 9(5)
77 IDB PIC 9(5)
12500
50000
12500
06250
LENGUAJE COBOL
83
DIVISIÓN
DIVIDE ident-1/literal-1 INTO ident-2
DIVIDE A INTO B, C ROUNDED
ON SIZE ERROR
PERFORM RUTINA-DE-DESBORDAMIENTO.
Las operaciones que se realizan son B=B/A y C=C/A, en el caso
de que en algún campo receptor, no cupiera el resultado de las
operaciones realizadas se rompería la secuencia del programa
ejecutándose el párrafo RUTINA DE DESBORDAMIENTO.
LENGUAJE COBOL
84
42
DIVISIÓN
DIVIDE ident-1/literal-1. INTO ident-2 GIVING ident-3
DIVIDE ident-1/literal-1 BY ident-2 GIVING ident-3
DIVIDE ident-1/literal-1 INTO ident-2 GIVING ident-3
REMAINDER ident-4
DIVIDE ident-1/literal-1 BY ident-2 GIVING ident-3
REMAINDER ident-4
85
LENGUAJE COBOL
DIVISIÓN. EJEMPLOS
DIVIDE IDB INTO IDA
ANTES
DESPUÉS
77 IDA PIC 9(5)
77 IDB PIC 99
50000
50
01000
50
DIVIDE IDA BY 365 GIVING IDB
ANTES
DESPUÉS
77 IDA PIC 9(5)
77 IDB PIC 9999
36500
36500
1000
DIVIDE 365 INTO IDA GIVING IDB ANTES
DESPUÉS
77 IDA PIC 9(5)
77 IDB PIC 9999
36500
1000
36500
LENGUAJE COBOL
86
43
DIVISIÓN. EJEMPLOS
DIVIDE DIVIDENDO
BY DIVISOR
GIVING COCIENTE
REMAINDER RESTO
ANTES
DESPUÉS
77
77
77
77
100
03
55
100
03
0100 (01.00)
33
DIVIDENDO
DIVISOR
RESTO
COCIENTE
PIC 999
PIC 99
PIC 99V99
PIC 99
LENGUAJE COBOL
87
COMPUTE
z
Esta sentencia se utiliza para realizar
operaciones aritméticas sin necesidad de
utilizar las declaraciones aritméticas vistas
hasta ahora.
COMPUTE ident-1
[ROUNDED] = expresión-aritmética
[ON SIZE ERROR sentencia-1]
LENGUAJE COBOL
88
44
COMPUTE
SÍMBOLO
OPERACIÓN
REPRESENTADA
PRIORIDAD
+
Suma
MENOR
-
Resta
*
Producto
/
Cociente
**
Exponenciación
MAYOR
LENGUAJE COBOL
89
COMPUTE
COMPUTE A = B ** C.
No tiene sentencia
equivalente.
COMPUTE A = B + C.
ADD B, C GIVING A.
COMPUTE A = B - C.
SUBTRACT C FROM B GIVING A.
COMPUTE A = B * C.
MULTIPLY B BY C GIVING A.
COMPUTE A = B / C.
DIVIDE B BY C GIVING A.
COMPUTE A = -B.
SUBTRACT B FROM
ZERO GIVING A,
MULTIPLY -1 BY B
GIVING A
LENGUAJE COBOL
90
45
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN
VERBOS ENTRADA
SALIDA
INTRODUCCIÓN
z
z
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
LENGUAJE COBOL
92
46
DISPLAY
z
Mediante esta declaración se proporciona
información o mensajes a la consola,
impresora u otro dispositivo de salida.
DISPLAY ident/literal ...
[UPON nombre nemónico/de función]
[WITH NO ADVANCING]
DISPLAY ident-1/literal-1 [LINE ident-2/entero-2]
[POSITION ident-3/entero-3] [opciones] ....
LENGUAJE COBOL
93
DISPLAY. OPCIONES
z
z
z
z
BEEP: 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 EOL
borra desde la posición del cursor hasta el final de la
línea. ERASE EOS borra desde la posición del cursor
hasta el final de la pantalla.
LENGUAJE COBOL
94
47
DISPLAY. OPCIONES
z
z
z
z
z
HIGH: Visualiza el dato en intensidad alta. Por defecto.
LOW: Visualiza el dato en intensidad baja.
REVERSE: Visualiza el dato en 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
95
ACCEPT
z
Esta declaración permite introducir pequeños volúmenes
de datos, necesarios para el programa, desde la consola
u otro dispositivo de entrada.
ACCEPT identificador FROM ATE/DAY/TIME/DAY-OF-WEEK
ACCEPT identificador [FROM nombre-nemónico/CONSOLE/SYSIN]
ACCEPT identificador-1
[LINE identificador-2/entero-2]
[POSITION identificador-3/entero-3] [opciones]
....
LENGUAJE COBOL
96
48
ACCEPT. OPCIONES
z
z
z
z
z
z
z
z
BEEP.
BLINK.
CONVERT.
ECHO: Hace que el dato aceptado sea visualizado sobre el
campo de pantalla una vez finalizada la entrada.
ERASE[EOL/EOS].
HIGH.
LOW.
PROMPT [literal]: Marca la pantalla con el carácter
especificado las posiciones vacías mientras se ejecuta una
operación ACCEPT. Por defecto es el carácter subrayado.
LENGUAJE COBOL
97
ACCEPT. OPCIONES
z
z
z
z
z
z
REVERSE.
SIZE.
TAB: Obliga a pulsar la tecla Enter.
UPDATE: Permite visualizar el contenido del campo
antes de efectuar la entrada. Esto permite modificar
el contenido del correspondiente campo. Esta
cláusula implica también conversión de los datos de
entrada.
UNDERLINE.
UPPER: Convierte la entrada a mayúsculas.
LENGUAJE COBOL
98
49
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN
VERBOS
TRANSFERENCIA DE
DATOS
GENERALIDADES
z
z
z
•
•
•
•
campo emisor = contiene la información a transferir
campo 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.
LENGUAJE COBOL
100
50
VERBO MOVE
Transfiere información de una zona a otra de memoria,
este verbo modifica el contenido del campo receptor por
el contenido del campo emisor, permaneciendo
inalterado éste último campo.
z
MOVE identificador-1/literal TO identificador-2...
z
z
Los efectos de la sentencia MOVE dependen de los tamaños y
especificaciones PICTURE de los campos emisor (identificador-1)
y receptor (identificador-2).
Además, la categoría de los campos emisor y receptor es un
factor al determinar si una instrucción MOVE es válida o no válida.
LENGUAJE COBOL
101
VERBO MOVE
z
z
z
La constante figurativa SPACE, o un campo
alfanumérico editado o alfabético no puede
moverse a un campo numérico o numérico
editado.
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,
LENGUAJE COBOL
102
51
TIPOS DE MOVIMIENTOS
CAMPO RECEPTOR
CAMPO EMISOR
ALFABÉTICO
ALFANUMÉRICO
ALFANUMÉRICO
EDITADO
NUM ENTERO
NUM NO ENTER
NUM EDITADO
Alfabético
SI
SI
NO
Alfanumérico
SI
SI
NO
Alfanumérico editado
SI
SI
NO
Numérico Entero
NO
SI
SI
Numérico No Entero
NO
NO
SI
Numérico Editado
NO
SI
SI
LENGUAJE COBOL
103
TIPOS DE MOVIMIENTOS
z
De un campo numérico a otro numérico de
edición o no.
•
•
•
Los campos emisor y receptor se alinean por el
punto decimal.
Si tamaño (campo receptor) < tamaño (campo
emisor), se produce truncamiento de la parte entero
y/o decimal.
Si tamaño (campo receptor) > tamaño (campo
emisor), se rellena con ceros no significativos en
cualquiera de las partes.
LENGUAJE COBOL
104
52
TIPOS DE MOVIMIENTOS
De un campo alfabético o alfanumérico a otro
de tipo alfabético o alfanumérico de edición o
no.
z
•
•
•
El contenido del campo emisor se va colocando en
el campo receptor de izquierda a derecha, excepto
cuando el campo receptor se ha especificado la
cláusula JUSTIFIED RIGHT.
Si tamaño (campo receptor) < tamaño(campo
emisor), se produce truncamiento.
Si tamaño (campo receptor) > tamaño(campo
emisor), se rellena con blancos.
LENGUAJE COBOL
105
VERBO MOVE CORRESPONDING
z
La transferencia de un campo compuesto puede
realizarse como un campo elemental, cuya longitud es la
suma de los campos elementales que lo forman, o bien
moviendo los campos elementales uno a uno.
MOVE CORRESPONDING/CORR identificador-1 TO identificador-2 ...
z
Con esta opción del verbo MOVE se transfiere el contenido
de los campos elementales de identificador-1 a los campos
elementales de igual nombre de identificador-2.
LENGUAJE COBOL
106
53
EJEMPLOS
MOVE EMISOR TO RECEPTOR
ANTES
77 EMISOR PIC 99V99
77 RECEPTOR PIC 999V99
1234
98765
DESPUÉS
(12.34)
(987.65)
1234
01234
(12.34)
(012.34)
MOVE EMISOR TO RECEPTOR
ANTES
DESPUÉS
77 EMISOR
PIC 9V9
77 RECEPTOR PIC 999V999
11 (1.1)
123123 (123.123)
11 (1.1)
001100 (001.100)
MOVE EMISOR TO RECEPTOR
ANTES
DESPUÉS
77 EMISOR
PIC 999V99
77 RECEPTOR PIC 999.99.
12312 (123.12)
321.98
12312 (123.12)
123.12
MOVE EMISOR TO RECEPTOR
ANTES
DESPUES
77 EMISOR PIC 9(4)V9
77 RECEPTOR PIC 99V999
12345 (1234.5)
98765 (98.765)
12345 (1234.5)
34500 (34.500)
LENGUAJE COBOL
107
EJEMPLOS
01
GRUPO-1
05
NUMERO
PIC
99.
05
DIA
PIC
X(7).
05
AÑO
PIC
99.
01
GRUPO-2
05
LOCALIDAD
PIC
X(15).
05
MUNICIPIO
PIC
999.
05
PRESUPUESTO PIC
9(5)V99.
GRUPO-1
12JUEVESb95
GRUPO-2
ARANDAbDEbDUERO9815321572
Después de ejecutar MOVE GRUPO-1 TO GRUPO-2
GRUPO-1
12JUEVESb95
LENGUAJE COBOL
108
54
EJEMPLOS
Si se ha declarado la tabla siguiente:
01 TABLA
02 TABLA-CELDA OCCURS 50 TIMES PIC 9(5)V99.
MOVE ZEROS TO TABLA rellena los 350 bytes del campo de TABLA
con ceros. Como resultado cada uno de los 7 bytes de los campos de
TABLA-CELDA también tendrá valores cero.
109
LENGUAJE COBOL
EJEMPLOS
01
01
REGISTRO-PERSONAL.
03
NUMERO
03
NOMBRE
03
DIRECCION
03
DIS-POSTAL
PIC
PIC
PIC
PIC
9(5).
X(30).
X(20).
99.
LINEA-IMPRESION.
02
FILLER
02
NUMERO
02
FILLER
02
NOMBRE
02
FILLER
02
DIRECCION
02
FILLER
02
DIS-POSTAL
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
X(10)
Z(5).
X(5)
X(30).
X(5)
X(20).
X(5)
ZZ.
VALUE SPACES.
VALUE SPACES.
VALUE SPACES.
VALUE SPACES.
MOVE CORRESPONDING REGISTRO-PERSONAL TO LINEA-IMPRESION
LENGUAJE COBOL
110
55
LENGUAJE ORIENTADO A
SISTEMAS DE GESTIÓN
ESTRUCTURAS DE
CONTROL
INTRODUCCIÓN
z
z
El teorema de la estructura establece que un
programa propio puede ser escrito utilizando
solamente tres tipos de estructuras de control:
secuencial, repetitiva y condicional.
Un programa se define como propio si cumple:
•
•
•
Posee un solo punto de entrada y otro de salida para
el control del programa.
Existen caminos desde la entrada hasta la salida que
se pueden seguir y que pasan por todas las partes del
programa.
Todas las instrucciones son ejecutables y no existen
bucles infinitos.
LENGUAJE COBOL
112
56
PROCEDURE DIVISION
z
z
Es precisamente en esta 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
113
ESTRUCTURA SECUENCIAL
z
Se emplea para especificar la secuencia de ejecución
de un programa modular representado por párrafos.
PERFORM nombre-párrafo
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 GESTIÓN
ESTRUCTURAS DE
CONTROL
VERBO IF
z
Este verbo produce la evaluación de una
condición, dependiendo la siguiente
acción del programa a realizar, de la
evaluación de la misma.
IF condición THEN acción-1/ NEXT SENTENCE
[ELSE acción-2/NEXT SENTENCE]
LENGUAJE COBOL
116
58
VERBO IF
PROGRAMA
CONDICIÓN
P-PROGRAMA
F-PROGRAMA
CIERTO
SENTENCIA 1
SENTENCIA 2
PROCEDURE DIVISION.
PROGRAMA.
PERFORM P-PROGRAMA.
IF condición
THEN PERFORM CIERTO.
PERFORM F-PROGRAMA.
.
.
CIERTO.
sentencia-1
sentencia-2
117
LENGUAJE COBOL
VERBO IF
PROGRAMA
CONDICIÓN
P-PROGRAMA
CIERTO
FALSO
SENTENCIA 1
SENTENCIA 3
SENTENCIA 2
SENTENCIA 4
PROCEDURE DIVISION.
PROGRAMA.
PERFORM P-PROGRAMA.
IF condición
THEN PERFORM CIERTO
ELSE PERFORM FALSO.
PERFORM F-PROGRAMA.
F-PROGRAMA
CIERTO.
sentencia-1.
sentencia-2.
FALSO.
sentencia-3.
sentencia-4.
LENGUAJE COBOL
118
59
CONDICIONES. TIPOS
z
Condiciones de relación.
•
Las condiciones de relación se refieren a las
comparaciones entre dos items. El tipo de comparación
se indica por el operador relacional que puede estar en
forma de palabras o de símbolos.
identificador-1
literal-1
exp-aritmética-1
IS operador
identificador-2
literal-2
exp-artimética-2
119
LENGUAJE COBOL
CONDICIONES. TIPOS
Operador
Significado
Símbolo
GREATER THAN
>
Mayor que
LESS THAN
<
Menor que
EQUAL TO
=
NOT GREATER THAN
NOT >
Igual a
No mayor que
NOT LESS THAN
NOT <
No menor que
NOT EQUAL TO
NOT =
No igual a
LENGUAJE COBOL
120
60
CONDICIONES. TIPOS
z
Condiciones de clase.
•
El uso de una condición de clase hace posible
determinar si un identificador pertenece o no a una de
las cuatro clases incluidas en el Formato siguiente:
Identificador
IS [NOT]
NUMERIC
ALPHABETIC
ALPHABETIC-LOWER
ALPHABETIC-UPPER
121
LENGUAJE COBOL
CONDICIONES. TIPOS
z
Condiciones de signo.
•
Permiten determinar si el valor de una campo
numérico o de una expresión aritmética es positivo,
negativo o cero. El Formato general es el siguiente:
Expresión Aritmética
IS [NOT]
LENGUAJE COBOL
POSITIVE
NEGATIVE
ZERO
122
61
CONDICIONES. TIPOS
z
Condiciones de nombre de condición.
•
Este tipo de condición facilita la asociación de uno o
varios valores a un nombre, el cual se puede
interrogar durante el proceso. Los valores asociados
al nombre se definen en la DATA DIVISION al definir
el campo.
02 campo-n PIC.....
88 nomb-condición VALUE IS lit-1 THRU lit-n
LENGUAJE COBOL
123
CONDICIONES. TIPOS
z
Supongamos que disponemos de un fichero secuencial
en el que la estructura de sus registros soporta un campo
de tipo alfanumérico para determinar el sexo de los
empleados.
02 SEXO-EM
PIC X.
88 MASCULINO
VALUE ‘1’.
88 FEMENINO
VALUE ‘2’.
88 ERROR-CODIGO VALUES ARE LOW-VALUES THRU ZERO,
‘3’ THRU HIGH-VALUES.
LENGUAJE COBOL
124
62
CONDICIONES. TIPOS
z
Condiciones compuestas.
•
•
•
•
•
•
•
Son varias condiciones simples enlazadas mediante
operaciones lógicas AND y OR.
Orden de evaluación de las condiciones
1 - PARÉNTESIS
2 - NOT
3 - AND
4 - OR
5 - A igualdad de operadores de izquierda a derecha
condición-1 [NOT] AND/[NOT] OR condición-2
LENGUAJE COBOL
125
VERBO EVALUATE
z
Este verbo produce la evaluación de una condición,
dependiendo la siguiente acción del programa a realizar,
de la evaluación de la misma. Es una forma de
implementar la estructura Casos.
EVALUATE identificador
WHEN literal-1 THRU literal-2 instrucción imperativa-1
...........
WHEN OTHER instrucción imperativa-n
LENGUAJE COBOL
126
63
VERBO EVALUATE
PROGRAMA
IDENTIFICADOR = V1
= V2
P-PROGRAMA
PÁRRAFO-1
PÁRRAFO-2
= V3
PÁRRAFO-3
F-PROGRAMA
PROCEDURE DIVISION.
PROGRAMA.
PERFORM P-PROGRAMA.
EVALUATE identificador
WHEN v1
PERFORM PARRAFO-1
WHEN v2
PERFORM PARRAFO-2
WHEN OTHER PERFORM PARRAFO-3
END-EVALUATE.
PERFORM F-PROGRAMA.
STOP RUN.
127
LENGUAJE COBOL
VERBO EVALUATE
Si tenemos un código que puede tener como valores: 1, 2, y 3. El
siguiente árbol programático representa la estructura condicional anidada
que verifica el valor del código y ejecuta el párrafo adecuado.
VALOR-CÓDIGO
CÓDIGO 0 1
P-VALOR-CÓDIGO
F-VALOR-CÓDIGO
AÑADIR
CÓDIGO = 2
FALSO
BORRAR
CODIGO = 3
MODIFICAR
LENGUAJE COBOL
ERROR
128
64
VERBO EVALUATE
VALOR-CÓDIGO
CÓDOGO = 1
=2
P-VALOR-CÓDIGO
AÑADIR
OTRO
=3
BORRAR
MODIFICAR
ERROR
F-VALOR-CÓDIGO
Si tenemos un código que puede tener como valores: 1, 2, y 3. El siguiente árbol
programático también representa la estructura condicional que verifica el valor
del código y ejecuta el párrafo adecuado.
129
LENGUAJE COBOL
VERBO EVALUATE
EVALUATE TRUE
WHEN NOMBRE-DE-CONDICION instrucción imperativa-1
...........
WHEN OTHER instrucción imperativa-n
DATA DIVISION.
WORKING-STORAGE SECTION.
01
CODIGO
PIC 9.
88
AÑADIR-REGISTRO
88
SUPRIMIR-REGISTRO
88
MODIFICAR-REGISTRO
88
ERROR-CODIGO
EVALUATE TRUE
WHEN añadir-registro
WHEN suprimir-registro
WHEN modificar-registro
WHEN OTHER
END-EVALUATE.
VALUE
1.
VALUE
2.
VALUE
3.
VALUE ARE 0 4 THRU 9.
PERFORM
PERFORM
PERFORM
PERFORM
LENGUAJE COBOL
AÑADIR
SUPRIMIR
MODIFICAR
CODIGO-ERRONEO
130
65
VERBO EVALUATE
CONDICIÓN
CÓDIGO
CALIFICACIÓN
ACCIÓN A REALIZAR
1o2
3
4
cualquier otro
A, B o C
AoB
cualquiera
cualquiera
PÁRRAFO-1
PÁRRAFO-2
PÁRRAFO-3
PÁRRAFO-4
EVALUATE CÓDIGO ALSO
WHEN 1 THRU 2
WHEN 3
WHEN 4
WHEN OTHER
END-EVALUATE.
CALIFICACIÓN
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 GESTIÓN
ESTRUCTURAS DE
CONTROL
66
VERBO PERFORM
PERFORM párrafo entero/identificador TIMES
PROCEDURE DIVISION.
PROGRAMA.
..............................
PERFORM BUCLE 5 TIMES
.............................
BUCLE.
sentencia 1.
sentencia 2.
BUCLE
5 VECES
133
LENGUAJE COBOL
VERBO PERFORM
PERFORM párrafo [WITH TEST BEFORE]
UNTIL condición
PROGRAMA
P-PROGRAMA
F-PROGRAMA
PÁRRAFO
CONDICIÓN
LENGUAJE COBOL
134
67
VERBO PERFORM
PERFORM párrafo WITH TEST AFTER
UNTIL condición
PROGRAMA
P-PROGRAMA
F-PROGRAMA
PÁRRAFO
CONDICIÓN
(DESPUÉS)
LENGUAJE COBOL
135
VERBO PERFORM
PERFORM párrafo
[WITH TEST BEFORE/AFTER]
VARYING iden-1 FROM lit-1/iden-2
BY lit-2/iden-3 UNTIL condición-1
LENGUAJE COBOL
136
68
VERBO PERFORM
z
La ejecución, si no se ha especificado la opción TEST
AFTER se realiza de la siguiente forma:
a) El identificador-1 se inicializa al valor especificado por
literal-1 o identificador-2 que sigue al FROM.
b) Se evalúa la condición-1.
1. Si es cierta, se da por finalizada la ejecución de la sentencia
PERFORM y se pasa a ejecutar la siguiente sentencia del
programa.
2. Si es falsa, se pasa al punto c.
c) Se ejecuta el párrafo
d) Se suma a identificador-1 el valor especificado por
identificador-3 que sigue a BY y se vuelve al punto b.
137
LENGUAJE COBOL
VERBO PERFORM
PERFORM párrafo WITH TEST BEFORE
VARYING iden-1 FROM iden-2
BY iden-3 UNTIL condición
PROGRAMA
IDEN-1 = IDEN-2 , IDEN-3
P-PROGRAMA
F-PROGRAMA
PÁRRAFO
CONDICIÓN
LENGUAJE COBOL
138
69
VERBO PERFORM
PERFORM párrafo
[WITH TEST BEFORE/AFTER]
VARYING iden-1 FROM lit-1/iden-2
BY lit-3/iden-3 UNTIL condición-1
AFTER iden-4 FROM lit-5/iden-5
BY lit-4/iden-6 UNTIL condición-2
LENGUAJE COBOL
139
VERBO PERFORM
a)
b)
El identificador-1 y el identificador-4 se inicializan a los
valores respectivos que siguen a cada FROM.
Se evalúa la condición-1.
1.
2.
c)
Se evalúa la condición-2.
1.
2.
d)
e)
Si es cierta, se da por finalizada la ejecución 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, 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.
Si es falsa se pasa al punto d.
Se ejecuta el
Se suma a identificador-4 el valor especificado por
identificador-6 que sigue a BY y se vuelve al punto c.
LENGUAJE COBOL
140
70
VERBO PERFORM
PROGRAMA
IDEN-1 = IDEN-2 , IDEN-3
IDEN-4 = IDEN-5 , IDEN-6
P-PROGRAMA
F-PROGRAMA
PÁRRAFO
CONDICIÓN 1
CONDICIÓN 2
PERFORM párrafo [VARYING iden-1 FROM iden-2
BY iden-3 UNTIL condición-1
AFTER iden-4 FROM iden-5
BY iden-6 UNTIL condición-2
LENGUAJE COBOL
141
71
Descargar