Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
B o r r a d o r
material en preparación
CODIFICACIÓN COBOL
PARA ARCHIVOS VSAM
y
Cobol para archivos
de longitud variable
1 / 20
Gabriel Alejandro Kordon COBOL VSAM
1.1ENVIRONMENT DIVISION
ORGANIZATION IS INDEXED
2 / 20
Gabriel Alejandro Kordon COBOL VSAM
Las opciones de acceso se indican con ACCESS MODE y al omitir ésta cláusula
asume ACCESS MODE IS SEQUENTIAL.
El modo de acceso para archivos secuenciales es siempre SEQUENTIAl.
Para archivos de organización indexada, puede ser:
• SEQUENTIAL
• RANDOM
• DYNAMIC
El modo de acceso DYNAMIC será tratado mas adelante.
RECORD KEY hace referencia a un nombre de dato que debe ser un campo
dentro de la descripción del registro, la clave de ordenamiento del archivo.
3 / 20
Gabriel Alejandro Kordon COBOL VSAM
FILE STATUS
Al utilizar archivos VSAM en un programa COBOL, tenemos la posibilidad de
conocer como ha terminado una instrucción de entrada/ salida relacionada a
estos archivos, pues el metodo de acceso VSAM devuelve al programa un
código numérico de dos dígitos que indica como ha finalizado la sentencia
INPUT/OUTPUT de COBOL.
Este código se denomina FILE STATUS y puede ser consultado por el programa
COBOL y condicionar la ejecución de determinadas rutinas según el valor
indicado en dicho código.
En la WORKING- STORAGE SECTION se define un campo elemental para cada
archivo VSAM (generalmente con nivel 77) y es mencionado en la SELECT del
archivo.
Los errores más frecuentes a detectar con FILE STATUS son:
21 Error de secuencia.
22 Clave duplicada.
23 Registro no encontrado.
24 Capacidad excedida- archivo ksds.
30 Error de datos, de paridad o transmisión.
34 Capacidad excedida- archivo Esds.
91 Password erronea.
92 Error lógico.
93 Recurso no disponible.
94 Requerimiento secuencial carente de pointer, falla en el
Start.
95 información de archivo invalida o incompleta.
96 falta tarjeta dd.
4 / 20
Gabriel Alejandro Kordon COBOL VSAM
PASSWORD
Los archivos VSAM pueden tener claves de protección, PASWORD, para ser
accedidos.
Las claves de protección son definidas para cada archivo con el comando
DEFINE del AMS.
5 / 20
Gabriel Alejandro Kordon COBOL VSAM
OPEN I-O
WRITE
REWRITE
START
DELETE
CLOSE
Y el READ con el siguiente formato:
EQUAL TO (=)
GREATER THAN (>)
START file- name [KEY IS NOT LEES THAN name]
(NOT <)}
6 / 20
Gabriel Alejandro Kordon COBOL VSAM
1.3 DELETE
Instrucción del COBOL para eliminar físicamente registros de archivos VSAM,
actualizando el FILE STATUS.
Acceso secuencial:
Necesita previamente un READ satisfactorio, BORRANDO lo que se acaba de
leer.
No corresponde utilizar la opción INVALID KEY.
7 / 20
Gabriel Alejandro Kordon COBOL VSAM
La figura 6 tomo como base la codificación de la figura anterior para que sirva
de ejemplo de acceso dinámico.
8 / 20
Gabriel Alejandro Kordon COBOL VSAM
9 / 20
Gabriel Alejandro Kordon COBOL VSAM
10 / 20
Gabriel Alejandro Kordon COBOL VSAM
11 / 20
Gabriel Alejandro Kordon COBOL VSAM
La presentación de este tema está planteada para todo tipo de archivo que
soporte registros de longitud VARIABLE, como sucede con los archivos VSAM.
Para archivos VSAM el capitulo referido a la cláusula APPLY es innecesario,
pues del uso óptimo del BUFFER se encarga el AMS, el método de acceso del
VSAM.
El tratamiento COBOL de archivos secuenciales (SAM) con registros variables
es similar a los archivos VSAM.
2.1 GENERALIDADES
Los registreos físicos (bloques) de longitud variable son precedidos por campos
que contienen información de control.
Los primeros cuatro (4) bytes de cada bloque contienen información de
control que se divide en:
12 / 20
Gabriel Alejandro Kordon COBOL VSAM
Gráficamente:
CC cc
Los bytes de control son automáticamente suministrados cuando el archivo es grabado por
primera vez y no son comunicados al programador cuando el archivo es leído.
{CHARACTERS
BLOCK CONTAINS [integer- l TO] integer- 2
RECORDS}
13 / 20
Gabriel Alejandro Kordon COBOL VSAM
14 / 20
Gabriel Alejandro Kordon COBOL VSAM
- Parte fija: contiene la información común a todos los registros (que está
presente en todos) y contiene también uno o más contadores de
ocurrencias de la/s parte/s variable/s.
15 / 20
Gabriel Alejandro Kordon COBOL VSAM
01 REGISTRO- VARIABLE.
05 PARTE- FIJA.
10 DATOS PIC X(5).
10 CONT PIC S99 COMP- 3.
05 PARTE VARIABLE OCCURS 0 TO 99 TIMES
DEPENDING ON CONT
PIC XX.
EJEMPLOS
16 / 20
Gabriel Alejandro Kordon COBOL VSAM
17 / 20
Gabriel Alejandro Kordon COBOL VSAM
FD FICHVAR2
RECORDING MODE IS V
BLOCK CONTAINS 3 RECORDS
RECORD CONTAINS 20 TO 100 CHARACTERS
DATA RECORDS ARE REGVARL, REGVAR2
LABEL RECORDS ARE STANDARD.
01 REGVARL.
05 CAMPO- A PIC X (20).
05 CAMPO- B PIC X (80).
01 REGVAR2.
05 CAMPO- X PIC X (20).
El uso de esta cláusula hace que el buffer (en el cual se arma el bloque o registro físico
a ser grabado) sea truncado solamente cuando el próximo registro lógico a grabar no
entre en él.
Formato:
18 / 20
Gabriel Alejandro Kordon COBOL VSAM
• En la i- o CONTROL:
• En la FILE SECTION:
FD FICHVAR
RECORDING MODE IS V
RECORD CONTAINS 10 TO 55 CHARACTERS
DATA RECORD IS REGVAR
LABEL RECORDS ARE STANDARD.
19 / 20
Gabriel Alejandro Kordon COBOL VSAM
01 REGVAR.
05 FILLER PIC X (10).
05 VARIABLE OCCURS 0 TO 15 TIMES
DEPENDING ON OCU
PIC XXX.
01 REGVAR- FROM
03 FIJO.
05 CAMPO 1 PIC X (8).
05 OCU PIC S99 COMP SYNC.
03 VARI
OCCURS 0 TO 15 TIMES
DEPENDING ON OCU.
05 CAMPO2 PIC XX.
05 CAMPO3 PIC X.
• En la PROCEDURE DIVISION.
20 / 20