63
Salir Siguiente

Manual Cobol

Embed Size (px)

Citation preview

SalirSiguiente

Manualde

COBOL

SalirMenú

MENUMENU

Salir

PROGRAM-ID. Nombre-programa.

[AUTHOR. Nombre programador]

[INSTALATION. Comentario.]

[DATE-WRITTEN. Comentario.]

[DATE-COMPILED. Comentario.]

CONFIGURATION SECTION.

SOURCE-COMPUTER.

OBJECT-COMPUTER.

[INPUT-OUTPUT SECTION.

FILE-CONTROL SELECT .... ]

[FILE SECTION.]

[WORKING-STORAGE SECTION.]

[LINKAGE SECTION.]

Identification Division

Environment Division Data division

Procedure Division

Prog. ejemplo

Tablas (arreglos)

ACCEPT DISPLAY OPEN SUBTRACT

ADD DIVIDE PERFORM UNSTRING

CALL EVALUATE READ WRITE

CANCEL IF REWRITE

CLOSE INSPECT SELECT

COMPUTE MOVE STOP RUN

COPY MULTIPLY STRING

Lee y copia archivos sec.

Lee y copia de arch. Indexado a secuencial

Cortes de Control

Prog. estructurada

IDENTIFICATION DIVISION. PROGRAM-ID. Nombre-programa. - Sirve para Identificar el prog.

[AUTHOR. Nombre-programador.] - Comentario

[INSTALATION. ..............] - Comentario

[DATE-WRITTEN. .............] - Comentario

[DATE-COMPILED. ............] - Comentario

IDENTIFICATION DIVISION.

Es usada para indicar información de identificación del programa,también provee información referente a :programador, fecha de creación, fecha de compilación.

Menú

ENVIRONMENT DIVISION.describe el equipo de cómputo en donde se utilizará el programa. Así como la indicación de los archivos que se van a usar (select)

CONFIGURATION SECTION.

SOURCE-COMPUTER. Computador donde se va a compilar el programa (informativo)

OBJECT-COMPUTER. Computador donde se va a ejecutar el programa (informativo)

[INPUT-OUTPUT SECTION. Informa los dispositivos de entrada y salida

FILE-CONTROL se selecciona un nombre de archivo por cada archivo a usar

para arch. Secuencial

SELECT nombre-arch-en-programa ASSIGN TO nombre-arch-en-jcl

ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL

FILE STATUS IS variable de trabajo]

para arch. Indexado

SELECT nombre-arch-en-programa ASSIGN TO nombre-arch-en-jcl

ORGANIZATION IS INDEXED ACCESS MODE IS SEQUENTIAL o DYNAMIC

FILE STATUS IS variable de trabajo]

Instrucciones Asociadas Menú

Instrucciones asociadas a SELECTnombre-arch-en-programa - se indica el nombre del archivo que se usara para referenciar al

archivo en la procedure division. nombre-arch-en-jcl - se indica el nombre del archivo que se usara para referenciar al

archivo en el JCL que se encargara de la ejecución del programa.variable de trabajo - variable de trabajo referenciada en working storage y sirve para

conocer el status de cualquier acción que se efectue en el archivo.EJEMPLO :

ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTROL. SELECT CUENTAS-A-PAGAR ASSIGN TO CUENTAS ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS-STATUS-CTAS. DATA DIVISION.FILE SECTION.FD CUENTAS-A-PAGAR LABEL RECORD IS STANDARD BLOCK CONTAINS 80 CHARACTERS. 01 REG-CTAS. 05 REG-DATO PIC X(80).

WORKING-STARAGE SECTION. 01 FS-STATUS-CTAS PIC X(02) VALUE ‘00’.....PROCEDURE DIVISION.OPEN CUENTAS-A-PAGAR IF FS-STATUS-CTAS NOT = ‘00’ PERFORM ERROR-OPENEND-IF CLOSE ......

ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTROL. SELECT CUENTAS-A-PAGAR ASSIGN TO CUENTAS ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS-STATUS-CTAS. DATA DIVISION.FILE SECTION.FD CUENTAS-A-PAGAR LABEL RECORD IS STANDARD BLOCK CONTAINS 80 CHARACTERS. 01 REG-CTAS. 05 REG-DATO PIC X(80).

WORKING-STARAGE SECTION. 01 FS-STATUS-CTAS PIC X(02) VALUE ‘00’.....PROCEDURE DIVISION.OPEN CUENTAS-A-PAGAR IF FS-STATUS-CTAS NOT = ‘00’ PERFORM ERROR-OPENEND-IF CLOSE ......

CUENTAS

DISK

Anterior

DATA DIVISION.Se usa para indicar el formato de los datos que utilizará el programa.

Esta dividida en 2 secciones que son : FILE SECTION. WORKING-STORAGE SECTION.

Donde :

FILE SECTION es usada definir todas las áreas de datos que son parte de los archivos de entrada o de salida

WORKING-STORAGE SECTION es usada para la descripción de a campos de trabajo (variables) usadas en el prog.

Formato y Ejemplo

Formato y Ejemplos

Menú

DATA DIVISION.La FILE SECTION tienen la siguiente estructura :

FD nombre-arch BLOCK CONTAINS entero-1 TO entero-2 RECORDS

CHARACTERS

LABEL RECORD IS STANDARDOMITTED

DATA RECORD IS nombre registro

FILE SECTION.

- Se indica el tamaño del bloque (factor de agrupamiento) - Se indica el uso de etiqueta o su omision (para archivos de impresión) - Se indica el nombre del registro (el cuál debe estar inmediatamente después en nivel 01)

FILE SECTION.FD CUENTAS LABEL RECORD IS STANDARD BLOCK CONTAINT 50 CHARACTERS DATA RECOD IS REG-CUENTAS. 01 REG-CUENTAS. 05 TIPO-CTA. 10 PRODUCTO PIC 9(3). 10 NUM-CTA PIC 9(8) COMP-3. 10 DIG-VERIF PIC 9(1). 05 DESCRIPCION-CTA PIC X(40). 05 COD-ESTADO PIC 99.

EJEMPLO

Anterior

DATA DIVISION.La WORKING-STORAGE SECTION :

Se usa para describir todas las variables de trabajo, que serán usadas por el programa, pudiendo contener un valor inicial así como se pueden agrupar y redefinir por niveles. Los niveles validos van desde el 01 hasta el 49, además existen los niveles 66 77 y 88 cuyas funciones son especificas.

Ejemplos :

WORKING-STORAGE SECTION.01 WS-TRABAJO.

05 WS-NOMBRE PIC X(26) VALUE SPACES. 05 WS-CUENTA PIC 9(06) VALUE ZEROS.

05 WS-IMPORTE PIC S9(09)V99 COMP-3 value 0.36.

05 WS-TASA PIC V9(4) VALUE .765.

05 WS-CONSTANTE PIC 9(05) VALUE 12345.01 SW-CONTROL PIC X(02) VALUE ‘NO’.

88 SI-FIN-LECT VALUE ‘SI’.88 NO-FIN-LECT VALUE ‘NO’.

77 WS-CALCULA PIC X(02) VALUE ‘SI’.

WORKING-STORAGE SECTION.01 WS-TRABAJO.

05 WS-NOMBRE PIC X(26) VALUE SPACES. 05 WS-CUENTA PIC 9(06) VALUE ZEROS.

05 WS-IMPORTE PIC S9(09)V99 COMP-3 value 0.36.

05 WS-TASA PIC V9(4) VALUE .765.

05 WS-CONSTANTE PIC 9(05) VALUE 12345.01 SW-CONTROL PIC X(02) VALUE ‘NO’.

88 SI-FIN-LECT VALUE ‘SI’.88 NO-FIN-LECT VALUE ‘NO’.

77 WS-CALCULA PIC X(02) VALUE ‘SI’.

Valores iniciales..26

0 0 0 0 0 0

0 0 0

0 0 0

0 0 6

0 3 F

7 6 5

1 2 3 4 5

S I

N O

Ver Arreglos

Anterior

Ver Edición

Ver Inserción

Anterior

DATA DIVISION.WORKING-STORAGE SECTION

TABLAS (arreglos)Una tabla es una secuencia continua de localizaciones de memoria llamados elementoselementos, , los cuales tienen el mismo nombre y unicamente son son identificados por el nombre y la posicion en la secuencia.

Una tabla es una secuencia continua de localizaciones de memoria llamados elementoselementos, , los cuales tienen el mismo nombre y unicamente son son identificados por el nombre y la posicion en la secuencia.

Declaración de tablas.

Una Dimensión

Dos Dimensiones

Ver

Ver

Símbolos de Edición

, B 0 / Inserción Simple

. Inserción Especial

+ - CR DB $ Inserción Fija

+ - S Inserción Flotante

Z * Supresión y Reemplazo

, B 0 / Inserción Simple

. Inserción Especial

+ - CR DB $ Inserción Fija

+ - S Inserción Flotante

Z * Supresión y Reemplazo

Símbolo Edición Tipo de EdiciónSímbolo Edición Tipo de Edición

Anterior

Inserción Simple

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC 999999 123456 PIC 999,999

PIC 9(6) 000078 PIC 9(3),9(3)

PIC 9(6) 000078 PIC ZZZ,ZZZ

PIC 9(6) 000178 PIC ***,***

PIC 9(6) 002178 PIC ***,***

PIC 9(6) 120183 PIC 99B99B99

PIC 9(6) 120183 PIC 99/99/99

PIC 9(6) 001245 PIC 990099

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC 999999 123456 PIC 999,999

PIC 9(6) 000078 PIC 9(3),9(3)

PIC 9(6) 000078 PIC ZZZ,ZZZ

PIC 9(6) 000178 PIC ***,***

PIC 9(6) 002178 PIC ***,***

PIC 9(6) 120183 PIC 99B99B99

PIC 9(6) 120183 PIC 99/99/99

PIC 9(6) 001245 PIC 990099

123,456000,07878 ***178**2,17812018312/01/83 120045

SiguienteAnterior

Inserción Especial.

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC 999V99 12345 PIC 999.99

PIC 999V99 02345 PIC 999.9

PIC 999V99 51234 PIC 99.99

PIC 999 456 PIC 999.99

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC 999V99 12345 PIC 999.99

PIC 999V99 02345 PIC 999.9

PIC 999V99 51234 PIC 99.99

PIC 999 456 PIC 999.99

123.45

023.4

12.34

456.00

SiguienteAnterior

Inserción Fija - Positiva y Negativa

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC S999 -123 PIC -999

PIC S999 -123 PIC 999-

PIC S999 +123 PIC -999

PIC S9(5) +12345 PIC +9(5)

PIC S9(3) -123 PIC +9(3)

PIC S9(3) -123 PIC 999+

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC S999 -123 PIC -999

PIC S999 -123 PIC 999-

PIC S999 +123 PIC -999

PIC S9(5) +12345 PIC +9(5)

PIC S9(3) -123 PIC +9(3)

PIC S9(3) -123 PIC 999+

-123123-123+12345-123123-

SiguienteAnterior

Inserción Fija - Crédito, Débito, $

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC S9(4) +1234 PIC 9(4)CR

PIC S9(4) -1234 PIC 9(4)CR

PIC S9(4) +1234 PIC 9(4)DB

PIC S9(4) -1234 PIC 9(4)DB

PIC 9(4) 1234 PIC $99999

PIC 9(4) 0000 PIC $ZZZZZ

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC S9(4) +1234 PIC 9(4)CR

PIC S9(4) -1234 PIC 9(4)CR

PIC S9(4) +1234 PIC 9(4)DB

PIC S9(4) -1234 PIC 9(4)DB

PIC 9(4) 1234 PIC $99999

PIC 9(4) 0000 PIC $ZZZZZ

12341234CR12231234DB$01234$

SiguienteAnterior

Inserción Flotante.

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC 9(4) 0000 PIC $$,$$9.99

PIC 9(4) 0080 PIC $$,$$9.00

PIC 9(4) 0128 PIC $$,$$9.99

PIC 9(5) 57397 PIC $$,$$9

PIC S9(4) - 0005 PIC ++++9

PIC S9(4) +0080 PIC ++++9

PIC S9(4) - 0080 PIC - - - - 9

PIC S9(5) +71234 PIC - - - - 9

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC 9(4) 0000 PIC $$,$$9.99

PIC 9(4) 0080 PIC $$,$$9.00

PIC 9(4) 0128 PIC $$,$$9.99

PIC 9(5) 57397 PIC $$,$$9

PIC S9(4) - 0005 PIC ++++9

PIC S9(4) +0080 PIC ++++9

PIC S9(4) - 0080 PIC - - - - 9

PIC S9(5) +71234 PIC - - - - 9

$0.00$80.00$128.00$7,397-5+80-80ž1234

SiguienteAnterior

Supresión y Remplazo

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC 9(5) 12345 PIC ZZ,999

PIC 9(5) 01234 PIC ZZ,999

PIC 9(5) 00123 PIC ZZ,999

PIC 9(5) 00012 PIC ZZ,999

PIC 9(5) 05678 PIC **,**9

PIC 9(5) 00567 PIC **,**9

PIC 9(5) 00000 PIC **,***

se Manda se Manda se Recibe se Recibe

Picture Datos Picture ResultadoPicture Datos Picture Resultado

PIC 9(5) 12345 PIC ZZ,999

PIC 9(5) 01234 PIC ZZ,999

PIC 9(5) 00123 PIC ZZ,999

PIC 9(5) 00012 PIC ZZ,999

PIC 9(5) 05678 PIC **,**9

PIC 9(5) 00567 PIC **,**9

PIC 9(5) 00000 PIC **,***

12,3451,234123012*5,678***567******

RegresarAnterior

ACCEPT

TIME

DAY

DATE

FROMIdent -Campo ACCEPT Formato 2

- Mnemonico FROMIdent -Campo ACCEPT Formato 1

* AAMMDD 01 WS-FECHA01 WS-FECHA PIC PIC 9(06).9(06).

* AAMMDD 01 WS-DIA-AA01 WS-DIA-AA PIC PIC 9(05).9(05).

* HHMMSSss s = s/100 01 WS-HORA 01 WS-HORA PIC 9(8).PIC 9(8).

* AAMMDD 01 WS-FECHA01 WS-FECHA PIC PIC 9(06).9(06).

* AAMMDD 01 WS-DIA-AA01 WS-DIA-AA PIC PIC 9(05).9(05).

* HHMMSSss s = s/100 01 WS-HORA 01 WS-HORA PIC 9(8).PIC 9(8).

ACCEPT WS-FECHA FROM DATE

ACCEPT WS-DIA-AA FROM DAY

ACCEPT WS-HORA FROM TIME

MenúEjemplo

Ejemplos :

ADD SUBTRACT MULTIPLY

ADD SUBTRACT MULTIPLY

Ejemplos ROUNDED

Ejemplos ON SIZE...

Menú

estatutos n-Identif2-Literal,

2-Identif,

1-Literal

1-Identif ... ERROR SIZE ON ROUNDEDTO ADD

estatutos n-Identif3-Literal,

3-Identif,

2-Literal

2-Identif

1-Literal

1-Identif ... , ERROR SIZE ON ROUNDED GIVING ADD

estatutos n-Identif2-Literal,

2-Identif,

1-Literal

1-Identif ... ERROR SIZE ON ROUNDED FROM SUBTRACT

estatutos

x-Identif n -Identif2-Literal,

2-Identif,

1-Literal

1-Identif

...

ERROR SIZE ON

ROUNDED GIVINGFROM SUBTRACT

estatutos 2-Identif1-Literal

1-Identif ERROR SIZE ON ROUNDEDBY MULTIPLY

estatutos

3 -Identif 2-Literal

2-Identif

1-Literal

1-Identif

ERROR SIZE ON

ROUNDEDGIVINGBY MULTIPLY

ROUNDED

La opción ROUNDED hace que suba al siguiente La opción ROUNDED hace que suba al siguiente valor el resultado cuando es mayor o igual a 5.valor el resultado cuando es mayor o igual a 5.

Campo definido Resultado Result. Truncado Result. Redond.

PIC 9(3)V9. 123.25

PIC 9(3). 123.25

123.2 123.3

123 123

Anterior

Campo definido Resultado SIZE ERROR

PIC 9(3)V9. 245.96

PIC 9(3)V9. 1245.9

PIC 9(3). 124

PIC 9(3). 1246

PIC 9(3)V9 No Redondeado 124.45

PIC 9(3)V9 Redondeado 124.45

PIC 9(3)V9 Redondeado 3124.45

Un error de tamaño existe cuando no concuerda Un error de tamaño existe cuando no concuerda el tamaño indicado en el picture con el resultado el tamaño indicado en el picture con el resultado de la operación, resultando un valor truncado.de la operación, resultando un valor truncado.

ON SIZE ERROR

SíSí

No

SíSí

No

Anterior

Ejemplos de ADD

ADD Pesos TO Total.AntesAntes 3 1000DespuésDespués

ADD Pesos TO Total, Pago.AntesAntes 20 1019 100DespuésDespués

ADD Pesos Total GIVING Resultado.Antes Antes 3 1000 0015DespuésDespués

ADD Hombres TO Damas GIVING Personas.AntesAntes 1500 0625 1234DespuésDespués

ADD Pesos TO Total.AntesAntes 3 1000DespuésDespués

ADD Pesos TO Total, Pago.AntesAntes 20 1019 100DespuésDespués

ADD Pesos Total GIVING Resultado.Antes Antes 3 1000 0015DespuésDespués

ADD Hombres TO Damas GIVING Personas.AntesAntes 1500 0625 1234DespuésDespués

3 1003

20 1039 120

3 1000 1003

1500 0625 2125

Anterior

Ejemplos de SUBTRACT

SUBTRACT Impuesto FROM Pago, Total.AntesAntes 120 4000 9120 DespuésDespués

SUBTRACT Impuesto, 80 FROM Total.AntesAntes 100 480DespuésDespués

SUBTRACT Impuesto FROM Pago GIVING PagoNeto.Antes Antes 750 1000 0012DespuésDespués

SUBTRACT Impuesto FROM Pago, Total.AntesAntes 120 4000 9120 DespuésDespués

SUBTRACT Impuesto, 80 FROM Total.AntesAntes 100 480DespuésDespués

SUBTRACT Impuesto FROM Pago GIVING PagoNeto.Antes Antes 750 1000 0012DespuésDespués

120 3880 9000

100 300

750 1000 0250

Anterior

Ejemplos de MULTIPLY

MULTIPLY Costo BY Productos GIVING Total-Pago ON SIZE ERROR DISPLAY "Total Pago Erroneo" END-MULTIPLY. Costo Productos Total-PagoCosto Productos Total-Pago

Antes Antes 15.50 100 0123.45DespuésDespués

MULTIPLY 10 BY Magnitud

AntesAntes 355 DespuésDespués

MULTIPLY Costo BY Productos GIVING Total-Pago ON SIZE ERROR DISPLAY "Total Pago Erroneo" END-MULTIPLY. Costo Productos Total-PagoCosto Productos Total-Pago

Antes Antes 15.50 100 0123.45DespuésDespués

MULTIPLY 10 BY Magnitud

AntesAntes 355 DespuésDespués

15.50 100 1550.00

3550

Anterior

DIVIDE

DIVIDE 201 BY 10 GIVING Cociente REMAINDER. Remanente.AntesAntes 209 424DespuésDespués

DIVIDE 201 BY 10 GIVING Cociente REMAINDER. Remanente.AntesAntes 209 424DespuésDespués 020 001

Menú

Estatutos ERROR SIZE ON; 4-Identif REMAINDER

]ROUNDED[ 3-Identif GIVING 2-Literal

2-Identif BY

1-Literal

1-Identif DIVIDE

Estatutos ERROR SIZE ON; 4-Identif REMAINDER

]ROUNDED[ 3-Identif GIVING 2-Literal

2-Identif INTO

1-Literal

1.-Identif DIVIDE

Compute Precio-Mexico = Precio-Plata / Tasa * 100.Antes Antes 1000.50 156.25 87 DespuésDespués

Compute Precio-Mexico = Precio-Plata / Tasa * 100.Antes Antes 1000.50 156.25 87 DespuésDespués 179.59 156.25 87

COMPUTE

COMPUTE-END estatutos ERROR SIZE ON NOT

ERROR SIZE ON

AritmeticaExpresion = ... ] ROUNDED [ Identif. COMPUTE

Símbolos para COMPUTESímbolos para COMPUTE**** = EXPONENCIACION NN

** = MULTIPLICA x// = DIVIDE ÷

++ = SUMA +-- = RESTA -

Símbolos para COMPUTESímbolos para COMPUTE**** = EXPONENCIACION NN

** = MULTIPLICA x// = DIVIDE ÷

++ = SUMA +-- = RESTA -

Menú

CALL

CALL Nombre de programa [USING Nombre-dato-1 [Nombre-dato-2]...] [ON OVERFLOW Sentencias [END-CALL]

Instrucción que sirve para transferir el control de un programa a otro programa o a un sub-programa.

IDENTIFICATION DIVISION.PROGRAM-ID. PROG-B.

DATA DIVISION.WORKING-STORAGE SECTION.01 WS-CALC-A PIC 9(5) VALUE 0.LINKAGE SECTION.01 LI-RECIBE PIC X(20).

PROCEDURE DIVISION USING LI-RECIBE. INICIO. DISPLAY “PROGRAMA LLAMADO” DISPLAY “ NOMBRE RECIBIDO : ” DISPLAY LI-RECIBE EXIT PROGRAM.

IDENTIFICATION DIVISION.PROGRAM-ID. PROG-B.

DATA DIVISION.WORKING-STORAGE SECTION.01 WS-CALC-A PIC 9(5) VALUE 0.LINKAGE SECTION.01 LI-RECIBE PIC X(20).

PROCEDURE DIVISION USING LI-RECIBE. INICIO. DISPLAY “PROGRAMA LLAMADO” DISPLAY “ NOMBRE RECIBIDO : ” DISPLAY LI-RECIBE EXIT PROGRAM.

IDENTIFICATION DIVISION.PROGRAM-ID. PROG-A.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NOMB PIC X(20) VALUE SPACES.LINKAGE SECTION.01 LI-ENVIA PIC X(20).

PROCEDURE DIVISION.INICIO. DISPLAY “PROGRAMA LLAMADOR ” DISPLAY “ INDIQUE SU NOMBRE : ” ACCEPT WS-NOMB MOVE WS-NOMB TO LI-ENVIA CALL PROG-B USING LI-ENVIA DISPLAY “REGRESE A LLAMADOR” STOP RUN.

IDENTIFICATION DIVISION.PROGRAM-ID. PROG-A.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NOMB PIC X(20) VALUE SPACES.LINKAGE SECTION.01 LI-ENVIA PIC X(20).

PROCEDURE DIVISION.INICIO. DISPLAY “PROGRAMA LLAMADOR ” DISPLAY “ INDIQUE SU NOMBRE : ” ACCEPT WS-NOMB MOVE WS-NOMB TO LI-ENVIA CALL PROG-B USING LI-ENVIA DISPLAY “REGRESE A LLAMADOR” STOP RUN.

PROG. LLAMADOR PROG. LLAMADOPROG. LLAMADOR PROG. LLAMADO

EJECUTAR Menú

MOVE

El MOVE copia datos desde un identificador o literal origen a uno o mas campos de destino.

... . TO .

MOVE IdentifLiteral

Identif

01 Apellido PIC X(8) VALUE SPACES.

MOVE “LOZA” TO Apellido. MOVE “LOZA” TO Apellido.

L O Z A

MOVE con caracteres

MenúSiguiente

01 Cta-chq PIC 9(3).01 Saldo PIC 9(3)V99.

MOVE 123 TO Cta-chq.

MOVE 12.4 TO Cta-chq.

MOVE 154 TO Saldo.

MOVE 3552.75 TO Saldo.

Articulo

1 2 3

Articulo

1 5 4 0 0 Precio

Precio

3 .

0 1 2

5 5 2 7 5

.

. 4

MOVE con númericosMOVE

MenúAnterior

Menú

COPY

END

Numseq2numseq1, Nombretext COPY

THRU

THROUGH

EJEMPLO : COPY MAESTRO.

FD MAESTRO. LABEL RECORD IS STANDARD. RECORD CONTAINS 73 CHARACTERS. 01 REG-MAESTRO. 05 CUENTA PIC X(18). 05 CTA-RED REDEFINES CUENTA. 10 PRODUCTO PIC X(02). 10 TIPO PIC X(08) 10 CONSEC PIC 9(08). 05 CLIENTE PIC X(40). 05 SALDO PIC S9(12)V99.

FD MAESTRO. LABEL RECORD IS STANDARD. RECORD CONTAINS 73 CHARACTERS. 01 REG-MAESTRO. 05 CUENTA PIC X(18). 05 CTA-RED REDEFINES CUENTA. 10 PRODUCTO PIC X(02). 10 TIPO PIC X(08) 10 CONSEC PIC 9(08). 05 CLIENTE PIC X(40). 05 SALDO PIC S9(12)V99.

ARCHIVO : MAESTRO EN LA BIBLIOTECA DE COPYS

ESTA SENTENCIA, PERMITE INCORPORAR A UN PROGRAMA UNA SERIE DE TEXTOS COBOL, PREVIAMENTEESCRITOS Y ALMACENADOS EN UNA BIBLIOTECA.

FORMATO

CANCEL

Esta instrucción libera el AREA de memoria utilizada por Esta instrucción libera el AREA de memoria utilizada por un programa, Garantizando que la siguiente vez que sea un programa, Garantizando que la siguiente vez que sea llamado el programa partamos de su estado original.llamado el programa partamos de su estado original.

formato :CANCEL Identificador-1

Literal-1

, Identificador-1, Literal-1

........

Ejemplo :

CALL ”PROG-B" USING LI-ENVIA.CANCEL ”PROG-B"CALL ”PROG-Br" USING LI-ENVIA.

Menú

OPEN

...prog. elen arch. Nombre OPEN

EXTEND

OUTPUT

INPUTFormato :

- Cuando se abre un archivo debe indicarse su USO.

- El abrir un archivo NO LEE ningún registro simplemente provee el acceso.

Menú

CLOSE

progen arch Nombre CLOSEFormato :

- Cuando se cierra un archivo ya no es posible efectuar READs o WRITEs.

Menú

DISPLAY

ADVANCING NO WITHUPON

... Literal

dorIdentifica

Literal

dorIdentifica DISPLAY

Mnemonico-Nombre

Se usa para desplegar mensajes y datos en la pantalla.

La cláusula WITH NO ADVANCING suprime el retorno de carro y/o fin de linea.

Formato :

MenúEjemplo

Programa COBOL ejemplo :

IDENTIFICATION DIVISION.PROGRAM-ID. EJEM-1.AUTHOR. FRANCISCO JAVIER MEJIA.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-FECHA. 05 WS-YY PIC 99. 05 WS-MES PIC 99. 05 WS-DIA PIC 99.PROCEDURE DIVISION.Inicio. ACCEPT WS-FECHA FROM DATE. DISPLAY “DIA : ” WS-DIA. DISPLAY “MES : ” WS-MES. DISPLAY “AÑO : ” WS-YY.

STOP RUN.

IDENTIFICATION DIVISION.PROGRAM-ID. EJEM-1.AUTHOR. FRANCISCO JAVIER MEJIA.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-FECHA. 05 WS-YY PIC 99. 05 WS-MES PIC 99. 05 WS-DIA PIC 99.PROCEDURE DIVISION.Inicio. ACCEPT WS-FECHA FROM DATE. DISPLAY “DIA : ” WS-DIA. DISPLAY “MES : ” WS-MES. DISPLAY “AÑO : ” WS-YY.

STOP RUN.

EjecutarEjecutarEjecutarEjecutar

Menú

IF

• Condiciones Simples

– Condiciones de Relación

– Condiciones de Clase

– Condiciones de Signo

• Condiciones Combinadas

• Condiciones de Nombre

• Condiciones Simples

– Condiciones de Relación

– Condiciones de Clase

– Condiciones de Signo

• Condiciones Combinadas

• Condiciones de Nombre

Tipos de CTipos de CONDICIÓNONDICIÓN

IF-END SENTENCE NEXT

Estatutos de Grupo ELSE

SENTENCE NEXTEstatutos de Grupo

THENCondición

IFFormato :Formato :

Menú

Ver

Ver

Ver

Ver

Ver

Condiciones de Relación

ritméticaExpresiónA

Literal

rIdenticado

ritméticaExpresiónA

Literal

rIdenticado

<=

TO EQUAL OR THAN LESS

>=

TO EQUAL OR THAN GREATER

= NOT

TO EQUAL NOT

< NOT

THAN LESS NOT

> NOT

THAN GREATER NOT

IS

• Permiten saber si un campo es mayor, menor o igual a otro.

Formato :Formato :

Anterior

Condiciones de Clase

• Permiten saber si un campo es Numérico o Alfabético.

Usuarioelpor definida Clase

UPPER-ALPHABETIC

LOWER-ALPHABETIC

ALPHABETIC

NUMERIC

]NOT[ ISdor Identifica

Formato :Formato :

Anterior

Condiciones de Signo

• El signo determina la condición de positivo, negativo o cero.

ZERO

NEGATIVE

POSITIVE

]NOT[ IS rico)Campo(Numé

Formato :Formato :

• Permiten saber si un campo numerico es positivo negativo o cero.

Anterior

Condiciones Combinadas.

• Una condición combinada esta formada por un conjunto de condiciones simples unidas por los operadores AND y OR.

• Se debe tomar en cuenta que es posible evaluar una condición de cierto o falso (si el campo de la condición previamente fue definido con nivel 88).

Condición OR

AND

CondiciónFormato :Formato :

SiguienteAnterior

( ) ( )

Ejemplos

IF VarA > VarC OR VarC = VarD OR VarA NOT = VarF IF VarA > VarC OR VarC = VarD OR VarA NOT = VarF DISPLAY “Algo”.DISPLAY “Algo”.

( ) ( ) ( )

IF Linea > 0 AND Linea < 26 IF Linea > 0 AND Linea < 26 DISPLAY “En pantalla”.DISPLAY “En pantalla”.

IF VarA > VarB AND VarC = VarD OR VarA NOT = VarF IF VarA > VarB AND VarC = VarD OR VarA NOT = VarF DISPLAY “Algo”.DISPLAY “Algo”.

( ) ( )

Anterior

Nombres de Condición

Los NOMBRES CONDICION (Condición Booleana) son condiciones cuyo resultado únicamente puede ser CIERTO o FALSO.

Los nombres de condición son definidos en DATA DIVISION usando el nivel especial número 88.

HighValue

THRU

THROUGH LowValue

Literal

VALUES

VALUECondición Nombre 88

Anterior

01 Cod-bco PIC 9 VALUE 5.88 Bancomer VALUE 1.88 Banorte VALUE 2.88 Banamex VALUE 3.88 Bital VALUE 4.88 Banco XYZ VALUE 5. 88 Buenos-Bcos VALUE 1 THRU 4.

01 Cod-bco PIC 9 VALUE 5.88 Bancomer VALUE 1.88 Banorte VALUE 2.88 Banamex VALUE 3.88 Bital VALUE 4.88 Banco XYZ VALUE 5. 88 Buenos-Bcos VALUE 1 THRU 4.

IF Buenos-Bancos PERFORM Calcula-algo.IF Bancomer PERFORM verifica.

IF Buenos-Bancos PERFORM Calcula-algo.IF Bancomer PERFORM verifica.

Bancomer CIERTOBanorte FALSOBanamex FALSOBital FALSOBanco XYZ FALSOBuenos-Bcos CIERTO

Cod-bco : 1Cod-bco : 1

EJEMPLO

Menú

Evaluate

MenúOtro Ejem.

EVALUATE-END

OTHERWHEN

WHEN

EVALUATE

Estatutos

Estatutos

1-Condicion

FALSE

TRUE

1-Expresion

1-Identif

SE USA LA INSTRUCCIÓN EVALUATE PARA PROBAR UNA SERIE DE CONDICIONES DE UN CAMPO

EJEMPLO : READ ENTRADA AT END SET WS-FIN TO TRUE NOT AT END EVALUATE TIPO-CTA WHEN ‘CH’ PERFORM PROCESA-CHEQUES WHEN ‘IN’ PERFORM PROCESA-INVERSION WHEN OTHER PERFORM REGISTRO-ERRONEO END-EVALUATE END-READ.

EJEMPLO

EXEC SQLSELECT CONTRATO INTO :WS-CONTRATO FROM TAB-PAGOS

WHERE CONTRATO > 0000000END-EXEC. AVALUATE SQLCODE WHEN 0 PERFORM PROCESA-REGISTRO WHEN OTHER PERFORM VERIFICA-SQLCODE END-EVALUATE.

EXEC SQLSELECT CONTRATO INTO :WS-CONTRATO FROM TAB-PAGOS

WHERE CONTRATO > 0000000END-EXEC. AVALUATE SQLCODE WHEN 0 PERFORM PROCESA-REGISTRO WHEN OTHER PERFORM VERIFICA-SQLCODE END-EVALUATE.

MenúAnterior

INSPECT

INITIAL AFTER

BEFORE

LEADING

ALL

Delimitador INITIAL AFTER

BEFORE CHARACTERS

FOR

TALLYING identificador-1

INSPECT

identificador-2 identificador-3 literal-1

identificador-4 literal-2

FORMATO 1FORMATO 1

INITIAL AFTER

BEFORE

BY

FIRST

LEADING

ALL

CHARACTERS

REPLACING iidentificador-1

INSPECT

Identificador-5literal-3

Identificador-6literal-4

Identificador-7literal-5

FORMATO 2FORMATO 2

MenúEjemplos

Ejemplos

PERFORM VARYING ind FROM 1 BY 1 UNTIL ind > 40 INSPECT linea-texto REPLACING “*”(ind) BY “ “END-PERFORM.

INSPECT registro-entrada CONVERTING "abcdefghijklmnopqrstuvwxyz" TO "ABCDEFGHIJKLMNOPQRSTUVWXYZ".

INSPECT Nombre TALLYING cont-caracteres FOR LEADING SPACES.

INSPECT Nombre TALLYING cont-caracteres FOR ALL “E" AFTER INITIAL “SR." BEFORE INITIAL “ ".

INSPECT

MenúAnterior

PERFORM

THROUGH

THRU 1-párrafo nombre PERFORM

22 - párrafo nombre

THROUGH

THRU Proc-1 nombre PERFORM

Proc-2 nombre

TIMESIdentificadorIdentificadorenteroentero

Formato 1

Formato 2

Formato 3

THROUGH

THRU Proc-1 nombre PERFORM

Proc-2 nombre

FROMIdentificador-1Identificador-1indice-1indice-1

VARYINGIdentificador-2Identificador-2indice-2indice-2Literal-1Literal-1

BY Identificador-3Identificador-3Literal-2Literal-2

UNTIL Condicion-1Condicion-1

MenúEjemplo

PERFORM

UNTIL Condicion-1Condicion-1

PROCEDURE DIVISION.INICIO.

DESPLEGA-NOMBRE.

PROCEDURE DIVISION.INICIO.

DESPLEGA-NOMBRE.

estatutos

PERFORM DESPLEGA-NOMBRE 4 TIMESestatutos

STOP RUN.

DISPLAY “PEDRO SANCHEZ”.

Ejemplo

MenúAnterior

READ Nombre-arch RECORD INTO Item-destino

AT END estatutos

END-READ

Formato 1 archivosSecuenciales

Formato 2 archivosIndexados

Formato 3 archivosIndexados

READ

READ

END-READ

Nombre-arch RECORD INTO Item-destino

KEY IS campo-llave

INVALID KEY estatutos

READ

END-READ

NEXT RECORD INTO

AT END

Nombre-arch Item-destino

estatutos

Menú

WRITE

Formato

archivosSecuenciales

Formato

archivosIndexados

WRITE

ADVANCING

Num.lineas

Nombre Nemonico

PAGE

Nombre-registro FROM Identificador

BEFORE

AFTER

LINE

LINES

[ ]

[ ]

[ ]

WRITE

END WRITE

FROM

INVALID KEY estatutos

-

Nombre-registro Identificador

Menú

REWRITE

[ ]REWRITE FROMNombre-registro Identificador

[ ]

[ ]

[ ]

REWRITE

END-REWRITE

FROM

INVALID KEY

Nombre-registro Identificador

estatutos

FormatoarchivosSecuenciales

FormatoarchivosIndexados

Para efectuar el REWRITE es necesario haber abierto el archivocon : OPEN I-O (de entrada y salida).

Menú

STOP-RUN

STOP RUN.

Esta instrucción le dice al computador que termine el programa

Todos los programas deben terminar con un enunciado STOP RUN.

Formato

Menú

STRING, Identificador-3, literal-3SIZE

, Identificador-2, literal-2

Identificador-1literal-1

... DELIMITED BYSTRING

INTO WITH POINTER Identificador-5

ON OVERFLOW

Identificador-4

estatutos

STRING nombre DELIMITED BY ‘ ‘ ‘ ‘ DELIMITED BY SIZE apellido-pat DELIMITED BY ‘ ‘ ‘ ‘ DELIMITED BY SIZE apellido-mat DELIMITED BY ‘ ‘ INTO nombre-completo WITH POINTER WS-CONT-CARACTER

Menú

nombre

apellido-pat

apellido-mat

J E S U S

S A L A M A N C A

C R U Z

J E S U S S A L A M A N C A C R U Z ....... nombre-completo

Ejemplo

UNSTRING

Identificador-1UNSTRING

Identificador-4. . .

DELIMITED BY

ALL Identificador-2 literal-1

, OR

ALL Identificador-3 literal-2

. .

INTO

END-UNSTRING

J E S U S S A L A M A N C A C R U Z ....... nombre-completo

UNSTRING nombre-completo DELIMITED BY ‘ ‘ INTO nombre apellido-pat apellido-mat END-UNSTRING

nombre

apellido-pat

apellido-mat

J E S U S

S A L A M A N C A

C R U Z

Ejemplo

Menú

Prog. EstructuradaLa programación estructurada es un conjunto de reglas y estándares que se conjugan, para efectuar la programación de una forma mas eficiente.

En la programación estructurada solo se utilizan tres tipos de estándares o patrones que son los siguientes :

Patrón SECUENCIAL

Patrón ALTERNATIVO

Patrón REPETITIVO

Menú

Ver

Ver

Ver

Prog. Estructurada

Patrón SECUENCIAL

Mover

Sumar

Indica una serie de instrucciones en

secuencia

MOVE ZEROS TO TOTALES

ADD 1 TO CONTADOR

CLOSE TO ARCHIVO-CTAS

Anterior

Patrón ALTERNATIVO

Mover 25

a campo

Indica la consulta de una condición, para que se tome una acción (solo una), y que de una manera u otra llegue al mismo punto de salida

IF A = B

MOVE 50 TO CAMPO

ELSE

MOVE 25 TO CAMPO

END-IF

Mover 50

a campo

A = BNo Si

Prog. Estructurada

Anterior

Prog. EstructuradaPatrón REPETITIVO

Sumar 1

a Cont

No

Si

Condiciones

InicialesCont = 0

Cont = 5

Desplegar

Cont

Indica la ejecución de una o un conjunto de instrucciones, tantas veces hasta que se cumpla una condición.

Working-Storage. 01 CAMPOS.

05 Cont PIC 9 VALUE 0.

PROCEDURE DIVISION. MOVE 0 TO Cont

PERFORM 0010-SUMA

UNTIL Cont = 5.

DISPLAY Cont

STOP-RUN.

0010-SUMA.

ADD 1 TO Cont.

Anterior

Menú

DATA DIVISION.WORKING-STORAGE SECTION

TABLAS (arreglos)Una tabla es una secuencia continua de localizaciones de memoria llamados elementoselementos, , los cuales tienen el mismo nombre y unicamente son son identificados por el nombre y la posicion en la secuencia.

Una tabla es una secuencia continua de localizaciones de memoria llamados elementoselementos, , los cuales tienen el mismo nombre y unicamente son son identificados por el nombre y la posicion en la secuencia.

Declaración de tablas.

Una Dimensión

Dos Dimensiones

Ver

Ver

DATA DIVISION.Declaración de tablas. Una Dimensión01 TABLA-TOTALES. 05 TOT-MES PIC 9(05)V99 OCCURS 12 TIMES. O 05 TOT-MES PIC 9(05)V99 OCCURS 12 TIMES INDEXED BY WS-IND. TOT-MES(1) TOT-MES(2) TOT-MES(3) TOT-MES(12)

Con manejo de subscripto MOVE ZERO TO WS-TOTAL-ANUAL PERFORM SUMA-ANUAL VARYING WS-SUBSCRIP FROM 1 BY 1 UNTIL WS-SUBSCRIP > 12 MOVE WS-TOTAL-ANUAL TO SAL-RENGLON, WRITE SALIDA FROM SAL-RENGLON. SUMA-ANUAL. ADD TOT-MES (WS-SUBSCRIP) TO WS-TOTAL-ANUAL.

Con manejo de Indice MOVE ZERO TO WS-TOTAL-ANUAL SET WS-IND TO 1 PERFORM SUMA-ANUAL UNTIL WS-IND = 12 MOVE WS-TOTAL-ANUAL TO SAL-RENGLON, WRITE SALIDA FROM SAL-RENGLON. SUMA-ANUAL. ADD TOT-MES (WS-IND) TO WS-TOTAL-ANUAL. SET WS-IND UP BY 1 IF WS-IND = 12 ADD TOT-MES (WS-IND) TO WS-TOTAL-ANUAL END-IF.

...

Otro Ejemplo

Anterior

01 TABLA-MES. 05 FILLER PIC X(03) VALUE ‘ENE’. 05 FILLER PIC X(03) VALUE ‘FEB’. 05 FILLER PIC X(03) VALUE ‘MAR’. 05 FILLER PIC X(03) VALUE ‘ABR’. 05 FILLER PIC X(03) VALUE ‘MAY’. 05 FILLER PIC X(03) VALUE ‘JUN’. 05 FILLER PIC X(03) VALUE ‘JUL’. 05 FILLER PIC X(03) VALUE ‘AGO’. 05 FILLER PIC X(03) VALUE ‘SEP’. 05 FILLER PIC X(03) VALUE ‘OCT’. 05 FILLER PIC X(03) VALUE ‘NOV’. 05 FILLER PIC X(03) VALUE ‘DIC’.01 FILLER REDEFINES TABLA-MES. 05 TAB-MES OCCURS 12 TIMES. 10 TAB-MES-ACTUAL PIC X(03).

Working-Storage section.01 WS-FECHA. 05 WS-AA PIC 9(02). 05 WS-MES PIC 9(02). 05 WS-DIA PIC 9(02).Procedure Division.ACCEPT WS-FECHA FROM DATE MOVE TAB-MES-ACTUAL(WS-MES) TO ...

TABLA-MES

ENE FEB MAR ABR MAY JUN JUL AGO SEP OCT NOV DIC1 2 3 4 5 6 7 8 9 10 11 12

De Mes

DATA DIVISION.

Declaración de tablas. Una Dimensión

Anterior

DATA DIVISION.

Anterior

Declaración de tablas. Dos Dimensiones

01 TABLA-TOTALES. 05 TOT-X-MES OCCURS 12 TIMES. 10 TOT PIC 9(12)V99. 10 DIA PIC 9(12)V99 OCCURS 31 TIMES.

TOT-X-MES(1) TOT-MES(2) TOT-MES(12) ...

Tot(1) Dia(1)...Dia(31) Tot(2) Dia(1)...Dia(31) Tot(12) Dia(1)...Dia(31)

FD ENTRADA.01 REG-ENTRADA. 05 ENT-MES-VENTA PIC 99. 05 ENT-DIA-VENTA PIC 99. 05 ENT-IMPORTE PIC 9(12)V99.

PROCESO. PERFORM LEE-SUMA UNTIL WS-FIN. STOP-RUN.LEE-SUMA. READ ENTRADA AT END SET WS-FIN TO TRUE NOT AT END PERFORM SUMA-ANUAL END-READ.SUMA-ANUAL. ADD ENT-IMPORTE TO DIA(ENT-MES-VENTA, ENT-DIA-VENTA). ADD ENT-IMPORTE TO TOT(ENT-MES-VENTA).