Function
Mit der EXTERNAL-Klausel kann eine Datei als extern definiert werden. Auf externe Dateien kann von jedem Programm, in dem die Datei beschrieben ist, zugegriffen werden.
Format
IS EXTERNAL
Syntaxregel
Namen von externen Dateien dürfen maximal 30 Zeichen lang sein.
Allgemeine Regeln
Ist eine Datei als extern definiert, sind die Datensätze dieser Datei implizit ebenfalls extern.
Wenn die Dateierklärung für eine sequenzielle Datei die LINAGE-Klausel und die EXTERNAL-Klausel enthält, ist das Sonderregister LINAGE-COUNTER implizit ein externes Datenfeld.
Als Namen für externe Dateien dürfen nicht verwendet werden:
externe Datensatznamen aus der WORKING-STORAGE SECTION anderer Übersetzungseinheiten in der Ablaufeinheit,
PROGRAM-ID-Namen der Ablaufeinheit, ausgenommen Programmnamen von inneren Programmen eines geschachtelten Programms,
Namen, die in der ENTRY-Anweisung als Einsprungpunkte verwendet werden,
Namen, die eine Schnittstelle benennen (LZS-Namen u.a.),
Die FILE STATUS-Klausel wirkt für externe Dateien stets programmlokal, d.h. der Dateizustand wird nur von Ein-/Ausgabe-Operationen in dem Programm versorgt, das eine entsprechende Angabe in der Dateibeschreibung enthält.
Die EXTERNAL-Klausel darf nicht in Datei- oder Datensatzerklärungen von Dateien angegeben werden, die einen gemeinsamen Ein-/Ausgabebereich (SAME RECORD AREA-Klausel) belegen.
Die EXTERNAL-Klausel darf nicht für Dateien angegeben werden, die den Systemgeräten SYSIPT, SYSOPT, PRINTER oder PRINTERnn zugewiesen sind.
Die EXTERNAL-Klausel darf nicht für Dateien angegeben werden, für die Benutzerkennsätze und entsprechende USE-Prozeduren vereinbart sind.
Eine externe Datei muss in allen Programmen, die auf sie zugreifen wollen, durch explizite Klauseln oder durch implizite Standardwerte weitgehend gleich beschrieben sein. Die folgende Tabelle zeigt Art und Umfang der notwendigen Übereinstimmung:
Klauseln / Angaben in allen Programmen Name der externen Datei
OPTIONAL-Angabe (SELECT-Klausel)
ASSIGN TO datenname
ASSIGN TO PRINTER literal
ORGANIZATION-Klausel
ACCESS MODE-Klausel
RELATIVE KEY-Angabe
RECORD KEY-Klausel
ALTERNATE RECORD KEY-Klausel
BLOCK CONTAINS-Klausel
MULTIPLE FILE TAPE-Klausel
RECORD-Klausel
LABEL RECORDS-Klausel
REPORT-Klausel (Report Writer)
LINAGE-Klausel
CODE SET-Klausel
RECORDING MODE-Klauselgleich in der vollen Länge (30 Zeichen)
gleiche Angabe*)
gleiche Zuweisungsform
gleiche Zuweisungsform
gleiche Organisationsform
gleiche Zugriffsmethode
gleiche Anzahl Ziffern
gleiche Länge und Position
gleiche Anzahl, Position, Länge und DUPLICATES-Angabe
gleiche Blockgröße in Bytes
gleiche Positionsnummer
gleiche minimale und maximale Satzlänge
gleiche Angabe*)
gleiche Angabe*)
gleiche Angabe*)
gleiche Angabe*)
gleiche Angabe*)*) Gleiche Angabe heißt: Die betreffende Klausel darf entweder in keinem der Programme angegeben sein oder muss in allen Programmen gleich angegeben sein.
Alle Programme, die auf die gleiche externe Datei zugreifen, müssen mit dem gleichen Wert der Compiler-Option ENABLE-UFS-ACCESS bzw. mit dem gleichen Modulformat übersetzt worden sein (siehe Handbuch „COBOL2000 Benutzerhandbuch“ [1]).
Ist eine Datei als extern definiert, so ist der zugehörige Dateiname nicht implizit ein globaler Name.
Zusatzregeln, abhängig vom Modulformat
Wird das Format *OMF generiert (siehe Handbuch „COBOL2000 Benutzerhandbuch“ [1]), so gilt für Namen von externen Dateien:
Das achte Zeichen darf kein Bindestrich sein.
Es werden nur die ersten 7 Zeichen des Namens zur Identifizierung verwendet. Deshalb sollten diese Zeichen eindeutig sein für jeden externen Namen in Ablaufeinheit.