Analog den Kommando-Returncodes (siehe Handbuch "BS2000/OSD Benutzer-Kommandos" [4]) unterstützt LMS Anweisungs-Returncodes. Der Anweisungs-Returncode ermöglicht es dem Benutzer, nach jeder LMS-Anweisung auf bestimmte Situationen gezielt zu reagieren.
Aufbau des Anweisungs-Returncodes
Der Anweisungs-Returncode besteht aus drei Teilen:
Maincode: | Meldungsschlüssel; die Bedeutung kann mit /HELP-MSG-INFORMATION abgefragt werden. |
Subcode1: | Fehlerklasse (dezimal); gibt an, wie schwerwiegend der Fehler ist. |
Subcode2: | Zusatzinformation (dezimal); z.B. Subcode2 = 2 in Verbindung mit Subcode1 = 0 bedeutet Warnung. |
Steuerung der Ausgabe von Anweisungs-Returncodes
Die Ausgabe von Anweisungs-Returncodes wird mit dem Kommando
/BEGIN-BLOCK PROGRAM-INPUT=*MIXED-WITH-CMD( -
/ PROPAGATE-STMT-RC=*TO-CMD-RC )
aktiviert. Danach können die Anweisungs-Returncodes in S-Prozeduren mit SDF-P-Mitteln ausgewertet werden (siehe Handbuch SDF-P "Programmieren in der Kommandosprache" [12]). Zur Auswertung können die SDF-P Builtin-Funktionen MAINCODE() bzw. MC(), SUBCODE1() bzw. SC1() und SUBCODE2() bzw. SC2() herangezogen werden.
Bei der Ausgabe von Anweisungs-Returncodes wird eine Fehlerbehandlung auf Kommandoebene ausgelöst, d.h. Sprung zum nächsten Kommando /IF-CMD-ERROR , /IF-BLOCK-ERROR oder /STEP.
Die Fehlerbehandlung wird genau dann ausgelöst, wenn der Subcode1 des Anweisungs-Returncodes ungleich 0 ist. Dies ist bei jeder Fehlermeldung der Fall. Die Einstellung von MAX-ERROR-WEIGHT ist wirkungslos.
Der Anweisungs-Returncode kann mit dem Kommando /SAVE-RETURNCODE gesichert werden. /IF-CMD-ERROR führt implizit das Kommando /SAVE-RETURNCODE aus.
Hinweis
Bei den Maincodes LMS1002, LMS1003 und LMS1004 muss der wahre Fehler dem LMS-Protokoll, wenn vorhanden, entnommen werden. Der Maincode LMS1003 nach einer Anweisung mit Auswahlangabe (Wildcard) bedeutet, dass eventuell mehrere Fehler aufgetreten sind.
Für LMS werden folgende mögliche Anweisungs-Returncodes festgelegt:
(SC2) | SC1 | Maincode | Bedeutung |
0 | CMD0001 | Ohne Fehler | |
1 | 0 | LMS0036 | Bibliothek nicht zugewiesen |
2 | 0 | LMS0053 | Element- und Dateiattribute unterschiedlich |
2 | 0 | LMS0064 | GCCSN-Makro-Fehler; kein CCS-Name spezifiziert |
2 | 0 | LMS0071 | XHCS nicht geladen |
2 | 0 | LMS0084 | VTSUCB-Makro-Fehler |
2 | 0 | LMS0095 | Eingabesätze fehlen |
2 | 0 | LMS0102 | Unvollständiger Modul in EAM Datei |
2 | 0 | LMS0129 | Anweisung abgebrochen durch Benutzer |
2 | 0 | LMS0151 | Ein- oder Ausgabemedium auf Standard gesetzt |
2 | 0 | LMS0163 | Mindestens ein Satz abgeschnitten |
2 | 0 | LMS0199 | Satzlänge ungültig bei festem Satzformat |
2 | 0 | LMS0201 | Nur der Vergleichsbereich wird protokolliert |
2 | 0 | LMS0274 | Blockkontroll-Wert verändert |
2 | 0 | LMS0286 | Dateiattribute nicht modifiziert |
2 | 0 | LMS0712 | Touch nicht möglich |
2 | 0 | LMS0714 | Touch auf leere Datei nicht möglich |
2 | 0 | LMS0721 | Das angegebene Ziel ist bereits aktuell |
1 | CMD0230 | Syntaxfehler | |
2 | LMS0238 | Fehler beim Nachladen von LMS | |
32 | LMS1002 | Interner Fehler | |
64 | LMS0020 | Ziel-Element oder Ziel-Datei nicht vorhanden | |
64 | LMS0035 | Elementschutz auf Datei nicht übertragbar | |
64 | LMS0093 | Protokoll-Element existiert bereits | |
64 | LMS0211 | Bibliothek existiert bereits | |
64 | LMS0213 | Name existiert als Delta-Element | |
64 | LMS0214 | Name existiert als Voll-Element | |
64 | LMS0301 | Datei nicht gefunden | |
64 | LMS0302 | Element nicht gefunden | |
64 | LMS0303 | Element nicht im Bereich der Referenz-Bedingung | |
64 | LMS0304 | Typ nicht gefunden | |
64 | LMS0509 | Ziel-Element oder Ziel-Datei schon vorhanden | |
64 | LMS0510 | Basis nicht gefunden | |
64 | LMS1003 | Fehler während Mengenverarbeitung (Wildcard) bei mindestens einem Element oder einer Datei | |
64 | LMS1004 | Sonstige Fehler | |
64 | PLA0223 | Nur Blätter eines Delta-Baumes überschreibbar | |
64 | PLA0224 | Speicherform nicht erlaubt | |
64 | PLA0229 | Kein Zugriffsrecht für das Element | |
64 | PLA0233 | Ausleihstatus verhindert Elementzugriff | |
64 | PLA0475 | Funktion verletzt Versionsautomatismus | |
64 | PLA0476 | Version passt nicht zur geltenden Konvention | |
64 | PLA0478 | Versionsüberlauf bei Erhöhung | |
130 | LMS0041 | Systemadressraum erschöpft | |
130 | LMS0081 | Kein weiterer Speicherplatz für SYSLST-Datei | |
130 | LMS0411 | Bibliothek gesperrt | |
130 | LMS0412 | Element gesperrt | |
130 | LMS0413 | Typ gesperrt |
(SC2) : Subcode2 = 0 wird durch Leerzeichen dargestellt
Bei der Beschreibung der einzelnen LMS-Anweisungen werden die jeweils möglichen Returncodes noch einmal aufgeführt.
Beispiel
Element A in LIB1 oder LIB2 suchen :
/BEGIN-BLOCK PROGRAM-INPUT=*MIXED-WITH-CMD( - / PROPAGATE-STMT-RC=*TO-CMD-RC ) /START-LMS //SHOW-ELEM-ATTR *LIB(LIB = LIB1, ELEM = A, TYP = S),TEXT-OUT=*NONE /IF-CMD-ERROR // SHOW-ELEM-ATTR *LIB(LIB = LIB2, ELEM = A, TYP = S),TEXT-OUT=*NONE / IF-CMD-ERROR / SET-VAR LIB = 'keiner' / ELSE / SET-VAR LIB = 'LIB2' / END-IF /ELSE / SET-VAR LIB = 'LIB1' /END-IF /WR-TEXT 'Element A befindet sich in &LIB Bibliothek' //END /END-BLOCK