Cobol

1,105 views

Published on

  • Be the first to like this

Cobol

  1. 1. LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ELEMENTOS DEL LENGUAJE COBOLLENGUAJE 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 Lenguaje • Fue creado en 1.960, por la comisión CODASYL (Conference on Data System Lenguaje), formada por fabricantes, usuarios y gobierno USA, esta comisión además han dado normas sobre Bases de Datos, Comunicaciones, etc.. • Existen numerosas versiones, las mas importantes son, las del 60, 65, 74 y 85; siendo los compiladores más utilizados los de: • MICROFOCUS • MICROSOFT • RM/COBOL (McFarland) • COBOL2 (IBM) LENGUAJE COBOL 2 1
  2. 2. 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 3ELEMENTOS 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
  3. 3. 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 5ELEMENTOS DEL LENGUAJE Operadores. • Los operadores son símbolos que indican cómo son manipulados los datosOperadores AritméticosOperador Significado Ejemplo+ Suma A+B- Resta A-B* Producto A*B/ División A/B** Exponenciación A ** B= Asignación C=A+B() Dar Prioridad D = (A + B)*C LENGUAJE COBOL 6 3
  4. 4. ELEMENTOS DEL LENGUAJEOperadores de Relación= Igual que A=B< Menor que A<B> Mayor que A>B<= Menor o igual que A <= B>= Mayor o igual que A >= BOperadores LógicosNOT Negación NOT ( A = B )AND Conjunción A = B AND A > BOR Disyunción A = B OR A < B LENGUAJE COBOL 7ELEMENTOS DEL LENGUAJE Expresiones Aritméticas. • Una expresión aritmética puede ser una constante, una variable o un conjunto de constantes y variables unidas por operadores aritméticos. • El punto, punto y coma o coma no pueden ir precedidos por un espacio, pero si tienen que ir seguidos por un espacio. • Un paréntesis izquierdo no puede ir seguido por un espacio, un paréntesis derecho no puede ir precedido por un espacio. • Un operador aritmético o un signo igual tiene que ir precedido por un espacio y seguido por un espacio. LENGUAJE COBOL 8 4
  5. 5. 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 9ELEMENTOS 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 = C A = 0 AND B * 2 NOT= 0 OR C = 0 LENGUAJE COBOL 10 5
  6. 6. LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ESTRUCTURA DE UN PROGRAMA EN COBOLDIVISIONES, SECCIONES YPÁRRAFOS IDENTIFICATION DIVISION. [ENVIRONMENT DIVISION.] [DATA DIVISION.] PROCEDURE DIVISION. LENGUAJE COBOL 12 6
  7. 7. DIVISIONES, SECCIONES YPÁRRAFOSIDENTIFICATION DIVISION. división PROGRAM-ID. EJEMPLO. AUTHOR. EUI. párrafo DATE-WRITTEN. 01-ENERO-93. DATE-COMPILED. 01-ENERO-93. ENVIRONMENT DIVISION. CONFIGURATION SECTION. sección SOURCE-COMPUTER. IBM PERSONAL COMPUTER. OBJECT-COMPUTER. IBM PERSONAL COMPUTER. SPECIAL-NAMES. párrafo DECIMAL-POINT IS COMMA. cláusula INPUT-OUTPUT SECTION. sección FILE-CONTROL. párrafo SELECT IMPRESORA ASSING TO PRINTER. cláusulas LENGUAJE COBOL 13DIVISIONES EN COBOL IDENTIFICATION 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. LENGUAJE COBOL 14 7
  8. 8. 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 15DIVISIONES EN COBOL CONFIGURATION SECTION. • PROPÓSITO: Tiene como finalidad describir las características del computador usado para compilar y ejecutar el programa, todo ello a nivel de comentarios • PÁRRAFOS • SOURCE-COMPUTER. Modelo de ordenador. • OBJECT-COMPUTER. Modelo de ordenador. • SPECIAL-NAMES. • [[Nombre de función IS nombre nemotécnico] • [CURRENCY SIGN IS literal] • [DECIMAL-POINT IS COMMA].] INPUT-OUTPUT SECTION. • PROPÓSITO: Declarar los ficheros utilizados y la asignación a los dispositivos de E/S. • PÁRRAFOS • FILE-CONTROL LENGUAJE COBOL 16 8
  9. 9. DIVISIONES EN COBOL Nombre de función es un nombre reconocido por el compilador y nombre nemotécnico es un nombre creado por el programador. De esta forma podemos poner: • CONSOLE IS CONSOLA • SYSOUT IS ARCHI-PANTALLA La función de CURRENCY SING es indicar que el sistema tiene que utilizar un carácter monetario distinto del que tiene por defecto ($). El carácter sustituto de éste, tiene que ser uno solo y alfabético. La función del DECIMAL-POINT IS COMMA es indicar que el sistema tiene que sustituir la notación anglosajona por la castellana en la función del punto decimal y la coma, en los campos de edición. LENGUAJE COBOL 17DIVISIONES EN COBOL DATA DIVISION • PROPÓSITO: En este apartado se definen los datos que van a ser utilizados, tales como ficheros, los registros de cada fichero etc. Cualquier dato utilizado en la codificación del programa debe estar definido en esta división. • PÁRRAFOS • WORKING-STORAGE SECTION. • FILE SECTION. PROCEDURE DIVISION • PROPÓSITO: Es en esta división donde se codifica el algoritmo propiamente dicho, esto es, donde se especifican las instrucciones adecuadas para resolver el problema. LENGUAJE COBOL 18 9
  10. 10. HOJA DE CODIFICACIÓN123456 7 8 A 11 12 A 72 73 A 80 Se utilizaban para indicar los números de secuencia, permitiendo MARGEN A MARGEN B ordenar fácilmente el Son opcionales, se utilizan normalmente programa para escribir comentarios que identifican el programa.Se utiliza para poner un carácter especial (*) queindica comienzo de un comentario. Si el carácterespecial que se incluye en esta columna es (-) indicaque es continuación de un literal no numérico, cuandola longitud de éste, ocupa más de una línea. LENGUAJE COBOL 19HOJA DE CODIFICACIÓN Margen 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 77 Margen 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. LENGUAJE COBOL 20 10
  11. 11. REGLAS DE CODIFICACIÓN Los nombres de división, sección y párrafos deben escribirse solos en una línea y finalizar con un punto. Cada entrada y cada sentencia del programa debe finalizar con un punto. Si a lo largo de una línea física no se encuentra un punto, la siguiente línea será tomada como continuación de la anterior, esto es, cada entrada y cada sentencia del programa puede ocupar varias líneas físicas. Si una entrada o una sentencia del programa no cabe en una línea física, se continúa en la línea o líneas siguientes pero en el área B. No es obligatorio llenar totalmente una línea física. Se deben dejar líneas en blanco. El punto, la coma y el punto y coma no deben ir precedidos de un espacio, pero sí seguidos de un espacio. La coma y el punto y coma son opcionales y cuando se utilizan es para hacer más clara la redacción del programa. Si se utiliza más de un espacio como separador entre palabras, el compilador lo interpreta como uno solo. LENGUAJE COBOL 21ESTRUCTURA GENERALIDENTIFICATION DIVISION. PROGRAM-ID. nombre de programa. [ AUTHOR. comentarios... ] DATA DIVISION [ INSTALLATION. comentarios... ] [ FILE SECTION.] [ DATE-WRITTEN. comentarios... ] [ WORKING-STORAGE SECTION.] [ DATE-COMPILED. comentarios... ] [ SECURITY. comentarios... ] PROCEDURE DIVISION. [ REMARKS. comentarios... ] nombre-de-párrafo. {Sentencia}...}...ENVIRONMENT DIVISION. nombre-de-párrafo. [ CONFIGURATION SECTION. {Sentencia}...}... 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.]] LENGUAJE COBOL 22 11
  12. 12. LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ESTRUCTURA DE UN PROGRAMA EN COBOLDIVISIONES, SECCIONES YPÁRRAFOS IDENTIFICATION DIVISION. [ENVIRONMENT DIVISION.] [DATA DIVISION.] PROCEDURE DIVISION. LENGUAJE COBOL 24 12
  13. 13. DIVISIONES, SECCIONES YPÁRRAFOSIDENTIFICATION DIVISION. división PROGRAM-ID. EJEMPLO. AUTHOR. EUI. párrafo DATE-WRITTEN. 01-ENERO-93. DATE-COMPILED. 01-ENERO-93. ENVIRONMENT DIVISION. CONFIGURATION SECTION. sección SOURCE-COMPUTER. IBM PERSONAL COMPUTER. OBJECT-COMPUTER. IBM PERSONAL COMPUTER. SPECIAL-NAMES. párrafo DECIMAL-POINT IS COMMA. cláusula INPUT-OUTPUT SECTION. sección FILE-CONTROL. párrafo SELECT IMPRESORA ASSING TO PRINTER. cláusulas LENGUAJE COBOL 25DIVISIONES EN COBOL IDENTIFICATION 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. LENGUAJE COBOL 26 13
  14. 14. 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 27DIVISIONES EN COBOL CONFIGURATION SECTION. • PROPÓSITO: Tiene como finalidad describir las características del computador usado para compilar y ejecutar el programa, todo ello a nivel de comentarios • PÁRRAFOS • SOURCE-COMPUTER. Modelo de ordenador. • OBJECT-COMPUTER. Modelo de ordenador. • SPECIAL-NAMES. • [[Nombre de función IS nombre nemotécnico] • [CURRENCY SIGN IS literal] • [DECIMAL-POINT IS COMMA].] INPUT-OUTPUT SECTION. • PROPÓSITO: Declarar los ficheros utilizados y la asignación a los dispositivos de E/S. • PÁRRAFOS • FILE-CONTROL LENGUAJE COBOL 28 14
  15. 15. DIVISIONES EN COBOL Nombre de función es un nombre reconocido por el compilador y nombre nemotécnico es un nombre creado por el programador. De esta forma podemos poner: • CONSOLE IS CONSOLA • SYSOUT IS ARCHI-PANTALLA La función de CURRENCY SING es indicar que el sistema tiene que utilizar un carácter monetario distinto del que tiene por defecto ($). El carácter sustituto de éste, tiene que ser uno solo y alfabético. La función del DECIMAL-POINT IS COMMA es indicar que el sistema tiene que sustituir la notación anglosajona por la castellana en la función del punto decimal y la coma, en los campos de edición. LENGUAJE COBOL 29DIVISIONES EN COBOL DATA DIVISION • PROPÓSITO: En este apartado se definen los datos que van a ser utilizados, tales como ficheros, los registros de cada fichero etc. Cualquier dato utilizado en la codificación del programa debe estar definido en esta división. • PÁRRAFOS • WORKING-STORAGE SECTION. • FILE SECTION. PROCEDURE DIVISION • PROPÓSITO: Es en esta división donde se codifica el algoritmo propiamente dicho, esto es, donde se especifican las instrucciones adecuadas para resolver el problema. LENGUAJE COBOL 30 15
  16. 16. HOJA DE CODIFICACIÓN123456 7 8 A 11 12 A 72 73 A 80 Se utilizaban para indicar los números de secuencia, permitiendo MARGEN A MARGEN B ordenar fácilmente el Son opcionales, se utilizan normalmente programa para escribir comentarios que identifican el programa.Se utiliza para poner un carácter especial (*) queindica comienzo de un comentario. Si el carácterespecial que se incluye en esta columna es (-) indicaque es continuación de un literal no numérico, cuandola longitud de éste, ocupa más de una línea. LENGUAJE COBOL 31HOJA DE CODIFICACIÓN Margen 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 77 Margen 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. LENGUAJE COBOL 32 16
  17. 17. REGLAS DE CODIFICACIÓN Los nombres de división, sección y párrafos deben escribirse solos en una línea y finalizar con un punto. Cada entrada y cada sentencia del programa debe finalizar con un punto. Si a lo largo de una línea física no se encuentra un punto, la siguiente línea será tomada como continuación de la anterior, esto es, cada entrada y cada sentencia del programa puede ocupar varias líneas físicas. Si una entrada o una sentencia del programa no cabe en una línea física, se continúa en la línea o líneas siguientes pero en el área B. No es obligatorio llenar totalmente una línea física. Se deben dejar líneas en blanco. El punto, la coma y el punto y coma no deben ir precedidos de un espacio, pero sí seguidos de un espacio. La coma y el punto y coma son opcionales y cuando se utilizan es para hacer más clara la redacción del programa. Si se utiliza más de un espacio como separador entre palabras, el compilador lo interpreta como uno solo. LENGUAJE COBOL 33ESTRUCTURA GENERALIDENTIFICATION DIVISION. PROGRAM-ID. nombre de programa. [ AUTHOR. comentarios... ] DATA DIVISION [ INSTALLATION. comentarios... ] [ FILE SECTION.] [ DATE-WRITTEN. comentarios... ] [ WORKING-STORAGE SECTION.] [ DATE-COMPILED. comentarios... ] [ SECURITY. comentarios... ] PROCEDURE DIVISION. [ REMARKS. comentarios... ] nombre-de-párrafo. {Sentencia}...}...ENVIRONMENT DIVISION. nombre-de-párrafo. [ CONFIGURATION SECTION. {Sentencia}...}... 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.]] LENGUAJE COBOL 34 17
  18. 18. LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN LOS DATOSDATA DIVISION FUNCIÓN • Se describen los datos que van a ser usados, creados, o producidos por el programa. • Se describe la estructura de los ficheros que se van a utilizar, así como las variables utilizadas en el programa y que no son parte de los ficheros. FORMATO DATA DIVISION. [FILE SECTION. { Entrada de descripción de ficheros....} { Entrada de descripción de registros...}] [WORKING-STORAGE SECTION. [ Entrada de descripción de variables o registros ]] LENGUAJE COBOL 36 18
  19. 19. 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 37CAMPOS INDEPENDIENTES Es un campo de trabajo que será definido en la sección de “working”. No forman parte de la descripción de los ficheros. Formato mínimo para su definición: número-de-nivel nombre-de-dato PICTURE especificación de formato. Donde: • Número-de-nivel. Se utiliza el nivel 77. • Nombre-de-datos. Un nombre de datos sirve para nombrar un campo con el fin de poder referenciar en el programa, el contenido del mismo. • PICTURE. Determina la información que puede almacenarse en el campo, así como las operaciones que con él pueden realizarse. Permite definir el tipo y el tamaño del campo. LENGUAJE COBOL 38 19
  20. 20. CLÁUSULA PICTURE PICTURE/PIC IS especificación de formato.Carácter Descripción Ejemplos9 Cualquier dígito 1. PIC 99999 del 0 al 9 2. PIC 9(5)V Posición Decimal 1. PIC 99v99 2. PIC 9(2)v99S Signo 1. PIC S999 2. PIC S99v99 LENGUAJE COBOL 39CLÁUSULA PICTUREDescripción Valor Numérico Representación INTERNA77 CANT PIC 9(6) 12234 01223477 CANT PIC 9999 8956 895677 CANT PIC 9(10) 1234567 000123456777 CANT PIC 9999 285 028577 CANT PIC 99V9 38.50 38^577 CANT PIC 9(4)V99 452.39 0452^3977 CANT PIC 999 550 55077 CANT 99999V99 23561.00 23561^0077 CANT PIC S999V99 156.29 156^2977 CANT S9(3)V99 -1251.16 1251^1677 CANT S9(4)V99 -0.10 0000^1077 CANT S9(4)V99 -325.18 0325^18 LENGUAJE COBOL 40 20
  21. 21. CLÁUSULA PICTURECarácter Descripción EjemplosA Cualquier carácter letra 1. PIC AAAAA 2. PIC A(5)X Cualquier carácter 1. PIC XXXXX 2. PIC X(5)Descripción Ejemplo Representado en el Almacenamiento como77 VALOR PIC XXXXX BUENO B U E N O77 VALOR PIC X(5) BUEN B U E N77 VALOR PIC X(5) BUENOS B U E N O77 VALOR PIC X(8) D. GIL D . G I L LENGUAJE COBOL 41CLÁUSULA PICTURECarácter Descripción$ Se escribe el signo $ en el lugar correcto en que debe aparecer en la salida. Indica la posición del punto decimal, Indica la posición de la coma como carácter de separación de millares. La utilización de la cláusula DECIMAL POINT IS COMMA en la SPECIAL-NAMES de la ENVIRONMENT DIVISION invierte el uso de los puntos y coma.* Sirve para reemplazar los ceros no significativos (a la izquierda) por asteriscosZ Sirve para reemplazar los ceros no significativos por blancos+ Se inserta en el extremo izquierdo o derecho. Representa la aparición del signo. Si el número es positivo aparecerá un + y si es negativo aparecerá un -. LENGUAJE COBOL 42 21
  22. 22. CLÁUSULA PICTURECarácter Descripción- Se inserta en el extremo izquierdo o derecho. Representa la aparición del signo. Si el número es positivo aparecerá un blanco y si es negativo aparecerá un -.CR Representa la aparición del signo bancario CR de crédito. Cuando el valor es positivo aparecerán blancos, si el valor es negativo aparece los caracteres CR.DB Representa la aparición del signo bancario DB de débito. Cuando el valor es positivo aparecerán blancos, si el valor es negativo aparece los caracteres DB.0 Se usan para insertar ceros en las posiciones en que deben aparecerB Se usan para insertar blancos en las posiciones en que deben aparecer LENGUAJE COBOL 43CLÁUSULA PICTUREPICTURE CONTENIDO PICTURE Resultado EDICIÓN Editado9(4)V99 654321 9(4).99 6543.219(4)V99 054321 9(4).99 0543.219(3)V999 000546 999.99 000.549V99 567 99V.99 NO VALIDO99 54 99.99 54.009999V99 500000 999.99 000.00 LENGUAJE COBOL 44 22
  23. 23. CLÁUSULA PICTUREPICTURE CONTENIDO PICTURE Resultado EDICIÓN Editado9999 0704 ZZZ9 b704999V 103 ZZZ.99 103.009(3)V99 00103 ZZZ.99 bb1.03999V99 00000 Z(3).ZZ blancos9(4)V99 001234 Z(4).ZZ bb12.34999V99 00001 ZZZ.ZZ bbb.01 LENGUAJE COBOL 45CLÁUSULA PICTUREPICTURE CONTENIDO PICTURE Resultado EDICIÓN Editado9(6) 012345 ***999 *123459(6) 000012 ***999 ***0129(6) 000123 ***999 ***1239(5)V99 0012345 *****.99 **123.45 LENGUAJE COBOL 46 23
  24. 24. CLÁUSULA PICTUREPICTURE CONTENIDO PICTURE Resultado EDICIÓN Editado9(7) 1234567 9,999,999 1,234,5679(3)V99 12345 9,990,000.99 1,230,000.45999 123 9B00B990 1b00b2309(4) 1234 9,009,990 1,002,340999 123 9BB99 1bb23999 123 90099 10023 LENGUAJE COBOL 47CLÁUSULA PICTUREPICTURE CONTENIDO PICTURE Resultado EDICIÓN Editado9(4) 0123 $9999 $01239(4) 0123 $Z999 $b1239(4) 0123 $*999 $*1239(5)V99 0012345 $*****.99 $**123.459(5)V99 0123456 $**,***.99 $*1,234.56 LENGUAJE COBOL 48 24
  25. 25. CLÁUSULA PICTUREPICTURE CONTENIDO PICTURE Resultado EDICIÓN EditadoS999 -123 +999 -123S999 +628 -999 628S999 +456 999+ 456+S9(3)V99 -12345 999.99DB 123.45DBS999V99 -18200 $999.99CR $182.00CRS9(3)V99 +15768 999.99DB 157.68bbS9(3)V99 -65125 +$999.99 -$651.25S9(3)V99 +57950 +$999.99 +$579.50 LENGUAJE COBOL 49CLÁUSULA PICTUREPICTURE CONTENIDO PICTURE Resultado EDICIÓN Editado9(5)V99 0000440 $$$$$$.99 $4.40999V99 -00555 ++++.99 -5.55999V99 00000 ++++.++ blancos9(5)V99 0475682 $$$,$$$.99 $4,756.82 LENGUAJE COBOL 50 25
  26. 26. CLÁUSULA PICTUREPICTURE CONTENIDO PICTURE Resultado EDICIÓN EditadoX(6) CN1005 XXBBX(4) CN 1005AAAA HOLA ABABABA H 0 L AX(5) CASO3 XXXXBX000 CASO 3000 LENGUAJE COBOL 51CLÁUSULA VALUE La inicialización de los campos independientes se debe realizar a través de la cláusula VALUE, cuando se están definiendo. Formato • VALUE IS literal/constante figurativa WORKING-STORAGE SECTION. 77 VARIABLE PIC X(20) 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. LENGUAJE COBOL 52 26
  27. 27. 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. A B LENGUAJE COBOL 53CAMPOS COMPUESTOS Son campos que pueden subdividirse. Se le conoce también con el nombre de registros. Pueden definirse en el área de trabajo (WORKING - STORAGE SECTION) y es obligada su utilización al describir la estructura de los ficheros. DATOS-VENDEDOR DATOS-DIRECCIÓN FECHA-ALTANUM-VEN NOMBRE APELLIDO1 APELLIDO2 PROVINCIA CALLE NCALLE DIA MES AÑO LENGUAJE COBOL 54 27
  28. 28. CAMPOS COMPUESTOS NUMERO DE NIVEL01 VENDEDOR. ESPECIFICACIÓN DE FORMATO 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 NOMBRE PIC 99. DE DATO 03 MES PIC 99. 03 ANIO PIC 99. LENGUAJE COBOL 55CAMPOS COMPUESTOS Los nombre de datos sirven para nombrar un campo con el fin de poder referenciar en el programa, el contenido del mismo. Si la información no se va a referenciar, el nombre de datos puede sustituirse por la palabra reservada FILLER. Los números de Nivel sirven para indicar la relación existente entre un campo y el resto de los campos. Los números de nivel que pueden utilizarse son: del 01 al 49. • [01] Sólo precede al nombre del registro. • [02 a 49] Preceden a cualquier campo grupo o elemental. LENGUAJE COBOL 56 28
  29. 29. CAMPOS COMPUESTOS Un campo grupo tiene un nivel superior que cualquiera de sus campos elementales. Los números de nivel utilizados no tiene porque ser correlativos. Cualquier nombre de datos debe ir precedido por su número de nivel. El número de nivel 01 deberá escribirse en el margen A, mientras que su nombre asociado lo será en el margen B. Cualquiera de los restantes números de nivel dentro del campo compuesto pueden situarse en cualquier columna. Se aconseja un escalonado progresivo de los niveles para una mejor interpretación El tipo del campo determina la información que puede almacenarse en el campo, así como las operaciones que con él pueden realizarse. Se hace a través de la cláusula PICTURE. La longitud del campo viene dada por el número de caracteres empleados en la especificación del formato para declarar el campo. LENGUAJE COBOL 57CAMPOS COMPUESTOS Calificació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-SEMANALES HORAS OF/IN TOTALES-MENSUALES LENGUAJE COBOL 58 29
  30. 30. CAMPOS COMPUESTOS 01 REG-VIEJO. 02 A-LA-FECHA. 03 MES.... 03 ANUAL.... 02 ULTIMO-PERIODO. 03 MES.... MES OF ULTIMO-PERIODO OF REG-VIEJO 03 ANUAL.... 03 TOTAL.... TOTAL OF REG-NUEVO 01 REG-NUEVO. 02 A-LA-FECHA. 03 MES.... 03 ANUAL.... 02 ULTIMO-PERIODO. 03 MES.... 03 ANUAL.... 03 TOTAL.... 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 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`. LENGUAJE COBOL 60 30
  31. 31. NOMBRES DE CONDICIÓN01 DATOS-PERSONALES. 02 NUMERO-ID... 02 NOMBRE...... 02 DIRECCION.... 02 EDUCACION PICTURE 99. 88 NO-BACHILLER VALUES ARE 0 THRU 11. 88 BACHILLER VALUE IS 12. 88 ALGO-UNIVERSIDAD VALUES ARE 13 THRU 15. 88 PROFESIONAL VALUE IS 16. 88 POSTGRADO VALUES ARE 17 THRU 20. 88 CODIGO-ERROR VALUES ARE 21 THRU 99. IF BACHILLER .... IF ALGO-UNIVERSIDAD OR PROFESIONAL IF EDUCACION < 16 LENGUAJE COBOL 61RENAMES La cláusula RENAMES provee al programador la capacidad de reagrupar los items de datos elementales. 66 nombre-de-datos-1 RENAMES nombre-de -datos-2 [THRU nombre-de-datos-3] 01 REG-IMPUESTO. 02 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. NOMBRE-COMPLETO TOTAL-A-LA-FECHANO-SEG-SOCIAL NOMBRE INICIAL APELLIDO PAGO-BRUTO PAGO-NETO IMPUESTO- IMPUESTO- TRIBUT ESTADO ADO LENGUAJE COBOL 62 31
  32. 32. TABLAS Una tabla es un conjunto de valores almacenados en posiciones consecutivas de memoria y con un nombre de datos asignado. La referencia a entradas específicas de la tabla se hace mediante un sólo nombre junto con un subíndice que indica la posición de entrada particular. WORKING-STORAGE SECTION. 01 Nombre-de-tabla. 02 Nombre-de-elemento OCCURS número-de-elementos TIMES PICTURE tipo-de-elemento. LENGUAJE COBOL 63 TABLAS 01TABLA INGRESOS ETADO. - - S 02 INGRESOS- P ROMEDIOS OCCURS 50 TIMES PIC 9(6)V99. INGRESOS- P ROMEDIOS (Índice) donde Índice es mayor o igual que 1 y menor o igual que 50.TABLA-INGRESOS-ESTADOINGRESOS-PROMEDIO(1) INGRESOS-PROMEDIO(50) LENGUAJE COBOL 64 32
  33. 33. TABLAS 01 TABLA-INGRESOS-ESTADO. 02 INGRESOS-PROMEDIOS OCCURS 50 TIMES PIC 9(6)V99. 02 PROMEDIO-NACIONAL PIC 9(7)V99.TABLA-INGRESOS-ESTADOINGRESOS-PROMEDIOS PROMEDIO-NACIONALINGRESOS-PROMEDIOS (1) INGRESOS-PROMEDIOS (50) PROMEDIO-NACIONAL LENGUAJE COBOL 65 TABLAS 01TABLA INGRESOS ETADO. - - S 02 NOMBRE I GRESO OCCURS 50 TIMES. - N 03 NOMBRE PIC X(4). 03 INGRESO PIC 9(6)V99. TABLA-INGRESOS-ESTADO NOMBRE-INGRESO (1) --- NOMBRE-INGRESO (50) NOMBRE(1) INGRESO(1) NOMBRE(50) INGRESO (50) LENGUAJE COBOL 66 33
  34. 34. TABLAS La cláusula OCCURS no puede aplicarse a nivel 01. La cláusula OCCURS no puede aplicarse a nivel 77. La dimensión de una tabla debe ser menor o igual que 7, aunque depende del compilador. La cláusula PICTURE se aplica sólo a campos elementales. Los subíndices pueden ser constantes o variables de tipo entero. Sus valores deben ser positivos. El subíndice o subíndices se encierran en un conjunto de paréntesis y se separan del nombre de la tabla por un espacio. Los subíndices múltiples se separan uno de otros por comas y espacios. LENGUAJE COBOL 67TABLAS 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). LENGUAJE COBOL 68 34
  35. 35. TABLAS01 TABLA-S. 02 FILLER PIC X(10) VALUE "LUNES". 02 FILLER PIC X(10) VALUE "MARTES". 02 FILLER PIC X(10) VALUE "MIÉRCOLES". 02 FILLER PIC X(10) VALUE "JUEVES". 02 FILLER PIC X(10) VALUE "VIERNES". 02 FILLER PIC X(10) VALUE "SÁBADO". 02 FILLER PIC X(10) VALUE "DOMINGO".01 TABLA-DIA-S REDEFINES TABLA-S. 02 DIA-SEMANA OCCURS 7 TIMES PIC X(10). LENGUAJE COBOL 69LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN VERBOS ARITMÉTICOS 35
  36. 36. INTRODUCCIÓN Los verbos aritméticos permiten realizar las típicas operaciones de suma, resta, producto y división, además podremos almacenar el resto de una división y realizar conjuntamente todas estas operaciones en una sola sentencia. Verbos Aritméticos. • Suma ADD • Resta SUBSTRACT • Producto MULTIPLY • División DIVIDE • O. Aritméticas COMPUTE LENGUAJE COBOL 71SUMAADD ident-1literal-1 [ident-2/literal-2] ....TO ident-n [ident-m]ADD ident-1/literal-1 ident-2/literal-2GIVING ident-n [ident-m] LENGUAJE COBOL 72 36
  37. 37. SUMA. 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, trunca el número sobrante de dígitos por la derecha.PICTURE RESULTADO VALOR DESPUÉS VALOR DESPUÉS CALCULADO DE TRUNCAR DE REDONDEAR S99V9 -12.36 -12.3 12.4 9V9 8.432 8.4 8.4 99V9 35.6 35.6 35.6 S99V 65.6 65 66 SV999 .0058 .005 .006 LENGUAJE COBOL 73SUMA. 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........ LENGUAJE COBOL 74 37
  38. 38. SUMA. EJEMPLOSADD IDA IDB TO IDC ANTES DESPUÉS77 IDA PIC 9(3) 010 01077 IDB PIC 999 020 02077 IDC PIC S99 -10 +20ADD IDA IDB -30 TO IDD IDC ANTES DESPUÉS77 IDA PIC 9(3) 030 03077 IDB PIC 999 010 01077 IDC PIC S9(2) +05 +1577 IDD PIC S999 -15 -005 LENGUAJE COBOL 75SUMA. EJEMPLOSADD IDA IDB GIVING IDC ANTES DESPUÉS77 IDA PIC S9(2) -10 -1077 IDB PIC S9(3) +020 +02077 IDC PIC S9(4) +0030 +0010ADD -15 IDA IDB GIVING IDC ANTES DESPUÉS77 IDA PIC S9(2) -10 -1077 IDB PIC S9(3) +020 +02077 IDC PIC S9(4) +0030 +0005 LENGUAJE COBOL 76 38
  39. 39. SUMA. EJEMPLOSADD IDA IDB GIVING IDC ANTES DESPUÉS77 IDA PIC 9(5) 21987 2198777 IDB PIC 9(4) 4593 459377 IDC PIC 99 52 ---80 Se han perdido dígitos (26580)ADD 0.0003 IDA GIVING IDC ANTES DESPUÉS77 IDA PIC 9V9(5) 000005 00000577 IDC PIC 9V99 038 000-- se han perdido dígitos (0.0008) LENGUAJE COBOL 77RESTA La sentencia SUBTRACT se utiliza para restar uno o más items de datos numéricos de otro u otros items de datos numéricos, sustituyendo el valor de la diferencia en el último items de la declaración. SUBTRACT ident-1/literal-1 .... FROM ident-2 SUBTRACT ident-1/literal-1....FROM ident-2/literal-2 GIVING ident-3 LENGUAJE COBOL 78 39
  40. 40. RESTA. EJEMPLOS SUBTRACT IDA FROM IDB ANTES DESPUÉS 77 IDA PIC 99 10 10 77 IDB PIC 999 042 032SUBTRACT IDA 4 IDB ANTES DESPUÉSFROM IDC IDD77 IDA PIC 99 10 1077 IDB PIC 999 027 02777 IDC PIC 99 52 1177 IDD PIC 99 47 06 LENGUAJE COBOL 79 RESTA. EJEMPLOS SUBTRACT CANTIDAD-1, CANTIDAD-2, CANTIDAD-FROM CANTIDAD-4 GIVING CANTIDAD-5, CANTIDAD-6 ROUNDED ON SIZE ERROR PERFORM DESBORDAMIENTO. Las operaciones que se realizan en este caso son: • CANTIDAD-5 = CANTIDAD-4 - (CANTIDAD-3 + CANTIDAD-2 + CANTIDAD-1). • CANTIDAD-6 = CANTIDAD-4 - (CANTIDAD-3 + CANTIDAD-2 + CANTIDAD-1). En el caso de que se produzca el desbordamiento de alguno de los campos receptores ( CANTIDAD-5, CANTIDAD-6 ) el programa será desviado a la rutina de desbordamiento. LENGUAJE COBOL 80 40
  41. 41. RESTA. EJEMPLOSSUBTRACT IDA FROM IDB ANTES DESPUÉSGIVING IDC77 IDA PIC 99 10 1077 IDB PIC 999 032 03277 IDC PIC 99 41 22SUBTRACT IDD IDC FROM IDB ANTES DESPUÉSGIVING IDA77 IDA PIC 9(6) 000123 07200077 IDB PIC 9(6) 122000 12200077 IDC PIC 9(6) 020000 02000077 IDD PIC 9(6) 030000 030000 LENGUAJE COBOL 81MULTIPLICACIÓN MULTIPLY ident-1/literal-1 BY ident-2siendo:ident-1: multiplicando.ident-2: multiplicador y campo receptor del resultado de la operación.MULTIPLY IDB BY IDA ANTES DESPUÉS77 IDA PIC 9(5) 01000 2500077 IDB PIC 99 25 25MULTIPLY 0.5 BY IDA ANTES DESPUÉS77 IDA PIC 9(5) 25000 12500 LENGUAJE COBOL 82 41
  42. 42. MULTIPLICACIÓNMULTIPLY ident-1/literal-1 BY ident-2 GIVING ident-3 MULTIPLY A BY B GIVING C ROUNDED, E ON SIZE ERROR PERFORM RUTINA-DESBORDAMIENTO.MULTIPLY IDA BY 0.5 GIVING IDB ANTES DESPUÉS77 IDA PIC 9(5) 12500 1250077 IDB PIC 9(5) 50000 06250 LENGUAJE COBOL 83DIVISIÓN DIVIDE ident-1/literal-1 INTO ident-2DIVIDE A INTO B, C ROUNDEDON SIZE ERRORPERFORM RUTINA-DE-DESBORDAMIENTO.Las operaciones que se realizan son B=B/A y C=C/A, en el casode que en algún campo receptor, no cupiera el resultado de lasoperaciones realizadas se rompería la secuencia del programaejecutándose el párrafo RUTINA DE DESBORDAMIENTO. LENGUAJE COBOL 84 42
  43. 43. DIVISIÓNDIVIDE ident-1/literal-1. INTO ident-2 GIVING ident-3DIVIDE ident-1/literal-1 BY ident-2 GIVING ident-3DIVIDE ident-1/literal-1 INTO ident-2 GIVING ident-3REMAINDER ident-4DIVIDE ident-1/literal-1 BY ident-2 GIVING ident-3REMAINDER ident-4 LENGUAJE COBOL 85DIVISIÓN. EJEMPLOSDIVIDE IDB INTO IDA ANTES DESPUÉS77 IDA PIC 9(5) 50000 0100077 IDB PIC 99 50 50DIVIDE IDA BY 365 GIVING IDB ANTES DESPUÉS77 IDA PIC 9(5) 36500 3650077 IDB PIC 9999 1000DIVIDE 365 INTO IDA GIVING IDB ANTES DESPUÉS77 IDA PIC 9(5) 36500 3650077 IDB PIC 9999 1000 LENGUAJE COBOL 86 43
  44. 44. DIVISIÓN. EJEMPLOSDIVIDE DIVIDENDO ANTES DESPUÉSBY DIVISORGIVING COCIENTEREMAINDER RESTO77 DIVIDENDO PIC 999 100 10077 DIVISOR PIC 99 03 0377 RESTO PIC 99V99 55 0100 (01.00)77 COCIENTE PIC 99 33 LENGUAJE COBOL 87COMPUTE 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
  45. 45. COMPUTESÍMBOLO OPERACIÓN PRIORIDAD REPRESENTADA+ Suma MENOR- Resta* Producto/ Cociente** Exponenciación MAYOR LENGUAJE COBOL 89 COMPUTE COMPUTE A = B ** C. No tiene sentencia COMPUTE A = B + C. equivalente. ADD B, C GIVING A. COMPUTE A = B / C. COMPUTE A = B - C. DIVIDE B BY C GIVING A. SUBTRACT C FROM B GIVING A. COMPUTE A = -B. COMPUTE A = B * C. SUBTRACT B FROM MULTIPLY B BY C GIVING A. ZERO GIVING A, MULTIPLY -1 BY B GIVING A LENGUAJE COBOL 90 45
  46. 46. LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN VERBOS ENTRADA SALIDAINTRODUCCIÓ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 LENGUAJE COBOL 92 46
  47. 47. DISPLAY Mediante esta declaración se proporciona información o mensajes a la consola, impresora u otro dispositivo de salida.DISPLAY ident/literal ...[UPON nombre nemónico/de función][WITH NO ADVANCING]DISPLAY ident-1/literal-1 [LINE ident-2/entero-2][POSITION ident-3/entero-3] [opciones] .... LENGUAJE COBOL 93DISPLAY. OPCIONES BEEP: Emite un sonido cada vez que display es ejecutado. BLINK: Hace parpadear el elemento visualizado. CONVERT: Esta opción se aplica a campos numéricos o numéricos editados. El valor a visualizar es convertido de su formato interno a los dígitos correspondiente, eliminando los ceros no significativos. El valor se ajusta a la izquierda, y el espacio sobrante a la derecha se rellena con blancos. ERASE[EOL/EOS]: ERASE borra pantalla. ERASE EOL borra desde la posición del cursor hasta el final de la línea. ERASE EOS borra desde la posición del cursor hasta el final de la pantalla. LENGUAJE COBOL 94 47
  48. 48. 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 95 ACCEPT Esta declaración permite introducir pequeños volúmenes de datos, necesarios para el programa, desde la consola u otro dispositivo de entrada. ACCEPT identificador FROM ATE/DAY/TIME/DAY-OF-WEEKACCEPT identificador [FROM nombre-nemónico/CONSOLE/SYSIN] ACCEPT identificador-1 [LINE identificador-2/entero-2] [POSITION identificador-3/entero-3] [opciones] .... LENGUAJE COBOL 96 48
  49. 49. 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 97ACCEPT. 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
  50. 50. LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN VERBOS TRANSFERENCIA DE DATOSGENERALIDADES 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
  51. 51. 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 101VERBO 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
  52. 52. TIPOS DE MOVIMIENTOS CAMPO RECEPTORCAMPO EMISOR ALFABÉTICO ALFANUMÉRICO NUM ENTERO ALFANUMÉRICO NUM NO ENTER EDITADO NUM EDITADOAlfabético SI SI NOAlfanumérico SI SI NOAlfanumérico editado SI SI NONumérico Entero NO SI SINumérico No Entero NO NO SINumérico Editado NO SI SI LENGUAJE COBOL 103TIPOS 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. LENGUAJE COBOL 104 52
  53. 53. 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(campo emisor), se produce truncamiento. • Si tamaño (campo receptor) > tamaño(campo emisor), se rellena con blancos. LENGUAJE COBOL 105VERBO MOVE CORRESPONDING La transferencia de un campo compuesto puede realizarse como un campo elemental, cuya longitud es la suma de los campos elementales que lo forman, o bien moviendo los campos elementales uno a uno.MOVE CORRESPONDING/CORR identificador-1 TO identificador-2 ... Con esta opción del verbo MOVE se transfiere el contenido de los campos elementales de identificador-1 a los campos elementales de igual nombre de identificador-2. LENGUAJE COBOL 106 53
  54. 54. EJEMPLOSMOVE EMISOR TO RECEPTOR ANTES DESPUÉS77 EMISOR PIC 99V99 1234 (12.34) 1234 (12.34)77 RECEPTOR PIC 999V99 98765 (987.65) 01234 (012.34)MOVE EMISOR TO RECEPTOR ANTES DESPUÉS77 EMISOR PIC 9V9 11 (1.1) 11 (1.1)77 RECEPTOR PIC 999V999 123123 (123.123) 001100 (001.100)MOVE EMISOR TO RECEPTOR ANTES DESPUÉS77 EMISOR PIC 999V99 12312 (123.12) 12312 (123.12)77 RECEPTOR PIC 999.99. 321.98 123.12MOVE EMISOR TO RECEPTOR ANTES DESPUES77 EMISOR PIC 9(4)V9 12345 (1234.5) 12345 (1234.5)77 RECEPTOR PIC 99V999 98765 (98.765) 34500 (34.500) LENGUAJE COBOL 107EJEMPLOS01 GRUPO-1 05 NUMERO PIC 99. 05 DIA PIC X(7). 05 AÑO PIC 99.01 GRUPO-2 05 LOCALIDAD PIC X(15). 05 MUNICIPIO PIC 999. 05 PRESUPUESTO PIC 9(5)V99.GRUPO-1 12JUEVESb95GRUPO-2 ARANDAbDEbDUERO9815321572Después de ejecutar MOVE GRUPO-1 TO GRUPO-2GRUPO-1 12JUEVESb95 LENGUAJE COBOL 108 54
  55. 55. EJEMPLOSSi se ha declarado la tabla siguiente:01 TABLA 02 TABLA-CELDA OCCURS 50 TIMES PIC 9(5)V99.MOVE ZEROS TO TABLA rellena los 350 bytes del campo de TABLAcon ceros. Como resultado cada uno de los 7 bytes de los campos deTABLA-CELDA también tendrá valores cero. LENGUAJE COBOL 109EJEMPLOS01 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 LENGUAJE COBOL 110 55
  56. 56. LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ESTRUCTURAS DE CONTROLINTRODUCCIÓN El teorema de la estructura establece que un programa propio puede ser escrito utilizando solamente tres tipos de estructuras de control: secuencial, repetitiva y condicional. Un programa se define como propio si cumple: • Posee un solo punto de entrada y otro de salida para el control del programa. • Existen caminos desde la entrada hasta la salida que se pueden seguir y que pasan por todas las partes del programa. • Todas las instrucciones son ejecutables y no existen bucles infinitos. LENGUAJE COBOL 112 56
  57. 57. 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, el conjunto de acciones a realizar. PROCEDURE DIVISION. Nombre-párrafo-1. ............................................. ............................................. Nombre-párrafo-2. ............................................. ............................................. LENGUAJE COBOL 113ESTRUCTURA SECUENCIAL Se emplea para especificar la secuencia de ejecución de un programa modular representado por párrafos. PERFORM nombre-párrafo PROCEDURE DIVISION. PROGRAMA PROGRAMA. PERFORM P-PROGRAMA. ............................................ ............................................ STOP RUN. P-PROGRAMA. sentencia 1. P-PROGRAMA sentencia 2. LENGUAJE COBOL 114 57
  58. 58. LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ESTRUCTURAS DE CONTROLVERBO 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] LENGUAJE COBOL 116 58
  59. 59. VERBO IF PROGRAMA CONDICIÓN P-PROGRAMA CIERTO F-PROGRAMA SENTENCIA 1 SENTENCIA 2PROCEDURE DIVISION. .PROGRAMA. . PERFORM P-PROGRAMA. CIERTO. IF condición sentencia-1 THEN PERFORM CIERTO. sentencia-2 PERFORM F-PROGRAMA. LENGUAJE COBOL 117VERBO IF PROGRAMA CONDICIÓN P-PROGRAMA CIERTO FALSO F-PROGRAMA SENTENCIA 1 SENTENCIA 3 SENTENCIA 2 SENTENCIA 4PROCEDURE DIVISION. CIERTO.PROGRAMA. sentencia-1. PERFORM P-PROGRAMA. sentencia-2. IF condición FALSO. THEN PERFORM CIERTO sentencia-3. ELSE PERFORM FALSO. sentencia-4. PERFORM F-PROGRAMA. LENGUAJE COBOL 118 59
  60. 60. CONDICIONES. TIPOS Condiciones de relación. • Las condiciones de relación se refieren a las comparaciones entre dos items. El tipo de comparación se indica por el operador relacional que puede estar en forma de palabras o de símbolos. identificador-1 identificador-2 literal-1 IS operador literal-2 exp-aritmética-1 exp-artimética-2 LENGUAJE COBOL 119CONDICIONES. TIPOSOperador Símbolo SignificadoGREATER THAN > Mayor queLESS THAN < Menor queEQUAL TO = Igual aNOT GREATER THAN NOT > No mayor queNOT LESS THAN NOT < No menor queNOT EQUAL TO NOT = No igual a LENGUAJE COBOL 120 60
  61. 61. 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: NUMERIC ALPHABETIC Identificador IS [NOT] ALPHABETIC-LOWER ALPHABETIC-UPPER LENGUAJE COBOL 121CONDICIONES. 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: POSITIVE Expresión Aritmética IS [NOT] NEGATIVE ZERO LENGUAJE COBOL 122 61
  62. 62. 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 123 CONDICIONES. 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.02 SEXO-EM PIC X. 88 MASCULINO VALUE ‘1’. 88 FEMENINO VALUE ‘2’. 88 ERROR-CODIGO VALUES ARE LOW-VALUES THRU ZERO, ‘3’ THRU HIGH-VALUES. LENGUAJE COBOL 124 62
  63. 63. CONDICIONES. TIPOS Condiciones compuestas. • Son varias condiciones simples enlazadas mediante operaciones lógicas AND y OR. • Orden de evaluación de las condiciones • 1 - PARÉNTESIS • 2 - NOT • 3 - AND • 4 - OR • 5 - A igualdad de operadores de izquierda a derecha condición-1 [NOT] AND/[NOT] OR condición-2 LENGUAJE COBOL 125VERBO EVALUATE Este verbo produce la evaluación de una condición, dependiendo la siguiente acción del programa a realizar, de la evaluación de la misma. Es una forma de implementar la estructura Casos. EVALUATE identificador WHEN literal-1 THRU literal-2 instrucción imperativa-1 ........... WHEN OTHER instrucción imperativa-n LENGUAJE COBOL 126 63
  64. 64. VERBO EVALUATE PROGRAMA IDENTIFICADOR = V1 = V3 = V2 P-PROGRAMA PÁRRAFO-1 PÁRRAFO-2 PÁRRAFO-3 F-PROGRAMA PROCEDURE DIVISION. PROGRAMA. PERFORM P-PROGRAMA. EVALUATE identificador WHEN v1 PERFORM PARRAFO-1 WHEN v2 PERFORM PARRAFO-2 WHEN OTHER PERFORM PARRAFO-3 END-EVALUATE. PERFORM F-PROGRAMA. STOP RUN. LENGUAJE COBOL 127VERBO EVALUATESi tenemos un código que puede tener como valores: 1, 2, y 3. Elsiguiente árbol programático representa la estructura condicional anidadaque verifica el valor del código y ejecuta el párrafo adecuado. VALOR-CÓDIGO CÓDIGO 0 1 P-VALOR-CÓDIGO AÑADIR F-VALOR-CÓDIGO CÓDIGO = 2 BORRAR FALSO CODIGO = 3 MODIFICAR ERROR LENGUAJE COBOL 128 64
  65. 65. VERBO EVALUATE VALOR-CÓDIGO CÓDOGO = 1 OTRO =2 =3 P-VALOR-CÓDIGO AÑADIR BORRAR MODIFICAR ERROR F-VALOR-CÓDIGOSi tenemos un código que puede tener como valores: 1, 2, y 3. El siguiente árbolprogramático también representa la estructura condicional que verifica el valordel código y ejecuta el párrafo adecuado. LENGUAJE COBOL 129 VERBO EVALUATE EVALUATE TRUE WHEN NOMBRE-DE-CONDICION instrucción imperativa-1 ........... WHEN OTHER instrucción imperativa-n DATA DIVISION. WORKING-STORAGE SECTION. 01 CODIGO PIC 9. 88 AÑADIR-REGISTRO VALUE 1. 88 SUPRIMIR-REGISTRO VALUE 2. 88 MODIFICAR-REGISTRO VALUE 3. 88 ERROR-CODIGO VALUE ARE 0 4 THRU 9. EVALUATE TRUE WHEN añadir-registro PERFORM AÑADIR WHEN suprimir-registro PERFORM SUPRIMIR WHEN modificar-registro PERFORM MODIFICAR WHEN OTHER PERFORM CODIGO-ERRONEO END-EVALUATE. LENGUAJE COBOL 130 65
  66. 66. VERBO EVALUATECONDICIÓNCÓDIGO CALIFICACIÓN ACCIÓN A REALIZAR1o2 A, B o C PÁRRAFO-13 AoB PÁRRAFO-24 cualquiera PÁRRAFO-3cualquier otro cualquiera PÁRRAFO-4EVALUATE CÓDIGO ALSO CALIFICACIÓN WHEN 1 THRU 2 ALSO “A” THRU “C” PERFORM PARRAFO-1 WHEN 3 ALSO “A” THRU “B” PERFORM PARRAFO-2 WHEN 4 ALSO ANY PERFORM PARRAFO-3 WHEN OTHER PERFORM PARRAFO-4END-EVALUATE. LENGUAJE COBOL 131LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN ESTRUCTURAS DE CONTROL 66
  67. 67. VERBO PERFORM PERFORM párrafo entero/identificador TIMESPROCEDURE DIVISION.PROGRAMA. .............................. PERFORM BUCLE 5 TIMES .............................BUCLE. sentencia 1. BUCLE sentencia 2. 5 VECES LENGUAJE COBOL 133VERBO PERFORM PERFORM párrafo [WITH TEST BEFORE] UNTIL condición PROGRAMA P-PROGRAMA PÁRRAFO F-PROGRAMA CONDICIÓN LENGUAJE COBOL 134 67
  68. 68. VERBO PERFORM PERFORM párrafo WITH TEST AFTER UNTIL condición PROGRAMA P-PROGRAMA PÁRRAFO F-PROGRAMA CONDICIÓN (DESPUÉS) LENGUAJE COBOL 135VERBO 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
  69. 69. VERBO PERFORM La ejecución, si no se ha especificado la opción TEST AFTER se realiza de la siguiente forma: a) El identificador-1 se inicializa al valor especificado por literal-1 o identificador-2 que sigue al FROM. b) Se evalúa la condición-1. 1. Si es cierta, se da por finalizada la ejecución de la sentencia PERFORM y se pasa a ejecutar la siguiente sentencia del programa. 2. Si es falsa, se pasa al punto c. c) Se ejecuta el párrafo d) Se suma a identificador-1 el valor especificado por identificador-3 que sigue a BY y se vuelve al punto b. LENGUAJE COBOL 137VERBO PERFORM PERFORM párrafo WITH TEST BEFORE VARYING iden-1 FROM iden-2 BY iden-3 UNTIL condición PROGRAMA IDEN-1 = IDEN-2 , IDEN-3 P-PROGRAMA PÁRRAFO F-PROGRAMA CONDICIÓN LENGUAJE COBOL 138 69
  70. 70. 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 139VERBO 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 ele) Se suma a identificador-4 el valor especificado por identificador-6 que sigue a BY y se vuelve al punto c. LENGUAJE COBOL 140 70
  71. 71. VERBO PERFORM PROGRAMA IDEN-1 = IDEN-2 , IDEN-3 IDEN-4 = IDEN-5 , IDEN-6 P-PROGRAMA PÁRRAFO F-PROGRAMA CONDICIÓN 1 CONDICIÓN 2 PERFORM párrafo [VARYING iden-1 FROM iden-2 BY iden-3 UNTIL condición-1 AFTER iden-4 FROM iden-5 BY iden-6 UNTIL condición-2 LENGUAJE COBOL 141 71

×