Cobol
-
Upload
carlos-fernandez-fernandez -
Category
Documents
-
view
47 -
download
2
Embed Size (px)
Transcript of 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)

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.

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

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.

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

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.

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.

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

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.

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.

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

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.

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.

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

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.

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.

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

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

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.

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

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

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

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

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

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

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.

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

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.

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

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

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

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

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

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

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

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]

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

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

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

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.

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

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.

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

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]

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

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

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.

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

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.

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.

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,

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.

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.

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

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

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.

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

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]

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

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

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

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.

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

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

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.

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

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

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

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

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.

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