DATA DIVISION
Es la parte de
COBOL que define y describe los campos, records y archivos a utilizarse. En el
Data Division también se establece cualquier área para almacenar que se
requiera para procesar los datos. Esta división tiene dos secciones principales:
File Section y Working-Storage Section.
Ø
FILE SECTION – define todos los archivos de entrada
(Input) y salida (Output).
Ø
WORKING-STORAGE SECTION – reserva el área para
almacenar campos que no son parte del input o de output, pero son requeridos
para el proceso. Incluye constantes, indicadores de fin de archivo
(end-of-file) y áreas de trabajo.
Cada archivo a
usarse tiene que definirse en el ENVIRONMENT DIVISION con la oración SELECT.
Así que para cada archivo definido en el ENVIRONMENT DIVISION, debe existir una
descripción en el FILE SECTION del DATA DIVISION.
FD (File Description)
En el File
Section, los archivos se describen con la instrucción FD (File Description). Cada entrada FD es seguida por el nombre del
archivo (el mismo nombre dado en el Select), otras
cláusulas y terminada con un punto.
Formato:
FD nombre-del-archivo
LABEL RECORDS ARE...
RECORD CONTAINS # CHARACTERS
BLOCK CONTAINS # RECORDS.
LABEL RECORDS ARE... – Los datos en el disco
están guardados en forma binaria. Se crea un record de etiqueta (label record) en el primer o último record que provee
información para identificar el archivo. Los labels
son verificados en los archivos de entrada y son creados en los archivos de
salida.
-
LABEL
RECORD ARE STANDARD – Se utiliza si se desea crear el record de etiqueta, por lo general
para archivos guardados en forma magnética, por ejemplo en discos. (En los
programas en clase se utilizará siempre en archivos de entrada y salida.)
-
LABEL
RECORDS ARE OMITTED – Se usa para archivos de impresión (printed files) o para algún archivo que no se desee
verificar o crear las etiquetas. (En los programas en clase se utilizará solo
para reportes.)
RECORD CONTAINS # CHARACTERS – Es una cláusula opcional.
El símbolo # se sustituye por un número entero que indica el tamaño de cada
record.
BLOCK CONTAINS # RECORDS – Es una cláusula opcional.
El símbolo # se sustituye por un número entero que indica la cantidad de
records lógicos que se acceden cada vez que la computadora lee o escribe al
disco.
Entradas de
descripción de records
Son cláusulas que
se colocan debajo del FD y especifican el formato del record. Indican:
1.
los campos que aparecen en el record
2.
el orden en que los campos aparecen
3.
cómo se relacionan los campos unos con otros
Los records se
describen por niveles. El primer nivel es 01. Es el nivel de datos más
alto, o sea, es el record. Los otros niveles van desde el 02 hasta el 49 y
definen los campos en el record. El nivel 01 incluye el nombre del record (que
lo asigna el programador) y se codifica en Área A. Los otros niveles son
subordinados al nivel anterior y se codifican en el Área B.
Un campo que no se
subdivide es llamado campo elemental o “elementary
item”. Un campo que se subdivide es llamado campo
grupal o “group item”.
Todo campo elemental debe ser descrito por una cláusula llamada PICTURE (o
PIC), que indica el tamaño (size) y tipo (type) del campo. Un campo grupal no utiliza PICTURE y
termina con un punto.
Hay tres tipos (type)
de datos en el campo:
1.
Alfabético – campo que contiene solo letras o
espacio en blanco. Ejemplo: el nombre. Se identifica en el PICTURE con la letra
A.
2.
Alfanumérico – campo que puede tener cualquier caracter, como letras, números y símbolos. Ejemplo: la
dirección. Se identifica en el PIC con la letra X. Por lo general, se
utiliza este tipo también para campos alfabéticos, dado que es difícil asegurar
que un campo solo tenga letras o espacios. Por ejemplo, el nombre Mc’Donald tiene una comilla como parte del nombre.
3.
Numérico – campo con o sin signo que contiene solo
dígitos (o sea, números). Ejemplo: las horas trabajadas. Son los únicos que se
pueden usar en operaciones aritméticas. Se identifica en el PIC con el número 9.
El tamaño del campo
se especifica repitiendo la identificación del tipo de dato; o sea, con la
cantidad de A, X ó 9 usados en el PICTURE. Ejemplo:
Nombre del campo |
Tipo de dato |
Tamaño (cantidad máxima de
caracteres que puede tener) |
PICTURE |
HORAS-TRAB |
Numérico |
2 (dos) |
PIC 99. |
CODIGO |
Alfanumérico |
4 (cuatro) |
PIC XXXX. |
NOMBRE |
Alfabético |
10 (diez) |
PIC A(10). |
El lugar
decimal de un campo numérico es implícito y se designa con la letra V. Ejemplo: |
|||
SALARIO |
Numérico |
5 (3 enteros y 2 decimales) |
PIC 999V99. |