Professional Documents
Culture Documents
LENGUAJE 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 Languaje Fue creado en 1.960, por la comisin CODASYL (Conference on Data System Languaje), 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)
Constantes
Literales numricos Literales no numricos. Constantes figurativas. ZERO. SPACE. ALL carcter . HIGH-VALUE . LOW-VALUE.
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 (-). Estn 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.
DIVISIONES 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.
DIVISIONES 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.
DIVISIONES 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
OURCE-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
DIVISIONES 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.
DIVISIONES 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.
HOJA DE CODIFICACIN
123456 7 8 A 11 12 A 72 MARGEN B
Son opcionales, se utilizan normalmente para escribir comentarios que identifican el programa
73 A 80
Se utilizaban para indicar los nmeros de secuencia, permitiendo ordenar fcilmente el Programa
MARGEN A
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. Son opcionales, se utilizan normalmente para escribir comentarios que identifican el programa.
HOJA DE CODIFICACIN
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: FD IMPRESO.. 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.0
REGLAS DE CODIFICACIN
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 pueden 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.
ESTRUCTURA GENERAL
IDENTIFICATION DIVISION. PROGRAM-ID. nombre de programa. [ AUTHOR. comentarios... ] [ INSTALLATION. comentarios... ] [ DATE-WRITTEN. comentarios... ] [ DATE-COMPILED. comentarios... ] [ SECURITY. comentarios... ] [ REMARKS. comentarios... ] ENVIRONMENT DIVISION. [ CONFIGURATION SECTION. SOURCE-COMPUTER. modelo-ord. OBJECT-COMPUTER. modelo-ord. SPECIAL-NAMES. nombres especiales] [ INPUT-OUTPUT SECTION. { FILE CONTROL. control de archivos.} [ I-O CONTROL. control entrada/salida.]]
LOS DATOS
DATA DIVISION
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 ]]
LOS DATOS
CAMPOS INDEPENDIENTES 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.
LOS DATOS
CLUSULA PICTURE PICTURE/PIC IS especificacin de formato.
Carcter 9 V S
Ejemplos 1. PIC 99999 2. PIC 9(5) 1. PIC 99V99 2. PIC 9(2)V99 1. PIC S999 2. PIC S99V99
LOS DATOS
CLUSULA PICTURE Descripcin Valor Numrico 77 CANT PIC S9(4)V99 -325.18 77 CANT PIC S9(4)V99 -0.10 77 CANT PIC 9(3)V99 -1251.16 77 CANT PIC S999V99 156.29 77 CANT PIC 99999V99 23561.00 77 CANT PIC 999 550 77 CANT PIC 9(4)V99 452.39 77 CANT PIC 99V9 38.50 77 CANT PIC 9999 285 77 CANT PIC 9(10) 1234567 77 CANT PIC 9999 8956 77 CANT PIC 9(6) 12234 Representacin INTERNA 0325^18 0000^10 1251^16 156^29 23561^00 550 0452^39 38^5 0285 0001234567 8956 012234
LOS DATOS
CLUSULA PICTURE Carcter
A X
Descripcin
CUALQUIER CARCTER LETRA CUALQUIER CARCTER
Ejemplos
1. PIC AAAAA 2. PIC A(5) 1. PIC XXXXX 2. PIC X(5)
Descripcin 77 VALOR PIC XXXXX 77 VALOR PIC X(5) 77 VALOR PIC X(5) 77 VALOR PIC X(8)
LOS DATOS
CLUSULA PICTURE Carcter
$
Descripcin
Se escribe el signo $ en el lugar correcto en que debe aparecer en la salida Indica la posicin del punto decimal Indica la posicin de la coma como carcter de separacin de millares. La utilizacin de la clusula DECIMAL POINT IS COMMA en la SPECIAL-NAMES de la ENVIRONMENT DIVISION invierte el uso de los puntos y coma. Sirve para reemplazar los ceros no significativos (a la Izquierda) por asteriscos Sirve para reemplazar los ceros no significativos por blancos Se inserta en el extremo izquierdo o derecho. Representa la aparicin del signo. Si el nmero es positivo aparecer un + y si es negativo aparecer un -.
. ,
* Z
LOS DATOS
CLUSULA PICTURE Carcter
-
Descripcin
Se inserta en el extremo izquierdo o derecho. Representa la aparicin del signo. Si el nmero es positivo aparecer un blanco y si es negativo aparecer un -. Representa la aparicin del signo bancario CR de crdito. Cuando el valor es positivo aparecern blancos, si el valor es negativo aparece los caracteres CR. Representa la aparicin del signo bancario DB de dbito. Cuando el valor es positivo aparecern blancos, si el valor es negativo aparece los caracteres DB. Se usan para insertar ceros en las posiciones en que deben aparecer Se usan para insertar blancos en las posiciones en que deben aparecer
CR
DB
LOS DATOS
CLUSULA PICTURE PICTURE 9(4)V99 9(4)V99 9(3)V999 9V99 99 9999V99 CONTENIDO 654321 054321 000546 567 54 500000 PICTURE EDICIN 9(4).99 9(4).99 999.99 99V.99 99.99 999.99 RESULTADO EDITADO 6543.21 0543.21 000.54 NO VALIDO 54.00 000.00
LOS DATOS
CLUSULA PICTURE PICTURE 9999 999V 9(3)V99 999V99 9(4)V99 999V99 CONTENIDO 0704 103 00103 00000 001234 00001 PICTURE EDICIN ZZZ9 ZZZ.99 ZZZ.99 Z(3).ZZ Z(4).ZZ ZZZ.ZZ RESULTADO EDITADO B704 103.00 BB1.03 Blancos BB12.34 BBB.01
B=ESPACIO EN BLANCO
LOS DATOS
CLUSULA PICTURE PICTURE 9(6) 9(6) 9(6) 9(5)V99 CONTENIDO 012345 000012 000123 0012345 PICTURE EDICIN ***999 ***999 ***999 *****.99 RESULTADO EDITADO *12345 ***012 ***123 **123.45
LOS DATOS
CLUSULA PICTURE PICTURE 9(7) 9(3)V99 999 9(4) 999 999 CONTENIDO 1234567 12345 123 1234 123 123 PICTURE EDICIN 9,999,999 9,990,000.99 9B00B990 9,009,990 9BB99 90099 RESULTADO EDITADO 1,234,567 1,230,000.45 1b00b230 1,002,340 1bb23 10023
LOS DATOS
CLUSULA PICTURE PICTURE S999 S999 S999 S9(3)V99 S999V99 S9(3)V99 S9(3)V99 S9(3)V99 CONTENIDO -123 +628 +456 -12345 -18200 +15768 -65125 +57950 PICTURE EDICIN +999 -999 999+ 999.99DB $999.99CR 999.99DB +$999.99 +$999.99 RESULTADO EDITADO -123 628 456+ 123.45DB $182.00CR 157.68bb -$651.25 +$579.50
LOS DATOS
CLUSULA PICTURE PICTURE 9(5)V99 999V99 999V99 9(5)V99 CONTENIDO 0000440 -00555 00000 0475682 PICTURE EDICIN $$$$$$.99 ++++.99 ++++.++ $$$,$$$.99 RESULTADO EDITADO $4.40 -5.55 blancos $4,756.82
LOS DATOS
CLUSULA PICTURE PICTURE X(6) AAAA X(5) CONTENIDO CN1005 HOLA CASO3 PICTURE EDICIN XXBBX(4) ABABABA XXXXBX000 RESULTADO EDITADO CN 1005 H0LA CASO 3000
LOS DATOS
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 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.00000
LOS DATOS
JUSTIFIED RIGHT 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 JUST RIGHT. A B
LOS DATOS
CAMPOS COMPUESTOS
Son campos que pueden subdividirse. Se le conoce tambin con el nombre de registros. Pueden definirse en el rea de trabajo (WORKINGSTORAGE SECTION) y es obligada su utilizacin al describir la estructura de los ficheros.
DATOS-VENDEDOR
NUM-VEN NOMBRE APELLIDO1 APELLIDO2
DATOS-DIRECCIN
PROVINCIA
FECHA-ALTA
DIA MES AO
CALLE
NCALLE
LOS DATOS
CAMPOS COMPUESTOS Numero de nivel Especificacin de formato
01 VENDEDOR. 02 NUMERO 02 DATOS-VENDEDOR. 03 NOMBRE 03 APELLIDO1 03 APELLIDO2 02 DATOS-DIRECCION. 03 PROVINCIA 03 CALLE 03 NCALLE 02 FECHA-ALTA. 03 DA 03 MES 03 ANIO
PIC 999. PIC X(10). PIC X(10). PIC X(10). PIC X(30). PIC X(15). PIC 99. PIC 99. PIC 99. PIC 99.
Nombre de dato
LOS DATOS
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.
LOS DATOS
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.
LOS DATOS
NOMBRES DE CONDICIN
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`.
LOS DATOS
NOMBRES DE CONDICIN
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
LOS DATOS
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.
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.
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. 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.
TABLAS
01 TABLA-INGRESOS-ESTADO. 02 INGRESOS-PROMEDIOS OCCURS 50 TIMES PIC 9(6)V99. 02 PROMEDIO-NACIONAL PIC 9(7)V99.
PROMEDIO-NACIONAL PROMEDIO-NACIONAL
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.
TABLAS
Inicializacin de una tabla en tiempo de compilacin. nombre-de-dato-1 REDEFINES nombre-de-dato-2 01 FECHA. 02 DA PIC 99. 02 MES PIC 99. 02 AO PIC 99. 01 FECHA-ACTUAL REDEFINES FECHA PIC X(6). 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 "JUEVES". 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-SEMANAOCCURS 7 TIMES PIC X(10).
VERBOS ARITMTICOS
INTRODUCCIN 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 Resta Producto Divisin O. Aritmticas
VERBOS ARITMTICOS
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]
SUMA. OPCIONES
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
VERBOS ARITMTICOS
SUMA. OPCIONES
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.......'.
VERBOS ARITMTICOS
SUMA. OPCIONES
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.......'. SUMA. EJEMPLOS ADD IDA IDB TO IDC 77 IDA PIC 9(3) 77 IDB PIC 999 77 IDC PIC S99 ADD IDA IDB -30 TO IDD IDC 77 IDA PIC 9(3) 77 IDB PIC 999 77 IDC PIC S9(2) 77 IDD PIC S999
VERBOS ARITMTICOS
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
RESTA. EJEMPLOS
Las operaciones que se realizan en este caso son: CANTIDAD-5 = CANTIDAD-4 - (CANTIDAD-3 + CANTIDAD-2 +CANTIDAD-1). CANTIDAD-6 = CANTIDAD-4 - (CANTIDAD-3 + CANTIDAD-2 + CANTIDAD-1). En el caso de que se produzca el desbordamiento de alguno de los campos receptores ( CANTIDAD-5, CANTIDAD-6 ) el programa ser desviado a la rutina de desbordamiento. SUBTRACT CANTIDAD-1, CANTIDAD-2, CANTIDAD-3 FROM CANTIDAD-4 GIVING CANTIDAD-5, CANTIDAD-6 ROUNDED ON SIZE ERROR PERFORM DESBORDAMIENTO.
VERBOS ARITMTICOS
MULTIPLICACIN
MULTIPLY ident-1/literal-1 BY ident-2 siendo: ident-1: multiplicando. ident-2: multiplicador y campo receptor del resultado de la operacin.
MULTIPLY IDB BY IDA 77 IDA PIC 9(5) 77 IDB PIC 99 MULTIPLY 0.5 BY IDA 77 IDA PIC 9(5)
MULTIPLY ident-1/literal-1 BY ident-2 GIVING ident-3 MULTIPLY A BY B GIVING C ROUNDED, E ON SIZE ERROR PERFORM RUTINA-DESBORDAMIENTO.
MULTIPLY IDA BY 0.5 GIVING IDB ANTES 77 IDA PIC 9(5) 77 IDB PIC 9(5) 12500 50000
VERBOS ARITMTICOS
DIVISIN
DIVIDE ident-1/literal-1 INTO ident-2 DIVIDE A INTO B, C ROUNDED ON SIZE ERROR PERFORM RUTINA-DE-DESBORDAMIENTO. Las operaciones que se realizan son B=B/A y C=C/A, en el caso de que en algn campo receptor, no cupiera el resultado de las operaciones realizadas se rompera la secuencia del programa ejecutndose el prrafo RUTINA DE DESBORDAMIENTO. 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
VERBOS ARITMTICOS
DIVISIN. EJEMPLOS DIVIDE IDB INTO IDA 77 IDA PIC 9(5) 77 IDB PIC 99 DIVIDE IDA BY 365 GIVING IDB 77 IDA PIC 9(5) 77 IDB PIC 9999 DIVIDE 365 INTO IDA GIVING IDB 77 IDA PIC 9(5) 77 IDB PIC 9999 DIVIDE DIVIDENDO BY DIVISOR GIVING COCIENTE REMAINDER RESTO 77 DIVIDENDO PIC 999 77 DIVISOR PIC 99 77 RESTO PIC 99V99 77 COCIENTE PIC 99 ANTES 50000 50 ANTES 36500 ANTES 36500 ANTES DESPUS 01000 50 DESPUS 36500 1000 DESPUS 36500 1000 DESPUS
100 03 55
VERBOS ARITMTICOS
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]
SMBOLO + * / **
PRIORIDAD MENOR
MAYOR
VERBOS ARITMTICOS
COMPUTE
OPERACIONES EQUIVALENTES 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
DISPLAY
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]
CAMPO RECEPTOR CAMPO EMISOR ALFABTICO ALFANUMRICO ALFANUMRICO EDITADO SI SI SI SI NO SI NUM ENTERO NUM NO ENTER NUM EDITADO NO NO NO SI SI SI
Alfabtico Alfanumrico Alfanumrico editado Numrico Entero Numrico No Entero Numrico Editado
SI SI SI NO NO NO
MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 99V99 77 RECEPTOR PIC 999V99 MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 9V9 77 RECEPTOR PIC 999V999 MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 999V99 77 RECEPTOR PIC 999.99. MOVE EMISOR TO RECEPTOR 77 EMISOR PIC 9(4)V9 77 RECEPTOR PIC 99V999
ANTES 1234 (12.34) 98765 (987.65) ANTES 11 (1.1) 123123 (123.123) ANTES 12312 (123.12) 321.98 ANTES 12345 (1234.5) 98765 (98.765)
DESPUS 1234 (12.34) 01234 (012.34) DESPUS 11 (1.1) 001100 (001.100) DESPUS 12312 (123.12) 123.12 DESPUS 12345 (1234.5) 34500 (34.500)
PIC 9(5). PIC X(30). PIC X(20). PIC 99. PIC X(10) VALUE SPACES. PIC Z(5). PIC X(5) VALUE SPACES. PIC X(30). PIC X(5) VALUE SPACES. PIC X(20). PIC X(5) VALUE SPACES. PIC ZZ.
ESTRUCTURAS DE CONTROL
INTRODUCCIN
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.
ESTRUCTURAS DE CONTROL
PROCEDURE DIVISION
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. ............................................. .............................................
ESTRUCTURA SECUENCIAL
Se emplea para especificar la secuencia de ejecucin de un programa modular representado por prrafos. PERFORM nombre-prrafo
PROGRAMA
PROCEDURE DIVISION. PROGRAMA. PERFORM P-PROGRAMA. ............................................ ............................................ STOP RUN. P-PROGRAMA. sentencia 1. Sentencia 2.
P-PROGRAMA
ESTRUCTURAS DE CONTROL
VERBO IF
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]
PROGRAMA
CONDICION
CIERTO PROGRAMA-P
FALSO
PROGRAMA-F
ESTRUCTURAS DE CONTROL
VERBO IF PROGRAMA FALSO
PROCEDURE DIVISION. PROGRAMA. IF condicin PERFORM PROGRAMA-P ELSE PERFORM PROGRAMA-Q. PERFORM PROGRAMA-F.
CONDICION
PROGRAMA-F
TIPOS DE CONDICIONES
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-1 literal-1 exp-aritmtica-1 identificador-2 literal-2 exp-artimtica-2
IS operador
TIPOS DE CONDICIONES
Condiciones de relacin. OPERADOR GREATER THAN LESS THAN EQUAL TO NOT GREATER THAN NOT LESS THAN NOT EQUAL TO SIMBOLO > < = NOT > NOT < NOT = SIGNIFICADO MAYOR QUE MENOR QUE IGUAL A NO MAYOR QUE NO MENOR QUE NO IGUAL A
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:
Identificador IS [NOT] NUMERIC ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER
TIPOS DE CONDICIONES
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: Expresin Aritmtica IS [NOT] POSITIVE NEGATIVE ZERO
TIPOS DE CONDICIONES
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 88 MASCULINO 88 FEMENINO 88 ERROR-CODIGO PIC X. VALUE 1 . VALUE 2 . VALUES ARE LOW-VALUES THRU ZERO,
Condiciones compuestas.
Son varias condiciones simples enlazadas mediante operaciones lgicas AND y 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 3 THRU HIGH-VALUES.
TIPOS DE CONDICIONES
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
TIPOS DE CONDICIONES
VERBO EVALUATE
PROCEDURE DIVISION. PROGRAMA. PERFORM PROGRAMA-P. EVALUATE identificador WHEN v1 PERFORM PARRAFO-1 WHEN v2 PERFORM PARRAFO-2 WHEN OTHER PERFORM PARRAFO-3 END-EVALUATE. PERFORM PROGRAMA-F. STOP RUN.
PROGRAMA
IDENTIFICADOR = v1 = v2 = v3
PROGRAMA-P
PARRAFO-1
PARRAFO-2
PARRAFO-3
PROGRAMA-F
TIPOS DE CONDICIONES
VERBO EVALUATE
EVALUATE TRUE WHEN NOMBRE-DE-CONDICION instruccin imperativa-1 ........... WHEN OTHER instruccin imperativa-n DATA DIVISION. WORKING-STORAGE SECTION. 01 CODIGO 88 AADIR-REGISTRO 88 SUPRIMIR-REGISTRO 88 MODIFICAR-REGISTRO 88 ERROR-CODIGO EVALUATE TRUE WHEN aadir-registro PERFORM AADIR WHEN suprimir-registro PERFORM SUPRIMIR WHEN modificar-registro PERFORM MODIFICAR WHEN OTHER PERFORM CODIGO-ERRONEO END-EVALUATE
TIPOS DE CONDICIONES
VERBO EVALUATE CODIGO 1o2 3 4 cualquier otro
EVALUATE
ALSO CALIFICACIN 1 THRU 2 ALSO A THRU C 3 ALSO A THRU B 4 ALSO ANY OTHER
END-EVALUATE.
ESTRUCTURAS DE CONTROL
VERBO PERFORM
PERFORM prrafo entero/identificador TIMES PROCEDURE DIVISION. PROGRAMA. .............................. PERFORM BUCLE 5 TIMES ............................. BUCLE. sentencia 1. sentencia 2.
PROGRAMA
BUCLE
5 VECES
ESTRUCTURAS DE CONTROL
VERBO PERFORM
PERFORM prrafo [WITH TEST BEFORE] UNTIL condicin
PROGRAMA
CONDICION
PROGRAMA-P
PRRAFO
PROGRAMA-F
ESTRUCTURAS DE CONTROL
VERBO PERFORM
PERFORM prrafo [WITH TEST AFTER] UNTIL condicin
PROGRAMA
CONDICION DESPUS
PROGRAMA-P
PRRAFO
PROGRAMA-F
PERFORM prrafo [WITH TEST BEFORE/AFTER] VARYING iden-1 FROM lit-1/iden-2 BY lit-2/iden-3 UNTIL condicin-1
ESTRUCTURAS DE CONTROL
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. PERFORM prrafo [WITH TEST AFTER] UNTIL condicin
ESTRUCTURAS DE CONTROL
VERBO PERFORM
PERFORM prrafo WITH TEST BEFORE VARYING iden-1 FROM iden-2 BY iden-3 UNTIL condicin
PROGRAMA
PROGRAMA-P
PRRAFO
CONDICION
PROGRAMA-F
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
ESTRUCTURAS DE CONTROL
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.
ESTRUCTURAS DE CONTROL
VERBO PERFORM PROGRAMA
PROGRAMA-P
PRRAFO
CONDICION 1 CONDICION 2
PROGRAMA-F
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