Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

UPAM-Verarbeitung von Banddateien

Für Banddateien bietet UPAM folgende Funktionen:

Erstellen von Banddateien, die nicht über ein Band hinausgehen. Den Zugriff auf logische Sätze dieser Dateien muss der Benutzer selbst programmieren.

Lesen von SAM-Dateien mit Standardblöcken - die Dateieigenschaften werden durch die OPEN-Verarbeitung (siehe Kapitel „OPEN-Verarbeitung“, Handbuch „Einführung in das DVS“ [1]) abgesetzt, z.B. BLKSIZE, RECSIZE, RECFORM. Dies ermöglicht es dem Benutzer, Satzzugriff zu programmieren.

Gekettete Ein-/Ausgabe ist bei Banddateien nicht möglich!

Benachrichtigung des Benutzerauftrags bei Beendigung einer UPAM-Ein-/Ausgabeoperation und Start eines Contingency-Prozesses (Eventing-Mechanismus).

Grundsätzlich ist bei der Anwendung von UPAM zu beachten:

  • UPAM ist eine blockorientierte Zugriffsmethode, d. h. eine logische Struktur innerhalb der Blöcke ist dem System nicht bekannt. Die Satzverarbeitung muss vom Anwender selbst programmiert werden.

Bei der Anwendung von UPAM auf eine Banddatei ist Folgendes zu beachten:

  • Die Datei muss auf einem einzigen Band Platz finden.

  • Jede Schreib-/Leseoperation bearbeitet genau einen physikalischen Block.

  • Bei einer Datei vom Format BLKCTRL=PAMKEY (explizit oder implizit) muss dies ein Standardblock der Länge 2064 Byte sein: In den ersten 16 Byte steht der PAM-Schlüssel, die restlichen 2048 Byte enthalten die Anwenderdaten. Der Operand LEN des PAM-Makros darf nur die Werte STD oder 2048 annehmen.

  • Bei einer Datei vom Format BLKCTRL=DATA oder BLKCTRL=NO kann man BLKSIZE in Byte angeben, wobei der Wert ein Vielfaches von 2048 sein muss. Der Wert für LEN darf den für BLKSIZE nicht übersteigen. Auf das Band werden Blöcke der Größe LEN geschrieben, die entweder nur Anwenderdaten (bei BLKCTRL=NO) oder 12 Byte Blockkontrollfeld und LEN - 12 Byte Anwenderdaten (bei BLKCTRL=DATA) enthalten. Diese Blöcke können mit der UPAM-Funktion RD gelesen werden, wobei für den Wert
    LENRD von LEN im Leseaufruf gilt:
    LENWR <= LENRD <= BLKSIZE. (LENWR: Wert von LEN beim Schreiben der Datei).
    Bei einer Datei mit FCBTYPE=ISAM ist in diesem Zusammenhang folgende Besonderheit zu beachten: Unabhängig von der BLKSIZE-Angabe arbeitet UPAM stets mit der Blockgröße 2048 Byte, da bei ISAM jeder 2K-Block ein Blockkontrollfeld besitzt und daher eine eigene Einheit darstellt. In diesem Fall darf der Wert für LEN 2048 nicht übersteigen.

  • Bei UPAM-Zugriff auf eine Banddatei mit BLKCTRL=PAMKEY und Blöcken, die vom Standardformat (2064 Byte) abweichen, können folgende Fehler auftreten:

    • Hardware-Fehler (Fehlercode = 927);

    • die Daten werden im Puffer falsch abgespeichert;

    • der PAM-Schlüssel wird verfälscht.

  • Auf Banddateien darf nicht von mehreren Aufträgen, bzw. von einem Auftrag mehrfach zugegriffen werden (was auf die Eigenschaften der Magnetbänder zurückzuführen ist); das heißt:

    • eine Banddatei kann nicht mit SHARUPD=YES oder WEAK eröffnet werden;

    • eine Banddatei, die bereits eröffnet ist, kann nicht nochmals eröffnet werden, auch wenn beide Eröffnungen vom Typ INPUT sind!

    • eine Banddatei kann nicht mit einem FCB-Operanden PAMREQS > 1 eröffnet werden.

  • Es ist möglich, mit UPAM eine Banddatei im wahlfreien Zugriff zu lesen. Der Zeitaufwand hierfür kann aber beträchtlich sein.

  • Es ist möglich, ab einer bestimmten Stelle einer bestehenden Banddatei PAM-Blöcke zu schreiben. Der letzte neu geschriebene Block wird automatisch zum letzten Block der Datei, auch wenn die bestehende Datei mehr Blöcke enthielt. Die Datei kann dann nur noch bis zu diesem Block gelesen werden. Wird anschließend ein (weiter vorne liegender) Block der Datei gelesen und die Datei daraufhin geschlossen, so wird der zuletzt gelesene Block zum letzten Block der Banddatei.

Hinweise zur Programmierung

Bei jeder von UPAM veranlassten Programmbeendigung bringt UPAM die Adresse, die den Abbruch verursacht hat, in das Register 0, die Adresse des Elements der UPAM-Operandenlistenkette, in dem der Fehler entdeckt wurde, in das Register 1 sowie den UPAM-Fehlercode in das Register 15. So kann diese Information in Speicherauszügen leicht gefunden werden.

Enthält Register 1 nach dem ersten PAM-Makroaufruf eine ungültige Adresse, ist diese Adresse im Speicherauszug im Register 0 zu finden; das Register 1 hat dann den Wert 0, d.h. der Fehler trat auf, bevor das erste Element der Operandenlistenkette gefunden wurde.

UPAM verwendet folgende EXLST-Ausgänge:

ERRADDR

USERERR

Hardwarefehler oder abnormale Ein-/Ausgabe-Beendigung

unzulässige Operation, z.B. Lesezugriff auf eine nicht zur Datei gehörende PAM-Seite (Dateiende)

Die Felder ID1LWB (PARMOD=24) bzw. ID1LWBPT (PARMOD=31) im FCB enthalten die Adresse des letzten Blocks, auf dem von UPAM eine WT-Operation erfolgreich durchgeführt wurde. Als Anzeige wird das linke Byte des Feldes ID1LWB verwendet.

War die letzte UPAM-Operation für die Datei ein erfolgreicher WT, erhält die Anzeige in ID1LWB den Wert X'00' und die drei niederwertigen Byte des Feldes ID1LWB bzw. das Feld ID1LWBPT enthalten die Adresse des Blocks, auf den der WT sich bezog. Dabei spielt es keine Rolle, ob die den WT auslösende Operation erfolgreich abgeschlossen wurde.

Hat die letzte UPAM-Operation für die Datei keinen WT ausgelöst, wird die Anzeige in ID1LWB auf den Wert X'FF' gesetzt. Der Inhalt der rechten drei Byte von ID1LWB bzw. ID1LWBPT ist dann ohne Bedeutung.