SI STEMAS DE GESTI N ELEMENTOS DEL LENGUAJ E COBOL LENGUAJ E COBOL 2 LENGUAJ E COBOL Cobol, es un lenguaje de alto nivel (3 generacin) de tipo imperativo y orientado a resolver problemas de gestin. COBOL significa: Common Business Oriented Lenguaje Fue creado en 1.960, por la comisin CODASYL (Conference on Data System Lenguaje), formada por fabricantes, usuarios y gobierno USA, esta comisin adems 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 ms utilizados los de: MICROFOCUS MICROSOFT RM/COBOL (McFarland) COBOL2 (IBM) 2 LENGUAJ E COBOL 3 ELEMENTOS DEL LENGUAJ E Caracteres de Cobol Caracteres numricos. 0/9. Caracteres alfabticos. A/Z. Caracteres especiales. $, blanco, +, ......... Caracteres empleados en puntuacin { $, (, ), ,, ; } Caracteres aritmticos. { +, -, *, **, /, =, (, ) } Caracteres empleados en declaraciones condicionales. { <, >, = } LENGUAJ E COBOL 4 ELEMENTOS DEL LENGUAJ E Constantes Literales numricos Literales de coma fija Literales de coma flotante. [ +/- ] mantisa E [ +/- ] exponente Literales no numricos. Constantes figurativas. ZERO. SPACE. ALL carcter. HIGH-VALUE . LOW-VALUE. 3 LENGUAJ E COBOL 5 ELEMENTOS DEL LENGUAJ E 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 combinacin de los tres grupos de caracteres siguientes: dgitos (0/9), letras (A/Z) y el guin (-). Estan compuesto por una combinacin de 30 caracteres como mximo. No pueden comenzar ni finalizar con un guin. Debern comenzar por un carcter alfabtico, excepto los nombres de prrafos. No pueden tener el mismo nombre que una palabra reservada. LENGUAJ E COBOL 6 ELEMENTOS DEL LENGUAJ E Operadores. Los operadores son smbolos que indican cmo son manipulados los datos D =(A +B)*C Dar Prioridad ( ) C =A +B Asignacin = A ** B Exponenciacin ** A / B Divisin / A * B Producto * A - B Resta - A +B Suma + Ejemplo Significado Operador Operadores Aritmticos 4 LENGUAJ E COBOL 7 ELEMENTOS DEL LENGUAJ E A =B OR A <B Disyuncin OR A =B ANDA >B Conjuncin AND NOT ( A =B ) Negacin NOT Operadores Lgicos A >=B Mayor o igual que >= A <=B Menor o igual que <= A >B Mayor que > A <B Menor que < A =B Igual que = Operadores de Relacin LENGUAJ E COBOL 8 ELEMENTOS DEL LENGUAJ E Expresiones Aritmticas. Una expresin aritmtica puede ser una constante, una variable o un conjunto de constantes y variables unidas por operadores aritmticos. El punto, punto y coma o coma no pueden ir precedidos por un espacio, pero si tienen que ir seguidos por un espacio. Un parntesis izquierdo no puede ir seguido por un espacio, un parntesis derecho no puede ir precedido por un espacio. Un operador aritmtico o un signo igual tiene que ir precedido por un espacio y seguido por un espacio. 5 LENGUAJ E COBOL 9 ELEMENTOS DEL LENGUAJ E Expresiones Aritmticas. A la hora de evaluar una expresin Primero se evalan las operaciones entre parntesis, del ms interno al ms externo. Despus se evalan los operadores con la prioridad siguiente: + y - unarios ** *, / +,- LENGUAJ E COBOL 10 ELEMENTOS DEL LENGUAJ E Expresiones de Boole. Una expresin de Boole da como resultado un valor VERDADERO o FALSO. Los operadores que intervienen en una expresin de Boole pueden ser: operadores de relacin y operadores lgicos. A >= 30 AND B = C A = 0 AND B * 2 NOT= 0 OR C = 0 6 LENGUAJ E ORI ENTADO A SI STEMAS DE GESTI N ESTRUCTURA DE UN PROGRAMA EN COBOL LENGUAJ E COBOL 12 DI VI SI ONES, SECCI ONES Y PRRAFOS IDENTIFICATION DIVISION. [ENVIRONMENT DIVISION.] [DATA DIVISION.] PROCEDURE DIVISION. 7 LENGUAJ E COBOL 13 DI VI SI ONES, SECCI ONES Y PRRAFOS IDENTIFICATION DIVISION. divisin PROGRAM-ID. EJ EMPLO. AUTHOR. EUI. prrafo DATE-WRITTEN. 01-ENERO-93. DATE-COMPILED. 01-ENERO-93. ENVIRONMENT DIVISION. CONFIGURATION SECTION. seccin SOURCE-COMPUTER. IBM PERSONAL COMPUTER. OBJ ECT-COMPUTER. IBM PERSONAL COMPUTER. SPECIAL-NAMES. prrafo DECIMAL-POINT IS COMMA. clusula INPUT-OUTPUT SECTION. seccin FILE-CONTROL. prrafo SELECT IMPRESORA ASSING TO PRINTER. clusulas LENGUAJ E COBOL 14 DI VI SI ONES EN COBOL IDENTIFICATION DIVISION PROPSITO: Identificar el programa de forma que se distinga de los otros, adems de proporcionar el nombre del autor, cuando se escribi etc. PRRAFOS PROGRAM-ID. AUTHOR. INSTALLATION. DATE-WRITTEN. DATE-COMPILED. SECURITY. REMARKS. 8 LENGUAJ E COBOL 15 DI VI SI ONES EN COBOL ENVIRONMENT DIVISION PROPSITO: En esta divisin se describe el entorno fsico en el cual se va a desarrollar el programa. Entendindose por entorno, la clase de sistema que se va a utilizar as como los dispositivos de entrada/salida. SECCIONES CONFIGURATION SECTION. INPUT-OUPUT SECTION. LENGUAJ E COBOL 16 DI VI SI ONES EN COBOL CONFIGURATION SECTION. PROPSITO: Tiene como finalidad describir las caractersticas del computador usado para compilar y ejecutar el programa, todo ello a nivel de comentarios PRRAFOS SOURCE-COMPUTER. Modelo de ordenador. OBJECT-COMPUTER. Modelo de ordenador. SPECIAL-NAMES. [[Nombre de funcin IS nombre nemotcnico] [CURRENCY SIGN IS literal] [DECIMAL-POINT IS COMMA].] INPUT-OUTPUT SECTION. PROPSITO: Declarar los ficheros utilizados y la asignacin a los dispositivos de E/S. PRRAFOS FILE-CONTROL 9 LENGUAJ E COBOL 17 DI VI SI ONES EN COBOL Nombre de funcin es un nombre reconocido por el compilador y nombre nemotcnico es un nombre creado por el programador. De esta forma podemos poner: CONSOLE IS CONSOLA SYSOUT IS ARCHI-PANTALLA La funcin de CURRENCY SING es indicar que el sistema tiene que utilizar un carcter monetario distinto del que tiene por defecto ($). El carcter sustituto de ste, tiene que ser uno solo y alfabtico. La funcin del DECIMAL-POINT IS COMMA es indicar que el sistema tiene que sustituir la notacin anglosajona por la castellana en la funcin del punto decimal y la coma, en los campos de edicin. LENGUAJ E COBOL 18 DI VI SI ONES EN COBOL DATA DIVISION PROPSITO: 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 codificacin del programa debe estar definido en esta divisin. PRRAFOS WORKING-STORAGE SECTION. FILE SECTION. PROCEDURE DIVISION PROPSITO: Es en esta divisin donde se codifica el algoritmo propiamente dicho, esto es, donde se especifican las instrucciones adecuadas para resolver el problema. 10 LENGUAJ E COBOL 19 HOJ A DE CODI FI CACI N 73 A 80 12 A 72 8 A 11 7 123456 Se utilizaban para indicar los nmeros de secuencia, permitiendo ordenar fcilmente el programa Se utiliza para poner un carcter especial (*) que indica comienzo de un comentario. Si el carcter especial que se incluye en esta columna es (-) indica que es continuacin de un literal no numrico, cuando la longitud de ste, ocupa ms de una lnea. MARGEN B MARGEN A Son opcionales, se utilizan normalmente para escribir comentarios que identifican el programa. LENGUAJ E COBOL 20 HOJ A DE CODI FI CACI N Margen A Cabeceras de divisin: IDENTIFICATION DIVISION... Cabeceras de seccin : CONFIGURATION SECTION... Cabeceras de prrafos: PROGRAM-ID... Nombre de procedimientos: ABRIR-FICHEROS... Descripciones de nivel FD: FDIMPRESO.. Los nmeros de nivel 01 y 77 Margen B Todo aquello que no est en los apartados anteriores. Casi todas estas reglas son innecesarias hoy en da, con la simple eleccin de un editor adecuado y un estilo de programacin racional y estructurado. 11 LENGUAJ E COBOL 21 REGLAS DE CODI FI CACI N Los nombres de divisin, seccin y prrafos deben escribirse solos en una lnea y finalizar con un punto. Cada entrada y cada sentencia del programa debe finalizar con un punto. Si a lo largo de una lnea fsica no se encuentra un punto, la siguiente lnea ser tomada como continuacin de la anterior, esto es, cada entrada y cada sentencia del programa puede ocupar varias lneas fsicas. Si una entrada o una sentencia del programa no cabe en una lnea fsica, se contina en la lnea o lneas siguientes pero en el rea B. No es obligatorio llenar totalmente una lnea fsica. Se deben dejar lneas 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 ms clara la redaccin del programa. Si se utiliza ms de un espacio como separador entre palabras, el compilador lo interpreta como uno solo. LENGUAJ E COBOL 22 ESTRUCTURA GENERAL IDENTIFICATION DIVISION. PROGRAM-ID. nombre de programa. [ AUTHOR. comentarios... ] [ INSTALLATION. comentarios... ] [ DATE-WRITTEN. comentarios... ] [ DATE-COMPILED. comentarios... ] [ SECURITY. comentarios... ] [ REMARKS. comentarios... ] ENVIRONMENT DIVISION. [ CONFIGURATION SECTION. SOURCE-COMPUTER. modelo-ord. OBJ ECT-COMPUTER. modelo-ord. SPECIAL-NAMES. nombres especiales] [ INPUT-OUTPUT SECTION. {FILE CONTROL. control de archivos.} [ I-O CONTROL. control entrada/salida.]] DATA DIVISION [ FILE SECTION.] [ WORKING-STORAGE SECTION.] PROCEDURE DIVISION. nombre-de-prrafo. {Sentencia}...}... nombre-de-prrafo. {Sentencia}...}... 12 LENGUAJ E ORI ENTADO A SI STEMAS DE GESTI N ESTRUCTURA DE UN PROGRAMA EN COBOL LENGUAJ E COBOL 24 DI VI SI ONES, SECCI ONES Y PRRAFOS IDENTIFICATION DIVISION. [ENVIRONMENT DIVISION.] [DATA DIVISION.] PROCEDURE DIVISION. 13 LENGUAJ E COBOL 25 DI VI SI ONES, SECCI ONES Y PRRAFOS IDENTIFICATION DIVISION. divisin PROGRAM-ID. EJ EMPLO. AUTHOR. EUI. prrafo DATE-WRITTEN. 01-ENERO-93. DATE-COMPILED. 01-ENERO-93. ENVIRONMENT DIVISION. CONFIGURATION SECTION. seccin SOURCE-COMPUTER. IBM PERSONAL COMPUTER. OBJ ECT-COMPUTER. IBM PERSONAL COMPUTER. SPECIAL-NAMES. prrafo DECIMAL-POINT IS COMMA. clusula INPUT-OUTPUT SECTION. seccin FILE-CONTROL. prrafo SELECT IMPRESORA ASSING TO PRINTER. clusulas LENGUAJ E COBOL 26 DI VI SI ONES EN COBOL IDENTIFICATION DIVISION PROPSITO: Identificar el programa de forma que se distinga de los otros, adems de proporcionar el nombre del autor, cuando se escribi etc. PRRAFOS PROGRAM-ID. AUTHOR. INSTALLATION. DATE-WRITTEN. DATE-COMPILED. SECURITY. REMARKS. 14 LENGUAJ E COBOL 27 DI VI SI ONES EN COBOL ENVIRONMENT DIVISION PROPSITO: En esta divisin se describe el entorno fsico en el cual se va a desarrollar el programa. Entendindose por entorno, la clase de sistema que se va a utilizar as como los dispositivos de entrada/salida. SECCIONES CONFIGURATION SECTION. INPUT-OUPUT SECTION. LENGUAJ E COBOL 28 DI VI SI ONES EN COBOL CONFIGURATION SECTION. PROPSITO: Tiene como finalidad describir las caractersticas del computador usado para compilar y ejecutar el programa, todo ello a nivel de comentarios PRRAFOS SOURCE-COMPUTER. Modelo de ordenador. OBJECT-COMPUTER. Modelo de ordenador. SPECIAL-NAMES. [[Nombre de funcin IS nombre nemotcnico] [CURRENCY SIGN IS literal] [DECIMAL-POINT IS COMMA].] INPUT-OUTPUT SECTION. PROPSITO: Declarar los ficheros utilizados y la asignacin a los dispositivos de E/S. PRRAFOS FILE-CONTROL 15 LENGUAJ E COBOL 29 DI VI SI ONES EN COBOL Nombre de funcin es un nombre reconocido por el compilador y nombre nemotcnico es un nombre creado por el programador. De esta forma podemos poner: CONSOLE IS CONSOLA SYSOUT IS ARCHI-PANTALLA La funcin de CURRENCY SING es indicar que el sistema tiene que utilizar un carcter monetario distinto del que tiene por defecto ($). El carcter sustituto de ste, tiene que ser uno solo y alfabtico. La funcin del DECIMAL-POINT IS COMMA es indicar que el sistema tiene que sustituir la notacin anglosajona por la castellana en la funcin del punto decimal y la coma, en los campos de edicin. LENGUAJ E COBOL 30 DI VI SI ONES EN COBOL DATA DIVISION PROPSITO: 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 codificacin del programa debe estar definido en esta divisin. PRRAFOS WORKING-STORAGE SECTION. FILE SECTION. PROCEDURE DIVISION PROPSITO: Es en esta divisin donde se codifica el algoritmo propiamente dicho, esto es, donde se especifican las instrucciones adecuadas para resolver el problema. 16 LENGUAJ E COBOL 31 HOJ A DE CODI FI CACI N 73 A 80 12 A 72 8 A 11 7 123456 Se utilizaban para indicar los nmeros de secuencia, permitiendo ordenar fcilmente el programa Se utiliza para poner un carcter especial (*) que indica comienzo de un comentario. Si el carcter especial que se incluye en esta columna es (-) indica que es continuacin de un literal no numrico, cuando la longitud de ste, ocupa ms de una lnea. MARGEN B MARGEN A Son opcionales, se utilizan normalmente para escribir comentarios que identifican el programa. LENGUAJ E COBOL 32 HOJ A DE CODI FI CACI N Margen A Cabeceras de divisin: IDENTIFICATION DIVISION... Cabeceras de seccin : CONFIGURATION SECTION... Cabeceras de prrafos: PROGRAM-ID... Nombre de procedimientos: ABRIR-FICHEROS... Descripciones de nivel FD: FDIMPRESO.. Los nmeros de nivel 01 y 77 Margen B Todo aquello que no est en los apartados anteriores. Casi todas estas reglas son innecesarias hoy en da, con la simple eleccin de un editor adecuado y un estilo de programacin racional y estructurado. 17 LENGUAJ E COBOL 33 REGLAS DE CODI FI CACI N Los nombres de divisin, seccin y prrafos deben escribirse solos en una lnea y finalizar con un punto. Cada entrada y cada sentencia del programa debe finalizar con un punto. Si a lo largo de una lnea fsica no se encuentra un punto, la siguiente lnea ser tomada como continuacin de la anterior, esto es, cada entrada y cada sentencia del programa puede ocupar varias lneas fsicas. Si una entrada o una sentencia del programa no cabe en una lnea fsica, se contina en la lnea o lneas siguientes pero en el rea B. No es obligatorio llenar totalmente una lnea fsica. Se deben dejar lneas 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 ms clara la redaccin del programa. Si se utiliza ms de un espacio como separador entre palabras, el compilador lo interpreta como uno solo. LENGUAJ E COBOL 34 ESTRUCTURA GENERAL IDENTIFICATION DIVISION. PROGRAM-ID. nombre de programa. [ AUTHOR. comentarios... ] [ INSTALLATION. comentarios... ] [ DATE-WRITTEN. comentarios... ] [ DATE-COMPILED. comentarios... ] [ SECURITY. comentarios... ] [ REMARKS. comentarios... ] ENVIRONMENT DIVISION. [ CONFIGURATION SECTION. SOURCE-COMPUTER. modelo-ord. OBJ ECT-COMPUTER. modelo-ord. SPECIAL-NAMES. nombres especiales] [ INPUT-OUTPUT SECTION. {FILE CONTROL. control de archivos.} [ I-O CONTROL. control entrada/salida.]] DATA DIVISION [ FILE SECTION.] [ WORKING-STORAGE SECTION.] PROCEDURE DIVISION. nombre-de-prrafo. {Sentencia}...}... nombre-de-prrafo. {Sentencia}...}... 18 LENGUAJ E ORI ENTADO A SI STEMAS DE GESTI N LOS DATOS LENGUAJ E COBOL 36 DATA DI VI SI ON FUNCIN 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 descripcin de ficheros....} {Entrada de descripcin de registros...}] [WORKING-STORAGE SECTION. [ Entrada de descripcin de variables o registros ]] 19 LENGUAJ E COBOL 37 TI POS DE DATOS Una de las caractersticas tpicas de los datos que se usan en las aplicaciones de gestin es la variedad de formas y estructuras. Los datos se clasifican en: Campos Independientes Campos Compuestos Tablas LENGUAJ E COBOL 38 CAMPOS I NDEPENDI ENTES Es un campo de trabajo que ser definido en la seccin de working. No forman parte de la descripcin de los ficheros. Formato mnimo para su definicin: nmero-de-nivel nombre-de-dato PICTURE especificacin de formato. Donde: Nmero-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 informacin que puede almacenarse en el campo, as como las operaciones que con l pueden realizarse. Permite definir el tipo y el tamao del campo. 20 LENGUAJ E COBOL 39 CLUSULA PI CTURE PICTURE/PIC IS especificacin de formato. 1. PIC S999 2. PIC S99v99 Signo S 1. PIC 99v99 2. PIC 9(2)v99 Posicin Decimal V 1. PIC 99999 2. PIC 9(5) Cualquier dgito del 0 al 9 9 Ejemplos Descripcin Carcter LENGUAJ E COBOL 40 CLUSULA PI CTURE 0325^18 - 325. 18 77 CANT S9( 4) V99 0000^10 - 0. 10 77 CANT S9( 4) V99 1251^16 - 1251. 16 77 CANT S9( 3) V99 156^29 156. 29 77 CANT PI C S999V99 23561^00 23561. 00 77 CANT 99999V99 550 550 77 CANT PI C 999 0452^39 452. 39 77 CANT PI C 9( 4) V99 38^5 38. 50 77 CANT PI C 99V9 0285 285 77 CANT PI C 9999 0001234567 1234567 77 CANT PI C 9( 10) 8956 8956 77 CANT PI C 9999 012234 12234 77 CANT PI C 9( 6) Repr esent aci n I NTERNA Val or Numr i co Descr i pci n 21 LENGUAJ E COBOL 41 CLUSULA PI CTURE 1. PI C XXXXX 2. PI C X( 5) Cual qui er car ct er X 1. PI C AAAAA 2. PI C A( 5) Cual qui er car ct er l et r a A Ej empl os Descr i pci n Car ct er L I G . D D. GI L 77 VALOR PI C X( 8) O N E U B BUENOS 77 VALOR PI C X( 5) N E U B BUEN 77 VALOR PI C X( 5) O N E U B BUENO 77 VALOR PI C XXXXX Repr esent ado en el Al macenami ent o como Ej empl o Descr i pci n LENGUAJ E COBOL 42 CLUSULA PI CTURE Se i nser t a en el ext r emo i zqui er do o der echo. Repr esent a l a apar i ci n del si gno. Si el nmer o es posi t i vo apar ecer un + y si es negat i vo apar ecer un - . + Si r ve par a r eempl azar l os cer os no si gni f i cat i vos por bl ancos Z Si r ve par a r eempl azar l os cer os no si gni f i cat i vos ( a l a i zqui er da) por ast er i scos * I ndi ca l a posi ci n de l a coma como car ct er de separ aci n de mi l l ar es. La ut i l i zaci n de l a cl usul a DECI MAL POI NT I S COMMA en l a SPECI AL- NAMES de l a ENVI RONMENT DI VI SI ON i nvi er t e el uso de l os punt os y coma. , I ndi ca l a posi ci n del punt o deci mal . Se escr i be el si gno $ en el l ugar cor r ect o en que debe apar ecer en l a sal i da $ Descr i pci n Car ct er 22 LENGUAJ E COBOL 43 CLUSULA PI CTURE Se usan par a i nser t ar bl ancos en l as posi ci ones en que deben apar ecer B Se usan par a i nser t ar cer os en l as posi ci ones en que deben apar ecer 0 Repr esent a l a apar i ci n del si gno bancar i o DB de dbi t o. Cuando el val or es posi t i vo apar ecer n bl ancos, si el val or es negat i vo apar ece l os car act er es DB. DB Repr esent a l a apar i ci n del si gno bancar i o CR de cr di t o. Cuando el val or es posi t i vo apar ecer n bl ancos, si el val or es negat i vo apar ece l os car act er es CR. CR Se i nser t a en el ext r emo i zqui er do o der echo. Repr esent a l a apar i ci n del si gno. Si el nmer o es posi t i vo apar ecer un bl anco y si es negat i vo apar ecer un - . - Descr i pci n Car ct er LENGUAJ E COBOL 44 CLUSULA PI CTURE 000. 00 999. 99 500000 9999V99 54. 00 99. 99 54 99 NO VALI DO 99V. 99 567 9V99 000. 54 999. 99 000546 9( 3) V999 0543. 21 9( 4) . 99 054321 9( 4) V99 6543. 21 9( 4) . 99 654321 9( 4) V99 Resul t ado Edi t ado PI CTURE EDI CI N CONTENI DO PI CTURE 23 LENGUAJ E COBOL 45 CLUSULA PI CTURE bbb. 01 ZZZ. ZZ 00001 999V99 bb12. 34 Z( 4) . ZZ 001234 9( 4) V99 bl ancos Z( 3) . ZZ 00000 999V99 bb1. 03 ZZZ. 99 00103 9( 3) V99 103. 00 ZZZ. 99 103 999V b704 ZZZ9 0704 9999 Resul t ado Edi t ado PI CTURE EDI CI N CONTENI DO PI CTURE LENGUAJ E COBOL 46 CLUSULA PI CTURE **123. 45 *****. 99 0012345 9( 5) V99 ***123 ***999 000123 9( 6) ***012 ***999 000012 9( 6) *12345 ***999 012345 9( 6) Resul t ado Edi t ado PI CTURE EDI CI N CONTENI DO PI CTURE 24 LENGUAJ E COBOL 47 CLUSULA PI CTURE 10023 90099 123 999 1bb23 9BB99 123 999 1, 002, 340 9, 009, 990 1234 9( 4) 1b00b230 9B00B990 123 999 1, 230, 000. 45 9, 990, 000. 99 12345 9( 3) V99 1, 234, 567 9, 999, 999 1234567 9( 7) Resul t ado Edi t ado PI CTURE EDI CI N CONTENI DO PI CTURE LENGUAJ E COBOL 48 CLUSULA PI CTURE $*1, 234. 56 $**, ***. 99 0123456 9( 5) V99 $**123. 45 $*****. 99 0012345 9( 5) V99 $*123 $*999 0123 9( 4) $b123 $Z999 0123 9( 4) $0123 $9999 0123 9( 4) Resul t ado Edi t ado PI CTURE EDI CI N CONTENI DO PI CTURE 25 LENGUAJ E COBOL 49 CLUSULA PI CTURE +$579. 50 +$999. 99 +57950 S9( 3) V99 - $651. 25 +$999. 99 - 65125 S9( 3) V99 157. 68bb 999. 99DB +15768 S9( 3) V99 $182. 00CR $999. 99CR - 18200 S999V99 123. 45DB 999. 99DB - 12345 S9( 3) V99 456+ 999+ +456 S999 628 - 999 +628 S999 - 123 +999 - 123 S999 Resul t ado Edi t ado PI CTURE EDI CI N CONTENI DO PI CTURE LENGUAJ E COBOL 50 CLUSULA PI CTURE $4, 756. 82 $$$, $$$. 99 0475682 9( 5) V99 bl ancos ++++. ++ 00000 999V99 - 5. 55 ++++. 99 - 00555 999V99 $4. 40 $$$$$$. 99 0000440 9( 5) V99 Resul t ado Edi t ado PI CTURE EDI CI N CONTENI DO PI CTURE 26 LENGUAJ E COBOL 51 CLUSULA PI CTURE CASO 3000 XXXXBX000 CASO3 X( 5) H 0 L A ABABABA HOLA AAAA CN 1005 XXBBX( 4) CN1005 X( 6) Resul t ado Edi t ado PI CTURE EDI CI N CONTENI DO PI CTURE LENGUAJ E COBOL 52 CLUSULA VALUE La inicializacin de los campos independientes se debe realizar a travs de la clusula VALUE, cuando se estn definiendo. Formato VALUE IS literal/constante figurativa WORKI NG- STORAGE SECTI ON. 77 VARI ABLE PI C X( 20) VALUE Li st ado Empl eados. 77 VARI ABLE PI C 99 VALUE 10. 77 VARI ABLE PI C V99 VALUE 0. 03. 77 VARI ABLE PI C 9( 8) VALUE ZEROS. 77 VARI ABLE PI C X( 10) VALUE SPACES. 77 VARI ABLE PI C X( 9) VALUE - - - - - - - - - . 77 VARI ABLE PI C X( 9) VALUE ALL - . 77 CERO PI C 99999 VALUE ZEROS. 77 CERO PI C 99999 VALUE 0. 27 LENGUAJ E COBOL 53 J USTI FI ED RI GHT Se utiliza nicamente con variables de tipo alfabtico o alfanumrico y su efecto es eliminar la convencin de justificacin a la izquierda de los datos no numricos. 77 CAMPO PIC X(4) VALUE AB J UST RIGHT. B A LENGUAJ E COBOL 54 CAMPOS COMPUESTOS Son campos que pueden subdividirse. Se le conoce tambin con el nombre de registros. Pueden definirse en el rea de trabajo (WORKING- STORAGE SECTION) y es obligada su utilizacin al describir la estructura de los ficheros. AO MES DI A NCALLE CALLE PROVI NCI A APELLI DO2 APELLI DO1 NOMBRE NUM- VEN FECHA- ALTA DATOS- DI RECCI N DATOS- VENDEDOR 28 LENGUAJ E COBOL 55 CAMPOS COMPUESTOS 01 VENDEDOR. 02 NUMERO PI C 999. 02 DATOS- VENDEDOR. 03 NOMBRE PI C X( 10) . 03 APELLI DO1 PI C X( 10) . 03 APELLI DO2 PI C X( 10) . 02 DATOS- DI RECCI ON. 03 PROVI NCI A PI C X( 30) . 03 CALLE PI C X( 15) . 03 NCALLE PI C 99. 02 FECHA- ALTA. 03 D A PI C 99. 03 MES PI C 99. 03 ANI O PI C 99. ESPECIFICACIN DE FORMATO NUMERO DE NIVEL NOMBRE DE DATO LENGUAJ E COBOL 56 CAMPOS COMPUESTOS Los nombre de datos sirven para nombrar un campo con el fin de poder referenciar en el programa, el contenido del mismo. Si la informacin no se va a referenciar, el nombre de datos puede sustituirse por la palabra reservada FILLER. Los nmeros de Nivel sirven para indicar la relacin existente entre un campo y el resto de los campos. Los nmeros de nivel que pueden utilizarse son: del 01 al 49. [01] Slo precede al nombre del registro. [02 a 49] Preceden a cualquier campo grupo o elemental. 29 LENGUAJ E COBOL 57 CAMPOS COMPUESTOS Un campo grupo tiene un nivel superior que cualquiera de sus campos elementales. Los nmeros de nivel utilizados no tiene porque ser correlativos. Cualquier nombre de datos debe ir precedido por su nmero de nivel. El nmero de nivel 01 deber escribirse en el margen A, mientras que su nombre asociado lo ser en el margen B. Cualquiera de los restantes nmeros de nivel dentro del campo compuesto pueden situarse en cualquier columna. Se aconseja un escalonado progresivo de los niveles para una mejor interpretacin El tipo del campo determina la informacin que puede almacenarse en el campo, as como las operaciones que con l pueden realizarse. Se hace a travs de la clusula PICTURE. La longitud del campo viene dada por el nmero de caracteres empleados en la especificacin del formato para declarar el campo. LENGUAJ E COBOL 58 CAMPOS COMPUESTOS Calificacin de los nombres de datos. En la declaracin de campos compuestos, dos campos elementales pueden tener el mismo nombre de datos. 01 DATOS. 02 TOTALES- SEMANALES. 03 HORAS PI C 99V99. 03 DEPTO- NO PI C 9( 5) . 02 TOTALES- MENSUALES. 03 HORAS PI C 99V99. 03 MAS- I NFORMACI ON PI C 9( 5) . HORAS OF/IN TOTALES-SEMANALES HORAS OF/IN TOTALES-MENSUALES 30 LENGUAJ E COBOL 59 CAMPOS COMPUESTOS 01 REG-VIEJ O. 02 A-LA-FECHA. 03 MES.... 03 ANUAL.... 02 ULTIMO-PERIODO. 03 MES.... 03 ANUAL.... 03 TOTAL.... 01 REG-NUEVO. 02 A-LA-FECHA. 03 MES.... 03 ANUAL.... 02 ULTIMO-PERIODO. 03 MES.... 03 ANUAL.... 03 TOTAL.... MES OF ULTIMO-PERIODO OF REG-VIEJ O TOTAL OF REG-NUEVO LENGUAJ E COBOL 60 NOMBRES DE CONDI CI N Permite al programador definir constantes figurativas adicionales para usarlas en el programa COBOL 88 nombr e- de- dat o VALUE I S/ VALUES ARE const ant e- 1 [ THRU const ant e- 2] 77 FI NAL- FI CHERO PI C XX. 88 FI N- FI CHERO VALUE `SI `. Si se desea pr egunt ar SI ES FINAL DE FICHERO bast ar con deci r : I F FI N- FI CHERO en l ugar de pr egunt ar I F FI NAL- FI CHERO = `SI `. 31 LENGUAJ E COBOL 61 NOMBRES DE CONDI CI N 01 DATOS-PERSONALES. 02 NUMERO-ID... 02 NOMBRE...... 02 DIRECCION.... 02 EDUCACION PICTURE 99. 88 NO-BACHILLER VALUES ARE 0 THRU 11. 88 BACHILLER VALUE IS 12. 88 ALGO-UNIVERSIDAD VALUES ARE 13 THRU 15. 88 PROFESIONAL VALUE IS 16. 88 POSTGRADO VALUES ARE 17 THRU 20. 88 CODIGO-ERROR VALUES ARE 21 THRU 99. IF BACHILLER .... IF ALGO-UNIVERSIDAD OR PROFESIONAL IF EDUCACION < 16 LENGUAJ E COBOL 62 RENAMES La clusula RENAMES provee al programador la capacidad de reagrupar los items de datos elementales. 66 nombre-de-datos-1 RENAMES nombre-de -datos-2 [THRU nombre-de-datos-3] 01 REG-IMPUESTO. 02 NO-SEG-SOCIAL PIC X(9). 02 NOMBRE-COMPLETO. 03 NOMBRE PIC X(10). 03 INICIAL PIC XX. 03 APELLIDO PIC X(15). 02 TOTAL-A-LA-FECHA. 03 PAGO-BRUTO PIC 9(8)V99. 03 PAGO-NETO PIC 9(8)V99. 03 IMPUESTO-TRIBUTADO PIC 9(6)V99. 03 IMPUESTO-ESTADO PIC 9(4)V99. 66 ULTIMO-PAGO RENAMES APELLIDO THRU PAGO-NETO. IMPUESTO- ESTADO IMPUESTO- TRIBUT ADO PAGO-NETO PAGO-BRUTO APELLIDO INICIAL NOMBRE NO-SEG-SOCIAL TOTAL-A-LA-FECHA NOMBRE-COMPLETO 32 LENGUAJ E COBOL 63 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 especficas de la tabla se hace mediante un slo nombre junto con un subndice que indica la posicin de entrada particular. WORKING-STORAGE SECTION. 01 Nombre-de-tabla. 02 Nombre-de-elemento OCCURS nmero-de-elementos TIMES PICTURE tipo-de-elemento. LENGUAJ E COBOL 64 TABLAS 01TABLA- INGRESOS- ESTADO. 02 INGRESOS- PROMEDIOS OCCURS 50 TIMES PIC 9(6)V99. INGRESOS- PROMEDIOS (ndice) donde ndice es mayor o igual que 1 y menor o igual que 50. INGRESOS-PROMEDIO(50) INGRESOS-PROMEDIO(1) TABLA-INGRESOS-ESTADO 33 LENGUAJ E COBOL 65 TABLAS 01 TABLA-INGRESOS-ESTADO. 02 INGRESOS-PROMEDIOS OCCURS 50 TIMES PIC 9(6)V99. 02 PROMEDIO-NACIONAL PIC 9(7)V99. PROMEDIO-NACIONAL INGRESOS-PROMEDIOS (50) INGRESOS-PROMEDIOS (1) PROMEDIO-NACIONAL INGRESOS-PROMEDIOS TABLA-INGRESOS-ESTADO LENGUAJ E COBOL 66 TABLAS 01TABLA- INGRESOS- ESTADO. 02 NOMBRE - INGRESO OCCURS 50 TIMES. 03 NOMBRE PIC X(4). 03 INGRESO PIC 9(6)V99. I NGRESO ( 50) NOMBRE( 50) I NGRESO( 1) NOMBRE( 1) NOMBRE- I NGRESO ( 50) - - - NOMBRE- I NGRESO ( 1) TABLA- I NGRESOS- ESTADO 34 LENGUAJ E COBOL 67 TABLAS La clusula OCCURS no puede aplicarse a nivel 01. La clusula OCCURS no puede aplicarse a nivel 77. La dimensin de una tabla debe ser menor o igual que 7, aunque depende del compilador. La clusula PICTURE se aplica slo a campos elementales. Los subndices pueden ser constantes o variables de tipo entero. Sus valores deben ser positivos. El subndice o subndices se encierran en un conjunto de parntesis y se separan del nombre de la tabla por un espacio. Los subndices mltiples se separan uno de otros por comas y espacios. LENGUAJ E COBOL 68 TABLAS Inicializacin de una tabla en tiempo de compilacin. nombre-de-dato-1 REDEFINES nombre-de-dato-2 01FECHA. 02 D A PI C 99. 02 MES PI C 99. 02 AO PI C 99. 01 FECHA-ACTUAL REDEFINES FECHA PIC X(6). 35 LENGUAJ E COBOL 69 TABLAS 01TABLA-S. 02 FILLER PIC X(10) VALUE "LUNES". 02 FILLER PIC X(10) VALUE "MARTES". 02 FILLER PIC X(10) VALUE "MIRCOLES". 02 FILLER PIC X(10) VALUE "J UEVES". 02 FILLER PIC X(10) VALUE "VIERNES". 02 FILLER PIC X(10) VALUE "SBADO". 02 FILLER PIC X(10) VALUE "DOMINGO". 01TABLA-DIA-S REDEFINES TABLA-S. 02 DIA-SEMANA OCCURS 7 TIMES PIC X(10). LENGUAJ E ORI ENTADO A SI STEMAS DE GESTI N VERBOS ARITMTICOS 36 LENGUAJ E COBOL 71 I NTRODUCCI N Los verbos aritmticos permiten realizar las tpicas operaciones de suma, resta, producto y divisin, adems podremos almacenar el resto de una divisin y realizar conjuntamente todas estas operaciones en una sola sentencia. Verbos Aritmticos. Suma ADD Resta SUBSTRACT Producto MULTIPLY Divisin DIVIDE O. Aritmticas COMPUTE LENGUAJ E COBOL 72 SUMA ADD ident-1literal-1 [ident-2/literal-2] .... TO ident-n [ident-m] ADD ident-1/literal-1 ident-2/literal-2 GIVING ident-n [ident-m] 37 LENGUAJ E COBOL 73 SUMA. OPCI ONES Opcin ROUNDED Si en una suma (o cualquier otra operacin) el nmero de decimales del resultado es mayor que el nmero de ellos especificados en el campo receptor, trunca el nmero sobrante de dgitos por la derecha. PICTURE RESULTADO VALOR DESPUS VALOR DESPUS 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 LENGUAJ E COBOL 74 SUMA. OPCI ONES Opcin ON SIZE ERROR Si la parte entera de un clculo no cupiera en el campo receptor, se producira un desbordamiento. La utilizacin de esta clusula permite al programador especificar una serie de instrucciones que solo se ejecutaran cuando se produzca dicho desbordamiento. ADD HORAS-SEMANA TO TOTAL -HORAS-AO ON SIZE ERROR DISPLAY 'DESBORDAMIENTO DEL CAMPO ' ADD A B TO C ON SIZE ERROR DISPLAY 'ERROR.......'. 38 LENGUAJ E COBOL 75 SUMA. EJ EMPLOS 010 020 +20 010 020 -10 77 IDA PIC 9(3) 77 IDB PIC 999 77 IDC PIC S99 DESPUS ANTES ADDIDA IDB TO IDC 030 010 +15 -005 030 010 +05 -15 77 IDA PIC 9(3) 77 IDB PIC 999 77 IDC PIC S9(2) 77 IDD PIC S999 DESPUS ANTES ADDIDA IDB -30 TO IDD IDC LENGUAJ E COBOL 76 SUMA. EJ EMPLOS -10 +020 +0010 -10 +020 +0030 77 IDA PIC S9(2) 77 IDB PIC S9(3) 77 IDC PIC S9(4) DESPUS ANTES ADDIDA IDB GIVING IDC -10 +020 +0005 -10 +020 +0030 77 IDA PIC S9(2) 77 IDB PIC S9(3) 77 IDC PIC S9(4) DESPUS ANTES ADD-15 IDA IDB GIVING IDC 39 LENGUAJ E COBOL 77 SUMA. EJ EMPLOS 21987 4593 ---80 Se han perdido dgitos (26580) 21987 4593 52 77 IDA PIC 9(5) 77 IDB PIC 9(4) 77 IDC PIC 99 DESPUS ANTES ADDIDA IDB GIVING IDC 000005 000-- se han perdido dgitos (0.0008) 000005 038 77 IDA PIC 9V9(5) 77 IDC PIC 9V99 DESPUS ANTES ADD0.0003 IDA GIVING IDC LENGUAJ E COBOL 78 RESTA La sentencia SUBTRACT se utiliza para restar uno o ms items de datos numricos de otro u otros items de datos numricos, sustituyendo el valor de la diferencia en el ltimo items de la declaracin. SUBTRACT ident-1/literal-1 .... FROM ident-2 SUBTRACT ident-1/literal-1....FROM ident-2/literal-2 GIVING ident-3 40 LENGUAJ E COBOL 79 RESTA. EJ EMPLOS 10 032 10 042 77 IDA PIC 99 77 IDB PIC 999 DESPUS ANTES SUBTRACT IDA FROMIDB 10 027 11 06 10 027 52 47 77 IDA PIC 99 77 IDB PIC 999 77 IDC PIC 99 77 IDD PIC 99 DESPUS ANTES SUBTRACT IDA 4 IDB FROM IDC IDD LENGUAJ E COBOL 80 RESTA. EJ EMPLOS Las operaciones que se realizan en este caso son: CANTIDAD-5 =CANTIDAD-4 - (CANTIDAD-3 +CANTIDAD-2 + CANTIDAD-1). CANTIDAD-6 =CANTIDAD-4 - (CANTIDAD-3 +CANTIDAD-2 + CANTIDAD-1). En el caso de que se produzca el desbordamiento de alguno de los campos receptores ( CANTIDAD-5, CANTIDAD-6 ) el programa ser desviado a la rutina de desbordamiento. SUBTRACT CANTIDAD-1, CANTIDAD-2, CANTIDAD-FROM CANTIDAD-4 GIVING CANTIDAD-5, CANTIDAD-6 ROUNDED ON SIZE ERROR PERFORMDESBORDAMIENTO. 41 LENGUAJ E COBOL 81 RESTA. EJ EMPLOS 10 032 22 10 032 41 77 IDA PIC 99 77 IDB PIC 999 77 IDC PIC 99 DESPUS ANTES SUBTRACT IDA FROMIDB GIVING IDC 072000 122000 020000 030000 000123 122000 020000 030000 77 IDA PIC 9(6) 77 IDB PIC 9(6) 77 IDC PIC 9(6) 77 IDD PIC 9(6) DESPUS ANTES SUBTRACT IDD IDC FROM IDB GIVING IDA LENGUAJ E COBOL 82 MULTI PLI CACI N MULTIPLY ident-1/literal-1 BY ident-2 siendo: ident-1: multiplicando. ident-2: multiplicador y campo receptor del resultado de la operacin. 12500 25000 77 IDA PIC 9(5) DESPUS ANTES MULTIPLY 0.5 BY IDA 25000 25 01000 25 77 IDA PIC 9(5) 77 IDB PIC 99 DESPUS ANTES MULTIPLY IDB BY IDA 42 LENGUAJ E COBOL 83 MULTI PLI CACI N MULTIPLY ident-1/literal-1 BY ident-2 GIVING ident-3 12500 06250 12500 50000 77 IDA PIC 9(5) 77 IDB PIC 9(5) DESPUS ANTES MULTIPLY IDA BY 0.5 GIVING IDB MULTIPLY A BY B GIVING C ROUNDED, E ON SIZE ERROR PERFORMRUTINA-DESBORDAMIENTO. LENGUAJ E COBOL 84 DI VI SI N DIVIDE ident-1/literal-1 INTO ident-2 DIVIDE A INTO B, C ROUNDED ON SIZE ERROR PERFORMRUTINA-DE-DESBORDAMIENTO. Las operaciones que se realizan son B=B/A y C=C/A, en el caso de que en algn campo receptor, no cupiera el resultado de las operaciones realizadas se rompera la secuencia del programa ejecutndose el prrafo RUTINA DE DESBORDAMIENTO. 43 LENGUAJ E COBOL 85 DI VI SI 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 LENGUAJ E COBOL 86 DI VI SI N. EJ EMPLOS 36500 1000 36500 77 IDA PIC 9(5) 77 IDB PIC 9999 DESPUS ANTES DIVIDE 365 INTO IDA GIVING IDB 36500 1000 36500 77 IDA PIC 9(5) 77 IDB PIC 9999 DESPUS ANTES DIVIDE IDA BY 365 GIVING IDB 01000 50 50000 50 77 IDA PIC 9(5) 77 IDB PIC 99 DESPUS ANTES DIVIDE IDB INTO IDA 44 LENGUAJ E COBOL 87 DI VI SI N. EJ EMPLOS 100 03 0100 (01.00) 33 100 03 55 77 DIVIDENDO PIC 999 77 DIVISOR PIC 99 77 RESTO PIC 99V99 77 COCIENTE PIC 99 DESPUS ANTES DIVIDE DIVIDENDO BY DIVISOR GIVING COCIENTE REMAINDER RESTO LENGUAJ E COBOL 88 COMPUTE Esta sentencia se utiliza para realizar operaciones aritmticas sin necesidad de utilizar las declaraciones aritmticas vistas hasta ahora. COMPUTE ident-1 [ROUNDED] =expresin-aritmtica [ON SIZE ERROR sentencia-1] 45 LENGUAJ E COBOL 89 COMPUTE MAYOR Exponenciacin ** Cociente / Producto * Resta - MENOR Suma + PRIORIDAD OPERACIN REPRESENTADA SMBOLO LENGUAJ E COBOL 90 COMPUTE COMPUTE A =B +C. ADD B, C GIVING A. COMPUTE A =B - C. SUBTRACT C FROM B GIVING A. COMPUTE A =B * C. MULTIPLY B BY C GIVING A. COMPUTE A =B ** C. No tiene sentencia equivalente. COMPUTE A =B / C. DIVIDE B BY C GIVING A. COMPUTE A =-B. SUBTRACT B FROM ZERO GIVING A, MULTIPLY -1 BY B GIVING A 46 LENGUAJ E ORI ENTADO A SI STEMAS DE GESTI N VERBOS ENTRADA SALIDA LENGUAJ E COBOL 92 I NTRODUCCI N La funcin es poner en comunicacin el programa con los dispositivos externos donde se encuentran o se encontrarn los datos. Sentencias: Display Accept 47 LENGUAJ E COBOL 93 DI SPLAY Mediante esta declaracin se proporciona informacin o mensajes a la consola, impresora u otro dispositivo de salida. DISPLAY ident/literal ... [UPON nombre nemnico/de funcin] [WITH NO ADVANCING] DISPLAY ident-1/literal-1 [LINE ident-2/entero-2] [POSITION ident-3/entero-3] [opciones] .... LENGUAJ E COBOL 94 DI SPLAY. OPCI ONES BEEP: Emite un sonido cada vez que display es ejecutado. BLINK: Hace parpadear el elemento visualizado. CONVERT: Esta opcin se aplica a campos numricos o numricos editados. El valor a visualizar es convertido de su formato interno a los dgitos 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 posicin del cursor hasta el final de la lnea. ERASE EOS borra desde la posicin del cursor hasta el final de la pantalla. 48 LENGUAJ E COBOL 95 DI SPLAY. OPCI ONES HIGH: Visualiza el dato en intensidad alta. Por defecto. LOW: Visualiza el dato en intensidad baja. REVERSE: Visualiza el dato en vdeo inverso. SIZE: Especifica el tamao del campo fsico presentado sobre la misma pantalla. Si el tamao especificado es menor que el definido en la clusula PIC, solamente aparecer sobre la pantalla la porcin de la parte izquierda, y si el tamao especificado es ms grande, se rellena con blancos. UNDERLINE: Visualiza el dato subrayado. LENGUAJ E COBOL 96 ACCEPT Esta declaracin permite introducir pequeos volmenes de datos, necesarios para el programa, desde la consola u otro dispositivo de entrada. ACCEPT identificador FROM ATE/DAY/TIME/DAY-OF-WEEK ACCEPT identificador [FROM nombre-nemnico/CONSOLE/SYSIN] ACCEPT identificador-1 [LINE identificador-2/entero-2] [POSITION identificador-3/entero-3] [opciones] .... 49 LENGUAJ E COBOL 97 ACCEPT. OPCI ONES 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 carcter especificado las posiciones vacas mientras se ejecuta una operacin ACCEPT. Por defecto es el carcter subrayado. LENGUAJ E COBOL 98 ACCEPT. OPCI ONES 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 clusula implica tambin conversin de los datos de entrada. UNDERLINE. UPPER: Convierte la entrada a maysculas. 50 LENGUAJ E ORI ENTADO A SI STEMAS DE GESTI N VERBOS TRANSFERENCIA DE DATOS LENGUAJ E COBOL 100 GENERALI DADES campo emisor =contiene la informacin a transferir campo receptor =recibe dicha informacin. Los datos se pueden transferir a un campo receptor de varias formas: El efecto de usar la opcin GIVING con verbos aritmticos. El verbo COMPUTE por si mismo incluye una transferencia de datos al almacenar los resultados en un campo especfico. Las opciones READ.... INTO y WRITE.... FROMincluye transferencia de informacin implcitas. La clusula VALUE de la DATA DIVISION incluye una transferencia de informacin implcita, aunque slo se ejecutar una vez al principio del programa. 51 LENGUAJ E COBOL 101 VERBO MOVE Transfiere informacin 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 tamaos y especificaciones PICTURE de los campos emisor (identificador-1) y receptor (identificador-2). Adems, la categora de los campos emisor y receptor es un factor al determinar si una instruccin MOVE es vlida o no vlida. LENGUAJ E COBOL 102 VERBO MOVE La constante figurativa SPACE, o un campo alfanumrico editado o alfabtico no puede moverse a un campo numrico o numrico editado. Una constante numrica, la constante figurativa ZERO, un campo numrico o numrico editado no puede moverse a un campo alfabtico. Una constante o campo numrico no entero no se puede mover a un campo alfanumrico editado o no, 52 LENGUAJ E COBOL 103 TI POS DE MOVI MI ENTOS SI SI NO Numrico Editado SI NO NO Numrico No Entero SI SI NO Numrico Entero NO SI SI Alfanumrico editado NO SI SI Alfanumrico NO SI SI Alfabtico NUM ENTERO NUM NO ENTER NUM EDITADO ALFANUMRICO ALFANUMRICO EDITADO ALFABTICO CAMPO EMISOR CAMPO RECEPTOR LENGUAJ E COBOL 104 TI POS DE MOVI MI ENTOS De un campo numrico a otro numrico de edicin o no. Los campos emisor y receptor se alinean por el punto decimal. Si tamao (campo receptor) <tamao (campo emisor), se produce truncamiento de la parte entero y/o decimal. Si tamao (campo receptor) >tamao (campo emisor), se rellena con ceros no significativos en cualquiera de las partes. 53 LENGUAJ E COBOL 105 TI POS DE MOVI MI ENTOS De un campo alfabtico o alfanumrico a otro de tipo alfabtico o alfanumrico de edicin 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 clusula J USTIFIEDRIGHT. Si tamao (campo receptor) <tamao(campo emisor), se produce truncamiento. Si tamao (campo receptor) >tamao(campo emisor), se rellena con blancos. LENGUAJ E COBOL 106 VERBO MOVE CORRESPONDI NG 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 opcin del verbo MOVE se transfiere el contenido de los campos elementales de identificador-1 a los campos elementales de igual nombre de identificador-2. 54 LENGUAJ E COBOL 107 EJ EMPLOS 1234 (12.34) 01234 (012.34) 1234 (12.34) 98765 (987.65) 77 EMISOR PIC 99V99 77 RECEPTOR PIC999V99 DESPUS ANTES MOVE EMISOR TO RECEPTOR 12345 (1234.5) 34500 (34.500) 12345 (1234.5) 98765 (98.765) 77 EMISOR PIC 9(4)V9 77 RECEPTOR PIC 99V999 DESPUES ANTES MOVE EMISOR TO RECEPTOR 11 (1.1) 001100 (001.100) 11 (1.1) 123123 (123.123) 77 EMISOR PIC 9V9 77 RECEPTOR PIC 999V999 DESPUS ANTES MOVE EMISOR TO RECEPTOR 12312 (123.12) 123.12 12312 (123.12) 321.98 77 EMISOR PIC 999V99 77 RECEPTOR PIC 999.99. DESPUS ANTES MOVE EMISOR TO RECEPTOR LENGUAJ E COBOL 108 EJ EMPLOS 01 GRUPO-1 05 NUMERO PIC 99. 05 DIA PIC X(7). 05 AO PIC 99. 01 GRUPO-2 05 LOCALIDAD PIC X(15). 05 MUNICIPIO PIC 999. 05 PRESUPUESTO PIC 9(5)V99. GRUPO-1 12J UEVESb95 GRUPO-2 ARANDAbDEbDUERO9815321572 Despus de ejecutar MOVE GRUPO-1 TO GRUPO-2 GRUPO-1 12J UEVESb95 55 LENGUAJ E COBOL 109 EJ EMPLOS Si se ha declarado la tabla siguiente: 01 TABLA 02 TABLA-CELDA OCCURS 50 TIMES PIC 9(5)V99. MOVE ZEROS TO TABLA rellena los 350 bytes del campo de TABLA con ceros. Como resultado cada uno de los 7 bytes de los campos de TABLA-CELDA tambin tendr valores cero. LENGUAJ E COBOL 110 EJ EMPLOS 01 REGISTRO-PERSONAL. 03 NUMERO PIC 9(5). 03 NOMBRE PIC X(30). 03 DIRECCION PIC X(20). 03 DIS-POSTAL PIC 99. 01 LINEA-IMPRESION. 02 FILLER PIC X(10) VALUE SPACES. 02 NUMERO PIC Z(5). 02 FILLER PIC X(5) VALUE SPACES. 02 NOMBRE PIC X(30). 02 FILLER PIC X(5) VALUE SPACES. 02 DIRECCION PIC X(20). 02 FILLER PIC X(5) VALUE SPACES. 02 DIS-POSTAL PIC ZZ. MOVE CORRESPONDING REGISTRO-PERSONAL TO LINEA-IMPRESION 56 LENGUAJ E ORI ENTADO A SI STEMAS DE GESTI N ESTRUCTURAS DE CONTROL LENGUAJ E COBOL 112 I NTRODUCCI 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. 57 LENGUAJ E COBOL 113 PROCEDURE DI VI SI ON Es precisamente en esta divisin donde se escriben las instrucciones de ejecucin. Es la divisin que permite especificar con la sintaxis del lenguaje de programacin COBOL, el conjunto de acciones a realizar. PROCEDURE DIVISION. Nombre-prrafo-1. ............................................. ............................................. Nombre-prrafo-2. ............................................. ............................................. LENGUAJ E COBOL 114 ESTRUCTURA SECUENCI AL Se emplea para especificar la secuencia de ejecucin de un programa modular representado por prrafos. PERFORM nombre-prrafo PROCEDURE DIVISION. PROGRAMA. PERFORM P-PROGRAMA. ............................................ ............................................ STOP RUN. P-PROGRAMA. sentencia 1. sentencia 2. PROGRAMA P-PROGRAMA 58 LENGUAJ E ORI ENTADO A SI STEMAS DE GESTI N ESTRUCTURAS DE CONTROL LENGUAJ E COBOL 116 VERBO I F Este verbo produce la evaluacin de una condicin, dependiendo la siguiente accin del programa a realizar, de la evaluacin de la misma. IF condicin THEN accin-1/ NEXT SENTENCE [ELSE accin-2/NEXT SENTENCE] 59 LENGUAJ E COBOL 117 VERBO I F PROGRAMA CIERTO P-PROGRAMA F-PROGRAMA SENTENCIA 1 SENTENCIA 2 CONDICIN PROCEDURE DIVISION. PROGRAMA. PERFORM P-PROGRAMA. IF condicin THEN PERFORM CIERTO. PERFORM F-PROGRAMA. . . CIERTO. sentencia-1 sentencia-2 LENGUAJ E COBOL 118 VERBO I F PROGRAMA FALSO CIERTO P-PROGRAMA F-PROGRAMA SENTENCIA 1 SENTENCIA 2 CONDICIN PROCEDURE DIVISION. PROGRAMA. PERFORM P-PROGRAMA. IF condicin THEN PERFORM CIERTO ELSE PERFORM FALSO. PERFORM F-PROGRAMA. CIERTO. sentencia-1. sentencia-2. FALSO. sentencia-3. sentencia-4. SENTENCIA 3 SENTENCIA 4 60 LENGUAJ E COBOL 119 CONDI CI ONES. TI POS Condiciones de relacin. Las condiciones de relacin se refieren a las comparaciones entre dos items. El tipo de comparacin se indica por el operador relacional que puede estar en forma de palabras o de smbolos. identificador-2 literal-2 exp-artimtica-2 IS operador identificador-1 literal-1 exp-aritmtica-1 LENGUAJ E COBOL 120 CONDI CI ONES. TI POS No igual a NOT = NOT EQUAL TO No menor que NOT < NOT LESS THAN No mayor que NOT > NOT GREATER THAN Igual a = EQUAL TO Menor que < LESS THAN Mayor que > GREATER THAN Significado Smbolo Operador 61 LENGUAJ E COBOL 121 CONDI CI ONES. TI POS Condiciones de clase. El uso de una condicin de clase hace posible determinar si un identificador pertenece o no a una de las cuatro clases incluidas en el Formato siguiente: NUMERIC ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER IS [NOT] Identificador LENGUAJ E COBOL 122 CONDI CI ONES. TI POS Condiciones de signo. Permiten determinar si el valor de una campo numrico o de una expresin aritmtica es positivo, negativo o cero. El Formato general es el siguiente: POSITIVE NEGATIVE ZERO IS [NOT] Expresin Aritmtica 62 LENGUAJ E COBOL 123 CONDI CI ONES. TI POS Condiciones de nombre de condicin. Este tipo de condicin facilita la asociacin 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-condicin VALUE IS lit-1 THRU lit-n LENGUAJ E COBOL 124 CONDI CI ONES. TI POS Supongamos que disponemos de un fichero secuencial en el que la estructura de sus registros soporta un campo de tipo alfanumrico para determinar el sexo de los empleados. 02 SEXO-EM PIC X. 88 MASCULINO VALUE 1. 88 FEMENINO VALUE 2. 88 ERROR-CODIGO VALUES ARE LOW-VALUES THRU ZERO, 3 THRU HIGH-VALUES. 63 LENGUAJ E COBOL 125 CONDI CI ONES. TI POS Condiciones compuestas. Son varias condiciones simples enlazadas mediante operaciones lgicas ANDy OR. Orden de evaluacin de las condiciones 1 - PARNTESIS 2 - NOT 3 - AND 4 - OR 5 - A igualdad de operadores de izquierda a derecha condicin-1 [NOT] AND/[NOT] OR condicin-2 LENGUAJ E COBOL 126 VERBO EVALUATE Este verbo produce la evaluacin de una condicin, dependiendo la siguiente accin del programa a realizar, de la evaluacin de la misma. Es una forma de implementar la estructura Casos. EVALUATE identificador WHEN literal-1 THRU literal-2 instruccin imperativa-1 ........... WHEN OTHER instruccin imperativa-n 64 LENGUAJ E COBOL 127 VERBO EVALUATE PROGRAMA PRRAFO-3 PRRAFO-1 P-PROGRAMA F-PROGRAMA IDENTIFICADOR =V1 PRRAFO-2 =V2 =V3 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. LENGUAJ E COBOL 128 VERBO EVALUATE Si tenemos un cdigo que puede tener como valores: 1, 2, y 3. El siguiente rbol programtico representa la estructura condicional anidada que verifica el valor del cdigo y ejecuta el prrafo adecuado. VALOR-CDIGO AADIR P-VALOR-CDIGO F-VALOR-CDIGO CDIGO 0 1 FALSO BORRAR CDIGO =2 ERROR MODIFICAR CODIGO =3 65 LENGUAJ E COBOL 129 VERBO EVALUATE VALOR-CDIGO MODIFICAR AADIR P-VALOR-CDIGO F-VALOR-CDIGO CDOGO =1 BORRAR =2 =3 ERROR OTRO Si tenemos un cdigo que puede tener como valores: 1, 2, y 3. El siguiente rbol programtico tambin representa la estructura condicional que verifica el valor del cdigo y ejecuta el prrafo adecuado. LENGUAJ E COBOL 130 VERBO EVALUATE EVALUATE TRUE WHEN NOMBRE-DE-CONDICION instruccin imperativa-1 ........... WHEN OTHER instruccin imperativa-n DATA DIVISION. WORKING-STORAGE SECTION. 01 CODIGO PIC 9. 88 AADIR-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 aadir-registro PERFORM AADIR WHEN suprimir-registro PERFORM SUPRIMIR WHEN modificar-registro PERFORM MODIFICAR WHEN OTHER PERFORM CODIGO-ERRONEO END-EVALUATE. 66 LENGUAJ E COBOL 131 VERBO EVALUATE PRRAFO-1 PRRAFO-2 PRRAFO-3 PRRAFO-4 A, B o C A o B cualquiera cualquiera 1 o 2 3 4 cualquier otro ACCIN A REALIZAR CALIFICACIN CDIGO CONDICIN EVALUATE CDIGO ALSO CALIFICACIN WHEN 1 THRU 2 ALSO ATHRU C PERFORMPARRAFO-1 WHEN 3 ALSO ATHRU B PERFORMPARRAFO-2 WHEN 4 ALSO ANY PERFORMPARRAFO-3 WHEN OTHER PERFORM PARRAFO-4 END-EVALUATE. LENGUAJ E ORI ENTADO A SI STEMAS DE GESTI N ESTRUCTURAS DE CONTROL 67 LENGUAJ E COBOL 133 VERBO PERFORM PERFORM prrafo entero/identificador TIMES PROCEDURE DIVISION. PROGRAMA. .............................. PERFORM BUCLE 5 TIMES ............................. BUCLE. sentencia 1. sentencia 2. BUCLE 5 VECES LENGUAJ E COBOL 134 VERBO PERFORM PERFORM prrafo [WITH TEST BEFORE] UNTIL condicin PROGRAMA PRRAFO P-PROGRAMA F-PROGRAMA CONDICIN 68 LENGUAJ E COBOL 135 VERBO PERFORM PERFORM prrafo WITH TEST AFTER UNTIL condicin PROGRAMA PRRAFO P-PROGRAMA F-PROGRAMA CONDICIN (DESPUS) LENGUAJ E COBOL 136 VERBO PERFORM PERFORM prrafo [WITH TEST BEFORE/AFTER] VARYING iden-1 FROM lit-1/iden-2 BY lit-2/iden-3 UNTIL condicin-1 69 LENGUAJ E COBOL 137 VERBO PERFORM La ejecucin, si no se ha especificado la opcin 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 evala la condicin-1. 1. Si es cierta, se da por finalizada la ejecucin 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 prrafo d)Se suma a identificador-1 el valor especificado por identificador-3 que sigue a BY y se vuelve al punto b. LENGUAJ E COBOL 138 VERBO PERFORM PERFORM prrafo WITH TEST BEFORE VARYING iden-1 FROM iden-2 BY iden-3 UNTIL condicin PROGRAMA PRRAFO P-PROGRAMA F-PROGRAMA CONDICIN IDEN-1 = IDEN-2 , IDEN-3 70 LENGUAJ E COBOL 139 VERBO PERFORM PERFORM prrafo [WITH TEST BEFORE/AFTER] VARYING iden-1 FROM lit-1/iden-2 BY lit-3/iden-3 UNTIL condicin-1 AFTER iden-4 FROM lit-5/iden-5 BY lit-4/iden-6 UNTIL condicin-2 LENGUAJ E COBOL 140 VERBO PERFORM a) El identificador-1 y el identificador-4 se inicializan a los valores respectivos que siguen a cada FROM. b) Se evala la condicin-1. 1. Si es cierta, se da por finalizada la ejecucin 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 evala la condicin-2. 1. Si es cierta, el identificador-4 se inicializa al valor especificado por literal-5 o identificador-5 que sigue a FROM, tambin se suma a identificador-1 el valor especificado por identificador-3 que sigue a BY y se contina en el punto b. 2. Si es falsa se pasa al punto d. d) Se ejecuta el e) Se suma a identificador-4 el valor especificado por identificador-6 que sigue a BY y se vuelve al punto c. 71 LENGUAJ E COBOL 141 VERBO PERFORM PROGRAMA PRRAFO P-PROGRAMA F-PROGRAMA CONDICIN 1 CONDICIN 2 IDEN-1 = IDEN-2 , IDEN-3 PERFORM prrafo [VARYING iden-1 FROM iden-2 BY iden-3 UNTIL condicin-1 AFTER iden-4 FROM iden-5 BY iden-6 UNTIL condicin-2 IDEN-4 = IDEN-5 , IDEN-6