In BS2000 gibt es zwei Formate von PLAM-Bibliotheken. Ein 2K-orientiertes Format (NK2-PLAM-Datei) und ein 4K-orientiertes Format (NK4-PLAM-Datei). Die Konvertierung zwischen den verschiedenen Formaten wird mit der LMSCONV-Anweisung COPY-LIBRARY vorgenommen. Der Anwender legt das jeweilige Format mit /ADD-FILE-LINK ...,BUFFER-LENGTH=*STD(1
oder 2
) fest. LMSCONV unterstützt beide Bibliotheksformate. Des weiteren unterstützt LMSCONV NK4-Platten mit den Anweisungen ADD-ELEMENT und EXTRACT-ELEMENT.
Aufnehmen von Dateien mit ADD-ELEMENT
Mit der Anweisung ADD-ELEMENT können Dateien beliebiger BUFFER-LENGTH in eine Bibliothek aufgenommen werden.
Ausgeben von Dateien mit EXTRACT-ELEMENT
Für die EXTRACT-ELEMENT-Anweisung sind folgende Fälle zu unterscheiden:
Das Element enthält einen Attributsatz mit der originalen BUFFER-LENGTH-Angabe (z.B. nach ADD-ELEMENT-Anweisung mit SOURCE-ATTR=*KEEP bzw. für ursprüngliche UPAM-Dateien, z.B. auch Bibliotheken).
Für die Zieldatei ist ein BUFFER-LENGTH-Wert explizit vorgegeben, sei es in der TASK-FILE-TABLE (TFT) über /ADD-FILE-LINK oder direkt im Katalog. In diesem Fall wird stets diese Vorgabe herangezogen. Folgende Probleme können auftreten:
SAM/ISAM-Datei
Die Elementsätze sind zu lang für die vorgegebene BUFFER-LENGTH. Dies führt zu einem DMS-Fehler.
UPAM-Datei
Beim Erzeugen von UPAM-Dateien füllt LMSCONV einen logischen Block (bis auf den Letzten) dicht mit 2K-Einheiten auf und gibt ihn erst dann mit UPAM aus.
Bei BLKCTRL=DATA fängt jeder logische Block (BUFFER-LENGTH) mit einem 12 Bytes langem Kontrollfeld (CF) an. Entspricht die angegebene BUFFER-LENGTH nicht der gespeicherten, so können Daten von DMS mit dem CF überschrieben werden. Die Datei ist damit unbrauchbar.
Bei BLKCTRL=NO können aber auch unbrauchbare Dateien erzeugt werden, wenn die BUFFER-LENGTH verändert wird. (z.B. PLAM-Dateien).
Deshalb wird generell bei unterschiedlichen BUFFER-LENGTH-Angaben (Benutzervorgabe versus gespeicherter Wert) von LMSCONV eine Warnung ausgegeben. Es wird jedoch immer versucht, die Datei zu erzeugen.
Für die Zieldatei ist kein BUFFER-LENGTH-Wert explizit vorgegeben oder bekannt. In diesem Fall wird die Angabe aus dem Attributsatz benutzt.
Ist n in STD(n) ungerade, erhöht LMSCONV auf n+1.
Das Element enthält keinen Attributsatz, z.B. für Phasen-Elemente.
Für die Zieldatei ist ein BUFFER-LENGTH-Wert explizit vorgegeben. Vorgehensweise wie unter 1.a.
Bei der Erzeugung von Phasen führen BUFFER-LENGTH-Angaben ungleich STD(1) oder STD(2) auf Fehler.
Für die Zieldatei ist kein BUFFER-LENGTH-Wert explizit vorgegeben oder bekannt.
Für Phasen ergibt sich die BUFFER-LENGTH aus der aktuellen Umgebung, d.h. auf NK2-Platten BUFFER-LENGTH=STD(1) und auf NK4-Platten
BUFFER-LENGTH=STD(2). Inhaltlich unterscheiden sich die Phasen nicht.Ansonsten wird die BUFFER-LENGTH anhand der maximalen Satzlänge berechnet.
Zusammenfassend wird folgende Vorgehensweise empfohlen, wenn Dateien über eine Bibliothek auf eine NK4-Platte gebracht werden sollen:
Aktionen auf der NK2-Platte:
Alle „kritischen“ Elemente der Bibliothek als Datei extrahieren. Das sind „PAM“-Elemente unter Typ X, die als DateiBUFFER-LENGTH=STD(n) und n ungerade haben oder
Pamkey-behaftete Phasen oder
2K-orientierte PLAM-Dateien sind.
Alle Dateien mit ungerader BUFFER-LENGTH (außer PLAM-Dateien) mit PAMCONV in NK4-Dateien konvertieren.
Alle Pamkey-behafteten Phasen mit PAMCONV in NK-Phasen konvertieren.
NK2-PLAM-Dateien mit der LMSCONV-Anweisung COPY-LIBRARY in NK4-PLAM-Dateien konvertieren.
Danach die NK4-Dateien mit der Anweisung ADD-ELEMENT in eine NK4-PLAM-Datei aufnehmen und diese auf die NK4-Platte transferieren.