COBOL - Diseño de datos

El diseño COBOL es la descripción del uso de cada campo y los valores presentes en él. A continuación se muestran las entradas de descripción de datos utilizadas en COBOL:

  • Redefine la cláusula
  • Cambia el nombre de la cláusula
  • Cláusula de uso
  • Copybooks

Redefine la cláusula

La cláusula Redefines se utiliza para definir un almacenamiento con una descripción de datos diferente. Si uno o más elementos de datos no se utilizan simultáneamente, el mismo almacenamiento se puede utilizar para otro elemento de datos. Por lo tanto, el mismo almacenamiento puede referirse con diferentes elementos de datos.

Sintaxis

A continuación se muestra la sintaxis de la cláusula Redefines:

01 WS-OLD PIC X(10).
01 WS-NEW1 REDEFINES WS-OLD PIC 9(8).
01 WS-NEW2 REDEFINES WS-OLD PIC A(10).

A continuación se muestran los detalles de los parámetros utilizados:

  • WS-OLD es un artículo redefinido
  • WS-NEW1 y WS-NEW2 están redefiniendo el artículo

Los números de nivel del artículo redefinido y el artículo redefinido deben ser los mismos y no puede ser un número de nivel 66 o 88. No use la cláusula VALUE con un artículo redefinido. En la sección Archivo, no utilice una cláusula redefinida con el número de nivel 01. La definición de redefinición debe ser la siguiente descripción de datos que desee redefinir. Un artículo redefinido siempre tendrá el mismo valor que un artículo redefinido.

Example

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-DESCRIPTION.
   05 WS-DATE1 VALUE '20140831'.
   10 WS-YEAR PIC X(4).
   10 WS-MONTH PIC X(2).
   10 WS-DATE PIC X(2).
   05 WS-DATE2 REDEFINES WS-DATE1 PIC 9(8).

PROCEDURE DIVISION.
   DISPLAY "WS-DATE1 : "WS-DATE1.
   DISPLAY "WS-DATE2 : "WS-DATE2.

STOP RUN.

JCL para ejecutar el programa COBOL anterior -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:

WS-DATE1 : 20140831
WS-DATE2 : 20140831

Cambia el nombre de la cláusula

La cláusula de cambio de nombre se utiliza para dar diferentes nombres a los elementos de datos existentes. Se utiliza para reagrupar los nombres de los datos y darles un nuevo nombre. Los nuevos nombres de datos pueden cambiar de nombre en grupos o elementos elementales. El nivel 66 está reservado para cambios de nombre.

Syntax

A continuación se muestra la sintaxis de la cláusula Renames:

01 WS-OLD.
10 WS-A PIC 9(12).
10 WS-B PIC X(20).
10 WS-C PIC A(25).
10 WS-D PIC X(12).
66 WS-NEW RENAMES WS-A THRU WS-C.

El cambio de nombre solo es posible en el mismo nivel. En el ejemplo anterior, WS-A, WS-B y WS-C están al mismo nivel. La definición de cambio de nombre debe ser la siguiente descripción de datos que desee cambiar de nombre. No utilice los cambios de nombre con los números de nivel 01 o 77. Los nombres de datos utilizados para los cambios de nombre deben venir en secuencia. No se puede cambiar el nombre de los elementos de datos con cláusula de ocurrencia.

Example

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-DESCRIPTION.
   05 WS-NUM.
   10 WS-NUM1 PIC 9(2) VALUE 20.
   10 WS-NUM2 PIC 9(2) VALUE 56.
   05 WS-CHAR.
   10 WS-CHAR1 PIC X(2) VALUE 'AA'.
   10 WS-CHAR2 PIC X(2) VALUE 'BB'.
   66 WS-RENAME RENAMES WS-NUM2 THRU WS-CHAR2.

PROCEDURE DIVISION.
   DISPLAY "WS-RENAME : " WS-RENAME.
   
STOP RUN.

JCL para ejecutar el programa COBOL anterior -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:

WS-RENAME : 56AABB

Cláusula de uso

La cláusula de uso especifica el sistema operativo en el que se almacenan los datos de formato. No se puede usar con los números de nivel 66 u 88. Si se especifica una cláusula de uso en un grupo, todos los elementos elementales tendrán la misma cláusula de uso. Las diferentes opciones disponibles con la cláusula de uso son las siguientes:

Monitor

El elemento de datos se almacena en formato ASCII y cada carácter ocupará 1 byte. Es el uso predeterminado.

El siguiente ejemplo calcula el número de bytes necesarios:

01 WS-NUM PIC S9(5)V9(3) USAGE IS DISPLAY.
It requires 8 bytes as sign and decimal doesn't require any byte.

01 WS-NUM PIC 9(5) USAGE IS DISPLAY.
It requires 5 bytes as sign.

COMPUTACIONAL / COMP

El elemento de datos se almacena en formato binario. Aquí, los elementos de datos deben ser números enteros.

El siguiente ejemplo calcula el número de bytes necesarios:

01 WS-NUM PIC S9(n) USAGE IS COMP.

If 'n' = 1 to 4, it takes 2 bytes.
If 'n' = 5 to 9, it takes 4 bytes.
If 'n' = 10 to 18, it takes 8 bytes.

COMP-1

El elemento de datos es similar a Real o Float y se representa como un número de punto flotante de precisión simple. Internamente, los datos se almacenan en formato hexadecimal. COMP-1 no acepta la cláusula PIC. Aquí 1 palabra equivale a 4 bytes.

COMP-2

El elemento de datos es similar a Long o Double y se representa como un número de punto flotante de precisión doble. Internamente, los datos se almacenan en formato hexadecimal. COMP-2 no especifica la cláusula PIC. Aquí 2 palabras equivalen a 8 bytes.

COMP-3

El elemento de datos se almacena en formato decimal empaquetado. Cada dígito ocupa medio byte (1 nibble) y el signo se almacena en el nibble del extremo derecho.

El siguiente ejemplo calcula el número de bytes necesarios:

01 WS-NUM PIC 9(n) USAGE IS COMP.
Number of bytes = n/2 (If n is even)
Number of bytes = n/2 + 1(If n is odd, consider only integer part)

01 WS-NUM PIC 9(4) USAGE IS COMP-3 VALUE 21.
It requires 2 bytes of storage as each digit occupies half a byte.

01 WS-NUM PIC 9(5) USAGE IS COMP-3 VALUE 21.
It requires 3 bytes of storage as each digit occupies half a byte.

Cuadernos

Un libro de copias COBOL es una selección de código que define estructuras de datos. Si se usa una estructura de datos en particular en muchos programas, entonces en lugar de escribir la misma estructura de datos nuevamente, podemos usar cuadernos. Usamos la declaración COPY para incluir un cuaderno en un programa. La instrucción COPY se utiliza en la sección WorkingStorage.

El siguiente ejemplo incluye un cuaderno dentro de un programa COBOL:

DATA DIVISION.
WORKING-STORAGE SECTION.
COPY ABC.

Aquí ABC es el nombre del cuaderno. Los siguientes elementos de datos en el cuaderno ABC se pueden utilizar dentro de un programa.

01 WS-DESCRIPTION.
   05 WS-NUM.
      10 WS-NUM1 PIC 9(2) VALUE 20.
      10 WS-NUM2 PIC 9(2) VALUE 56.
   05 WS-CHAR.
      10 WS-CHAR1 PIC X(2) VALUE 'AA'.
      10 WS-CHAR2 PIC X(2) VALUE 'BB'.