Die USAGE-Klausel

Mit Hilfe dieser Klausel kann das Datenformat von Datenfeldern oder Datengruppen manipuliert werden. Wird die Klausel bei einer Datengruppe angewendet, so bezieht sich das angegebene Datenformat auf alle Datenfelder der Gruppe. Die USAGE-Klausel ist optional. Fehlt sie, so wird USAGE IS DISPLAY defaultmäßig gesetzt. Das Wort IS ist ein Wahlwort.

1. USAGE IS DISPLAY
Sollen Zeichen ausgedruckt oder am Bildschirm angezeigt werden, so wird USAGE IS DISPLAY zur Formatangabe genutzt. Dies wird auch bei fehlender USAGE-Klausel vorausgesetzt. Wird die Klausel auf numerische Datenfelder angewendet, so werden die Feldinhalte auch 'entpackt' oder 'extern dezimal' genannt.
Es wird für jedes Zeichen ein Byte Speicher reserviert.

Beispiel:
Definition: 01 PIC X(5) VALUE "COBOL".
01 PIC X(5) VALUE "COBOL" USAGE DISPLAY.
Hexadezimal: 43 4F 42 4F 4C
Zeichen: C O B O L

Definition: 01 PIC 9(5) VALUE 14762.
01 PIC X(5) VALUE 14762 USAGE DISPLAY.
Hexadezimal: 31 34 37 36 32
Zeichen: 1 4 7 6 2


2. USAGE IS PACKED-DECIMAL
Wurden numerische Felder für Rechenoperationen genutzt, so wurden sie (bei heutigen Speicherkapazitäten, -preisen und -geschwindigkeiten ist dies nichtmehr so notwendig, was jedoch nichts an der Funktionalität der Klausel ändert) mit Hilfe der USAGE-Klausel als PACKED-DECIMAL definiert. Solchermaßen definierte Felder werden auch 'gepackt' oder 'intern dezimal' genannt.
Es wird für je eine Ziffer ein Halbbyte Speicher reserviert.

Beispiel:
Definition: 01 PIC X(8) VALUE 47110815 USAGE PACKED-DECIMAL.
Hexadezimal: 47 11 08 15
Zeichen: 4 7 1 1 0 8 1 5


3. USAGE IS BINARY
Dieses Datenfeldformat wird verwendet, wenn es um numerische Werte geht, die an rechenintensiven Operationen beteiligt sind, da dieses Format 'der Maschine am nächsten liegt' also intern beim Rechnen den geringsten Übersetzungsaufwand verursacht. Solchermaßen definierte Felder werden auch 'binäre Felder' genannt.
Speichermäßig wird folgendermaßen reserviert:
Definition: res. Bytes:
S9(1) - S9(2) 1
S9(3) - S9(4) 2
S9(5) - S9(6) 3
S9(7) - S9(9) 4
S9(10) - S9(11) 5
S9(12) - S9(14) 6
S9(15) - S9(16) 7
S9(17) - S9(18) 8


Beispiele:
Definition: 01 PIC S9(4) VALUE 17 USAGE BINARY.
Dezimal: 17
Binär: 0 0 0 1 0 0 0 1
Hexadezimal: 0 0 1 1


Bei einem negativen Wert wird zunächst das 2-Komplement gebildet:

Definition: 01 PIC S9(4) VALUE -17 USAGE BINARY.
Dezimal: -17
Binär (+17): 0 0 0 1 0 0 0 1
2-Kompl.: 1 1 1 0 1 1 1 1
Hexadezimal: F F E F


...