Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Zugriff über den Dateikettungsnamen (Link-Name)

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.

Bild 4: Sammeln von Dateiattributen

Ü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.

Software-Produkte wie Dienstprogramme, Dateiaufbereiter usw. verwenden oft eigene Dateikettungsnamen, die den jeweiligen Beschreibungen zu entnehmen sind.

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

"*" Eingabe der Sortieranweisungen

"% SRT..." Meldungen des Dienstprogrammes 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“.