Manual Cobol
Manual Cobol
TIPO
ALFABETICOS
NUMERICOS
ALFANUMERICOS
256 DIGITOS
VALORES
AZ, az
09
AZ, az, 09,
CARACTERES
ESPECIALES
TIPOS DE PALABRAS
USUARIO
RESERVADAS
30 CARACTERES MAXIMO
READ, DISPLAY, MOVE, ETC.
NO CARACTERES ESPECIALES
360 PALABRAS
Los campos de datos lo podemos clasificar en:
*7
A
8
11
B
12
72
No se usa
73
80
Se escriben:
Nombres de las divisiones.
Nombre de las secuencias de los prrafos, los indicadores FD.
Los niveles de las variables 01 a 77.
Parte 4. rea B
Columnas de la 12 a la 72.
Se incluyen las instrucciones del programa, lneas de las secciones y los
niveles de las variables mayores a 01.
Parte 5.
Columnas de la 73 a la 80, no se utiliza y por tanto es ignorada por el
compilador.
TIPOS DE CONSTANTES
ALFANUMERICAS
NUMERICAS
ALFABETICAS
FIGURATIVAS: valores que se representan por palabras.
Ejemplo:
ZERO
ZEROES
0
ZEROS
SPACE
ESPACIO EN BLANCO
SPACES
LOW-VALUES
VALORES NULOS
HIGH-VALUES
MAXIMO VALOR
INICIALIZAR CON CARACTERES
ALL
ESPECIALES
ALL *
QUOTE
COMILLA SENCILLA
QUOTES
COMILLA DOBLE
EJEMPLOS VARIABLES
TIPO
ENTERA
ENTERA
ALFABETICA
ALFABETICA
ALFANUMERICA
ALFANUMERICA
RAYA
REAL
CON SIGNO
01
01
01
01
01
01
01
01
01
EJEMPLO
VAR-ENTERA PIC 9999 VALUE ZEROS.
VAR-ENTERA PIC 9(4) VALUE ZEROS.
VAR-ALFABET PIC AAA VALUE SPACES.
VAR-ALFABET PIC A(3) VALUE SPACES.
VAR-ALFANUM PIC XXX VALUE SPACES.
VAR-ALFANUM PIC X(3) VALUE SPACES.
RAYA PIC X(20) VALUE ALL -
VAR-REAL PIC 9(3)V99 VALUE ZEROS.
VAR-SIGNO PIC S9(3)V99 VALUE ZEROS.
ESTRUCTURA DE COBOL
IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
IDENTIFICATION DIVISION: IDENTIFICAR EL PROGRAMA
IDENTIFICATION DIVISION.
PROGRAM-ID. Nombre Programa.
AUTHOR. Autor Del Programa.
INSTALLATION. Lugar De Instalacin.
DATE-WRITTEN. Fecha Escritura.
REMARKS. Comentarios Sobre Le Programa.
ENVIRONMENT DIVISION: ENTORNO EN EL QUE SE VA A DESENVOLVER EL
PROGRAMA.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. Ordenador Donde Se Escribi El Fuente.
OBJECT-COMPUTER. Ordenador Donde Se Ejecuta El Objeto.
SPECIAL NAMES. Cambiar Valores Para Constantes Del Lenguaje.
INPUT-OUTPUT SECTION. Se Especifican Los Ficheros A Usar.
FILE-CONTROL.
SELECT NOMBRE ARCHIVO
ASSIGN TO Tipo de Dispositivo
ORGANIZATION IS Tipo de Organizacin (SEQUENTIAL, LINE
SEQUENTIAL,INDEXED..)
ACCESS MODE IS Modo de acceso al archivo (SEQUENTIAL,
DYNAMIC.)
RECORD KEY IS Clave de Registro
ALTERNATIVE RECORD KEY IS Alternativa de registro
WITH DUPLICATES
FILE STATUS IS Variable de Estado del fichero. (VAR-ESTADO,.).
DATA
DIVISION:
DESCRIBE
CONSTANTES, PARMETROS, ETC.
ARCHIVOS,
REGISTROS,
VARIABLES,
DATA DIVISION.
FILE SECTION. Se describen todos los campos que componen los registros
de todos los archivos que se van a utilizar, que se declararon previamente
en la INPUT-OUTPUT SECTION dentro de la ENVIRONMENT DIVISION.
WORKING STORAGE SECTION. En ella se declaran todas las variables no
referentes a archivos, pero que durante la ejecucin del programa se van a
utilizar. Niveles 01 a 77.
LINKAGE SECTION. Se registran las variables que nos servirn para
enlazar el programa principal con el que llamemos mediante la orden CALL
(si el programa es hijo).
COMUNICATION SECTION.
SCREEN SECTION.
REPORT SECTION.
ELEMENTO GRUPO: Esta conformado por n campos elementales.
Nivel 88: Dar nombres de condicin.
PROCEDURE DIVISION: DIVISION DE PROCEDIMIENTOS.
SENTENCIAN
STOP RUN.
Ejemplo:
PROCEDURE DIVISION.
INICIO.
Instruccin 1
Instruccin n
STOP RUN.
USING: cuando se usa, se deben dar los nombres de las variables que se
hayan definido en la LINKAGE SECTION, para compartir en el programa, lo
que nos indicara que este ha sido llamado por otro programa y que esas
variables tendrn un valor procedente del programa llamador, que a su vez
utilizo la instruccin CALL con las mismas variables.
VERBOS DE ENTRADA, SALIDA, ASIGNACION Y UTILITARIOS
1. ACCEPT (VERBO DE ENTRADA)
Formato para aceptar datos del sistema o variables del entorno. Verbo del
rea B.
FORMATO 1.
ACCEPT variable FROM (DATE, DAY, DAY-OF-WEEK, TIME, CENTURY-DATE,
CENTURY-DAY, ESCAPE-KEY)
EJEMPLOS:
ACCEPT VAR-ENTRADA
ACCEPT VAR-FECHA FROM DATE
ACCEPT VAR-HORA FROM TIME
FORMATO 2.
ACCEPT variable LINE identificador1 POSITION identificador2
EJEMPLOS:
REGISTROS LEIDOS
VAR-ENTERA
REGISTROS LINE 3 POSITION 30
ERASE -- BORRAR PANTALLA
B TO A
A=B
3 TO C
C=3
ZERO TO VAR
VAR=0
NOMBRE (1:8) TO NOM-1
-> NOM-1 = KATERINE
4. INITIALIZE
Inicializar variables segn el tipo, es decir pondr en ceros las variables
numricas o de edicin, y a las alfabticas y alfanumricas les pondr
espacios.
EJEMPLOS
INITIALIZE FEC-EDI
INITIALIZE A B C D
5. INSPECT
Se utiliza para contar, reemplazar o contar y reemplazar caracteres o grupos
de caracteres dentro de un campo.
Se puede contar las veces que aparece un carcter, o cambiar todos los
caracteres por otros.
FORMATO 1: (Contar)
INSPECT variable-1 FOR (CHARACTERS)
((BEFORE/AFTER) INITIAL) cadena-1
(ALL) (LEADING) cadena-2.
EJEMPLOS:
TO
VARMES
DE VARAO
INTO CONSTRING
WITH POINTER PUNTO.
DELIMITED BY
DELIMITED BY SIZE
Ejemplo:
WORKING-STORAGE SECTION.
01 VAR-FECHA
PIC X(10).
01 VAR-FECHA-PAR REDEFINES VAR-FECHA.
02 AO
PIC 9(4).
02 FILLER
PIC X(1).
02 MES
PIC 9(2).
02 FILLER
PIC X(1).
02 DIA
PIC 9(2).
FORMATOS DE EDICION
Mascaras, se utilizan para presentar de una forma clara, los datos
numricos en pantalla.
FORMAT
O
.
,
z
*
/
CR
DB
DESCRIPCION
Separa la parte decimal de
la entera
Separa la parte entera en
cientos, miles, etc.
Reemplaza los ceros no
significativos (a la
izquierda) por blancos
Reemplaza los ceros no
significativos por (*)
Se usa para fechas separa
dgitos con (/)
Smbolo bancario
indicativo de crdito. Las
letras aparecen si el valor
es negativo.
Smbolo bancario
indicativo de debito.
Aparece si el valor es
negativo.
Es flotante (se ubica en la
primera cifra o en la
primera no significativa). Si
el valor es mayor al de la
mscara este lo trunca,
ocupa posicin.
Es flotante, se ubica en la
primera posicin o en la
EJEMPLOS
01 MASCA PIC 9(8).99.
01 MASCA PIC 999,999,999.99.
01 MASCA PIC ZZZ,ZZZ,ZZ9.99.
01 MASCA PIC ***,***,**9.99.
01 MASCA PIC 99/99/99.
01 MASCA PIC
ZZZ,ZZZ,ZZ9.99DB.
primera cifra no
significativa. Si es positivo
aparece el signo (+), si es
negativo aparece el signo
(-). Si el valor es mayor al
de la mscara se trunca.
VERBOS ARITMETICOS
1. ADD: SUMA
FORMATO 1: Se usa, cuando se repite el identificador a ambos lados.
ADD variable-1, variable-2.TO variable (ROUNDED)
(ON SIZE ERROR) instruccin imperativa
NOT ON SIZE ERROR instruccin imperativa
END-ADD
EJEMPLOS:
GENERAL
A=A+B
A=A+B+10+J
EN COBOL
ADD B TO A END-ADD
ADD J 10 B TO A END-ADD
EN COBOL
ADD 10 D C J B GIVING A END-ADD
2. SUBTRACT: RESTA
FORMATO 1: Se usa cuando el identificador se repite a ambos lados.
SUBTRACT variable-1, variable-2.FROM variable (ROUNDED)
(ON SIZE ERROR) instruccin imperativa
NOT ON SIZE ERROR instruccin imperativa
END-SUBTRACT
EJEMPLOS:
GENERAL
A=A-B
EN COBOL
SUBTRACT B FROM A
END-SUBTRACT
GIVING
EJEMPLOS:
GENERAL
A=Z-B-10-J
EN COBOL
SUBTRACT J 10 B FROM Z GIVING A
END-SUBTRACT
3. MULTIPLY: MULTIPLICAR
FORMATO 1: El identificador se repite a lado y lado.
MULTIPLY variable BY variable (ROUNDED)
(ON SIZE ERROR) instruccin imperativa
NOT ON SIZE ERROR instruccin imperativa
END-MULTIPLY
EJEMPLO:
GENERAL
A=A*B
EN COBOL
MULTIPLY B BY A
END-MULTIPLY
EN COBOL
MULTIPLY C BY B GIVING A
END-MULTIPLY
4. DIVIDE: DIVIDIR
FORMATO 1: Cuando se repite el identificador a ambos lados.
DIVIDE variable INTO variable (ROUNDED) (REMAINDER) variable
(ON SIZE ERROR) instruccin
NOT ON SIZE ERROR instruccin
END-DIVIDE
variable
EJEMPLO:
GENERAL
A=A/B
EN COBOL
DIVIDE B INTO A
END-DIVIDE
EN COBOL
DIVIDE C INTO B GIVING A
END-DIVIDE
DIVIDE B INTO A GIVING C REMAINDER R
EN COBOL
A=A/B
COMPUTE A=A/B
F=Y**Z+X*Y+Z*
A
COMPUTE F=Y**Z+X*Y+Z*A
JERARQUIAS
1. () : Parntesis
2. ** : Potenciacin
3. * / : Multiplicacin - Divisin
4. * - : Suma- Resta
Se debe usar para operaciones complejas.
Si hay repeticin de operadores, en una misma lnea, se hace primero la
operacin que este ms a la izquierda.
CONDICIONAL
IF: Esta sentencia toma una decisin referente a la accin a ejecutar en un
programa, basndose en el resultado, verdadero o falso de una condicin.
FORMATO
IF Condicin
[THEN]
Accin 1
NEXT
SENTENCE
ELSE
Accin 2
NEXT
SENTENCE
[END-IF]
EJEMPLO:
IF TAS-HIP = 0,3
CONTINUE
ELSE
DISPLAY TASA ERRADA
END-IF
CLASE: permite saber el contenido de un identificador o variable, si es
numrico o es alfabtico.
FORMATO
NOMBRE DATOS
IS [NOT]
NUMERIC
ALPHABETIC
ALPHABETIC-UPER -> maysculas
ALPHABETIC-OWNER -> minsculas
EJEMPLOS:
IF VAR-UNO
IS ALPHABETIC
CONTINUE
ELSE
MOVE SPACES TO VAR-UNO
END-IF
IF NUM-UNO
IS NUMERIC
CONTINUE
ELSE
MOVE 1 TO NUM-UNO
END-IF
SIGNO: Permite determinar si el valor de un campo numrico de una
expresin aritmtica es positivo, negativo o cero.
FORMATO
NOMBRE DATO 1
EXP. ARITMETICA
EJEMPLO:
IF NUM
IS POSITIVE
IS [NOT]
POSITIVE
NEGATIVE
ZERO
CONTINUE
ELSE
MULTIPLY -1 BY NUM
END-IF
RELACION:
FORMATO
NOMBRE DATO 1
LITERAL
EXP. ARITMETICA
[NOT]
[NOT]
[NOT]
[NOT]
THAN
[NOT]
[NOT]
[NOT]
[NOT]
[NOT]
IS
>
<
=
GREATE
LESS THAN
EQUAL TO
<=
>=
<>
NOMBRE DATO 2
LITERAL
EXP. ARITMETICA
AND
OR
Condicin Simple
EJEMPLO
IF TAS-HIP OR TAS-TAR OR TAS-CON = 0,3
CONTINUE
ELSE
DISPLAY TASA ERRADA
END-IF
NOMBRES DE CONDICION: Permite probar si un nombre de condicin al
que le ha asignado un valor del campo de datos del cual depende, coincide
con el valor del campo de datos del cual depende, estos van a subnivel 88.
Son un conjunto de valores que se asocian a una variable.
EJEMPLO
01
TASA-INTER
88
TAS-TAR
88
TAS-TAR
88
TAS-CON
PIC
9V99.
VALUE 0.31.
VALUE 0.35.
VALUE 0.32.
Las sentencias IF.THEN. Pueden estar anidadas. Esto quiere decir que
como accin-1 o accin-2, de acuerdo con el formato, puede escribirse una
sentencia IF:
FORMATO
IF
COND1
SENTENCIA 1
ELSE IF COND2
SENTENCIA 2
ELSE IF COND3
SENTENCIA 3
ELSE
SENTENCIA N
[END-IF]
EJEMPLO
IF
C1 OR C2 AND C3
S1
IF C3 AND C2
S2
ELSE
S3
IF C4
S4
ELSE
S5
IF C3
CONTINUE
ELSE
S6.
DIAGRAMA DE FLUJO
#
1
2
3
4
C1
V
V
V
V
C2
V
V
V
V
C3
V
V
F
F
C4
V
F
V
F
S1
X
X
X
X
S2
X
X
-
S3
X
X
S4
X
-
S5
X
S6
X
Notas:
-
EVALUATE
Se evalan nombre de condicin.
FORMATO
EVALUATE identificador/valor lgico
ALSO identificador/ valor
lgico
WHEN valor/ nom-condicin sentencia-1 ALSO valor/ nom-condicin
sentencia-1
WHEN valor/ nom-condicin sentencia-2 ALSO valor/ nom-condicin
sentencia-2
WHEN valor/ nom-condicin sentencia-3 ALSO valor/ nom-condicin
sentencia-3
WHEN OTHER
ALSO ANY
END-EVALUATE
EJEMPLOS
En este caso se evalan EDAD y SEXO.
ADD
ADD
1
1
TO
TO
CON-MUJER
CON-
ADD
1
ADD
TO
1
CON-ED-30
TO
ADD
ADD
1
ADD
1
TO
1
TO
CON-MUJER
CON-HOMBRE
TO
CON-OTROS
ALSO TRUE
ALSO SICABE
SET THIPOM TO
ALSO NOCABE
SET THIPOM TO
ALSO SICABE
SET TAUTOM
TO
ALSO NOCABE
SET TAUTOM
TO
ALSO SICABE
SET TLIBREM
ALSO NOCABE
SET TLIBREM
TRUE
TRUE
TRUE
TRUE
TO
TO
VERBOS DE CONTROL
PERFORM: Utilizada para transferir explcitamente el control a uno o ms
procedimientos y devolver el control implcitamente, cuando la ejecucin del
procedimiento especificado finalice.
Se puede usar para controlar la ejecucin de una o ms sentencias, las
cuales estn dentro de la sentencia PERFORM.
TIPOS:
1. BASICO: Se ejecuta solo una vez para pasar a la siguiente instruccin
ejecutable.
PROCEDURE DIVISION.
NOMBRE-PERFORM.
SENTENCIA 1
SENTENCIA-N.
EJEMPLOS
223-ARMA-REG-SAL.
Sentencia-1
..
Sentencia-n.
2. ANIDADO: Un PERFORM puede llamar a otro PERFORM.
EJEMPLOS
PROCEDURE DIVISION.
INICIO.
PERFORM 1000-INICIO
PERFORM 2000-PROCESO
PERFORM 3000-FIN
STOP RUN.
PROCEDURE DIVISION.
INICIO.
PERFORM 1000-LEER
PERFORM 2000-ABRIR
PERFORM 3000-CERRAR
STOP RUN.
3. TIMES: Ejecuta n veces un PERFORM especificado por un entero o punto.
FORMATO
PERFORM procedimiento |entero|
|variable|
EJEMPLOS
PERFORM
PERFORM
LEER 5
LEER K
TIMES
TIMES
TIMES
VARYIN
G
procedimiento
WITH
TEST
BEFORE
AFTER
Nombre-dato-1
FROM
Nombre-dato2
Literal
Nombre-
Nombre-indice1
BY
Nombre-dato3
Nombre-
indice-2
UNTIL
indice-3
Condicin-1
EJEMPLO
PERFORM CALCULO VARYING
CALCULO.
-------------------------------------.
FROM 0
BY
UNTIL I > 4
procedimiento
WITH
TEST
BEFORE
AFTER
FROM
Nombre-dato2
Literal
Nombreindice-2
Nombre-dato-1
VARYIN
G
UNTIL
Nombre-indice1
UNTIL
BY
Nombreindice-3
Condicin-1
Nombre-dato-4
AFTER
Nombre-dato3
Nombre-indice4
FROM
Nombre-dato5
Literal-2
Nombreindice-5
Nombre-dato6
BY
Nombreindice-6
Condicin-2
EJEMPLO
PERFORM CALCULO VARYING I FROM 1 BY 2 UNTIL I > 3
AFTER K FROM 2 BY 1 UNTIL K > 4
8. COMBINADOS
1. THRU CON VARYING
FORMATO
PERFOR
M
WITH
TEST
BEFORE
AFTER
Nombre-dato-1
VARYIN
G
UNTIL
Nombre-indice1
FROM
Nombre-dato2
Literal
Nombreindice-2
Nombre-dato3
BY
Nombreindice-3
Condicin-1
EJEMPLO
PERFORM M1 THRU M5 VARYING X FROM 1 BY 1 UNTIL X > 0
2. THRU CON UNTIL
FORMATO
PERFOR
M
UNTIL
Condicin-1
WITH
TEST
BEFORE
AFTER
EJEMPLOS
PERFORM M1 THRU M5 UNTIL X > 2
PERFORM M1 THRU M5 WITH TEST BEFORE UNTIL X > 2
PERFORM M1 THRU M5 WITH TEST AFTER UNTIL X > 2
9. EN LINEA: Es en lnea porque no tiene nombre.
Se usa para validar entradas de datos.
Las instrucciones se colocan a continuacin.
Se usa END-PERFORM.
INICIALIZA-MAPA.
MOVE 1 TO X
PERFORM 5 TIMES
MOVE SPACES TO SAP-LINEA(X)
ADD 1 TO X
END-PERFORM
SET CAA-88-ACCION-TERMINAL TO TRUE
SUBPROGRAMACION (CALL)
Mtodo que se basa en la utilizacin de un programa principal comunicado
con uno o ms subprogramas.
Objetivos:
1. Evitar programas demasiado largos.
2. Evitar redundancias.
El programa principal se ejecuta y cuando encuentra en su PROCEDURE un
CALL nombre programa transfiere el control al subprograma en cuestin.
Cuando este termine su ejecucin devolver el control al programa principal
mediante la instruccin EXIT-PROGRAM
Jerarqua:
El subprograma principal se puede comunicar con todos los subprogramas.
Un subprograma puede ser llamado por un subprograma de nivel superior.
CALL nombre-programa USING
REFERENCE
BY PARAMETRO1
PARAMETRO N.
BY
CONTENT
Llamamos con
USING.
Tener en cuenta:
Llamado Fijo:
CALL PROGRAMA USING VARIABLE-1, VARIABLE-B, VARIABLE-C
Llamado Dinmico:
Para llamar de forma dinmica se requiere de una variable:
01 VAR-PRG PIC X(8) VALUE GCRUT001.
CALL VAR-PRG USING VARIABLE-1, VARIABLE-B, VARIABLE-C
o
FORMATOS
FORMATO A: cuando el vector va a almacenar un dato en cada casilla.
SUBNIVEL
NOMBRE-TABLA
OCCURS
ENTERO
TIMES
01 TABLA.
05 ELEMENTO OCCURS 5 TIMES.
10 NUM-VENDEDOR
PIC XXX.
10 TOTAL-VENDIDO
PIC X(6).
NUMVENDEDOR
TOTALVENDIDO
1
2
3
4
5
Tabla de 5 elementos y cada elemento compuesto por dos campos.
FORMATO B: cuando se va a almacenar un dato.
SUBNIVEL
NOMBRE-TABLA
OCCURS
ENTERO
01 TABLA.
05 ELEMENTOS OCCURS 100 TIMES PIC 99.
Tabla de 100 elementos de 2 caracteres.
Redefinir un campo alfanumrico en una tabla en la que cada elemento es
un mes del ao.
01 NOMBRE-MESES.
10 MES-01 PIC X(10) VALUE ENERO.
10 MES-02 PIC X(10) VALUE FEBRERO.
01 TABLA-DEPARTAMENTOS.
05 DEPARTAMENTOS OCCURS 15 TIMES.
15 PRODUCTOS OCCURS 300 TIMES.
20 CANTIDAD
PIC 9(8).
20 PRECIO PIC 9(8).
TABLA DE TRES DIMENSIONES
01 XITO.
04 ALMACENES OCCURS 200 TIMES.
05 DEPARTAMENTOS OCCURS 5 TIMES.
10 PRODUCTOS OCCURS 30 TIMES.
40 CANTIDAD
PIC 9(8).
40 PRECIO PIC 9(8)V99.
TABLA DE CUATRO DIMENSIONES
01 XITO.
03 REGIONAL OCCURS 5 TIMES.
04 ALMACENES OCCURS 200 TIMES.
05 DEPARTAMENTOS OCCURS 5 TIMES.
10 PRODUCTOS OCCURS 30 TIMES.
40 CANTIDAD
PIC 9(8).
40 PRECIO PIC 9(8)V99.
La longitud de los subndices lo da la longitud de las ocurrencias (OCCURS).
01
01
01
01
R PIC 9(1)
A PIC 9(3)
D PIC 9(1)
P PIC 9(2)
DEPENDING ON N-ARTICULOS.
TABLAS INDEXADAS
Nos permite indexar una tabla para posteriormente hacer bsquedas sin
necesidad de recorrerla toda.
Se le define un ndice o llave, por tanto la tabla se ordena por ese ndice.
(Pueden ser llaves compuestas).
FORMATO
Subnivel nombre OCCURS entero TIMES {ASCENDING O DESCENDING}
KEYS IS dato-1 [dato-2.]
[INDEXED BY ndice-1 [ndice-2---]]
INDEXED: indica el o los ndices que vamos a utilizar, son obligatorios en
caso de utilizar la instruccin SEARCH.
El ndice-1, ndice-2.. Si se escriben, se deben declarar en la WORKING
STORAGE SECTION como USAGE IS INDEX.
ASCENDING O DESCENDING KEY IS: solo se utiliza en el caso de que la tabla
se encuentre ordenada por una o varias llaves.
La llave KEY IS debe ser uno de los campos de la tabla.
Ejemplo:
01 TABLA-DATOS.
02 EDADES OCCURS 10 TIMES
ASCENDING KEY IS TAB-COD
INDEXED BY X.
05 TAB-COD PIC 99.
05 TAB-NOM
PIC X(20).
INSTRUCCION SET
Funcin: se utiliza para inicializar ndices o cambiar su contenido. Solo los
declarados como USAGE IS INDEX.
FORMATO:
SET ndice
TO
UP BY
DOWN BY
entero
variable
SET X DOWN BY 2
INSTRUCCIN SEARCH
Sirve para buscar un elemento o varios en una tabla indexada.
FORMATO
SEARCH nombre-tabla VARYING ndice
condicion-1 accion-2
variable
accion-3}
END-SEARCH
AT END accin-1
{WHEN
WHEN
condicin-2
[RECORD]
LINE
SEQUENTIAL]
FILE SECTION
Seccin donde se describen los campos que van a componer el registro de
cada uno de los archivos a trabajar (que se seleccionaron en la INPUT
OUTPUT)
FD (File Description)
FILE SECTION.
FD
nombre-fichero
LABEL RECORD ..
[RECORDING MODE IS] .
[BLOCK CONTAINS]
RECORD CONTAINS]
[DATA RECORD IS] ..
FD: nombre del fichero que previamente habamos seleccionado en la
clausula SELECT de la INPUT-OUTPUT SECTION en la ENVIRONMENT
DIVISION.
LABEL RECORD: rotulo, puede tener dos valores STANDARD u OMITTED, el
primer caso indica que cada vez que se accede a un registro el compilador
har las comprobaciones estndares descritas por el compilador y en el
segundo estas sern omitidas.
Para el caso de los ficheros de datos en disco se suele poner STANDARD y
cuando el fichero es de la impresora se indica OMITTED.
BLOCK CONTAINS: cuando desea que por cada bloque en disco se graben
ms de un registro.
RECORD CONTAINS: numero de caracteres que tiene el registro sumando
todos sus campos puede ser fija o variable.
DATA RECORD: todos los nombre la misma longitud.
EJEMPLO
DATA DIVISION.
FILE SECTION.
FD
CLIENTES LABEL RECORD STANDARD
RECORDING MODE IS FIXED
BLOCK CONTAINS 0 RECORDS
1
REG-CLIENTES.
05 CED PIC 9(8)
05 NUM PIC X(30)
05 TEL PIC 9(8)
05 DIR PIC X(60).
FD
NOTAS:
SENTENCIAS
FORMATOS
1) OPEN
INPUT
FICHERON
FICHERON
{FICHERO-N[WITH
LOCK]}.
FICHERO
FORMATO
WRITE registro [FROM nombre-dato-1]
[AFTER | ADVANCING | entero [LINES] |]
[END-WRITE]
EJEMPLOS:
WRITE REG-NOMINA END-WRITE
WRITE REG-LISTADO FROM TITULO-1
AFTER PAGE END-WRITE
WRITE REG-CLIENTES FROM DETALLE
AFTER 1 END-WRITE
FORMATO
READ FICHERO RECORD [INTO nombre-dato] [WITH] [NOT] [LOCK]
[AT END sentencia-1]
[NOT AT END sentencia-2]
[END-READ]
INTO: cuando lo desea pasar a un elemento de grupo.
Nombre-dato: misma estructura que el fichero.
NOT AT END: cuando no se ha acabado, se le agrega esto.
Se debe controlar el final de archivo con el AT END.
EJEMPLO
READ SALDOS AT END MOVE 1 TO FDA
NOT AT END PERFORM CALCULOS
END-READ
READ
X
WRITE
REWRITE
X
X
X
X
NOTAS:
LIBRERA: Porcin de un cdigo de cualquier rea o estructura de Cobol.