COBOL-Programme können auf Informationen des Compilers und des Betriebssystems zugreifen. Dazu gehören Informationen über
die Übersetzung der Übersetzungseinheit
die seit dem LOGON verbrauchte CPU-Zeit
die Task, in der das Programm abläuft, und
die Datenstation, von der aus das Programm aufgerufen wurde.
Den Zugriff auf diese Informationen unterstützt COBOL2000 durch folgende Sprachmittel:
Die Vereinbarung programminterner Merknamen für die einzelnen Informationsarten im SPECIAL-NAMES-Paragrafen der ENVIRONMENT DIVISION:
Über diese Merknamen kann die ACCEPT-Anweisung der PROCEDURE DIVISION auf die jeweilige Information zugreifen (siehe unten). Es können Merknamen vereinbart werden für Informationen überdie Übersetzung mit COMPILER-INFO IS merkname
die verbrauchte CPU-Zeit mit CPU-TIME IS merkname
den Prozess mit PROCESS-INFO IS merkname
die Datenstation mit TERMINAL-INFO IS merkname
das Datum mit DATE-ISO4 IS merkname (mit Jahrhundert)
Die ACCEPT-Anweisung in der PROCEDURE DIVISION:
ACCEPT...FROM merkname
bringt die (im SPECIAL-NAMES-Paragrafen) mit merkname verknüpften Informationen in das angegebene Empfangsfeld.
Die Daten werden dabei linksbündig in der Länge des Empfangsfeldes der ACCEPT-Anweisung übertragen:
Ist das Feld länger als der zu übertragende Wert, wird es am rechten Ende mit Leerzeichen aufgefüllt; ist es kürzer, wird der Wert bei der Übertragung rechts auf die Feldlänge abgeschnitten. Dies gilt nicht für CPU-TIME: Dort wird immer eine adäquate numerische Übertragung durchgeführt.
In welcher Länge (und ggf. mit welcher Struktur) das Empfangsfeld zu vereinbaren ist, hängt von der Art der Information ab, die es aufnehmen soll. Die Formate der einzelnen Informationstypen können der Zusammenstellung im folgenden Abschnitt entnommen werden.
Inhalt und Struktur der Informationen
Die folgende Tabelle gibt Aufschluss über den Aufbau der Informationen, die einem COBOL-Programm über die Herstellernamen COMPILER-INFO, CPU-TIME, PROCESS-INFO, TERMINAL-INFO und DATE-ISO4 zur Verfügung gestellt werden.
Zeichenpositionen | Informationen für COMPILER-INFO |
1-10 | Name des Compilers ( |
11-20 | Version des Compilers |
21-30 | Datum der Übersetzung |
31-38 | Uhrzeit der Übersetzung |
39-68 | Name der Übersetzungseinheit (PROGRAM-ID-Name) |
Information für CPU-TIME | |
PIC 9(6)V9(4) | CPU-Zeit auf zehntausendstel Sekunden genau |
Zeichenpositionen | Informationen für PROCESS-INFO |
1 | Auftragstyp |
2-5 | TSN-Nummer |
6-13 | Benutzerkennung |
14-21 | Abrechnungsnummer |
22 | Privilegierungszeichen der TaskInhalt: U für BenutzerS für Systemverwalter |
23-32 | Betriebssystemversion |
33-40 | Name des nächsten Rechners, an den die Datensichtstation angeschlossen ist |
Tabelle 15: Struktur der Compiler- und Betriebssysteminformationen
Zeichenpositionen | Informationen für PROCESS-INFO |
41-120 | Systemverwalter-Privilegien; die Felder enthalten 8 Leerzeichen, wenn das Privileg nicht vorhanden ist. |
41-48 | SECADM |
49-56 | USERADM |
57-64 | HSMSADM |
65-72 | SECOLTP |
73-80 | TAPEADM |
81-88 | SATFGMMF |
89-96 | NETADM |
97-104 | FTADM |
105-112 | FTACADM |
113-120 | TSOS |
Zeichenpositionen | Informationen für TERMINAL-INFO |
1-8 | Stationsname |
9-13 | Anzahl der Zeichen pro Zeile |
14-18 | Anzahl der physikalischen Zeilen, die ausgegeben werdenkönnen, ohne dass die Informationsüberlaufkontrolle anspricht. |
19-23 | Anzahl der Zeichen, die ausgegeben werden können, ohne dass die Informationsüberlaufkontrolle anspricht. |
24-27 | Gerätetyp Ist ein Gerätetyp dem Laufzeitsystem nicht bekannt, enthalten diese Positionen Leerzeichen. |
Zeichenpositionen | Informationen für DATE-ISO4 |
1-14 | aktuelles Tagesdatum (einschließlich Jahrhundert JJJJ und Tageszahl NNN des laufenden Jahres) |
Tabelle 15: Struktur der Compiler- und Betriebssysteminformationen
Beispiel 8-6
Datenstrukturen für die Übernahme von Compiler- und Betriebssystem-Informationen durch die ACCEPT-Anweisung
* 01 COMPILER-INFORMATION. 02 COMPILER-NAME PIC X(10). 02 COMPILER-VERSION PIC X(10). 02 UEBERSETZUNGS-DATUM PIC X(10). 02 UEBERSETZUNGS-ZEIT PIC X(8). 02 PROGRAM-NAME PIC X(30). * 01 CPU-ZEIT-IN-SEKUNDEN PIC 9(6)V9(4). * 01 PROZESS-INFORMATION. 02 PROZESS-ART PIC X. 88 BATCH-PROZESS VALUE "B". 88 DIALOG-PROZESS VALUE "D". 02 PROZESS-FOLGENUMMER PIC X(4). 02 BENUTZERKENNUNG PIC X(8). 02 ABRECHNUNGSNUMMER PIC X(8). 02 PRIVILEGIERUNGSKENNZEICHEN PIC X. 88 SYSTEMVERWALTER VALUE "S". 88 BENUTZER VALUE "U". 02 BETRIEBSSYSTEMVERSION PIC X(10). 02 PROZESSORNAME PIC X(8). 02 SYSTEMVERWALTER-PRIVILEGIEN PIC X(80). * 01 TERMINAL-INFORMATION. 02 STATIONS-NAME PIC X(8). 02 ZEICHEN-PRO-ZEILE PIC 9(5). 02 ZEILEN-PRO-SCHIRM PIC 9(5). 02 ZEICHEN-PRO-SCHIRM PIC 9(5). 02 GERAETE-TYP PIC X(4). * 01 AKTUELLES-DATUM. 05 JAHR PIC X(4). 05 FILLER PIC X. 05 MONAT PIC X(2). 05 FILLER PIC X. 05 TAG PIC X(2). 05 TAG-DES-JAHRES PIC X(3). 05 FILLER PIC X.