LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN

ELEMENTOS DEL LENGUAJE COBOL

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

• • • • •

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

Lenguaje

• • • •

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

LENGUAJE COBOL

2

1

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

3

ELEMENTOS DEL LENGUAJE
Constantes

• • •

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.

LENGUAJE COBOL

4

2

ELEMENTOS DEL LENGUAJE
Palabras Reservadas.

• •

Identificadores predefinidos que tienen un significado especial en COBOL. Por ejemplo: IDENTIFICATION, FILLER, ADD, COMPUTE, READ, REWRITE

Identificadores

• • • • • •

Son los nombres creados por el programador. Se forman por la 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

5

ELEMENTOS DEL LENGUAJE
Operadores.


Operador + * / ** = ()

Los operadores son símbolos que indican cómo son manipulados los datos
Significado Suma Resta Producto División Exponenciación Asignación Dar Prioridad Ejemplo A+B A-B A*B A/B A ** B C=A+B D = (A + B)*C

Operadores Aritméticos

LENGUAJE COBOL

6

3

un paréntesis derecho no puede ir precedido por un espacio. pero si tienen que ir seguidos por un espacio. Un paréntesis izquierdo no puede ir seguido por un espacio. El punto. Un operador aritmético o un signo igual tiene que ir precedido por un espacio y seguido por un espacio.ELEMENTOS DEL LENGUAJE Operadores de Relación = < > <= >= Operadores Lógicos NOT AND OR Negación Conjunción Disyunción NOT ( A = B ) A = B AND A > B A = B OR A < B Igual que Menor que Mayor que Menor o igual que Mayor o igual que A=B A<B A>B A <= B A >= B LENGUAJE COBOL 7 ELEMENTOS DEL LENGUAJE Expresiones Aritméticas. LENGUAJE COBOL 8 4 . punto y coma o coma no pueden ir precedidos por un espacio. una variable o un conjunto de constantes y variables unidas por operadores aritméticos. • • • • Una expresión aritmética puede ser una constante.

/ • +. Los operadores que intervienen en una expresión de Boole pueden ser: operadores de relación y operadores lógicos.ELEMENTOS DEL LENGUAJE Expresiones Aritméticas. • Una expresión de Boole da como resultado • un valor VERDADERO o FALSO. del más interno al más externo. • Después se evalúan los operadores con la prioridad siguiente: •+ y • ** • *. • A la hora de evaluar una expresión • Primero se evalúan las operaciones entre paréntesis. A >= 30 AND B = C A = 0 AND B * 2 NOT= 0 OR C = 0 LENGUAJE COBOL 10 5 .unarios LENGUAJE COBOL 9 ELEMENTOS DEL LENGUAJE Expresiones de Boole.- .

LENGUAJE COBOL 12 6 . [ENVIRONMENT DIVISION.LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ESTRUCTURA DE UN PROGRAMA EN COBOL DIVISIONES.] [DATA DIVISION.] PROCEDURE DIVISION. SECCIONES Y PÁRRAFOS IDENTIFICATION DIVISION.

OBJECT-COMPUTER. LENGUAJE COBOL 14 7 . párrafo SELECT IMPRESORA ASSING TO PRINTER. 01-ENERO-93. ENVIRONMENT DIVISION. AUTHOR. párrafo DECIMAL-POINT IS COMMA.DIVISIONES. REMARKS. 01-ENERO-93. EUI. cuando se escribió etc. párrafo DATE-WRITTEN. división PROGRAM-ID. AUTHOR. DATE-COMPILED. cláusula INPUT-OUTPUT SECTION. IBM PERSONAL COMPUTER. EJEMPLO. DATE-WRITTEN. SECCIONES Y PÁRRAFOS IDENTIFICATION DIVISION. DATE-COMPILED. sección FILE-CONTROL. PÁRRAFOS • • • • • • • PROGRAM-ID. además de proporcionar el nombre del autor. INSTALLATION. sección SOURCE-COMPUTER. cláusulas LENGUAJE COBOL 13 DIVISIONES EN COBOL IDENTIFICATION DIVISION • • PROPÓSITO: Identificar el programa de forma que se distinga de los otros. IBM PERSONAL COMPUTER. SECURITY. SPECIAL-NAMES. CONFIGURATION SECTION.

todo ello a nivel de comentarios PÁRRAFOS SOURCE-COMPUTER. SPECIAL-NAMES. PÁRRAFOS FILE-CONTROL • • • • LENGUAJE COBOL 16 8 . INPUT-OUPUT SECTION.] INPUT-OUTPUT SECTION. Modelo de ordenador. Entendiéndose por entorno.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. PROPÓSITO: Declarar los ficheros utilizados y la asignación a los dispositivos de E/S. SECCIONES • • CONFIGURATION SECTION. • • • [[Nombre de función IS nombre nemotécnico] • [CURRENCY SIGN IS literal] • [DECIMAL-POINT IS COMMA]. PROPÓSITO: Tiene como finalidad describir las características del computador usado para compilar y ejecutar el programa. LENGUAJE COBOL 15 DIVISIONES EN COBOL • • CONFIGURATION SECTION. OBJECT-COMPUTER. la clase de sistema que se va a utilizar así como los dispositivos de entrada/salida. Modelo de ordenador.

esto es. De esta forma podemos poner: • • 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 ($). en los campos de edición. LENGUAJE COBOL 18 9 . PÁRRAFOS WORKING-STORAGE SECTION. Cualquier dato utilizado en la codificación del programa debe estar definido en esta división.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. donde se especifican las instrucciones adecuadas para resolver el problema. LENGUAJE COBOL 17 DIVISIONES EN COBOL • • • DATA DIVISION PROPÓSITO: En este apartado se definen los datos que van a ser utilizados. FILE SECTION. • • PROCEDURE DIVISION PROPÓSITO: Es en esta división donde se codifica el algoritmo propiamente dicho. los registros de cada fichero etc. El carácter sustituto de éste. 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. tales como ficheros. tiene que ser uno solo y alfabético.

. Cabeceras de sección : CONFIGURATION SECTION.HOJA DE CODIFICACIÓN 123456 7 8 A 11 Se utilizaban para indicar los números de secuencia... Casi todas estas reglas son innecesarias hoy en día. 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. Nombre de procedimientos: ABRIR-FICHEROS... cuando la longitud de éste.. Descripciones de nivel FD: FD IMPRESO.. Si el carácter especial que se incluye en esta columna es (-) indica que es continuación de un literal no numérico. Se utiliza para poner un carácter especial (*) que indica comienzo de un comentario. ocupa más de una línea. Los números de nivel 01 y 77 Margen B Todo aquello que no esté en los apartados anteriores. con la simple elección de un editor adecuado y un estilo de programación racional y estructurado. Cabeceras de párrafos: PROGRAM-ID. LENGUAJE COBOL 19 HOJA DE CODIFICACIÓN Margen A • • • • • • • Cabeceras de división: IDENTIFICATION DIVISION. LENGUAJE COBOL 20 10 ..

Si a lo largo de una línea física no se encuentra un punto.} [ I-O CONTROL. { FILE CONTROL. LENGUAJE COBOL 22 11 . nombre-de-párrafo.. OBJECT-COMPUTER. ] [ SECURITY.. ] [ INSTALLATION. No es obligatorio llenar totalmente una línea física. {Sentencia}.. comentarios. Si se utiliza más de un espacio como separador entre palabras. modelo-ord. Si una entrada o una sentencia del programa no cabe en una línea física. [ CONFIGURATION SECTION. Se deben dejar líneas en blanco.. Cada entrada y cada sentencia del programa debe finalizar con un punto... PROGRAM-ID.. nombres especiales] [ INPUT-OUTPUT SECTION.]] DATA DIVISION [ FILE SECTION. SOURCE-COMPUTER..] PROCEDURE DIVISION. comentarios... comentarios. ] [ DATE-WRITTEN.REGLAS DE CODIFICACIÓN Los nombres de división. se continúa en la línea o líneas siguientes pero en el área B.] [ WORKING-STORAGE SECTION.}. ] ENVIRONMENT DIVISION.. control de archivos.. {Sentencia}. esto es. comentarios. modelo-ord.. cada entrada y cada sentencia del programa puede ocupar varias líneas físicas. nombre de programa. comentarios. la siguiente línea será tomada como continuación de la anterior... ] [ DATE-COMPILED.. LENGUAJE COBOL 21 ESTRUCTURA GENERAL IDENTIFICATION DIVISION. el compilador lo interpreta como uno solo. sección y párrafos deben escribirse solos en una línea y finalizar con un punto. comentarios... [ AUTHOR.. ] [ REMARKS. control entrada/salida.}. La coma y el punto y coma son opcionales y cuando se utilizan es para hacer más clara la redacción del programa. pero sí seguidos de un espacio. la coma y el punto y coma no deben ir precedidos de un espacio. SPECIAL-NAMES. nombre-de-párrafo. El punto..

LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ESTRUCTURA DE UN PROGRAMA EN COBOL DIVISIONES. SECCIONES Y PÁRRAFOS IDENTIFICATION DIVISION.] [DATA DIVISION.] PROCEDURE DIVISION. LENGUAJE COBOL 24 12 . [ENVIRONMENT DIVISION.

ENVIRONMENT DIVISION. LENGUAJE COBOL 26 13 .DIVISIONES. CONFIGURATION SECTION. SECURITY. sección SOURCE-COMPUTER. REMARKS. cláusula INPUT-OUTPUT SECTION. párrafo SELECT IMPRESORA ASSING TO PRINTER. párrafo DECIMAL-POINT IS COMMA. AUTHOR. además de proporcionar el nombre del autor. sección FILE-CONTROL. 01-ENERO-93. 01-ENERO-93. división PROGRAM-ID. cláusulas LENGUAJE COBOL 25 DIVISIONES EN COBOL IDENTIFICATION DIVISION • • PROPÓSITO: Identificar el programa de forma que se distinga de los otros. INSTALLATION. AUTHOR. EJEMPLO. DATE-COMPILED. EUI. DATE-COMPILED. cuando se escribió etc. SECCIONES Y PÁRRAFOS IDENTIFICATION DIVISION. DATE-WRITTEN. IBM PERSONAL COMPUTER. IBM PERSONAL COMPUTER. OBJECT-COMPUTER. PÁRRAFOS • • • • • • • PROGRAM-ID. párrafo DATE-WRITTEN. SPECIAL-NAMES.

la clase de sistema que se va a utilizar así como los dispositivos de entrada/salida. Modelo de ordenador. OBJECT-COMPUTER.] INPUT-OUTPUT SECTION. LENGUAJE COBOL 27 DIVISIONES EN COBOL • • CONFIGURATION SECTION. PÁRRAFOS FILE-CONTROL • • • • LENGUAJE COBOL 28 14 . PROPÓSITO: Tiene como finalidad describir las características del computador usado para compilar y ejecutar el programa. PROPÓSITO: Declarar los ficheros utilizados y la asignación a los dispositivos de E/S. • • • [[Nombre de función IS nombre nemotécnico] • [CURRENCY SIGN IS literal] • [DECIMAL-POINT IS COMMA]. todo ello a nivel de comentarios PÁRRAFOS SOURCE-COMPUTER.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. Modelo de ordenador. SECCIONES • • CONFIGURATION SECTION. INPUT-OUPUT SECTION. SPECIAL-NAMES. Entendiéndose por entorno.

LENGUAJE COBOL 30 15 . los registros de cada fichero etc. donde se especifican las instrucciones adecuadas para resolver el problema. 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. De esta forma podemos poner: • • 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 ($). en los campos de edición. esto es. LENGUAJE COBOL 29 DIVISIONES EN COBOL • • • DATA DIVISION PROPÓSITO: En este apartado se definen los datos que van a ser utilizados. PÁRRAFOS WORKING-STORAGE SECTION. tiene que ser uno solo y alfabético. tales como ficheros. FILE SECTION. • • PROCEDURE DIVISION PROPÓSITO: Es en esta división donde se codifica el algoritmo propiamente dicho. Cualquier dato utilizado en la codificación del programa debe estar definido en esta división.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. El carácter sustituto de éste.

Cabeceras de párrafos: PROGRAM-ID. Casi todas estas reglas son innecesarias hoy en día.... LENGUAJE COBOL 31 HOJA DE CODIFICACIÓN Margen A • • • • • • • Cabeceras de división: IDENTIFICATION DIVISION. Nombre de procedimientos: ABRIR-FICHEROS. LENGUAJE COBOL 32 16 . Si el carácter especial que se incluye en esta columna es (-) indica que es continuación de un literal no numérico.. Cabeceras de sección : CONFIGURATION SECTION.HOJA DE CODIFICACIÓN 123456 7 8 A 11 Se utilizaban para indicar los números de secuencia. Los números de nivel 01 y 77 Margen B Todo aquello que no esté en los apartados anteriores. ocupa más de una línea.. Descripciones de nivel FD: FD IMPRESO... se utilizan normalmente para escribir comentarios que identifican el programa. cuando la longitud de éste. Se utiliza para poner un carácter especial (*) que indica comienzo de un comentario... con la simple elección de un editor adecuado y un estilo de programación racional y estructurado. permitiendo ordenar fácilmente el programa 12 A 72 73 A 80 MARGEN A MARGEN B Son opcionales.

. comentarios.. nombre de programa. LENGUAJE COBOL 34 17 . se continúa en la línea o líneas siguientes pero en el área B. comentarios. SOURCE-COMPUTER..] [ WORKING-STORAGE SECTION. {Sentencia}..}. nombre-de-párrafo. pero sí seguidos de un espacio. cada entrada y cada sentencia del programa puede ocupar varias líneas físicas.. SPECIAL-NAMES.} [ I-O CONTROL.. nombres especiales] [ INPUT-OUTPUT SECTION..... Si una entrada o una sentencia del programa no cabe en una línea física. { FILE CONTROL. PROGRAM-ID. comentarios. ] ENVIRONMENT DIVISION.] PROCEDURE DIVISION... Si se utiliza más de un espacio como separador entre palabras.. esto es.REGLAS DE CODIFICACIÓN Los nombres de división. ] [ REMARKS.. sección y párrafos deben escribirse solos en una línea y finalizar con un punto. [ CONFIGURATION SECTION. la siguiente línea será tomada como continuación de la anterior. comentarios. modelo-ord..}. control entrada/salida. Si a lo largo de una línea física no se encuentra un punto. {Sentencia}.. nombre-de-párrafo. Se deben dejar líneas en blanco. Cada entrada y cada sentencia del programa debe finalizar con un punto. No es obligatorio llenar totalmente una línea física. comentarios. LENGUAJE COBOL 33 ESTRUCTURA GENERAL IDENTIFICATION DIVISION. ] [ DATE-WRITTEN. comentarios.. control de archivos. OBJECT-COMPUTER..]] DATA DIVISION [ FILE SECTION. La coma y el punto y coma son opcionales y cuando se utilizan es para hacer más clara la redacción del programa. el compilador lo interpreta como uno solo. modelo-ord. ] [ DATE-COMPILED. El punto.. ] [ INSTALLATION. la coma y el punto y coma no deben ir precedidos de un espacio.. [ AUTHOR. ] [ SECURITY.

. [ Entrada de descripción de variables o registros ]] LENGUAJE COBOL 36 18 .LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN LOS DATOS DATA DIVISION • • FUNCIÓN Se describen los datos que van a ser usados.}] [WORKING-STORAGE SECTION. creados. Se describe la estructura de los ficheros que se van a utilizar.. [FILE SECTION... { Entrada de descripción de ficheros. o producidos por el programa.} { Entrada de descripción de registros. así como las variables utilizadas en el programa y que no son parte de los ficheros.. FORMATO DATA DIVISION.

Permite definir el tipo y el tamaño del campo. No forman parte de la descripción de los ficheros. LENGUAJE COBOL 38 19 . Formato mínimo para su definición: número-de-nivel nombre-de-dato PICTURE especificación de formato. así como las operaciones que con él pueden realizarse. el contenido del mismo. Los datos se clasifican en: • • • Campos Independientes Campos Compuestos Tablas LENGUAJE COBOL 37 CAMPOS INDEPENDIENTES Es un campo de trabajo que será definido en la sección de “working”. PICTURE. Donde: • • • Número-de-nivel.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. Un nombre de datos sirve para nombrar un campo con el fin de poder referenciar en el programa. Nombre-de-datos. Se utiliza el nivel 77. Determina la información que puede almacenarse en el campo.

50 452. PIC 99999 2.29 -1251. PIC 99v99 2.18 Representación INTERNA 012234 8956 0001234567 0285 38^5 0452^39 550 23561^00 156^29 1251^16 0000^10 0325^18 LENGUAJE COBOL 40 20 .00 156.CLÁUSULA PICTURE PICTURE/PIC IS especificación de formato. PIC 9(5) 1.39 550 23561. PIC S999 2.16 -0. Carácter 9 V S Descripción Cualquier dígito del 0 al 9 Posición Decimal Signo Ejemplos 1.10 -325. PIC 9(2)v99 1. PIC S99v99 LENGUAJE COBOL 39 CLÁUSULA PICTURE Descripción 77 CANT PIC 9(6) 77 CANT PIC 9999 77 CANT PIC 9(10) 77 CANT PIC 9999 77 CANT PIC 99V9 77 CANT PIC 9(4)V99 77 CANT PIC 999 77 CANT 99999V99 77 CANT PIC S999V99 77 CANT S9(3)V99 77 CANT S9(4)V99 77 CANT S9(4)V99 Valor Numérico 12234 8956 1234567 285 38.

Representa la aparición del signo. 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. 1. U U U G E E E I L N N N O O LENGUAJE COBOL 41 CLÁUSULA PICTURE Carácter $ . . GIL Representado en el Almacenamiento como B B B D . 2. 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. 2.CLÁUSULA PICTURE Carácter A X Descripción Cualquier carácter letra Cualquier carácter Ejemplos 1. Sirve para reemplazar los ceros no significativos (a la izquierda) por asteriscos Sirve para reemplazar los ceros no significativos por blancos Se inserta en el extremo izquierdo o derecho. Si el número es positivo aparecerá un + y si es negativo aparecerá un -. PIC AAAAA PIC A(5) PIC XXXXX PIC X(5) Descripción 77 VALOR PIC XXXXX 77 VALOR PIC X(5) 77 VALOR PIC X(5) 77 VALOR PIC X(8) Ejemplo BUENO BUEN BUENOS D. * Z + LENGUAJE COBOL 42 21 .

CLÁUSULA PICTURE Carácter Descripción Se inserta en el extremo izquierdo o derecho.99 9(4).99 99.99 99V.21 000. Representa la aparición del signo bancario DB de débito. Cuando el valor es positivo aparecerán blancos. Representa la aparición del signo bancario CR de crédito. Cuando el valor es positivo aparecerán blancos.99 999.54 NO VALIDO 54. si el valor es negativo aparece los caracteres CR.00 LENGUAJE COBOL 44 22 .21 0543. Se usan para insertar ceros en las posiciones en que deben aparecer Se usan para insertar blancos en las posiciones en que deben aparecer CR DB 0 B LENGUAJE COBOL 43 CLÁUSULA PICTURE PICTURE 9(4)V99 9(4)V99 9(3)V999 9V99 99 9999V99 CONTENIDO 654321 054321 000546 567 54 500000 PICTURE EDICIÓN 9(4). Representa la aparición del signo.99 Resultado Editado 6543.99 999. Si el número es positivo aparecerá un blanco y si es negativo aparecerá un -. si el valor es negativo aparece los caracteres DB.00 000.

45 LENGUAJE COBOL 46 23 .ZZ Z(4).ZZ b704 103.00 bb1.01 LENGUAJE COBOL 45 CLÁUSULA PICTURE PICTURE 9(6) 9(6) 9(6) 9(5)V99 CONTENIDO 012345 000012 000123 0012345 PICTURE EDICIÓN ***999 ***999 ***999 *****.ZZ ZZZ.03 blancos bb12.99 Resultado Editado *12345 ***012 ***123 **123.34 bbb.CLÁUSULA PICTURE PICTURE 9999 999V 9(3)V99 999V99 9(4)V99 999V99 CONTENIDO 0704 103 00103 00000 001234 00001 PICTURE Resultado EDICIÓN Editado ZZZ9 ZZZ.99 Z(3).99 ZZZ.

567 1.CLÁUSULA PICTURE PICTURE CONTENIDO PICTURE EDICIÓN 9.999.340 1bb23 10023 9(7) 9(3)V99 999 9(4) 999 999 1234567 12345 123 1234 123 123 LENGUAJE COBOL 47 CLÁUSULA PICTURE PICTURE CONTENIDO PICTURE EDICIÓN $9999 $Z999 $*999 $*****.990 9BB99 90099 Resultado Editado 1.234.99 $**.000.009.000.234.99 9B00B990 9.999 9.***.990.230.45 $*1.45 1b00b230 1.002.56 9(4) 9(4) 9(4) 9(5)V99 9(5)V99 0123 0123 0123 0012345 0123456 LENGUAJE COBOL 48 24 .99 Resultado Editado $0123 $b123 $*123 $**123.

99DB $999.99 ++++.25 +$579.99 +$999.99 ++++.82 LENGUAJE COBOL 50 25 .55 blancos 9(5)V99 0475682 $$$.40 -5.68bb -$651.45DB $182.756.99CR 999.CLÁUSULA PICTURE PICTURE S999 S999 S999 S9(3)V99 S999V99 S9(3)V99 S9(3)V99 S9(3)V99 CONTENIDO -123 +628 +456 -12345 -18200 +15768 -65125 +57950 PICTURE EDICIÓN +999 -999 999+ 999.99 Resultado Editado -123 628 456+ 123.50 LENGUAJE COBOL 49 CLÁUSULA PICTURE PICTURE CONTENIDO PICTURE EDICIÓN Resultado Editado 9(5)V99 999V99 999V99 0000440 -00555 00000 $$$$$$.$$$.00CR 157.++ $4.99DB +$999.99 $4.

VALUE ALL ‘-’.03. VALUE ZEROS. VALUE ‘---------’ . Formato VALUE IS literal/constante figurativa VALUE “Listado Empleados”. VALUE SPACES.CLÁUSULA PICTURE PICTURE X(6) AAAA X(5) CONTENIDO CN1005 HOLA CASO3 PICTURE EDICIÓN XXBBX(4) ABABABA XXXXBX000 Resultado Editado CN 1005 H 0 L A CASO 3000 LENGUAJE COBOL 51 CLÁUSULA VALUE La inicialización de los campos independientes se debe realizar a través de la cláusula VALUE. VALUE 0. 52 • WORKING-STORAGE SECTION. VALUE 10. 77 VARIABLE PIC X(20) 77 VARIABLE PIC 99 77 VARIABLE PIC V99 77 VARIABLE PIC 9(8) 77 VARIABLE PIC X(10) 77 VARIABLE PIC X(9) 77 VARIABLE PIC X(9) 77 CERO PIC 99999 77 CERO PIC 99999 LENGUAJE COBOL 26 . VALUE 0. cuando se están definiendo. VALUE ZEROS.

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 DATOS-DIRECCIÓN FECHA-ALTA NUM-VEN NOMBRE APELLIDO1 APELLIDO2 PROVINCIA CALLE NCALLE DIA MES AÑO LENGUAJE COBOL 54 27 . 77 CAMPO PIC X(4) VALUE ‘AB’ JUST RIGHT. Se le conoce también con el nombre de registros.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. A B LENGUAJE COBOL 53 CAMPOS COMPUESTOS Son campos que pueden subdividirse.

03 PROVINCIA 03 CALLE 03 NCALLE FECHA-ALTA. ESPECIFICACIÓN DE FORMATO PIC PIC PIC X(10). X(10). LENGUAJE COBOL 55 CAMPOS COMPUESTOS Los nombre de datos sirven para nombrar un campo con el fin de poder referenciar en el programa. [02 a 49] Preceden a cualquier campo grupo o elemental. 03 DÍA 03 MES 03 ANIO PIC PIC PIC X(30). el nombre de datos puede sustituirse por la palabra reservada FILLER. Los números de nivel que pueden utilizarse son: del 01 al 49. Los números de Nivel sirven para indicar la relación existente entre un campo y el resto de los campos. el contenido del mismo. 02 NOMBRE DE DATO PIC PIC PIC 99. • • [01] Sólo precede al nombre del registro. 99. 03 03 03 02 NOMBRE APELLIDO1 APELLIDO2 PIC 999.CAMPOS COMPUESTOS NUMERO DE NIVEL 01 VENDEDOR. 99. 99. X(10). DATOS-DIRECCION. X(15). Si la información no se va a referenciar. LENGUAJE COBOL 56 28 . 02 02 NUMERO DATOS-VENDEDOR.

Se hace a través de la cláusula PICTURE. El número de nivel 01 deberá escribirse en el margen A. Cualquiera de los restantes números de nivel dentro del campo compuesto pueden situarse en cualquier columna. DATOS. 03 HORAS 03 MAS-INFORMACION PIC 99V99. • 01 En la declaración de campos compuestos. PIC 99V99. La longitud del campo viene dada por el número de caracteres empleados en la especificación del formato para declarar el campo.CAMPOS COMPUESTOS Un campo grupo tiene un nivel superior que cualquiera de sus campos elementales. mientras que su nombre asociado lo será en el margen B. HORAS OF/IN TOTALES-SEMANALES HORAS OF/IN TOTALES-MENSUALES LENGUAJE COBOL 58 29 . 03 HORAS 03 DEPTO-NO TOTALES-MENSUALES. LENGUAJE COBOL 57 CAMPOS COMPUESTOS Calificación de los nombres de datos. Los números de nivel utilizados no tiene porque ser correlativos. PIC 9(5). así como las operaciones que con él pueden realizarse. 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. PIC 9(5). dos campos elementales pueden tener el mismo nombre de datos. 02 02 TOTALES-SEMANALES. Cualquier nombre de datos debe ir precedido por su número de nivel.

03 ANUAL. 03 MES.. MES OF ULTIMO-PERIODO OF REG-VIEJO TOTAL OF REG-NUEVO LENGUAJE COBOL 59 NOMBRES DE CONDICIÓN Permite al programador definir constantes figurativas adicionales para usarlas en el programa COBOL 88 nombre-de-dato VALUE IS/VALUES ARE constante-1 [THRU constante-2] 77 FINAL-FICHERO 88 FIN-FICHERO PIC VALUE XX.. 02 ULTIMO-PERIODO.. 01 REG-NUEVO...CAMPOS COMPUESTOS 01 REG-VIEJO. 03 ANUAL.. 02 ULTIMO-PERIODO.. 03 MES. 03 ANUAL. Si se desea preguntar SI ES FINAL DE FICHERO bastará con decir: IF FIN-FICHERO en lugar de preguntar IF FINAL-FICHERO = `SI`.... 03 TOTAL.... 03 ANUAL... LENGUAJE COBOL 60 30 .. 02 A-LA-FECHA. 03 MES. 02 A-LA-FECHA.. `SI`....... 03 MES...... 03 TOTAL...

PIC 9(4)V99. NOMBRE-COMPLETO TOTAL-A-LA-FECHA NO-SEG-SOCIAL NOMBRE INICIAL APELLIDO PAGO-BRUTO PAGO-NETO IMPUESTOTRIBUT ADO IMPUESTOESTADO LENGUAJE COBOL 62 31 . PIC 9(6)V99. PIC 9(8)V99. PIC 9(8)V99. 02 02 02 66 ULTIMO-PAGO RENAMES APELLIDO THRU PAGO-NETO. PIC XX..... 03 NOMBRE 03 INICIAL 03 APELLIDO TOTAL-A-LA-FECHA. IF ALGO-UNIVERSIDAD OR PROFESIONAL IF EDUCACION < 16 LENGUAJE COBOL 61 RENAMES La cláusula RENAMES provee al programador la capacidad de reagrupar los items de datos elementales. PIC X(15).. 88 BACHILLER VALUE IS 12. 03 PAGO-BRUTO 03 PAGO-NETO 03 IMPUESTO-TRIBUTADO 03 IMPUESTO-ESTADO PIC X(9). 88 ALGO-UNIVERSIDAD VALUES ARE 13 THRU 15. 88 POSTGRADO VALUES ARE 17 THRU 20. 88 CODIGO-ERROR VALUES ARE 21 THRU 99...... 02 NOMBRE. 02 EDUCACION PICTURE 99. 88 NO-BACHILLER VALUES ARE 0 THRU 11. 66 nombre-de-datos-1 RENAMES nombre-de -datos-2 [THRU nombre-de-datos-3] NO-SEG-SOCIAL NOMBRE-COMPLETO.. 02 NUMERO-ID. 02 DIRECCION. 01 REG-IMPUESTO. IF BACHILLER . PIC X(10).. 88 PROFESIONAL VALUE IS 16..NOMBRES DE CONDICIÓN 01 DATOS-PERSONALES.

S 02 INGRESOS. 01 Nombre-de-tabla.TABLAS Una tabla es un conjunto de valores almacenados en posiciones consecutivas de memoria y con un nombre de datos asignado.P ROMEDIOS (Índice) donde Índice es mayor o igual que 1 y menor o igual que 50. WORKING-STORAGE SECTION.P ROMEDIOS OCCURS 50 TIMES PIC 9(6)V99. INGRESOS. TABLA-INGRESOS-ESTADO INGRESOS-PROMEDIO(1) INGRESOS-PROMEDIO(50) LENGUAJE COBOL 64 32 . 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. 02 Nombre-de-elemento OCCURS número-de-elementos TIMES PICTURE tipo-de-elemento. LENGUAJE COBOL 63 TABLAS 01TABLA INGRESOS ETADO.

02 INGRESOS-PROMEDIOS OCCURS 50 TIMES PIC 9(6)V99. . TABLA-INGRESOS-ESTADO INGRESOS-PROMEDIOS INGRESOS-PROMEDIOS (1) INGRESOS-PROMEDIOS (50) PROMEDIO-NACIONAL PROMEDIO-NACIONAL LENGUAJE COBOL 65 TABLAS 01TABLA INGRESOS ETADO. S 02 NOMBRE I GRESO OCCURS 50 TIMES. TABLA-INGRESOS-ESTADO NOMBRE-INGRESO (1) NOMBRE(1) INGRESO(1) --NOMBRE-INGRESO (50) NOMBRE(50) INGRESO (50) LENGUAJE COBOL 66 33 .N 03 NOMBRE PIC X(4). 03 INGRESO PIC 9(6)V99. 02 PROMEDIO-NACIONAL PIC 9(7)V99.TABLAS 01 TABLA-INGRESOS-ESTADO.

02 AÑO PIC 99. Sus valores deben ser positivos. LENGUAJE COBOL 68 34 . La cláusula OCCURS no puede aplicarse a nivel 77. 02 DÍA PIC 99. nombre-de-dato-1 REDEFINES nombre-de-dato-2 01 FECHA. aunque depende del compilador. 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. La cláusula PICTURE se aplica sólo a campos elementales. Los subíndices pueden ser constantes o variables de tipo entero. La dimensión de una tabla debe ser menor o igual que 7.TABLAS La cláusula OCCURS no puede aplicarse a nivel 01. Los subíndices múltiples se separan uno de otros por comas y espacios. 02 MES PIC 99. LENGUAJE COBOL 67 TABLAS Inicialización de una tabla en tiempo de compilación. FECHA-ACTUAL REDEFINES 01 FECHA PIC X(6).

01 TABLA-DIA-S REDEFINES TABLA-S.TABLAS 01 TABLA-S. 02 FILLER PIC X(10) VALUE "VIERNES". 02 DIA-SEMANA OCCURS 7 TIMES PIC X(10). 02 FILLER PIC X(10) VALUE "JUEVES". LENGUAJE COBOL 69 LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN VERBOS ARITMÉTICOS 35 . 02 FILLER PIC X(10) VALUE "MARTES". 02 FILLER PIC X(10) VALUE "MIÉRCOLES". 02 FILLER PIC X(10) VALUE "LUNES". 02 FILLER PIC X(10) VALUE "DOMINGO". 02 FILLER PIC X(10) VALUE "SÁBADO".

. TO ident-n [ident-m] ADD ident-1/literal-1 ident-2/literal-2 GIVING ident-n [ident-m] LENGUAJE COBOL 72 36 ... • Suma • Resta • Producto • División • O. además podremos almacenar el resto de una división y realizar conjuntamente todas estas operaciones en una sola sentencia.INTRODUCCIÓN Los verbos aritméticos permiten realizar las típicas operaciones de suma. producto y división. resta. Verbos Aritméticos. Aritméticas ADD SUBSTRACT MULTIPLY DIVIDE COMPUTE LENGUAJE COBOL 71 SUMA ADD ident-1literal-1 [ident-2/literal-2] .

. 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.6 35.005 .SUMA..0058 VALOR DESPUÉS VALOR DESPUÉS DE TRUNCAR DE REDONDEAR -12. se produciría un desbordamiento. OPCIONES 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. OPCIONES Opción ON SIZE ERROR • • Si la parte entera de un cálculo no cupiera en el campo receptor. trunca el número sobrante de dígitos por la derecha..432 35. LENGUAJE COBOL 74 37 ..6 65.36 8.4 8.'.6 ..3 12. RESULTADO CALCULADO -12. 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.006 PICTURE S99V9 9V9 99V9 S99V SV999 LENGUAJE COBOL 73 SUMA..4 8.4 35.6 65 66 .

EJEMPLOS ADD IDA IDB GIVING IDC 77 IDA PIC S9(2) 77 IDB PIC S9(3) 77 IDC PIC S9(4) ANTES -10 +020 +0030 DESPUÉS -10 +020 +0010 ADD -15 IDA IDB GIVING IDC 77 IDA PIC S9(2) 77 IDB PIC S9(3) 77 IDC PIC S9(4) ANTES -10 +020 +0030 DESPUÉS -10 +020 +0005 LENGUAJE COBOL 76 38 .SUMA. EJEMPLOS ADD IDA IDB TO IDC 77 IDA PIC 9(3) 77 IDB PIC 999 77 IDC PIC S99 ANTES 010 020 -10 ANTES 030 010 +05 -15 DESPUÉS 010 020 +20 DESPUÉS 030 010 +15 -005 ADD IDA IDB -30 TO IDD IDC 77 77 77 77 IDA IDB IDC IDD PIC 9(3) PIC 999 PIC S9(2) PIC S999 LENGUAJE COBOL 75 SUMA.

FROM ident-2 SUBTRACT ident-1/literal-1.. SUBTRACT ident-1/literal-1 ..SUMA.FROM ident-2/literal-2 GIVING ident-3 LENGUAJE COBOL 78 39 .0003 IDA GIVING IDC 77 IDA PIC 9V9(5) 77 IDC PIC 9V99 ANTES 000005 038 LENGUAJE COBOL 77 RESTA La sentencia SUBTRACT se utiliza para restar uno o más items de datos numéricos de otro u otros items de datos numéricos... EJEMPLOS ADD IDA IDB GIVING IDC 77 IDA PIC 9(5) 77 IDB PIC 9(4) 77 IDC PIC 99 ANTES 21987 4593 52 DESPUÉS 21987 4593 ---80 Se han perdido dígitos (26580) DESPUÉS 000005 000-..0008) ADD 0.. sustituyendo el valor de la diferencia en el último items de la declaración.se han perdido dígitos (0.

RESTA. CANTIDAD-FROM CANTIDAD-4 GIVING CANTIDAD-5. En el caso de que se produzca el desbordamiento de alguno de los campos receptores ( CANTIDAD-5. Las operaciones que se realizan en este caso son: • • CANTIDAD-5 = CANTIDAD-4 . EJEMPLOS SUBTRACT CANTIDAD-1. EJEMPLOS SUBTRACT IDA FROM IDB 77 IDA PIC 99 77 IDB PIC 999 SUBTRACT IDA 4 IDB FROM IDC IDD 77 77 77 77 IDA IDB IDC IDD PIC 99 PIC 999 PIC 99 PIC 99 ANTES 10 042 ANTES DESPUÉS 10 032 DESPUÉS 10 027 52 47 LENGUAJE COBOL 10 027 11 06 79 RESTA. CANTIDAD-2. CANTIDAD-6 ) el programa será desviado a la rutina de desbordamiento. LENGUAJE COBOL 80 40 .(CANTIDAD-3 + CANTIDAD-2 + CANTIDAD-1). CANTIDAD-6 = CANTIDAD-4 .(CANTIDAD-3 + CANTIDAD-2 + CANTIDAD-1). CANTIDAD-6 ROUNDED ON SIZE ERROR PERFORM DESBORDAMIENTO.

RESTA.5 BY IDA 77 IDA PIC 9(5) ANTES 01000 25 ANTES 25000 DESPUÉS 25000 25 DESPUÉS 12500 LENGUAJE COBOL 82 41 . EJEMPLOS SUBTRACT IDA FROM IDB GIVING IDC 77 IDA PIC 99 77 IDB PIC 999 77 IDC PIC 99 ANTES 10 032 41 DESPUÉS 10 032 22 DESPUÉS 072000 122000 020000 030000 81 SUBTRACT IDD IDC FROM IDB ANTES GIVING IDA 77 77 77 77 IDA IDB IDC IDD PIC 9(6) PIC 9(6) PIC 9(6) PIC 9(6) 000123 122000 020000 030000 LENGUAJE COBOL 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 77 IDA PIC 9(5) 77 IDB PIC 99 MULTIPLY 0.

C ROUNDED ON SIZE ERROR PERFORM RUTINA-DE-DESBORDAMIENTO. 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. E ON SIZE ERROR PERFORM RUTINA-DESBORDAMIENTO. Las operaciones que se realizan son B=B/A y C=C/A.MULTIPLICACIÓN MULTIPLY ident-1/literal-1 BY ident-2 GIVING ident-3 MULTIPLY A BY B GIVING C ROUNDED.5 GIVING IDB 77 IDA PIC 9(5) 77 IDB PIC 9(5) ANTES DESPUÉS 12500 50000 12500 06250 LENGUAJE COBOL 83 DIVISIÓN DIVIDE ident-1/literal-1 INTO ident-2 DIVIDE A INTO B. MULTIPLY IDA BY 0. LENGUAJE COBOL 84 42 .

EJEMPLOS DIVIDE IDB INTO IDA 77 IDA PIC 9(5) 77 IDB PIC 99 DIVIDE IDA BY 365 GIVING IDB 77 IDA PIC 9(5) 77 IDB PIC 9999 ANTES 50000 50 ANTES 36500 DESPUÉS 01000 50 DESPUÉS 36500 1000 DESPUÉS 36500 1000 DIVIDE 365 INTO IDA GIVING IDB ANTES 77 IDA PIC 9(5) 77 IDB PIC 9999 36500 LENGUAJE COBOL 86 43 .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 85 DIVISIÓN.

00) 33 LENGUAJE COBOL 87 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] LENGUAJE COBOL 88 44 . EJEMPLOS DIVIDE DIVIDENDO BY DIVISOR GIVING COCIENTE REMAINDER RESTO 77 77 77 77 DIVIDENDO DIVISOR RESTO COCIENTE PIC 999 PIC 99 PIC 99V99 PIC 99 ANTES DESPUÉS 100 03 55 100 03 0100 (01.DIVISIÓN.

SUBTRACT C FROM B GIVING A. ADD B. SUBTRACT B FROM ZERO GIVING A. COMPUTE A = B / C. LENGUAJE COBOL 90 45 . No tiene sentencia equivalente. COMPUTE A = B .COMPUTE SÍMBOLO + * / ** OPERACIÓN REPRESENTADA Suma Resta Producto Cociente Exponenciación MAYOR PRIORIDAD MENOR LENGUAJE COBOL 89 COMPUTE COMPUTE A = B ** C. MULTIPLY B BY C GIVING A.C. COMPUTE A = B * C. DIVIDE B BY C GIVING A. C GIVING A. MULTIPLY -1 BY B GIVING A COMPUTE A = B + C. COMPUTE A = -B.

Sentencias: • Display • Accept LENGUAJE COBOL 92 46 .LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN VERBOS ENTRADA SALIDA 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.

.. impresora u otro dispositivo de salida. LENGUAJE COBOL 93 DISPLAY. OPCIONES BEEP: Emite un sonido cada vez que display es ejecutado. y el espacio sobrante a la derecha se rellena con blancos. eliminando los ceros no significativos. CONVERT: Esta opción se aplica a campos numéricos o numéricos editados. [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] ... El valor a visualizar es convertido de su formato interno a los dígitos correspondiente. ERASE EOS borra desde la posición del cursor hasta el final de la pantalla.. ERASE[EOL/EOS]: ERASE borra pantalla.DISPLAY Mediante esta declaración se proporciona información o mensajes a la consola. LENGUAJE COBOL 94 47 . BLINK: Hace parpadear el elemento visualizado. DISPLAY ident/literal . El valor se ajusta a la izquierda. ERASE EOL borra desde la posición del cursor hasta el final de la línea.

solamente aparecerá sobre la pantalla la porción de la parte izquierda... REVERSE: Visualiza el dato en vídeo inverso. SIZE: Especifica el tamaño del campo físico presentado sobre la misma pantalla.. y si el tamaño especificado es más grande. se rellena con blancos. LENGUAJE COBOL 96 48 . LOW: Visualiza el dato en intensidad baja. LENGUAJE COBOL 95 ACCEPT Esta declaración permite introducir pequeños volúmenes de datos. necesarios para el programa. 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] . Por defecto. Si el tamaño especificado es menor que el definido en la cláusula PIC. OPCIONES HIGH: Visualiza el dato en intensidad alta. UNDERLINE: Visualiza el dato subrayado.DISPLAY. desde la consola u otro dispositivo de entrada.

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

97

ACCEPT. OPCIONES
REVERSE. SIZE. TAB: Obliga a pulsar la tecla Enter. UPDATE: Permite visualizar el contenido del campo antes de efectuar la entrada. Esto permite modificar el contenido del correspondiente campo. Esta 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
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.
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

101

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,

LENGUAJE COBOL

102

51

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).TIPOS DE MOVIMIENTOS CAMPO RECEPTOR CAMPO EMISOR ALFABÉTICO ALFANUMÉRICO ALFANUMÉRICO EDITADO NUM ENTERO NUM NO ENTER NUM EDITADO Alfabético Alfanumérico Alfanumérico editado Numérico Entero Numérico No Entero Numérico Editado SI SI SI NO NO NO SI SI SI SI NO SI NO NO NO SI SI SI LENGUAJE COBOL 103 TIPOS DE MOVIMIENTOS De un campo numérico a otro numérico de edición o no. se rellena con ceros no significativos en cualquiera de las partes. • • • Los campos emisor y receptor se alinean por el punto decimal. LENGUAJE COBOL 104 52 .

excepto cuando el campo receptor se ha especificado la cláusula JUSTIFIED RIGHT...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. se rellena con blancos. • • • El contenido del campo emisor se va colocando en el campo receptor de izquierda a derecha. se produce truncamiento. LENGUAJE COBOL 105 VERBO MOVE CORRESPONDING La transferencia de un campo compuesto puede realizarse como un campo elemental. LENGUAJE COBOL 106 53 . Si tamaño (campo receptor) > tamaño(campo emisor). 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. MOVE CORRESPONDING/CORR identificador-1 TO identificador-2 . Si tamaño (campo receptor) < tamaño(campo emisor). o bien moviendo los campos elementales uno a uno. cuya longitud es la suma de los campos elementales que lo forman.

5) 98765 (98.1) 001100 (001.34) (987. 05 DIA PIC X(7).1) 123123 (123.100) DESPUÉS 12312 (123.12) 321.98 ANTES 12345 (1234. 05 AÑO PIC 99.EJEMPLOS MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 99V99 77 RECEPTOR PIC 999V99 MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 9V9 77 RECEPTOR PIC 999V999 MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 999V99 77 RECEPTOR PIC 999. MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 9(4)V9 77 RECEPTOR PIC 99V999 ANTES 1234 98765 ANTES 11 (1. GRUPO-1 12JUEVESb95 GRUPO-2 ARANDAbDEbDUERO9815321572 Después de ejecutar MOVE GRUPO-1 TO GRUPO-2 GRUPO-1 12JUEVESb95 LENGUAJE COBOL 108 54 .123) ANTES 12312 (123.5) 34500 (34. 01 GRUPO-2 05 LOCALIDAD PIC X(15).12 DESPUES 12345 (1234.99. 05 MUNICIPIO PIC 999. 05 PRESUPUESTO PIC 9(5)V99.500) (12.765) (12.12) 123.34) (012.65) DESPUÉS 1234 01234 DESPUÉS 11 (1.34) LENGUAJE COBOL 107 EJEMPLOS 01 GRUPO-1 05 NUMERO PIC 99.

X(20). MOVE ZEROS TO TABLA rellena los 350 bytes del campo de TABLA con ceros. VALUE SPACES.EJEMPLOS Si se ha declarado la tabla siguiente: 01 TABLA 02 TABLA-CELDA OCCURS 50 TIMES PIC 9(5)V99. LENGUAJE COBOL 109 EJEMPLOS 01 REGISTRO-PERSONAL. X(30). 01 PIC PIC PIC PIC PIC PIC PIC PIC X(10) Z(5). 99. X(5) X(30). MOVE CORRESPONDING REGISTRO-PERSONAL TO LINEA-IMPRESION LENGUAJE COBOL 110 55 . VALUE SPACES. 03 NUMERO 03 NOMBRE 03 DIRECCION 03 DIS-POSTAL LINEA-IMPRESION. Como resultado cada uno de los 7 bytes de los campos de TABLA-CELDA también tendrá valores cero. X(5) ZZ. VALUE SPACES. VALUE SPACES. 02 FILLER 02 NUMERO 02 FILLER 02 NOMBRE 02 FILLER 02 DIRECCION 02 FILLER 02 DIS-POSTAL PIC PIC PIC PIC 9(5). X(5) X(20).

repetitiva y condicional.LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ESTRUCTURAS DE CONTROL INTRODUCCIÓN El teorema de la estructura establece que un programa propio puede ser escrito utilizando solamente tres tipos de estructuras de control: secuencial. 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. LENGUAJE COBOL 112 56 . Todas las instrucciones son ejecutables y no existen bucles infinitos.

......... PERFORM P-PROGRAMA......... P-PROGRAMA.... LENGUAJE COBOL 114 57 ..... PROCEDURE DIVISION..................... PERFORM nombre-párrafo PROGRAMA P-PROGRAMA PROCEDURE DIVISION............................ ......... sentencia 1.................................. STOP RUN.. LENGUAJE COBOL 113 ESTRUCTURA SECUENCIAL Se emplea para especificar la secuencia de ejecución de un programa modular representado por párrafos.. sentencia 2.... Nombre-párrafo-1.........PROCEDURE DIVISION 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... PROGRAMA....... el conjunto de acciones a realizar..... ......... ........................... Nombre-párrafo-2.

dependiendo la siguiente acción del programa a realizar. IF condición THEN acción-1/ NEXT SENTENCE [ELSE acción-2/NEXT SENTENCE] LENGUAJE COBOL 116 58 . de la evaluación de la misma.LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ESTRUCTURAS DE CONTROL VERBO IF Este verbo produce la evaluación de una condición.

FALSO. IF condición THEN PERFORM CIERTO ELSE PERFORM FALSO. PROGRAMA. PERFORM F-PROGRAMA. sentencia-1. CIERTO. IF condición THEN PERFORM CIERTO. sentencia-3.VERBO IF PROGRAMA CONDICIÓN P-PROGRAMA CIERTO F-PROGRAMA SENTENCIA 1 SENTENCIA 2 PROCEDURE DIVISION. PERFORM P-PROGRAMA. CIERTO. sentencia-4. sentencia-2. PERFORM F-PROGRAMA. . PROGRAMA. PERFORM P-PROGRAMA. sentencia-1 sentencia-2 LENGUAJE COBOL 117 VERBO IF PROGRAMA CONDICIÓN P-PROGRAMA CIERTO FALSO F-PROGRAMA SENTENCIA 1 SENTENCIA 2 SENTENCIA 3 SENTENCIA 4 PROCEDURE DIVISION. LENGUAJE COBOL 118 59 . .

identificador-1 literal-1 exp-aritmética-1 identificador-2 literal-2 exp-artimética-2 IS operador LENGUAJE COBOL 119 CONDICIONES. TIPOS Condiciones de relación. • Las condiciones de relación se refieren a las comparaciones entre dos items.CONDICIONES. TIPOS Operador GREATER THAN LESS THAN EQUAL TO NOT GREATER THAN NOT LESS THAN NOT EQUAL TO Símbolo > < = NOT > NOT < NOT = Significado Mayor que Menor que Igual a No mayor que No menor que No igual a LENGUAJE COBOL 120 60 . El tipo de comparación se indica por el operador relacional que puede estar en forma de palabras o de símbolos.

TIPOS Condiciones de signo. El Formato general es el siguiente: Expresión Aritmética IS [NOT] POSITIVE NEGATIVE ZERO LENGUAJE COBOL 122 61 . • 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 LENGUAJE COBOL 121 CONDICIONES. • Permiten determinar si el valor de una campo numérico o de una expresión aritmética es positivo. negativo o cero.CONDICIONES. TIPOS Condiciones de clase.

TIPOS 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.CONDICIONES. 02 campo-n PIC. LENGUAJE COBOL 124 62 . 88 ERROR-CODIGO VALUES ARE LOW-VALUES THRU ZERO.. 88 MASCULINO VALUE ‘1’. • 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. 88 nomb-condición VALUE IS lit-1 THRU lit-n LENGUAJE COBOL 123 CONDICIONES. 02 SEXO-EM PIC X.... ‘3’ THRU HIGH-VALUES. TIPOS Condiciones de nombre de condición. 88 FEMENINO VALUE ‘2’. Los valores asociados al nombre se definen en la DATA DIVISION al definir el campo.

AND 4 .PARÉNTESIS 2 .CONDICIONES.. Es una forma de implementar la estructura Casos.. dependiendo la siguiente acción del programa a realizar.NOT 3 . Orden de evaluación de las condiciones 1 ... EVALUATE identificador WHEN literal-1 THRU literal-2 instrucción imperativa-1 .A igualdad de operadores de izquierda a derecha condición-1 [NOT] AND/[NOT] OR condición-2 LENGUAJE COBOL 125 VERBO EVALUATE Este verbo produce la evaluación de una condición..... • • • • • • • Son varias condiciones simples enlazadas mediante operaciones lógicas AND y OR. WHEN OTHER instrucción imperativa-n LENGUAJE COBOL 126 63 .OR 5 ... de la evaluación de la misma. TIPOS Condiciones compuestas.

PERFORM P-PROGRAMA.VERBO EVALUATE PROGRAMA IDENTIFICADOR = V1 = V2 = V3 P-PROGRAMA PÁRRAFO-1 PÁRRAFO-2 PÁRRAFO-3 F-PROGRAMA PROCEDURE DIVISION. LENGUAJE COBOL 127 VERBO EVALUATE Si tenemos un código que puede tener como valores: 1. y 3. STOP RUN. PERFORM F-PROGRAMA. PROGRAMA. EVALUATE identificador WHEN v1 PERFORM PARRAFO-1 WHEN v2 PERFORM PARRAFO-2 WHEN OTHER PERFORM PARRAFO-3 END-EVALUATE. 2. VALOR-CÓDIGO CÓDIGO 0 1 P-VALOR-CÓDIGO AÑADIR CÓDIGO = 2 F-VALOR-CÓDIGO BORRAR FALSO CODIGO = 3 MODIFICAR ERROR LENGUAJE COBOL 128 64 . El siguiente árbol programático representa la estructura condicional anidada que verifica el valor del código y ejecuta el párrafo adecuado.

VALUE ARE 0 4 THRU 9. 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 129 VERBO EVALUATE EVALUATE TRUE WHEN NOMBRE-DE-CONDICION instrucción imperativa-1 . WORKING-STORAGE SECTION.. PERFORM PERFORM PERFORM PERFORM AÑADIR SUPRIMIR MODIFICAR CODIGO-ERRONEO LENGUAJE COBOL 130 65 . WHEN OTHER instrucción imperativa-n DATA DIVISION.VERBO EVALUATE VALOR-CÓDIGO CÓDOGO = 1 =2 =3 OTRO P-VALOR-CÓDIGO AÑADIR BORRAR MODIFICAR ERROR F-VALOR-CÓDIGO Si tenemos un código que puede tener como valores: 1... VALUE 2. VALUE 1. 01 CODIGO PIC 9.. 2. 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 3.. y 3......

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 . B o C AoB cualquiera cualquiera ACCIÓN A REALIZAR 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.VERBO EVALUATE CONDICIÓN CÓDIGO 1o2 3 4 cualquier otro CALIFICACIÓN A.

........ ....... BUCLE 5 VECES LENGUAJE COBOL 133 VERBO PERFORM PERFORM párrafo [WITH TEST BEFORE] UNTIL condición PROGRAMA P-PROGRAMA PÁRRAFO CONDICIÓN F-PROGRAMA LENGUAJE COBOL 134 67 .................. PERFORM BUCLE 5 TIMES ...VERBO PERFORM PERFORM párrafo entero/identificador TIMES PROCEDURE DIVISION. PROGRAMA..... BUCLE............... sentencia 2.. sentencia 1......

VERBO PERFORM PERFORM párrafo WITH TEST AFTER UNTIL condición PROGRAMA P-PROGRAMA PÁRRAFO CONDICIÓN (DESPUÉS) F-PROGRAMA 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 .

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. 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. 2. IDEN-3 P-PROGRAMA PÁRRAFO CONDICIÓN F-PROGRAMA LENGUAJE COBOL 138 69 . b) Se evalúa la condición-1.VERBO PERFORM La ejecución. Si es falsa. se pasa al punto c. Si es cierta. LENGUAJE COBOL 137 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 . 1. 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 d. Si es cierta. 2. se pasa al punto c. c) Se evalúa la condición-2.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 da por finalizada la ejecución de la sentencia PERFORM y se pasa a ejecutar la siguiente sentencia del programa. LENGUAJE COBOL 140 70 . 1. 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. el identificador-4 se inicializa al valor especificado por literal-5 o identificador-5 que sigue a FROM. Se evalúa la condición-1. 2. 1. Si es falsa. Si es cierta. d) e) Se ejecuta el Se suma a identificador-4 el valor especificado por identificador-6 que sigue a BY y se vuelve al punto c.

IDEN-3 IDEN-4 = IDEN-5 .VERBO PERFORM PROGRAMA IDEN-1 = IDEN-2 . IDEN-6 P-PROGRAMA PÁRRAFO CONDICIÓN 1 CONDICIÓN 2 F-PROGRAMA 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 .

Sign up to vote on this title
UsefulNot useful