Compiler-Direktiven ermöglichen es dem COBOL-Programmierer, die Quelltext-Manipulation zu steuern.
Folgende Compiler-Direktiven stehen zur Verfügung:
DEFINE-Direktive
EVALUATE-Direktive
IF-Direktive
Die Compiler-Direktiven sind ausführlich beschrieben im Handbuch „COBOL2000-Sprachbeschreibung“ [1].
Mit der DEFINE-Direktive kann der Programmierer im Quellprogramm Compilervariablen definieren. Mit Hilfe von S-Variablen kann er diesen Compilervariablen auch vor der Übersetzung Werte zuweisen. Hierfür müssen die Variablen im Programm mit dem Zusatz AS PARAMETER definiert werden. Die Zuordnung der Compilervariablen zur S-Variablen erfolgt über den Namen der Variablen, der wie folgt zu bilden ist:
DEFINE-Direktive | S-Variable |
|
|
Die S-Variablen sind dabei mit SCOPE=*TASK zu vereinbaren.
Für die Versorgung der Compilervariablen von außen stehen zwei unterschiedliche Typen von S-Variablen zur Verfügung, die mit dem gewünschten TYPE zu deklarieren sind:
numerische Variablen mit TYPE=*INTEGER
alphanumerische Variablen mit TYPE=*STRING
Die beiden folgenden Beispiele zeigen die Verwendung von Compilervariablen im BS2000/OSD. Die Verwendung von Compilervariablen beim Compiler-Aufruf unter POSIX ist auf "Übersetzen" beschrieben.
Beispiel 2-7
Übergabe eines numerischen Wertes
IDENTIFICATION DIVISION. PROGRAM-ID. PROG1 ... >>DEFINE VLADIMIR AS PARAMETER. ———————————————————————————————————————— (1) ... Zuweisung und Verknüpfung: /DECLARE-VARIABLE SYSDIR-VLADIMIR(TYPE=*INTEGER),SCOPE=*TASK ——————————— (2) /SET-VARIABLE SYSDIR-VLADIMIR=1234 ————————————————————————————————————— (3)
|
(1) | Mit der DEFINE-Direktive wird eine Compilervariable angegeben, deren Inhalt der COBOL-Compiler in einer S-Variablen erwartet. |
(2) | Mit dem SDF-P-Kommando DECLARE-VARIABLE wird eine S-Variable vereinbart: VLADIMIR ist der Name der numerischen Compilervariablen im Quellprogramm. Die zugehörige S-Variable wird vereinbart als SYSDIR-VLADIMIR mit TYPE=*INTEGER. |
(3) | Mit dem SDF-P-Kommando SET-VARIABLE wird der S-Variablen SYSDIR-VLADIMIR der numerische Wert 1234 zugewiesen. |
Beispiel 2-8
Übergabe eines alphanumerischen Literals
IDENTIFICATION DIVISION. PROGRAM-ID. PROG2 ... >>DEFINE JERRY AS PARAMETER. ——————————————————————————————————————————(1) ... Zuweisung und Verknüpfung: /DECLARE-VARIABLE SYSDIR-JERRY (TYPE=*STRING),SCOPE=*TASK —————————————(2) /SET-VARIABLE SYSDIR-JERRY='Das ist ein String'————————————————————————(3) Compiler-Aufruf |
(1) | Mit der DEFINE-Direktive wird eine Compilervariable angegeben, deren Inhalt der COBOL-Compiler in einer S-Variablen erwartet. |
(2) | Mit dem SDF-P-Kommando DECLARE-VARIABLE wird eine S-Variable vereinbart: JERRY ist der Name der alphanumerischen Compilervariablen im Quellprogramm. Die zugehörige S-Variable wird vereinbart als SYSDIR-JERRY mit TYPE=*STRING. |
(3) | Mit dem SDF-P-Kommando SET-VARIABLE wird der S-Variablen SYSDIR-JERRY der alphanumerische Wert „Das ist ein String“ zugewiesen. Die begrenzenden Anführungszeichen sind nicht Bestandteil des Literals. |