COBOL - Disposition des données
La mise en page COBOL est la description de l'utilisation de chaque champ et les valeurs qui y sont présentes. Voici les entrées de description de données utilisées dans COBOL -
- Redéfinit la clause
- Clause de renommage
- Clause d'utilisation
- Copybooks
Redéfinit la clause
La clause Redefines est utilisée pour définir un stockage avec une description de données différente. Si un ou plusieurs éléments de données ne sont pas utilisés simultanément, le même stockage peut être utilisé pour un autre élément de données. Ainsi, le même stockage peut être référencé avec différents éléments de données.
Syntaxe
Voici la syntaxe de la clause 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).
Voici les détails des paramètres utilisés -
- WS-OLD est un élément redéfini
- WS-NEW1 et WS-NEW2 sont un élément de redéfinition
Les numéros de niveau de l'élément redéfini et de l'élément redéfini doivent être les mêmes et il ne peut pas s'agir d'un numéro de niveau 66 ou 88. N'utilisez pas la clause VALUE avec un élément de redéfinition. Dans la section Fichier, n'utilisez pas de clause de redéfinition avec un numéro de niveau 01. Redéfinir la définition doit être la prochaine description de données que vous souhaitez redéfinir. Un article redéfini aura toujours la même valeur qu'un article redéfini.
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 pour exécuter le programme COBOL ci-dessus -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -
WS-DATE1 : 20140831
WS-DATE2 : 20140831
Clause de renommage
La clause Renames est utilisée pour donner des noms différents aux éléments de données existants. Il est utilisé pour regrouper les noms de données et leur donner un nouveau nom. Les nouveaux noms de données peuvent être renommés dans des groupes ou des éléments élémentaires. Le numéro de niveau 66 est réservé aux renommés.
Syntax
Voici la syntaxe de la clause 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.
Le changement de nom n'est possible qu'au même niveau. Dans l'exemple ci-dessus, WS-A, WS-B et WS-C sont au même niveau. La définition de renommage doit être la prochaine description de données que vous souhaitez renommer. N'utilisez pas Renames avec les numéros de niveau 01 ou 77. Les noms de données utilisés pour les renommages doivent être consécutifs. Les éléments de données avec une clause se produisent ne peuvent pas être renommés.
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 pour exécuter le programme COBOL ci-dessus -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -
WS-RENAME : 56AABB
Clause d'utilisation
La clause d'utilisation spécifie le système d'exploitation dans lequel les données de format sont stockées. Il ne peut pas être utilisé avec les numéros de niveau 66 ou 88. Si la clause d'utilisation est spécifiée sur un groupe, alors tous les éléments élémentaires auront la même clause d'utilisation. Les différentes options disponibles avec la clause Usage sont les suivantes -
Afficher
L'élément de données est stocké au format ASCII et chaque caractère prendra 1 octet. C'est l'utilisation par défaut.
L'exemple suivant calcule le nombre d'octets requis -
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.
CALCUL / COMP
L'élément de données est stocké au format binaire. Ici, les éléments de données doivent être des nombres entiers.
L'exemple suivant calcule le nombre d'octets requis -
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
L'élément de données est similaire à Real ou Float et est représenté sous la forme d'un nombre à virgule flottante simple précision. En interne, les données sont stockées au format hexadécimal. COMP-1 n'accepte pas la clause PIC. Ici, 1 mot est égal à 4 octets.
COMP-2
L'élément de données est similaire à Long ou Double et est représenté sous forme de nombre à virgule flottante double précision. En interne, les données sont stockées au format hexadécimal. COMP-2 ne spécifie pas la clause PIC. Ici, 2 mots sont égaux à 8 octets.
COMP-3
L'élément de données est stocké au format décimal compressé. Chaque chiffre occupe un demi-octet (1 quartet) et le signe est stocké dans le quartet le plus à droite.
L'exemple suivant calcule le nombre d'octets requis -
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.
Cahiers
Un cahier COBOL est une sélection de code qui définit les structures de données. Si une structure de données particulière est utilisée dans de nombreux programmes, au lieu de réécrire la même structure de données, nous pouvons utiliser des cahiers. Nous utilisons l'instruction COPY pour inclure un cahier dans un programme. L'instruction COPY est utilisée dans la section WorkingStorage.
L'exemple suivant inclut un cahier dans un programme COBOL -
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY ABC.
Ici ABC est le nom du cahier. Les éléments de données suivants dans le cahier ABC peuvent être utilisés dans un programme.
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'.