Académique Documents
Professionnel Documents
Culture Documents
txt
CCCCCCCC
CCCCCCCC
CC
CC
CCCCCCCC
CCCCCCCC
OOOOOOO
OOOOOOOOO
OO OO
OO OO
OOOOOOOOO
OOOOOOO
BBBBBBB
BBBBBBBB
BB BB
BBBBBBBB
BB BB
BBBBBBBB
OOOOOOO
OOOOOOOOO
OO OO
OO OO
OOOOOOOOO
OOOOOOO
LL
LL
LL
LL
LLLLLLLL
LLLLLLLLL
INDICE
PROGRAMA ANIDADO.
Página 1
Manual Básico COBOL.txt
II
LLAMANDO PROGRAMAS.
INSTRUCCIONES DE TABLAS.
Página 2
Manual Básico COBOL.txt
TABLAS.
Tablas ................................................... 35
Tablas de longitud variable .............................. 36
Descripcion de una tabla ................................. 36
Tablas de mas de una dimension ........................... 37
Tablas de mas de una dimension ........................... 37
Indexacion ............................................... 38
Declaracion 'SET' ........................................ 38
Declaracion 'SEARCH' ..................................... 39
III
EJEMPLOS DE RUTINAS.
WLM.-IBM
ID DIVISION.
----
ENVIROMMENT DIVISION.
Página 3
Manual Básico COBOL.txt
----
DATA DIVISION.
----
PROCEDURE DIVISION.
----
END PROGRAM Nom-prog. ------> (identico al de PROGRAM-ID.)
---------------------
¦ PROGRAMA ANIDADO ¦
---------------------
COMPARTICION DE DATOS
-----------------------
--> GLOBAL B
Página 4
Manual Básico COBOL.txt
--> EXTERNAL B
--> POINTER B
Tambien en :
- sentencia SET.
- En una condicion de relacion.
- En la "USING" de una "CALL", "ENTRY" o cabecera
de "PROCEDURE DIVISION".
2) NIVELES DE TABLAS.
1) OPERACIONES DE CONDICION.
Página 5
Manual Básico COBOL.txt
¦ SET ESTADO TO TRUE [ 88 ESTADO VALUE '2'. ] ¦
¦ ¦
¦ EQUIVALE A MOVER 2 AL NIVEL 01 DE ESTADO. ¦
2) OTRAS CONDICIONES.
END-ADD END-CALL
END-DIVIDE END-EVALUATE
END-PERFORM END-READ
END-SEARCH END-START
END-UNSTRING END-WRITE
END-COMPUTE END-DELETE
END-IF END-MULTIPLY
END-RETURN END-REWRITE
END-STRING END-SUBTRACT
END-WRITE
Ejemplo:
¦ ADD 1 TO CONTADOR ¦
¦ ON SIZE ERROR SET ERROR-OPERACION TO TRUE ¦
¦ END-ADD ¦
4) LLAMADA A SUBPROGRAMAS
Página 6
Manual Básico COBOL.txt
BY REFERENCE:
BY CONTENT:
LLAMADAS ESTATICAS
-------------------
LLAMADAS DINAMICAS
-------------------
SENTENCIA CANCEL
=================
SENTENCIA EVALUATE
===================
¦EVALUATE IDENTIFIC-1 ¦
¦ ¦
¦ LITERAL ¦
¦ ¦
¦ EXPRESION ¦
¦ ¦
¦ TRUE ¦
¦ ¦
¦ FALSE ALSO ...... (VARIOS) ¦
¦ ¦
¦ LAS MISMAS EXPRESIONES ¦
¦ ¦
Página 7
Manual Básico COBOL.txt
¦WHEN FRASE-1 ¦
¦ ¦
¦ ALSO FRASE-2 .....(VARIAS) ¦
¦ ¦
¦ SENTENCIA IMPERATIVA ¦
¦ ¦
¦ ¦
¦[ WHEN OTHER SENTENCIA IMPERATIVA ] ¦
Página 8
Manual Básico COBOL.txt
EJEMPLOS DE EVALUATE
----------------------
EVALUATE CAMPO1
WHEN 'D'
MOVE 'CONDUCTOR' TO CAMPO1
WHEN 'R'
MOVE 'COCHE' TO CAMPO1
WHEN SPACE
MOVE SPACES TO CAMPO1
END-EVALUATE
---> USANDO IF
IF CAMPO1 = 'D'
MOVE 'CONDUCTOR' TO CAMPO1
ELSE
IF CAMPO1 = 'R'
MOVE 'COCHE' TO CAMPO1
ELSE
IF CAMPO1 = SPACE
MOVE SPACES TO CAMPO1
END-IF
END-IF
END-IF
SENTENCIA INITIALIZE
=====================
Página 9
Manual Básico COBOL.txt
* IDENTIF-1 puede ser :
- Un ITEM subscrito
- una tabla completa (no DEPENDING ON)
- una estructura
10
Página 10
Manual Básico COBOL.txt
¦ ¦
¦ PERFORM PROC-1 [ THRU PROC-2 ] ¦
¦ ¦
¦ [ WITH TEST BEFORE / ¦
¦ ¦
¦ AFTER ] ¦
¦ ¦
¦ VARYING IDENT-1 FROM IDENT-2 ¦
¦ ¦
¦ INDEX-1 INDEX-2 ¦
¦ ¦
¦ LITERAL ¦
¦ ¦
¦ BY IDENT-3 UNTIL CONDICION-1 ¦
¦ ¦
¦ INDEX-3 ¦
¦ ¦
¦ ¦
¦ AFTER ... FROM ..... BY .... UNTIL ... ¦
¦ ¦
¦ ¦
¦ [ DECLARACION IMPERATIVA ¦
¦ ¦
¦ END-PERFORM ] ¦
ASPECTOS ADICIONALES
=====================
11
Página 11
Manual Básico COBOL.txt
se puede utilizar:
INTERACTIVAMENTE
----------------
BATCH
-----
12
COMPILACION
-----------
Página 12
Manual Básico COBOL.txt
en tiempo de ejecucion nos daria un ABEND de usuario
1010.
Si el programa secundario esta linkeditado con la op-
cion RENT, y no es realmente reentrante, en tiempo de
ejecucion nos puede dar un abend de sistema B0A o 30A.
13
Página 13
Manual Básico COBOL.txt
PROGRAMA PRINCIPAL Y SUBPROGRAMAS.
-------------------------------------
14
+--------------+-------------+-------------------------------------+
¦Tipo programa ¦Finaliza con:¦ Efectos que causa ¦
+--------------+-------------+-------------------------------------+
¦ MAIN PROGRAM ¦ STOP RUN ¦ Termina la RUN UNIT y deletea ¦
¦ (programa ¦ ¦ todos los programas llamados di- ¦
¦ (programa ¦ ¦ los programas llamados dinamicamen- ¦
¦ principal) ¦ ¦ namicamente en la RUN UNIT y ¦
¦ ¦ ¦ todos los programas linkeditados ¦
¦ ¦ ¦ con aquellos. El control es de- ¦
¦ ¦ ¦ vuelto al llamador del programa ¦
¦ ¦ ¦ PRINCIPAL que usualmente suele ¦
¦ ¦ ¦ ser el sistema operativo ¦
+--------------+-------------+-------------------------------------+
¦ MAIN PROGRAM ¦ GOBACK ¦ Tiene el mismo efecto que ¦
¦ (programa ¦ ¦ STOP RUN ¦
¦ principal) ¦ ¦ ¦
+--------------+-------------+-------------------------------------+
¦ MAIN PROGRAM ¦EXIT PROGRAM ¦ No tiene ningun efecto ¦
¦ (programa ¦ ¦ ¦
¦ principal) ¦ ¦ ¦
+--------------+-------------+-------------------------------------+
¦ SUBPROGRAMA ¦EXIT PROGRAM ¦ Devuelve control a su inmediato ¦
¦ ¦ o ¦ llamador sin finalizar la RUN UNIT ¦
¦ ¦ GOBACK ¦ ¦
+--------------+-------------+-------------------------------------+
¦ SUBPROGRAMA ¦ STOP RUN ¦ el efecto es el mismo que en ¦
¦ ¦ ¦ un programa principal: Todos los ¦
¦ ¦ ¦ programas COBOL en la RUN UNIT ¦
¦ ¦ ¦ son terminados y se devuelve ¦
¦ ¦ ¦ control al llamante. ¦
+--------------+-------------+-------------------------------------+
¦ SUBPROGRAMA: Una sentencia EXIT PROGRAM implicita es gene- ¦
¦ rada si no hay una instruccion siguiente eje-¦
¦ cutable ¦
+------------------------------------------------------------------+
Página 14
Manual Básico COBOL.txt
15
LLAMANDO PROGRAMAS
-------------------
16
PROGRAMAS ANIDADOS
-------------------
Página 15
Manual Básico COBOL.txt
para la aplicacion mantenimiento de tecnicas de programacion
estructurada. Se pueden utilizar como procesos PERFORM con la
capacidad adicional de proteger los items locales.
17
EJEMPLO:
--------
+-- Programa X
¦ --------
¦ .......
¦ Call X1
¦ Call X2
¦ .......
¦ Stop run
¦
¦ +-- Programa X1
¦ ¦ --------
¦ ¦
¦ ¦ ........
¦ ¦ Call X11
¦ ¦ Call X12
Página 16
Manual Básico COBOL.txt
¦ ¦ ........
¦ ¦ Stop run
¦ ¦
¦ ¦ +-- Programa X11
¦ ¦ ¦ --------
¦ ¦ ¦
¦ ¦ ¦ ........
¦ ¦ ¦ ........
¦ ¦ ¦ Exit Program
¦ ¦ ¦
¦ ¦ +-- End Program X11
¦ ¦
¦ ¦ +-- Programa X12
¦ ¦ ¦ --------
¦ ¦ ¦
¦ ¦ ¦ ........
¦ ¦ ¦ ........
¦ ¦ ¦
¦ ¦ ¦ Exit Program
¦ ¦ ¦
¦ ¦ +-- End Program X12
¦ ¦
¦ +--
¦
¦ +-- Programa X2
¦ ¦ --------
¦ ¦
¦ ¦ .........
¦ ¦ .........
¦ ¦ Exit Program
¦ ¦
¦ +-- End Program X2
¦
+-- End Program X
18
Página 17
Manual Básico COBOL.txt
mismo programa que el programa COMMON.
19
EJEMPLO:
--------
+-- Program-id. A
¦ -----------
¦
¦ +-- Program-id. A1
¦ ¦ -----------
¦ ¦
¦ ¦ +-- Program-id. A11
¦ ¦ ¦ -----------
¦ ¦ ¦
¦ ¦ ¦ +-- Program-id. A111
¦ ¦ ¦ ¦ -----------
¦ ¦ ¦ ¦
¦ ¦ ¦ +-- End Program A111
¦ ¦ ¦
¦ ¦ +-- End Program A11
¦ ¦
¦ +-- End Program A1
¦
¦ +-- Program-id. A2 is COMMON
¦ ¦ -----------
¦ ¦
¦ +-- End Program A2
¦
¦ +-- Program-id. A3 is COMMON
¦ ¦ -----------
¦ ¦
¦ +-- End Program A3
¦
+-- End Program A
+----------+----------------+-----------------------+
¦ El ¦ Puede llamar ¦ y Puede ser llamado ¦
¦ Programa ¦ a los programas¦ por los programas ¦
+----------+----------------+-----------------------+
¦ A ¦ A1,A2,A3 ¦ Ninguno ¦
+----------+----------------+-----------------------+
¦ A1 ¦ A11,A12,A2,A3 ¦ A ¦
+----------+----------------+-----------------------+
¦ A11 ¦ A111,A12,A2,A3 ¦ A1 ¦
Página 18
Manual Básico COBOL.txt
+----------+----------------+-----------------------+
¦ A111 ¦ A12,A2,A3 ¦ A11 ¦
+----------+----------------+-----------------------+
¦ A12 ¦ A2,A3 ¦ A1,A11,A111 ¦
+----------+----------------+-----------------------+
¦ A2 ¦ A3 ¦ A,A1,A11,A111,A12,A3 ¦
+----------+----------------+-----------------------+
¦ A3 ¦ A2 ¦ A,A1,A11,A111,A12,A2 ¦
+----------+----------------+-----------------------+
20
Observar:
Página 19
Manual Básico COBOL.txt
21
22
Página 20
Manual Básico COBOL.txt
son ellos mismos EXTERNAL.
2.- El nombre usado para el item no puede ser usado en
otro item EXTERNAL dentro del mismo programa.
3.- La clausula VALUE no puede ser especificada para cual-
quier grupo de item o items subordinados EXTERNAL.
Ejemplo:
--------
23
Página 21
Manual Básico COBOL.txt
77 en la LINKAGE SECTION de los programas llamante y llamado.
24
EJEMPLO:
--------
Página 22
Manual Básico COBOL.txt
¦ . ¦
PROCEDURE DIVISION ¦ PROCEDURE DIVISION ¦
. ¦ USING+----------+
. ¦ ¦USING-LIST¦
. ¦ +----------+
CALL CALLED-PROG +----------+
USING ¦PARAM-LIST¦
+----------+
LINKAGE SECTION
-----------------
25
************************************************************************
******** INSTRUCCIONES DE PROGRAMAS COBOL *******
************************************************************************
INTRUCCION INSPECT
------------------
INSTRUCCION INITIALIZE
----------------------
INITIALIZE ALFANUMERIC-1
REPLACING ALPHANUMERIC DATA BY ALPHANUM-3
INITIALIZE CAMPO-NUMERICO
REPLACING NUMERIC DATA BY CAMPO-NUMERICO-2
INITIALIZE CAMPO-EDICION
REPLACING ALPHANUMERIC-EDITED DATA BY CAMPO-EDICIION-2
01 TABLA-ENTRADA.
05 ENTRADA OCCURS 100 TIMES.
Página 23
Manual Básico COBOL.txt
10 NOMBRE-TAB PIC X(5). <------ '$bbbb' o '$$$$$'.
10 NOMBRE-TAB PIX 9(5).
INITIALIZE TABLA-ENTRADA
REPLACING ALPHANUMERIC DATA BY [ALL] '$'.
--------------------
26
-----------
¦A¦A¦A¦A¦A¦
-----------
1 2 3 4 5
INSTRUCCIONES DE TABLAS
-----------------------
01 TABLA-1.
05 TABLA-ENTRY OCCURS 10 TIMES INDEXED BY IND-1.
10 TABLA-ENTRY2 OCCURS 5 TIMES
ASCENDING KEY IS KEY1
INDEXED BY IND-3.
20 KEY1 PIC X(5).
20 KEY2 PIC X(10).
SET IND-1 TO 2.
SEARCH TABLA-1
AT END ..............
WHEN tabla-ENTRY3 (IND-1, IND-2, IND-3) = '.......'
WHEN .........
WHEN .........
WHEN .........
END-SEARCH.
INSTRUCCION EVALUATE.
---------------------
EVALUATE TRUE
WHEN ESTADO-CASADO
.................
WHEN ESTADO-SOLTERO
.................
END-EVALUATE.
27
Página 24
Manual Básico COBOL.txt
EVALUATE CANTIDAD * 4
WHEN NOT NUMERIC
..................
..................
WHEN 1 THRU 10
..................
..................
WHEN NOT 11 THRU 20
..................
..................
END-EVALUATE.
28
INSTRUCCION STRING.
-------------------
STRING
CAMPO-1 CAMPO-2 DELIMITED BY CAMPO-3
CAMPO-4 DELIMITED BY SIZE <-------- Todo
INTO CAMPO-7
WITH POINTER CAMPO-8. <---------- Contiene el numero de
caracter a transmitir
(no < 1 ni > que la
variable receptora).
campo-8
__ la opcion
Página 25
Manual Básico COBOL.txt
¦11¦ [ON OVERFLOW sentencia-imperativa]
-- se ejecutara cuando se excedan
inicializar a 1 los limites
antes de la
ejecucion
INSTRUCCION UNSTRING.
----------------------
delimitador
en ejecucion
_
¦?¦
-
campo-origen
_________________________________
¦1¦2¦3¦*¦*¦4¦5¦6¦?¦?¦7¦A¦B¦C¦D¦E¦F¦
---------------------------------
29
campo-final-2 marca-2
_________ _
¦4¦5¦6¦b¦b¦ ¦?¦
--------- -
campo-final-4 cuenta-4
_________ _
¦7¦A¦B¦C¦D¦ ¦5¦
--------- -
apuntador contador-total
__ __
¦18¦ ¦05¦ <-------+------ inicializados a 1
-- -- ¦ antes de la ejecucion.
¦ ¦
+------------------------------+
INSTRUCCION READ
----------------
READ nombre-fichero
AT END ..........
Página 26
Manual Básico COBOL.txt
NOT AT END ......
END-READ.
C O B O L II : S O R T
=============================
FILE SECTION.
------------
SD file-name1
DATA RECORD IS .......
01 .........
En la SD se define el fichero que vamos a ordenar.
30
PROCEDURE DIVISION.
------------------
SORT file-name1
----
_ _
¦ ASCENDING ¦
¦ --------- ¦
ON ¦ DESCENDING ¦ KEY data-name1, data-name2,....
¦ ---------- ¦
- --
__ __
¦ USING file-name2 ... ¦
¦ ----- ¦
¦ INPUT PROCEDURE ¦
¦ --------------- _ _ ¦
¦ ¦ THROUGH ¦ ¦
¦ IS section-name1 [¦ ------- ¦ section-name2 ] ¦
¦ ¦ THRU ¦ ¦
¦ ¦ ---- ¦ ¦
¦ - -- ¦
¦ ¦
-- --
__ __
¦ GIVING file-name3 ... ¦
¦ ----- ¦
¦ OUTPUT PROCEDURE ¦
¦ ---------------- _ _ ¦
¦ ¦ THROUGH ¦ ¦
¦ IS section-name3 [¦ ------- ¦ section-name4 ] ¦
¦ ¦ THRU ¦ ¦
¦ ¦ ---- ¦ ¦
¦ - -- ¦
¦ ¦
-- --
*-->> ASCENDING
DESCENDING : Indica la secuencia en la que se va a ordenar
el fichero, ascendente ( de menor a moyor) o
descendente.
Página 27
Manual Básico COBOL.txt
cion, tiene que estar relacionado con el fi-
chero, estar situado en la misma posicion y
tener la misma longitud que en el fichero de
entrada.
31
RELEASE
=======
RETURN
======
32
Página 28
Manual Básico COBOL.txt
AT END imperative-statement
------
[END-RETURN]
----------
SORT-RETURN
===========
Equivale al return-code.
Sort-return PIC S9(4).
CLAUSULA OCCURS
================
FORMATO 1:
---------
33
01 REGISTRO-AUTOS.
02 NOMBRE PICTURE A(6).
02 MODELO PICTURE X(8).
02 DIARIA1 PICTURE 999.
02 DIARIA2 PICTURE 999.
02 DIARIA3 PICTURE 999.
" " " "
" " " "
" " " "
02 DIARIA1078 PICTURE 999.
02 DIARIA1079 PICTURE 999.
02 DIARIA1080 PICTURE 999.
Página 29
Manual Básico COBOL.txt
01 REGISTRO-AUTOS.
02 NOMBRE PICTURE A(6).
02 MODELO PICTURE X(8).
02 DIARIA OCCURS 1080 PICTURE 999.
FORMATO 2:
---------
34
01 REGISTRO-AUTOS.
02 NOMBRE PIC A(6).
02 MODELO PIC X(8).
02 NUMERO-DIAS PIC 99.
02 DIARIA OCURRS 28 TO 31 TIMES
DEPENDING ON NUMERO-DIAS PIC 999.
Página 30
Manual Básico COBOL.txt
FD ARCHIVO- AUTOS RECORDING V LABEL RECORD OMITTED.
01 REGISTRO-AUTOS.
02 NOMBRE PIC A(6).
02 MODELO PIC X(8).
02 DIARIA OCCURS 28 TO 31 TIMES
DEPENDING ON NUMERO-DIAS PIC 999.
02 NUMERO-DIAS PIC 99.
FORMATO 3:
---------
_ _
OCCURS entero-1 TO entero-2 TIMES ¦ DEPENDING ON nombre-de-datos-1 ¦
------ - -
_ ASCENDING _ _ _
¦ --------- KEY IS nombre-de-datos-2 ¦ nombre-de-datos-3 ¦...¦...
- DESCENDING
----------
35
_ _ _ _
¦ INDEXED BY nombre-de-indice-1 ¦ nombre-de-indice-2 ¦ ... ¦
- - - -
TABLAS
______
Página 31
Manual Básico COBOL.txt
existen en la tabla. (En una tabla, todas las entradas deben de tener
el mismo tamaño y formato).
01 TABLADIAS.
03 UNDIA OCCURS 7 TIMES PIC X(9).
36
01 TABLADIAS.
03 UNDIA OCCURS 7 TIMES PIC X(9).
UNDIA(1) = LUNES
UNDIA(3) = MIERCOLES
Para llenar con datos una tabla habra que tener en cuenta que:
Página 32
Manual Básico COBOL.txt
37
01 TABLAMES.
02 FILLER PIC X(30) VALUE 'ENERO FEBRERO MARZO '.
02 FILLER PIC X(30) VALUE 'ABRIL MAYO JUNIO '.
02 FILLER PIC X(30) VALUE 'JULIO AGOSTO SEPTIEMBRE'.
02 FILLER PIC X(30) VALUE 'OCTUBRE NOVIEMBRE DICIEMBRE '.
01 TABLA.
02 ALUM OCCURS 50 TIMES.
03 NOTA OCCURS 10 TIMES PIC 99V99.
01 TABLA.
02 ELE1 OCCURS 3 TIMES.
03 ELE2 OCCURS 3 TIMES.
04 ELE3 OCCURS 2 TIMES PIC X(8).
38
INDEXACION
==========
01 TABLA.
Página 33
Manual Básico COBOL.txt
02 ELE PIC 9(3) OCCURS 20 TIMES
INDEXED BY K.
Esto define a TABLA con un indice "K". El elemento (ELE) aun puede
estar referenciado por medio de subindices.
DECLARACION "SET"
================
UP BY identificador
SET nombre-indice-1 nombre-indice-2
DOWN BY literal
39
01 TABLA.
02 ELE PIC 99 OCCURS 10 TIMES
INDEXED BY K.
..................
..................
PROCEDURE DIVISION.
SET K TO ZERO.
CALCULO.
SET K UP BY 1.
IF K NOT > N ADD ELE(K) TO TOTAL
GO TO CALCULO.
..................
..................
DECLARACION "SEARCH"
Página 34
Manual Básico COBOL.txt
====================
_ _
SEARCH identificador ¦ AT END declaracion-imperativa-1 ¦
- -
declaracion-imperativa-2
WHEN condicion-1
NEXT SENTENCE
_ declaracion-imperativa-3 _
¦ WHEN condicion-2 ¦
- NEXT SENTENCE -
40
Página 35
Manual Básico COBOL.txt
41
01 TABLA.
02 ELEM OCCURS 45 TIMES INDEXED BY I.
03 NOMBRE PIC X(10).
03 VENTA PIC 9(4).
...........................
...........................
PROCEDURE DIVISION.
...........................
...........................
BUSQUEDA.
SET I TO 1.
SEARCH ELEMEN AT END GO TO NOEXISTE
WHEN NOMBRE(I) = NOM
MOVE NOMBRE(I) TO NOMIN
MOVE VENTA(I) TO VENIM
WRITE .................
GO TO FIN.
NOEXISTE.
...........................
...........................
OPCION "VARYING"
================
Página 36
Manual Básico COBOL.txt
en funcion de que se especifique o no, en la declaracion SEARCH,
la opcion VARYING, es decir:
42
01 TABLA.
02 FDIARIA OCCURS 1080 TIMES INDEXED BY I1, I2, I3.
03 AUTOS PIC 9(3).
03 CAMIONES PIC 9(2).
........................
........................
SET I3 TO 125.
SEARCH FDIARIA VARYING I3 AT END GO TO FIN
WHEN ...................... (1)
........................
........................
SET I1 TO 125.
SEARCH FDIARIA AT END GO TO FIN
WHEN ...................... (2)
........................
........................
BUSQUEDA BINARIA
================
43
Página 37
Manual Básico COBOL.txt
drasticamente el tiempo de acceso para muchas tablas (*).
01 TABLA.
02 ELEMEN PIC 9(4) OCCURS 20 TIMES
INDEXED BY I
ASCENDING KEY IS CLA.
x x-1
2 > numero de elementos de la tabla > 2
8 7
2 > 235 > 2
44
Página 38
Manual Básico COBOL.txt
Pero, a diferencia de la SEARCH, en la SEARCH ALL se deben de
tener en cuenta los siguientes puntos:
01 TABLA.
02 ELEM OCCURS 45 TIMES
INDEXED BY I
ASCENDING KEY NOMBRE.
03 NOMBRE PIC X(10).
03 VENTAS PIC 9(4).
...................................
...................................
BUSQUEDA.
SEARCH ALL ELEMEN AT END GO TO NOEXISTE
WHEN NOMBRE(I) = NOM
MOVE NOMBRE(I) TO ...
MOVE VENTAS(I) TO ...
GO TO FIN.
45
BUSQUEDA DICOTOMICA
===================
I : INDICE
______________
¦ ¦
¦ INICIALIZAR ¦
¦ MAYOR ¦
¦ MENOR ¦
--------------
¦
¦
___________________________________
_______ SI ¦
¦ NO ¦ ------ MAYOR - MENOR = 1 ¦
¦ ESTA ¦ ¦
------- ¦
¦ NO ¦
¦ ¦
____________________ ¦
¦ ¦ ¦
¦ MAYOR - MENOR ¦ ¦
¦ I = ------------- ¦ ¦
¦ 2 ¦ ¦
Página 39
Manual Básico COBOL.txt
-------------------- ¦
¦ ¦
¦ ¦
¦
TABLA(I) ¦
______ = . . > __________ ¦
¦ ESTA ¦ ----- ------ ----- ¦ MOVE I ¦ ¦
------ . . ¦ TO MAYOR ¦ ¦
BUSQUEDA ---------- ¦
¦
¦ < ¦
¦ ¦
__________ ¦
¦ MOVE I ¦ ¦
¦ TO MENOR ¦ ------------------------------
----------
46
LITERALES.
____________
EJEMPLO:
01 LITERAL PIC x(5) VALUE '''DOS'''.
FICHEROS ESDS.
________________
Página 40
Manual Básico COBOL.txt
IF st-xxxxxx = '00' OR = '05'
CORRECTO
END-IF.
47
_________________________
¦ ¦
V ¦
>>___SET________identif-4____________TO___identif-6_____________><
¦_ADDRESS OF identif-5__¦ ¦_ADDRESS OF identif-7_¦
¦______NULL____________¦
POINTER
. La instruccion SET.
. En una comparacion.
. En la USING de una CALL o en la cabecera de la PROCEDURE.
48
EJEMPLOS.
___________
WORKING SECTION.
Página 41
Manual Básico COBOL.txt
LINKAGE SECTION.
01 DFHCOMMAREA.
03 APUN-DIRCOM USAGE IS POINTER.
03 DIRCOM REDEFINES APUN-DIRCOM PIC S9(8) COMP.
01 DATOS-RECIBIDOS.
03 MOVTOS290 PIC X(290).
03 RETORNO PIC X.
COPY CWAAREC.
PROCEDURE DIVISION.
49
PARAMETROS:
1. Opcion (De 1 a 6)
PIC X.
Requerido en entrada
OPCIONES :
1. De Juliana a AAMMDD
2. De Juliana a DDMMAA
3. De AAMMDD a Juliana
4. De DDMMAA a Juliana
5. De AAMMDD a Juliana semestral
FORMA DE INVOCAR:
50
Página 42
Manual Básico COBOL.txt
EJEMPLO:
..........................................
77 FECHA-OPCION PIC X.
77 FECHA-JULIANA PIC S9(7) COMP-3.
77 FECHA-NORMAL PIC X(6).
..........................................
..........................................
51
LENGUAJE: Assembler
PARAMETROS:
1. Opcion (1 o 2)
PIC X.
Requerido en entrada
OPCIONES :
FORMA DE INVOCAR:
52
Página 43
Manual Básico COBOL.txt
EJEMPLO:
WORKING-STORAGE SECTION.
COPY CUTLD002
01 W-SUTLA002.
03 W-OPCION PIC X.
03 W-BITS8 PIC X.
03 W-BYTES8.
05 BIT7 PIC X.
05 BIT6 PIC X.
05 BIT5 PIC X.
05 BIT4 PIC X.
05 BIT3 PIC X.
05 BIT2 PIC X.
05 BIT1 PIC X.
05 BIT0 PIC X.
..........................................
PROCEDURE DIVISION.
MOVE '1' TO W-OPCION.
MOVE BAINDI2I TO W-BITS8.
CALL 'SUTLA002' USING W-SUTLA002.
..........................................
53
LENGUAJE: Cobol
PARAMETROS:
1. CODIGO DE RETORNO
PIC X
Obtenido en salida
' ' : proceso correcto
'9' : digito de control enviado no coincide
con el calculado (Salvo en opcion 5)
2. DIGITO.
PIC 9
Obtenido en salida (Resultado del calculo)
3. OPCION.
PIC x
Requerido en entrada
'1' : Digito de tarjetas (enviar 12 dig.)
'2' : Digito de cuentas (enviar 12 " )
'3' : Digito clave SICA (enviar 9 " )
'4' : Digito de Codigo Cliente (enviar 12 " )
Página 44
Manual Básico COBOL.txt
'5' : Digito DNI Hacienda/Comunitario (enviar 9 " )
En esta opcion se mandan los datos sin digito.
El retorno es 9 si lo enviado no es numerico).
PIC X(16)
Requerido en entrada
FORMA DE INVOCAR:
54
EJEMPLO:
..........................................
77 RETORNO PIC X.
77 DIGITO PIC 9.
77 OPCION PIC X.
77 DATOS PIC X(16).
..........................................
..........................................
77 RETORNO PIC X.
77 DIGIT PIC 9.
77 OPCION PIC X.
77 DATOS PIC X(16).
..........................................
01 CUENTA-DIGITO.
02 AHO PIC 999.
02 OFI PIC 999.
02 CTA PIC 9(6).
02 DIGIT PIC 9.
01 CUENTA-DIGITO2.
02 AHO PIC 999.
02 FILLER PIC X VALUE 0.
02 OFI PIC 999.
02 CTA PIC 9(6).
02 DIGIT PIC 9.
CALCULAR-DIGITO.
MOVE CUENTA TO CUENTA-DIGITO
MOVE '2' TO OPCION
MOVE CORR CUENTA-DIGITO TO CUENTA-DIGITO2
MOVE CUENTA-DIGITO2 TO DATOS
CALL 'SUTLA005' USING RETORNO DIGITO OPCION DATOS.
IF RETORNO = ' '
DIGITO CORRECTO - CUENTA CORRECTA
ELSE
DIGITO ERRONEO - CUENTA INCORRECTA.
Página 45
Manual Básico COBOL.txt
55
R U T I N A S D E C A L C U L O
************************************
WORKING-STORAGE SECTION.
********
01 CAMPOS-NUMERICOS.
03 NUMDIAS PIC S9(5) COMP-3 VALUE +0.
03 CONTANOS PIC S9(5) COMP-3 VALUE +0.
03 D PIC S9(3) COMP-3 VALUE +0.
03 FECHA-DESDE PIC 9(6).
03 FILLER REDEFINES FECHA-DESDE.
05 DD-DESDE PIC 99.
05 MM-DESDE PIC 99.
05 AA-DESDE PIC 99.
03 FECHA-HASTA PIC 9(6).
03 FILLER REDEFINES FECHA-HASTA.
05 DD-HASTA PIC 99.
05 MM-HASTA PIC 99.
05 AA-HASTA PIC 99.
01 FILLER.
03 T1-DIAS PIC X(48) VALUE
'013102280331043005310630073108310930103111301231'.
03 T2-DIAS REDEFINES T1-DIAS OCCURS 12 TIMES.
05 MES PIC 99.
05 DIA PIC 99.
PROCEDURE DIVISION.
XXXX-CALCULO-DIAS.
******************
56
PERFORM
UNTIL CONTANOS = AA-HASTA AND
D = MM-HASTA
ADD DIA(D) TO NUMDIAS
ADD CN-1 TO D
IF D > CN-12
MOVE CN-1 TO D
MOVE CN-1 TO CONTANOS
END-IF
IF CONTANOS = CN-100
MOVE ZEROS TO CONTANOS
END-IF
END-PERFORM.
XXXX-CALCULO-DIAS-EXIT.
***********************
EXIT.
Página 46
Manual Básico COBOL.txt
****************************************************
WORKING-STORAGE SECTION.
********
01 CAMPOS-NUMERICOS.
03 MESES PIC S9(3) COMP-3 VALUE +0.
03 CONTANOS PIC S9(3) COMP-3 VALUE +0.
03 FECHA-DESDE PIC 9(6).
03 FILLER REDEFINES FECHA-DESDE.
05 DD-DESDE PIC 99.
05 MM-DESDE PIC 99.
05 AA-DESDE PIC 99.
03 FECHA-HASTA PIC 9(6).
03 FILLER REDEFINES FECHA-HASTA.
05 DD-HASTA PIC 99.
05 MM-HASTA PIC 99.
05 AA-HASTA PIC 99.
01 FILLER.
03 T1-DIAS PIC X(48) VALUE
'013102280331043005310630073108310930103111301231'.
03 T2-DIAS REDEFINES T1-DIAS OCCURS 12 TIMES.
05 MES PIC 99.
05 DIA PIC 99.
57
PROCEDURE DIVISION.
XXXX-CALCULO-MESES.
*******************
XXXX-CALCULO-MESES-EXIT.
************************
EXIT.
****************************************************
WORKING-STORAGE SECTION.
********
01 CAMPOS-NUMERICOS.
03 MESES PIC S9(3) COMP-3 VALUE +0.
03 CONTANOS PIC S9(3) COMP-3 VALUE +0.
03 FECHA-DESDE PIC 9(6).
03 FILLER REDEFINES FECHA-DESDE.
Página 47
Manual Básico COBOL.txt
05 DD-DESDE PIC 99.
05 MM-DESDE PIC 99.
05 AA-DESDE PIC 99.
03 FECHA-HASTA PIC 9(6).
03 FILLER REDEFINES FECHA-HASTA.
05 DD-HASTA PIC 99.
05 MM-HASTA PIC 99.
05 AA-HASTA PIC 99.
****>>>>>>>> TABLA DE MESES CON DIAS
01 FILLER.
03 T1-DIAS PIC X(48) VALUE
'013102280331043005310630073108310930103111301231'.
03 T2-DIAS REDEFINES T1-DIAS OCCURS 12 TIMES.
05 MES PIC 99.
05 DIA PIC 99.
Página 48