Soll ein Programm Dateien verarbeiten, muss das DVS eine Verbindung zwischen Programm und Datei herstellen können. Dies geschieht entweder über einen im Programm fest verankerten Dateinamen oder über einen programminternen Dateikettungsnamen, der vor Dateieröffnung einer Datei zuzuordnen ist. Der Zugriff über einen im Programm fest verankerten Dateinamen verläuft wie auf "Zugriff über den Pfadnamen" beschrieben, hat jedoch einige Nachteile:
So ist das Programm z.B. nicht mehr flexibel, bei Änderung des Dateinamens muss das Quellprogramm geändert werden. So erzeugte Ausgabedateien müssen umbenannt/umkatalogisiert werden, damit sie beim nächsten Programmlauf nicht überschrieben werden. Werden Eingabedateien derart verankert, kann das Programm immer nur mit einer einzigen Eingabedatei arbeiten (wenn nicht mehrfach umkatalogisiert wird). Außerdem muss der Programmierer bereits den endgültigen Dateinamen kennen, was z.B. dadurch erschwert wird, dass ein Programm oft für verschiedene Benutzer bzw. Anwendungen geschrieben wird.
Datei und Programm sollten über einen im Programm intern geführten Namen, den Dateikettungsnamen verknüpft werden. Die Zuordnung von Datei zu Dateikettungsname (Link-Name) erfolgt über einen Eintrag in der auftragsbezogenen TFT (Task File Table ), der mit dem Makro FILE und dem Operanden LINK bzw. dem Kommando ADD-FILE-LINK und dem Operanden LINK-NAME erzeugt wird. Diese Zuordnung kann immer, wenn der TFT-Eintrag inaktiv ist, aufgehoben (Makro RELTFT oder Kommando REMOVE-FILE-LINK) oder geändert werden (Makros FILE und CHNGE oder Kommandos CHANGE-FILE-LINK und ADD-FILE-LINK).
TFT-Einträge können mit dem Kommando LOCK-FILE-LINK gegen Löschen geschützt werden, d.h. ein REMOVE-FILE-LINK-Kommando oder RELTFT-Makro wird ausgesetzt. Solche gesperrten TFT-Einträge können mit dem Makro DROPTFT oder dem Kommando UNLOCK-FILE-LINK freigegeben werden. Steht für diesen Eintrag noch ein REMOVE-FILE-LINK-Kommando bzw. ein RELTFT-Makro an, wird dieser jetzt bearbeitet, d.h. der TFT-Eintrag wird entsprechend den dort gemachten Angaben gelöscht und die mit ihm verbundenen privaten Geräte werden freigegeben.
Die Felder des TFT-Eintrags beschreiben Datei- und Verarbeitungsmerkmale für die aktuelle Dateiverarbeitung. Es werden alle Felder versorgt, deren zugehörige Operanden in den Makros bzw. Kommandos angegeben werden, die den TFT-Eintrag erstellen oder die sich auf den TFT-Eintrag beziehen.
Bei Dateieröffnung haben die Angaben im TFT-Eintrag Vorrang vor den entsprechenden Feldern des Dateisteuerblocks, der über den FCB-Makroaufruf erstellt wurde.
Eine Sonderstellung haben dabei die Felder des TFT-Eintrags, die mit dem Wert *BY-CAT bzw. *BY-CATALOG versorgt wurden (sog. „Null-Operanden“, siehe unten).
Für diejenigen Eigenschaften, die weder im TFT-Eintrag noch im Dateisteuerblock vereinbart wurden, übernimmt das DVS Standardwerte.
Über den Aufbau und den Inhalt der TFT-Einträge kann man sich jederzeit mit dem Makro RDTFT bzw. mit dem Kommando SHOW-FILE-LINK informieren. Mit der Standardfunktion des Makros bzw. des Kommandos wird Auskunft darüber erteilt, welche TFT-Einträge für den laufenden Auftrag erzeugt wurden. Es können jedoch auch gezielt Informationen zu bestimmten TFT-Einträgen abgerufen werden.
Die TFT enthält die Einträge in der Reihenfolge, wie sie durch Makro- oder Kommando-Aufrufe erstellt wurden. Nicht mehr benötigte TFT-Einträge sollten gelöscht werden, da bei jedem Zugriff auf die TFT die Tabelle sequenziell durchsucht wird, sodass sich die Zahl der TFT-Einträge auf die Performance auswirkt.
Null-Operanden
Bei der Verarbeitung existenter Dateien kann die Null-Operanden-Funktion genutzt werden. Damit wird sichergestellt, dass der Dateisteuerblock zum OPEN-Zeitpunkt korrekt versorgt ist. Eine Reihe von Operanden der Makros FILE und FCB bzw. des Kommandos ADD-FILE-LINK, die Dateieigenschaften beschreiben, können als Null-Operanden im Makroaufruf (leere Zeichenfolge als Operandenwert) bzw. mit dem Operandenwert *BY-CATALOG im Kommandoaufruf angegeben werden. Das entsprechende Feld des TFT-Eintrags enthält dann den Wert „BY-CAT“. Bei Dateieröffnung übernimmt das DVS die Werte aus dem Katalogeintrag in den Dateisteuerblock.
Werden mit Kommandos oder Makros für eine bereits bestehende Datei bestimmte Eigenschaften angegeben, so müssen diese Angaben mit denen im Katalog verträglich sein. Verträglichkeit zwischen FCB und Katalog bedeutet nicht unbedingt Gleichheit der jeweiligen Werte. So können z.B. SAM-/ISAM-Dateien mit der Zugriffsmethode UPAM bearbeitet werden (Zugriffsmethode PAM im FCB).
Beispiel 1: Dateikettungsname – Sortieren mit dem Dienstprogramm SORT
Der Inhalt der Datei DATEN.UNSORT soll mithilfe des Dienstprogramms SORT sortiert werden; die Ausgabedatei erhält den Namen DATEN.SORT. Diese Datei soll durch das Programm DRUCK als druckaufbereitete Liste mit dem Namen LISTE ausgegeben werden. Das Dienstprogramm SORT verwendet standardmäßig die Dateikettungsnamen SORTIN und SORTOUT; das Programm DRUCK verwendet die Dateikettungsnamen LISTEIN und LISTAUS.
/show-file-attributes daten.unsort ——————————————————————————————————— (1) % 12 :2OS2:$USER1.DATEN.UNSORT %:2OS2: PUBLIC: 1 FILE RES= 12 FRE= 7 REL= 6 PAGES /add-file-link link-name=sortin,file-name=daten.unsort ———————————————— (2) /add-file-link link-name=sortout,file-name=daten.sort ————————————————— (3) /show-file-link ————————————————————————————————————————————————————— (4) % %-- LINK-NAME --------- FILE-NAME ------------------------------------------- % SORTIN :2OS2:$USER1.DATEN.UNSORT % SORTOUT :2OS2:$USER1.DATEN.SORT /start-sort —————————————————————————————————————————————————————————— (5) % BLS0523 ELEMENT 'SRT80', VERSION '079', TYPE 'L' FROM LIBRARY ':1OSH:$TSOS.SYSLNK.SORT.080' IN PROCESS % BLS0524 LLM 'SRT80', VERSION '08.0A00' OF '2015-02-03 13:07:17' LOADED % BLS0551 COPYRIGHT (C) 2014 FUJITSU TECHNOLOGY SOLUTIONS GMBH. ALL RIGHTS RESERVED % SRT1001 2017-03-03/18:19:43/000000.00 SORT/MERGE STARTED, VERSION 08.0A00/BS2000V20.0 % SRT1130 PLEASE ENTER SORT STATEMENTS *sort fields=(10,5,a,ch) *record length=100 *end % SRT1222 WARNING: RECORD SIZE OF INPUT FILE NOT EQUAL TO <LENGTH1>. <LENGTH1> WILL BE IGNORED % SRT1016 SORT/MERGE INPUT RECORDS:...........................101 (FROM 01) % SRT1030 SORT/MERGE OUTPUT RECORDS:.............................101 % SRT1002 09:49:11/000000.16 SORT/MERGE COMPLETED /show-file-link —————————————————————————————————————————————————-—————— (6) % %-- LINK-NAME --------- FILE-NAME ------------------------------------------- % SORTOUT :2OS2:$USER1.DATEN.SORT /change-file-link link-name=sortout,new-name=listein ————————————————-—— (7) /add-file-link link-name=listaus,file-name=liste ————————————————————— (8) /show-file-link —————————————————————————————————————————————————————— (9) % %-- LINK-NAME --------- FILE-NAME ------------------------------------------- % LISTAUS :2OS2:$USER1.LISTE % LISTEIN :2OS2:$USER1.DATEN.SORT /start-prog from-file=druck ——————————————————————————————————————————— (10) % BLS0517 MODULE 'DRUCK' LOADED : : *** Erstellen der Ausgabeliste im Programm DRUCK *** : *** PROGRAMM DRUCK BEENDET *** /remove-file-link link-name=listein ——————————————————————————————-————— (11) /remove-file-link link-name=listaus ——————————————————————————————-————— (12) /show-file-link ——————————————————————————————————————————————————-————— (13) % DMS05E1 TASK FILE TABLE (TFT) NOT AVAILABLE OR SPECIFIED FILE NOT IN 'TFT'. OPERATION NOT PROCESSED
(1) | In der Datei „DATEN.UNSORT“ befinden sich Daten. |
(2) | Eingabedatei mit dem Dienstprogramm SORT verbinden |
(3) | Ausgabedatei mit dem Dienstprogramm SORT verbinden |
(4) | TFT-Einträge anzeigen |
(5) | Aufruf des Dienstprogramms SORT
|
(6) | TFT-Einträge anzeigen: der TFT-Eintrag für die SORT-Eingabedatei SORTIN wurde vom Dienstprogramm SORT freigegeben |
(7) | Umbenennen von Link-Namen: die Ausgabedatei für das Dienstprogramm SORT (SORTOUT) wird umbenannt in die Eingabedatei für das Druckprogramm DRUCK (LISTEIN) |
(8) | Für die DRUCK-Ausgabedatei wird ein TFT-Eintrag erstellt |
(9) | TFT-Einträge anzeigen |
(10) | Das Programm DRUCK wird gestartet |
(11) | TFT-Eintrag für die DRUCK-Eingabedatei (LISTEIN) löschen |
(12) | TFT-Eintrag für die DRUCK-Ausgabedatei (LISTAUS) löschen |
(13) | Das Kommando SHOW-FILE-LINK zeigt, dass alle TFT-Einträge für diesen Auftrag gelöscht sind |
Beispiel 2: Übernahme des gültigen Wertes aus Katalogeintrag
/sh-f-attr lst.bsp.2,inf=par(org=yes) %0000000003 :2OS2:$USER1.LST.BSP.2 % ------------------ ORGANIZATION ------------------------------------------- % FILE-STRUC = SAM BUF-LEN = STD(1) BLK-CONTR = PAMKEY % IO(USAGE) = READ-WRITE IO(PERF) = STD DISK-WRITE = IMMEDIATE % REC-FORM = (V,M) REC-SIZE = 0 % AVAIL = *STD % WORK-FILE = *NO F-PREFORM = *K S0-MIGR = *ALLOWED %:2OS2: PUBLIC: 1 FILE RES= 3 FRE= 2 REL= 0 PAGES /add-file-link link=edtsam,file-name=lst.bsp.2,access-method=*by-cat, rec-form=*by-cat,buffer-length=*by-cat,block-contr-info=*by-cat /show-file-link link=edtsam,inf=all %-- LINK-NAME --------- FILE-NAME ------------------------------------------- % EDTSAM :2OS2:$USER1.LST.BSP.2 % -------------------- STATUS --------------------------------------------- % STATE = INACTIVE ORIGIN = FILE % -------------------- PROTECTION ----------------------------------------- % RET-PER = *BY-PROG PROT-LEV = *BY-PROG % BYPASS = *BY-PROG DESTROY = *BY-CAT % -------------------- FILE-CONTROL-BLOCK - GENERAL ATTRIBUTES ------------ % ACC-METH = *BY-CAT OPEN-MODE = *BY-PROG REC-FORM = *BY-CAT % REC-SIZE = *BY-PROG BUF-LEN = *BY-CAT BLK-CONTR = *BY-CAT % F-CL-MSG = STD CLOSE-MODE = *BY-PROG % -------------------- FILE-CONTROL-BLOCK - DISK FILE ATTRIBUTES ---------- % SHARED-UPD = *BY-PROG WR-CHECK = *BY-PROG IO(PERF) = *BY-PROG % IO(USAGE) = *BY-PROG LOCK-ENV = *BY-PROG % -------------------- FILE-CONTROL-BLOCK - TAPE FILE ATTRIBUTES ---------- % LABEL = *BY-PROG (DIN-R-NUM = *BY-PROG, TAPE-MARK = *BY-PROG) % CODE = *BY-PROG EBCDIC-TR = *BY-PROG F-SEQ = *BY-PROG % CP-AT-BLIM = *BY-PROG CP-AT-FEOV = *BY-PROG BLOCK-LIM = *BY-PROG % REST-USAGE = *BY-PROG BLOCK-OFF = *BY-PROG TAPE-WRITE = *BY-PROG % STREAM = *BY-PROG % -------------------- FILE-CONTROL-BLOCK - ISAM FILE ATTRIBUTES ---------- % KEY-POS = *BY-PROG KEY-LEN = *BY-PROG POOL-LINK = *BY-PROG % LOGIC-FLAG = *BY-PROG VAL-FLAG = *BY-PROG PROPA-VAL = *BY-PROG % DUP-KEY = *BY-PROG PAD-FACT = *BY-PROG READ-I-ADV = *BY-PROG % WR-IMMED = *BY-PROG POOL-SIZE = *BY-PROG % -------------------- VOLUME --------------------------------------------- % DEV-TYPE = *NONE T-SET-NAME = *NONE % VSN/DEV = GVS2.5/D3435
Die Operanden ACCESS-METHOD, RECORD-FORMAT, BUFFER-LENGTH und BLOCK-CONTR-INFO wurden im Kommando ADD-FILE-LINK mit „BY-CATALOG“ angegeben, da der gültige Wert bei Dateieröffnung aus dem Katalogeintrag genommen werden soll. Sie werden bei der Verarbeitung über den Kettungsnamen EDTSAM aus dem Katalogeintrag der Datei LST.BSP.2 übernommen. Der TFT-Eintrag zeigt in den entsprechenden Feldern den Wert „*BY-CAT“.