Fehlerschlüssel enthalten Informationen über Fehlerzustände von Programmen oder Aufträgen, denen der Anwender Art und Herkunft des Fehlers sowie die zu treffende Maßnahme entnehmen kann. Die DVS-Fehlerschlüssel bieten folgende Vorteile:
Die kurze Form gestattet die Verschlüsselung vieler Fehlerfälle.
Aus dem Schlüssel kann die Komponente ermittelt werden, bei der der Fehler aufgetreten ist.
Bei behebbaren Fehlern kann durch Selbstanalyse eine abnormale Programmbeendigung vermieden werden.
DVS-Fehler beim Programmablauf
Bei folgenden Makroaufrufen der Dateiverwaltung wird der Fehlerschlüssel (mit Subcodes) im Standardheader abgelegt:
CATAL mit VERSION=3
COMPFIL
COPFILE
DECFILE
DROPTFT
ENCFILE
ERASE mit VERSION=3
FILE mit VERSION=3
FSTAT mit VERSION=3/4
LFFSNAP
LJFSNAP
MAILFIL
RDTFT mit VERSION=3
RELTFT
RFFSNAP
RJFSNAP
Bei folgenden Makroaufrufen der Dateiverwaltung wird der Fehlerschlüssel (ohne Subcodes) im Register 15 in den beiden niedrigerwertigen Byte abgelegt:
CATAL mit VERSION<3
CHNGE
COPY
ERASE mit VERSION<3
FILE mit VERSION<3
FSTAT mit VERSION<3
IMPORT
RDTFT ohne VERSION und mit VERSION=2
REL
Bei Makroaufrufen der Datenverwaltung (OPEN, CLOSE und Zugriffsmethoden) werden Fehlerschlüssel im Feld ID1ECB des TU-FCB (Distanz X'98') abgespeichert.
Tritt während des Programmlaufs ein DVS-Fehler auf, wird ein Fehlerschlüssel im Dateisteuerblock gespeichert. Ist im Programm keine Routine zur Behandlung des aufgetretenen Fehlers vorgesehen, wird das Programm beendet mit Fehlermeldung auf SYSOUT im Dialog- oder auf SYSLST im Batchbetrieb.
Methodik der Verschlüsselung
w x y z
Der Fehlerschlüssel ist eine vierstellige Sedezimalzahl, deren zweite Ziffer x die Komponente bezeichnet, die den Fehler festgestellt hat. Die Ziffern w, y und z bezeichnen den aufgetretenen Fehler.
Fehlercode-Wertetabelle der Komponenten:
x | Komponente |
2 | Privilegiertes PAM (PPAM) |
3 | Katalogverwalter (CMS) |
4 | Datenspeicherverwalter (ALLOC) |
5 und 6 | DMS-Kommandos / Assembler-Makros |
7 | Privilegierte Bandzugriffsmethode (PTAM) |
9 | UPAM |
A | ISAM |
B | SAM |
C | BTAM |
D | OPEN |
E | CLOSE |
In der Reihenfolge der Komponenten von 216-E16 kommt zum Ausdruck, dass eine Komponente mit höherer Nummer eine Komponente mit niedrigerer Nummer aufrufen kann (und nicht umgekehrt).
Tritt ein Fehler in einer aufgerufenen Komponente auf, wird der Fehlerschlüssel der aufrufenden Komponente übergeben und dabei modifiziert.
Beispiel Generierung und Modifizierung von Fehlerschlüsseln
einstufig (Fehler in der aufrufenden Komponente): Ein Anwender ruft UPAM auf, und die Datei ist nicht eröffnet: UPAM setzt den Fehlerschlüssel 0994 im FCB ab und verzweigt über $GOTO und USERERR.
zweistufig (Fehler in der aufgerufenen Komponente): Ein Anwender ruft UPAM auf, das seinerseits PPAM aufruft, das einen Ein-/Ausgabe-Fehler entdeckt: In diesem Fall gibt PPAM den Fehlerschlüssel 0227 an UPAM im Register 15 weiter. UPAM ändert diesen Schlüssel zu 0927, setzt ihn im FCB ab und verzweigt über $GOTO nach ERRADR.
Liste der DVS-Fehlerschlüssel
Makroaufruf IDEMS
Die Erläuterungen, die den Fehlerschlüsseln zugeordnet sind, stehen in einer Liste. Diese Liste kann ganz oder teilweise ausgegeben werden mithilfe des Makroaufrufs IDEMS.
Operation | Operanden | Bemerkung |
IDEMS | [ALL=Y] | alle Fehlerschlüssel werden generiert |
[,PAM=Y] | nur PPAM-Schlüssel | |
[,CATAL=Y] | nur CMS-Schlüssel | |
[,ALLOC=Y] | nur ALLOC-Schlüssel | |
[,CMDMAC=Y] | nur Schlüssel für DMS-Kommandos/Makros Teil 1 | |
[,CMDNMAC=Y] | nur Schlüssel für DMS-Kommandos/Makros Teil 2 | |
[,NPAM=Y] | nur UPAM-Schlüssel | |
[,ISAM=Y] | nur ISAM-Schlüssel | |
[,SAM=Y] | nur SAM-Schlüssel | |
[,BTAM=Y] | nur BTAM-Schlüssel | |
[,OPEN=Y] | nur Schlüssel der OPEN-Verarbeitung | |
[,CLOSE=Y] | nur Schlüssel der CLOSE-Verarbeitung | |
[,P=buchstabe] | Präfix für die symbolischen Namen der DVS-Meldungen; |
Präfix der Systemmeldungen
Bei der Ausgabe von Systemmeldungen wird dem Fehlerschlüssel die Meldungsklasse „DMS“ vorangestellt (0D33 ->
DMS0D33). Mit dem Kommando bzw. der Standardanweisung HELP-MSG-INFORMATION können zu einem Meldungsschlüssel Meldungstext sowie weitere Angaben zu Fehlerursache und -behandlung in deutsch bzw. englisch ausgegeben werden.
Ausnahmen
ISAM: für ISAM gilt stets als Meldungsschlüssel 0AAz (0 <= z <= F), auch bei den Systemmeldungen.
Beispiel
Wenn PPAM nach ISAM-Aufruf einen Fehler feststellt, wird immer der '0AA9' im FCB eingetragen. Der Eintrag in der IDEMS-Liste lautet „SYSTEM ERROR, HARDWARE“. ISAM gibt diese Meldung für alle in PPAM festgestellten Fehler aus.OPEN: Bei Eröffnen von ISAM-Dateien können Fehler auftreten, die nicht über den Fehlerschlüssel analysierbar sind.
Beispiel
Wenn eine ISAM-Datei im INPUT-Modus eröffnet wird, wird die „erste PAM-Seite“ gelesen. Sie enthält immer den Kontrollblock (NK-ISAM) oder den höchsten Indexblock (K-ISAM).
Nach einem Ein-/Ausgabe-Fehler geschieht Folgendes:
Bild 11: Fehlerablauf nach einem Ein-/Ausgabe-Fehler
Hinweis
Dieser Fehler hat im IDEMS-Makroaufruf eine andere Bedeutung, hier aber steht er für Ein-/Ausgabe-Fehler.
CLOSE: Um alle noch ausstehenden Ein-/Ausgaben zu beenden, ruft die Routine CLOSE die Zugriffsmethode der Datei auf.
Hilfen für die Fehleranalyse
Zur Analyse eines Fehlerschlüssels gibt es folgende Hilfsmittel:
Bedeutung in der IDEMS-Liste aufsuchen.
Werden in einem Programm Makroaufrufe der Dateiverwaltung benutzt, sollte der Anwender den Fehlerschlüssel (im Standardheader bzw. in Register 15) immer überprüfen. Falls der Fehlerschlüssel not equal 0 ist, sollte das Programm beendet werden oder eine gründliche Analyse des Fehlerschlüssels vorgenommen werden.