COBOL - Datenlayout
Das COBOL-Layout beschreibt die Verwendung jedes Felds und die darin enthaltenen Werte. Es folgen die in COBOL verwendeten Datenbeschreibungseinträge -
- Definiert Klausel neu
- Benennt Klausel um
- Verwendungsklausel
- Copybooks
Definiert Klausel neu
Die Redefines-Klausel wird verwendet, um einen Speicher mit unterschiedlicher Datenbeschreibung zu definieren. Wenn ein oder mehrere Datenelemente nicht gleichzeitig verwendet werden, kann derselbe Speicher für ein anderes Datenelement verwendet werden. So kann derselbe Speicher mit verschiedenen Datenelementen referenziert werden.
Syntax
Es folgt die Syntax für die Redefines-Klausel -
01 WS-OLD PIC X(10).
01 WS-NEW1 REDEFINES WS-OLD PIC 9(8).
01 WS-NEW2 REDEFINES WS-OLD PIC A(10).
Nachfolgend finden Sie die Details der verwendeten Parameter -
- WS-OLD ist neu definiertes Element
- WS-NEW1 und WS-NEW2 definieren Artikel neu
Die Levelnummern des neu definierten Elements und des neu definierten Elements müssen identisch sein und dürfen nicht die Levelnummer 66 oder 88 sein. Verwenden Sie die VALUE-Klausel nicht mit einem neu definierten Element. Verwenden Sie im Dateibereich keine Neudefinitionsklausel mit der Nummer 01. Die Definition neu definieren muss die nächste Datenbeschreibung sein, die Sie neu definieren möchten. Ein neu definierter Artikel hat immer den gleichen Wert wie ein neu definierter Artikel.
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 um das obige COBOL-Programm auszuführen -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Wenn Sie das obige Programm kompilieren und ausführen, erhalten Sie das folgende Ergebnis:
WS-DATE1 : 20140831
WS-DATE2 : 20140831
Benennt Klausel um
Die Umbenennungsklausel wird verwendet, um vorhandenen Datenelementen unterschiedliche Namen zu geben. Es wird verwendet, um die Datennamen neu zu gruppieren und ihnen einen neuen Namen zu geben. Die neuen Datennamen können gruppen- oder elementarübergreifend umbenannt werden. Level Nummer 66 ist für Umbenennungen reserviert.
Syntax
Es folgt die Syntax für die Renames-Klausel -
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.
Das Umbenennen ist nur auf derselben Ebene möglich. Im obigen Beispiel befinden sich WS-A, WS-B und WS-C auf derselben Ebene. Die Umbenennungsdefinition muss die nächste Datenbeschreibung sein, die Sie umbenennen möchten. Verwenden Sie keine Umbenennungen mit den Ebenennummern 01 oder 77. Die für die Umbenennung verwendeten Datennamen müssen nacheinander erfolgen. Datenelemente mit Vorkommensklausel können nicht umbenannt werden.
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 um das obige COBOL-Programm auszuführen -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Wenn Sie das obige Programm kompilieren und ausführen, wird das folgende Ergebnis erzielt:
WS-RENAME : 56AABB
Verwendungsklausel
Die Verwendungsklausel gibt das Betriebssystem an, in dem die Formatdaten gespeichert sind. Es kann nicht mit den Levelnummern 66 oder 88 verwendet werden. Wenn für eine Gruppe eine Verwendungsklausel angegeben ist, haben alle Elementarelemente dieselbe Verwendungsklausel. Die verschiedenen Optionen, die mit der Usage-Klausel verfügbar sind, lauten wie folgt:
Anzeige
Das Datenelement wird im ASCII-Format gespeichert und jedes Zeichen benötigt 1 Byte. Dies ist die Standardverwendung.
Das folgende Beispiel berechnet die Anzahl der erforderlichen Bytes -
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.
COMPUTATIONAL / COMP
Das Datenelement wird im Binärformat gespeichert. Hier müssen Datenelemente eine Ganzzahl sein.
Das folgende Beispiel berechnet die Anzahl der erforderlichen Bytes -
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
Das Datenelement ähnelt Real oder Float und wird als Gleitkommazahl mit einfacher Genauigkeit dargestellt. Intern werden Daten im Hexadezimalformat gespeichert. COMP-1 akzeptiert keine PIC-Klausel. Hier entspricht 1 Wort 4 Bytes.
COMP-2
Das Datenelement ähnelt Long oder Double und wird als Gleitkommazahl mit doppelter Genauigkeit dargestellt. Intern werden Daten im Hexadezimalformat gespeichert. COMP-2 spezifiziert keine PIC-Klausel. Hier entspricht 2 Wort 8 Bytes.
COMP-3
Das Datenelement wird im gepackten Dezimalformat gespeichert. Jede Ziffer belegt ein halbes Byte (1 Halbbyte) und das Vorzeichen wird ganz am Halbbyte gespeichert.
Das folgende Beispiel berechnet die Anzahl der erforderlichen Bytes -
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.
Hefte
Ein COBOL-Copybook ist eine Auswahl von Code, der Datenstrukturen definiert. Wenn in vielen Programmen eine bestimmte Datenstruktur verwendet wird, können wir anstelle des erneuten Schreibens derselben Datenstruktur auch Copybooks verwenden. Wir verwenden die COPY-Anweisung, um ein Copybook in ein Programm aufzunehmen. Die Anweisung COPY wird im Abschnitt WorkingStorage verwendet.
Das folgende Beispiel enthält ein Heft in einem COBOL-Programm -
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY ABC.
Hier ist ABC der Name des Heftes. Die folgenden Datenelemente im ABC-Copybook können innerhalb eines Programms verwendet werden.
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'.