Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Zuweisen von katalogisierten Dateien

Für jede Datei, die ein COBOL-Programm bearbeiten soll, wird in der SELECT-Klausel (siehe Handbuch „COBOL2000-Sprachbeschreibung“ [ 1]) ein (programminterner) Name festgelegt, auf den sich die COBOL-Anweisungen für diese Datei beziehen. Bei Programmablauf muss jedem dieser Dateinamen eine aktuelle Datei zugewiesen sein.

Diese Zuweisung lässt sich vor dem Aufruf des Programms durch ein ADD-FILE-LINK- bzw. ein ASSIGN-systemdatei-Kommando herstellen. Welches der beiden Kommandos zu verwenden ist, hängt vom Eintrag in der ASSIGN-Klausel (siehe Handbuch „COBOL2000-Sprachbeschreibung“ [1]) der Datei ab. Ist explizit keine Datei zugewiesen, werden Voreinstellungen des Programms wirksam, die bei der Übersetzung erzeugt wurden. Die einzelnen Möglichkeiten der Dateizuweisung sind im Folgenden zusammengestellt:

Die Zuweisung über das ADD-FILE-LINK-Kommando kann nur erfolgen, wenn in der ASSIGN-Klausel der Dateikettungsname (Linkname) der Datei in der Form „literal“ oder „datenname“ angegeben ist. Mit „literal“ wird der Linkname programmstatisch angegeben. Im Datenfeld „datenname“ kann der Linkname dynamisch, also während des Programmablaufs veränderbar, angegeben werden.

Um eine katalogisierte Datei zuzuweisen, muss der Anwender für diese Datei vor dem Programmaufruf ein ADD-FILE-LINK-Kommando absetzen, in dessen LINK-NAME-Operanden er den vereinbarten Linknamen angibt. Mit Hilfe weiterer Operanden des ADD-FILE-LINK-Kommandos können damit zugleich auch Dateimerkmale festgelegt werden.

Jeder Linkname muss den Anforderungen des BS2000 an einen Linknamen genügen (siehe dazu Handbuch [4]), d.h. insbesondere,

  • er muss alphanumerisch sein,

  • er darf aus höchstens acht Zeichen bestehen und

  • darf keine Kleinbuchstaben enthalten.

Beispiel 9-1

Eintrag im FILE-CONTROL-Paragrafen
des COBOL-Programms LINKLIT:

SELECT STAMM-DATEI ASSIGN TO "STAMMLNK".

Bei der Übersetzung erzeugter Linkname:

STAMMLNK

Zuweisung der Datei LAGER.BESTAND
und Programmaufruf:

/ADD-FILE-LINK LINK-NAME=STAMMLNK, -
/    FILE-NAME=LAGER.BESTAND
/START-PROGRAM LINKLIT

Bei COBOL-Programmen mit SORT (siehe Kapitel „Sortieren und Mischen") sind folgende Linknamen für das Dienstprogramm SORT reserviert und stehen für andere Dateien nicht zur Verfügung:

MERGEnn (nn=01,...99)
SORTIN
SORTINnn (nn=01,...99)
SORTOUT
SORTWK
SORTWKn (n=1,...9)
SORTWKnn (nn=01,...99)
SORTCKPT

Eine Dateizuweisung bleibt so lange bestehen, bis sie

  • entweder explizit durch ein REMOVE-FILE-LINK-Kommando oder implizit durch das Task-Ende gelöscht oder

  • durch ein nachfolgendes ADD-FILE-LINK-Kommando geändert wird.

Darauf ist vor allem dann zu achten, wenn in einer Task einem programminternen Dateinamen nacheinander mehrere Dateien zugeordnet werden sollen.

Über die jeweils aktuell zugewiesenen katalogisierten Dateien informiert das SHOW-FILE-LINK-Kommando (siehe dazu Handbuch [3]).

Beispiel 9-2

Änderung von Dateizuweisungen

/ADD-FILE-LINK INOUTFIL,FILE.UPDATE.1 ——————————————————————————(1) 
/START-PROGRAM AKTUELL
   ...
/ADD-FILE-LINK INOUTFIL,FILE.UPDATE.2 ——————————————————————————(2) 
/START-PROGRAM AKTUELL
   ...
/REMOVE-FILE-LINK INOUTFIL —————————————————————————————————————(3)

Das COBOL-Programm AKTUELL vereinbart für eine Ein-/Ausgabedatei den Linknamen INOUTFIL. Es soll nacheinander die katalogisierten Dateien FILE.UPDATE.1 und FILE.UPDATE.2 aktualisieren.

(1)

Für die nachfolgende Verarbeitung wird dem Programm AKTUELL über den Linknamen INOUTFIL die Datei FILE.UPDATE.1 zugewiesen.

(2)

Nach der Verarbeitung löst ein weiteres ADD-FILE-LINK-Kommando für den Linknamen INOUTFIL die bisher gültige Dateizuordnung auf und weist als neue Datei FILE.UPDATE.2 zu.

(3)

REMOVE-FILE-LINK hebt die Dateizuweisung für den Linknamen INOUTFIL auf.

Implizite Zuweisung über Voreinstellungen

Ist einem internen Dateinamen mit dem Linknamen „linkname“ zum Programmablauf explizit keine katalogisierte Datei zugeordnet, werden die folgenden Voreinstellungen wirksam:

  • Bei einer Ausgabedatei und ENABLE-UFS-ACCESS = NO versucht das Programm auf eine katalogisierte Datei mit dem Namen aus der SELECT-Klausel zuzugreifen. Findet sich unter diesem Namen kein Katalogeintrag, schreibt das Programm in eine Datei mit dem Namen FILE.COBOL.linkname, die es vorher angelegt hat.
    Bei ENABLE-UFS-ACCESS = YES schreibt das Programm unmittelbar in die DateiFILE.COBOL.linkname.

  • Bei einer Eingabedatei, deren SELECT-Klausel die Angabe OPTIONAL enthält, verursacht der erste Lesezugriff eine AT END-Bedingung und verzweigt zu den Prozeduren, die im Programm für diesen Fall vereinbart sind.

  • Bei einer Eingabedatei (ohne OPTIONAL-Angabe in der SELECT-Klausel) und ENABLE-UFS-ACCESS = NO oder einer Ein-/Ausgabedatei versucht das Programm, auf eine katalogisierte Datei mit dem Namen aus der SELECT-Klausel zuzugreifen. Findet sich unter diesem Namen kein Katalogeintrag, wird der Ablauf mit der Fehlermeldung COB9117 unterbrochen und kann nach einer korrekten Dateizuweisung mit dem RESUME-PROGRAM-Kommando fortgesetzt werden.

Zuweisung über das ASSIGN-systemdatei-Kommando

Voraussetzung dafür ist, dass in der ASSIGN-Klausel der Name einer Systemdatei angegeben wurde. Die Systemdateien werden durch herstellername-1 (PRINTER) oder herstellername-2 (PRINTER01...PRINTER99, SYSIPT, SYSOPT) bezeichnet.

Durch ein ASSIGN-systemdatei-Kommando für die angegebene Systemdatei kann vor dem Programmaufruf

  • eine katalogisierte Datei oder

  • eine andere Systemdatei

zugewiesen werden. Welche Zuordnung dabei für die jeweilige Systemdatei zulässig sind, ist der Beschreibung des ASSIGN-systemdatei-Kommandos in [3] zu entnehmen.

Beispiel 9-3

Zuweisung einer katalogisierten Datei über das ASSIGN-systemdatei-Kommando

Eintrag im FILE-CONTROL-Paragrafen
des COBOL-Programms LISTPROG:

SELECT DRUCK-DATEI ASSIGN TO PRINTER.

Zuweisung der Datei LIST.DATEI
und Programmaufruf:

/ASSIGN-SYSLST LIST.DATEI
/START-PROGRAM LISTPROG

Wird zum Programmablauf explizit keine Datei zugewiesen, führt das Programm seine Ein-/Ausgabeoperationen auf der angegebenen Systemdatei aus.

Eine Dateizuweisung bleibt so lange bestehen, bis sie

  • durch das Task-Ende gelöscht oder

  • durch ein nachfolgendes ASSIGN-systemdatei-Kommando geändert wird.

Darauf ist vor allem dann zu achten, wenn in einer Task einem programminternen Dateinamen nacheinander mehrere Dateien zugeordnet werden sollen.

Über die jeweils aktuell zugewiesenen Dateien informiert das SHOW-SYSTEM-FILE-ASSIGNMENTS-Kommando.