Die Anweisung EXTRACT-ELEMENT gibt Bibliothekselemente standardmäßig in Dateien aus. Wird die Anweisung in der EDT-Anweisungszeile gegeben, werden die Elementdaten standardmäßig in die aktuelle EDT-Arbeitsdatei geschrieben.
LMS erzeugt die Dateien entsprechend
dem Eintrag in der TASK-FILE-TABLE (TFT), wenn die Datei mit dem Dateikettungsnamen zugeordnet ist,
den gespeicherten Dateimerkmalen und dem Operanden FILE-ATTRIBUTES,
dem Katalogeintrag.
Die Dateien können RECORD-FORMAT=UNDEFINED und beliebige Angaben zu BUFFER-LENGTH und RECORD-SIZE haben. Die maximale Satzlänge von 32 KByte (inkl. Satzkopf) darf allerdings nicht überschritten werden.
Wurden die ISAM-Schlüssel einer ISAM-Datei mit in das Element aufgenommen, werden die ISAM-Schlüssel mit EXTRACT-ELEMENT auch wieder mit ausgegeben.
Wurden bei der Aufnahme der Datei Informationen über ISAM-Sekundärschlüssel gespeichert, werden die Sekundärschlüssel wieder eingerichtet. Ist das Einrichten einzelner oder aller Sekundärschlüssel nicht möglich, wird die Datei ohne oder nicht mit allen Sekundärschlüsseln erzeugt.
Die Anweisung EXTRACT-ELEMENT ist für die Elementtypen S, M, R, J, P, D, X, C, L und davon abgeleitete Elementtypen erlaubt.
Elemente vom Typ C, PAM-Dateien unter dem Typ X und PAM LLM Dateien unter dem Typ L bzw. davon abgeleitete Typen werden als PAM-Dateien erzeugt.
Die erzeugte Datei erhält als Katalogattribut CCS den CCS-Namen des Quellelements. Werden die Elementdaten in eine EDT-Arbeitsdatei geschrieben, so ist die Anweisung EXTRACT-ELEMENT nur für textartige Elementtypen oder davon abgeleitete Typen erlaubt, wobei der CCSN des jeweiligen Elements an den EDT übergeben wird.
Wenn ein Textelement in eine bestehende PAM-Datei ausgegeben wird, bestimmt die (möglicherweise implizite) Einstellung des Operanden ACCESS-METHOD die neue Zugriffsmethode (SAM oder ISAM) der Zieldatei.
Wird mit der EXTRACT-ELEMENT Anweisung versucht, Dateien aus Elementen vom Typ L zu erzeugen, die keine gültigen LLM Dateien ergeben, dann werden folgende Meldungen von LMS ausgegeben:
BND5303 TYPE-L-ELEMENT 'xxx' VERSION 'xxx' KEIN GUELTIGES LLM. ANWEISUNG ABGEBROCHEN
BND1102 BINDER ABNORMAL BEENDET. FEHLERKLASSE: 'RECOVERABLE ERROR'
Hinweis
Zulässige Elementnamen sind nicht in jedem Fall als Dateinamen zulässig.
Erzeugen von ISAM-Dateien
Beim Ausgeben von Elementen in ISAM-Dateien erzeugt LMS die ISAM-Schlüssel wie folgt:
Wurden bei der Aufnahme einer ISAM-Datei als Bibliothekselement die ISAM-Schlüssel mit aufgenommen, erzeugt LMS die ISAM-Datei mit diesen gespeicherten ISAM-Schlüsseln.
Sind im Eingabeelement keine ISAM-Schlüssel gespeichert, wird eine ISAM-Datei mit KEY-POSITION = 5 und KEY-LENGTH = 8 erstellt. Standardmäßig erzeugt LMS dann ISAM-Schlüssel mit einem Anfangswert von 1000 und einer Schrittweite von 1000. Ist das Element zu groß für diese Schrittweite (mehr als 100000 Sätze), so wird die Schrittweite aus der Anzahl der Sätze berechnet.
Hinweise
Elemente vom Typ R werden bis zum END-Satz ausgegeben. Eventuell nachfolgende Sätze werden ignoriert.
Korrekturjournalsätze (TXTP) werden bei Elementen vom Typ C nicht mit ausgegeben.
Die RECORD-SIZE wird nur bei RECORD-FORMAT=FIXED versorgt; sie hat bei RECORD-FORMAT=VARIABLE den Wert 0.
EXTRACT-ELEMENT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ELEMENT = *LIBRARY-ELEMENT(...)
Angaben für die gewünschte Elementbezeichnung.
LIBRARY = *STD / <filename 1..54 without-vers> / *LINK(..)
Angabe der Bibliothek, in der sich das Element befindet.
LIBRARY = *STD
Die durch OPEN-LIBRARY eröffnete Bibliothek.
LIBRARY = <filename 1..54 without-vers>
Name der Bibliothek, in der sich das Element befindet.
LIBRARY = *LINK(..)
Die über den Dateikettungsnamen zugewiesene Bibliothek.
LINK-NAME = <structured-name 1..8>
Dateikettungsname der Bibliothek, der vor dem Aufruf von LMS mit einem /ADD-FILE-LINK-Kommando vereinbart wurde.
ELEMENT = *ALL(...) / <composed-name 1..64 with-under with-wild(132)>(...)
Name des Elementes, welches aus der Bibliothek in eine Datei übernommen werden soll.
VERSION = *HIGHEST-EXISTING / *UPPER-LIMIT /
<composed-name 1..24 with-under with-wild(52)>
Version, die das auszugebende Element besitzt.
VERSION = *HIGHEST-EXISTING
Das Element mit der höchsten bestehenden Version bzgl. BASE wird verwendet.
VERSION = *UPPER-LIMIT
Die in der Bibliothek unter dem angegebenen TYPE und Namen höchstmögliche Version X’FF’ wird ausgegeben.
VERSION = <composed-name 1..24 with-under with-wild(52)>
Explizite Angabe der Version des Elementes, das ausgegeben werden soll.
BASE = *STD / <composed-name 1..24 with-under with-wild>
Präfix für die Versionsauswahl. Im Zusammenhang mit VERSION=*HIGHEST-EXISTING kann damit die höchste Version mit einem bestimmten Präfix angesprochen werden. BASE=*STD wirkt wie BASE=*. Näheres zur Angabe der Basis siehe "Versionsbezeichnungen".
TYPE = *LMS-DEFAULT / *ALL / <alphanum-name 1..8 with-wild(20)>
Typ, den das zu auszugebende Element besitzt.
USER-DATE = *ANY / *TODAY / <date 8..10 with-compl> / *INTERVAL(...)
Datum, das vom Benutzer vergeben wurde.
USER-DATE = *ANY
Das auszugebende Element besitzt ein beliebiges Datum.
USER-DATE = *TODAY
Das Element mit dem aktuellen Tagesdatum wird ausgegeben.
USER-DATE = <date 8..10 with-compl>
Das Element, dessen Datum explizit in der Form [JJ]JJ-MM-TT eingegeben wird, wird ausgegeben.
USER-DATE = *INTERVAL(...)
Alle Elemente, die in dem angegebenen Zeitraum liegen, werden ausgegeben.
FROM = 1900-01-01 / <date 8..10 with-compl>
Beginn des Zeitraums.
TO = *TODAY / <date 8..10 with-compl>
Ende des Zeitraums.
CREATION-DATE = *ANY / *TODAY / <date 8..10 with-compl> / *INTERVAL(...)Erzeugungsdatum des Elementes. Beschreibung der Operanden siehe Operand USER-DATE dieses Kommandos.
MODIFICATION-DATE = *ANY / *TODAY / <date 8..10 with-compl> / *INTERVAL(...)Datum der letzten Änderung für das Element. Beschreibung der Operanden siehe Operand USER-DATE dieses Kommandos.
EXCEPT-ELEMENT = *NONE / *ELEMENT(...)
Angabe der Elemente, die von der oben getroffenen Auswahl ausgeschlossen werden.
EXCEPT-ELEMENT = *NONE
Es wird kein Element ausgeschlossen.
EXCEPT-ELEMENT = *ELEMENT(...)
Angabe der Elemente, die nicht ausgegeben werden sollen. Ein Element wird ausgeschlossen, wenn alle Felder der EXCEPT-ELEMENT-Struktur, die nicht auf *ANY gesetzt sind, das Element als Treffer ausweisen. Sind alle Felder der EXCEPT-ELEMENT-Struktur auf *ANY gesetzt, so werden alle Elemente ausgeschlossen.
Zur Beschreibung der Operanden siehe Operand *LIBRARY-ELEMENT dieses Kommandos.
TO-FILE = *STD / *BY-SOURCE /
<filename 1..54 without-gen-vers with-wild-constr> / *LINK(...)
Name der Zieldatei. Eine Konstruktionsangabe bezieht sich auf den Elementnamen.
TO-FILE = *STD
Standardmäßig werden die Elementdaten in Dateien ausgegeben, wobei die Datei den gleichen Namen wie das Element erhält. Erfolgt die EXTRACT-ELEMENT-Anweisung jedoch aus der EDT-Anweisungszeile, so werden die Daten standardmäßig in die aktuelle EDT-Arbeitsdatei geschrieben.
TO-FILE = *BY-SOURCE
Der Dateiname ist der gleiche Name wie der Elementname.
TO-FILE = *LINK(...)
Das Element wird in die Datei ausgegeben, die über den Dateikettungsnamen zugewiesen wurde.
LINK-NAME = <structured-name 1..8>
Dateikettungsname der Bibliothek, der vor dem Aufruf von LMS mit einem /ADD-FILE-LINK-Kommando vereinbart wurde.
FILE-ATTRIBUTES = *BY-ELEMENT / *BY-CATALOG / *LMS-DEFAULT /
*PARAMETERS(...)
Dateiattribute, die bei der Erzeugung der Datei festgelegt werden. Dieser Operand ist wirkungslos, wenn die Elementdaten in die aktuelle EDT-Arbeitsdatei geschrieben werden. LMS bestimmt die Dateiattribute nach folgender Hierarchie:
LINK-Eintrag
im Element gespeicherte Dateiattribute
Katalogeintrag
LMS Defaultwerte
Die nachfolgenden Angaben wirken nur, wenn nicht TO-FILE=*LINK angegeben wurde.
FILE-ATTRIBUTES = *BY-ELEMENT
Die im Element gespeicherten Dateiattribute haben Vorrang.
FILE-ATTRIBUTES = *BY-CATALOG
Die im Katalogeintrag gespeicherten Attribute haben Vorrang. Fehlt der Katalogeintrag, wirkt die Angabe *BY-CATALOG wie die Angabe *BY-ELEMENT.
FILE-ATTRIBUTES = *PARAMETERS(...)
ACCESS-METHOD = *LMS-DEFAULT / *ISAM / *SAM
Legt die Zugriffsmethode ISAM oder SAM für die Zieldatei fest.
INFORMATION = *TEXT / list-poss(2): *TEXT / *COMMENT
der zu bearbeitende Teilbereich des Elementes.
INFORMATION = *TEXT
Der eigentliche Text, d.h. Satzart 1 wird ausgegeben.
INFORMATION = *COMMENT
Der separat gespeicherte Text, d.h. Satzart 2 wird ausgegeben.
PROTECTION = *LMS-DEFAULT / *STD / *BY-SOURCE
Einstellung und Aktivierung eines Zugriffsschutzmechanismus für die zu erzeugende Datei, der dem wirksamen Elementschutz entspricht. Dieser Operand ist wirkungslos, wenn die Elementdaten in die aktuelle EDT-Arbeitsdatei geschrieben werden.
PROTECTION = *STD
Der wirksame Elementschutz des Elementes geht nicht in die Einstellung des Zugriffsschutzmechanismus für die zu erzeugende Datei ein.
PROTECTION = *BY-SOURCE
Die zu erzeugende Datei erhält als Dateischutz einen Zugriffsschutzmechanismus, der dem für das Element wirksamen Elementschutz entspricht.
Hinweis
Bei PROTECTION=*BY-SOURCE erhält die Datei als Dateischutz mindestens den Zugriffsschutzmechanismus Einfache-Zugriffskontrolliste (BACL), auch wenn auf den Zugriffsrechten des Elementes (read, write, execute) kein zusätzlicher Schutz wirkt.Die möglicherweise im Element gespeicherten Werte der Dateiattribute ACCESS und USER-ACCESS (Satzart 164) werden, falls gewünscht (siehe FILE-ATTRIBUTES), für die Einstellung der Werte der Standard-Zugriffskontrolle herangezogen, unabhängig von der Belegung des Operanden PROTECTION.
WRITE-MODE = *LMS-DEFAULT / *CREATE / *REPLACE / *EXTEND / *ANY
Überschreiben einer Datei gleichen Namens.
Existiert die Datei nicht unter diesem Namen, wird sie neu angelegt.
Werden die Elementdaten in die aktuelle EDT-Arbeitsdatei geschrieben, so ist die Angabe wirkungslos, d.h. bei existierenden Daten in der aktuellen Arbeitsdatei werden diese um die Elementdaten erweitert bzw. bei einer leeren Arbeitsdatei werden die Elementdaten an den Anfang der Arbeitsdatei geschrieben.
WRITE-MODE = *CREATE
Die neue Datei darf noch nicht existieren und wird neu erzeugt.
WRITE-MODE = *REPLACE
Die Datei muss bereits existieren und wird dann ersetzt.
WRITE-MODE = *EXTEND
Die Datei wird erweitert, wenn sie bereits existiert. Ansonsten wird sie neu angelegt.
WRITE-MODE = *ANY
Die Datei wird ersetzt, wenn sie bereits existiert. Ansonsten wird sie neu angelegt.
DIALOG-CONTROL = *LMS-DEFAULT / *NO / *YES / *ERROR
Dieser Operand legt fest, ob während der Ausführung einer Anweisung ein Dialog mit dem Benutzer geführt werden soll oder nicht.
Nähere Erläuterungen zur Dialogführung unter MODIFY-LMS-DEFAULTS.
Anweisungs-Returncode
(SC2) | SC1 | Maincode | Bedeutung |
0 | CMD0001 | Ohne Fehler | |
2 | 0 | LMS0053 | Element- und Dateiattribute unterschiedlich |
2 | 0 | LMS0129 | Anweisung abgebrochen durch Benutzer |
2 | 0 | LMS0199 | Satzlänge ungültig bei festem Satzformat |
2 | 0 | LMS0274 | Blockkontroll-Wert verändert |
2 | 0 | LMS0286 | Dateiattribute nicht modifiziert |
1 | CMD0230 | Syntaxfehler | |
32 | LMS1002 | Interner Fehler | |
64 | LMS0020 | Ziel-Element oder Ziel-Datei nicht vorhanden | |
64 | LMS0035 | Elementschutz auf Datei nicht übertragbar | |
64 | LMS0302 | Element nicht gefunden | |
64 | LMS0509 | Ziel-Element oder Ziel-Datei schon vorhanden | |
64 | LMS1003 | Fehler während Mengenverarbeitung (Wildcard) bei mindestens einem Element oder einer Datei | |
64 | LMS1004 | Sonstige Fehler | |
64 | PLA0229 | Kein Zugriffsrecht für das Element | |
130 | LMS0041 | Systemadressraum erschöpft | |
130 | LMS0411 | Bibliothek gesperrt | |
130 | LMS0412 | Element gesperrt | |
130 | LMS0413 | Typ gesperrt |
Notwendige Zugriffsrechte
Bei LIBRARY-ELEMENT: Leserecht für LIBRARY und ELEMENT
Sind von der Anweisung mehrere Elemente betroffen, so werden Elemente ohne Leserecht von der Anweisung ausgenommen.
Bei TO-FILE: Lese- und Schreibrecht für Datei
Bei PROTECTION=*BY-SOURCE ist eine Ausgabe von Elementen als Dateien nur für die eigene Kennung möglich, und nur der Eigentümer der Bibliotheksdatei kann diese Funktionalität nutzen.
Hinweis
Wird PROTECTION=*BY-SOURCE angegeben, ist zu beachten:
Die Funktionalität wird abgewiesen, wenn für ein Element auf mindestens einer Zugriffsart (read, write, execute) der Mechanismus Schutz durch GUARD wirkt und auf mindestens einer Zugriffsart (r, w, x) kein spezieller Schutz oder Schutz durch BACL abweichend von USER=NONE wirkt.
Bestehende Kennwörter im Elementschutz werden nicht berücksichtigt.
Bei der Ausgabe von Elementen auf bestehende Dateien, die durch Schutzattribute des Kennwortschutzes zusätzlich geschützt sind, werden bei Anwendung des Operanden PROTECTION=*BY-SOURCE diese Attribute auf NONE (löscht ein ggf. vorhandenes Kennwort) gesetzt.
Beispiele
Das Element ELEM1 wird mit EXTRACT-ELEMENT in die Datei TEST mit den spezifizierten Dateieigenschaften ausgegeben.
/ADD-FILE-LINK FILE-NAME=TEST,LINK-NAME=OUT,ACCESS-METHOD=*SAM,/ RECORD-FORMAT=*VARIABLE /START-LMS //MOD-LOGG-PAR LOGG=*MAX //OPEN-LIBRARY LIBRARY=LIBIN //EXTRACT-ELEMENT *LIB(LIBIN,ELEM1,S),TO-FILE=*LINK(LINK-NAME-OUT) INPUT LIBRARY= :1OSQ:$USER.LIBIN OUTPUT FILE EXTRACT (S)ELEM1/@(0001)/2011-03-27 AS :1OSQ:$USER.TEST , REPLACED EMPTY FILE
Sollen alle Elemente einer Bibliothek unter ihrem Namen ausgegeben werden, ist folgende Anweisung anzugeben:
//EXTRACT-ELEMENT *LIB(ELEM=*ALL,TYPE=*ALL) INPUT LIBRARY= :1OSQ:$USER.LIBIN OUTPUT FILE EXTRACT (S)ELEM1/@(0001)/2011-03-27 AS :1OSQ:$USER.ELEM1 EXTRACT (S)EXT.FILE.1/@(0001)/2011-03-27 AS :1OSQ:$USER.EXT.FILE.1 EXTRACT (S)EXT.FILE.2/@(0001)/2011-03-27 AS :1OSQ:$USER.EXT.FILE.2 EXTRACT (S)EXT.FILE.3/@(0001)/2011-03-27 AS :1OSQ:$USER.EXT.FILE.3 EXTRACT (S)EXT.FILE.4/@(0001)/2011-03-27 AS :1OSQ:$USER.EXT.FILE.4 EXTRACT (S)EXT.FILE.5/@(0001)/2011-03-27 AS :1OSQ:$USER.EXT.FILE.5 //END