Startseite
Downloads
Lexikon
Sonstiges
Links
Kontakt
Gästebuch
Statistics
Disclaimer

REXX Return Codes

Return Codes (kurz RC) sind numerische Werte (Zahlen) die vom REXX-Interpreter bzw. vom compilierten REXX-Programm beim Beenden eines Programms oder bei der Feststellung eines Ausführungsfehlers an den Aufrufer bzw. die Umgebung zurückgegeben werden. Die Erläuterung und die Bedeutung der Retern-Codes liefert die Funktion msg = Errortext(rc) zurück. REXX Return Codes liegen im Bereich von 0 bis 99. Nicht alle Werte sind belegt. Die Belegung und Bedeutung der RCs kann vom System zum System etwas variiren. Die hier vorgestellte Return Codes gelten für die Windows- und OS/2 Systeme.

Im ooREXX bekommen manche Fehlernummer zusätzlich erweiterte Informationen in Form weiteren 1- bis 3-Stelligen Zahlen (s. g. Subcodes). Diese Information beschreibt näher die Stelle an der der Fehler entstanden ist. Die Funktion ErrorText selbst kann keine zweite Fehlermeldung zurückgeben, deswegen werden diese Informationen über das Objekt, das durch die Fehlerbedingung SIGNAL ON SYNTAX (wenn sie zutrifft) verfügbar. Manche Fehler können nur unter bestimmten Fehlerbedingungen angezeigt werden bzw. werden unter bestimmten Bedingungen nicht angezeigt:

.

RC
Bedeutung
0
Erfolgreiche Ausführung.
Das REXX-programm wurde fehlerfrei ausgeführt und erfolgreich beendet.
3
Abbruch während der Initilaisierung.
Prozedur nicht gefunden oder von der Platte nicht lesbar/ausführbar.
Zugehörigen Subcodes:
  • 001 - Abbruch wehrend der Initialisierung; Datei filename ist unlesbar.
  • 900 - siehe Meldung.
  • 901 - Abbruch wehrend der Initialisierung; Programm program_name wurde nicht gefunden.
  • 902 - Fehler beim Schreiben in die Ausgabedatei filename
  • 903 - Programm program_name kann nicht vom REXX-Interpreter in dieser Version ausgeführt werden.
  • 904 - Abbruch wehrend der Initialisierung; Programm program_name muss "tokenisiert" werden. Zum Ausführen von "nicht-tokenisierten" Prozeduren wird volle Version von Object-REXX benötigt.
4
Programmunterbrechung.
Das System hat die Ausführung des Programms auf Grund eines Fehlers oder einer Anforderung unterbrochen..
Zugehörigen Subcodes:
  • 001 - Ausführung des Programms auf Grund der Abbruchbedingungcondition beendet.
  • 900 - siehe Meldung.
5
Ressourcen erschöpft.
Bei der Ausführung des Programs konnte der Interpreter nicht ausreichend Ressourcen (z. B. Speicher) bekommen.
Zugehöriger Subcode:
  • 900 - siehe Meldung.
6
Unpaarige Kommentarzeichen /* oder Anführungszeichen.
Ein Kommentar oder ein Literal wurde angefangen aber bis zum Ende des Programms bzw. bis zum Endes des Literals nicht abgeschlossen.
Zugehörigen Subcodes:
  • 001 - Unpaarige Kommentarzeichen (/*) in der Zeile line_number.
  • 002 - Unpaariges Hochkomma (').
  • 003 - Unpaariges Anführungszeichen (").
  • 900 - siehe Meldung.
7
WHEN oder OTHERWISE erwartet.
Mindestens eine WHEN-Klausel und die OTHERWISE-Klausel werden in einer SELECT-Anweisung erwartet. Dieser Return-Code wird zurückgegeben wenn:
  • keine WHEN-Klausel vor der OTHERWISE-Klausel gefunden wurde oder
  • die WHEN-Bedingung falsch ist aber die OTHERWISE-Klausel nicht vorhanden ist oder auch
  • eine Liste der Anweisungen in einer WHEN-Klausel nicht in einem DO...END-Block eingeschlossen wurde.
Zugehörigen Subcodes:
  • 001 - SELECT in der Zeile line_number braucht eine WHEN-Anweisung.
  • 002 - SELECT in der Zeile line_number braucht eine WHEN-, OTHERWISE-, oder END-Anweisung.
  • 003 - Alle WHEN-Anweisungen einer SELECT-Anweisung sind falsch; OTHERWISE-Anweisung wurde erwartet.
8
Unerwartetes THEN oder ELSE.
Eine THEN- oder ELSE-Klausel für die vorherige IF- oder WHEN-Klausel wurde gefunden. Dieser Return-Code wird auch zurückgegeben, wenn eine Liste der Anweisungen in der THEN-Klausel von einem IF...THEN...ELSE-Ausdruck nicht in einem DO...END-Block eingeschlossen wurde.
Zugehörigen Subcodes:
  • 001 - Für THEN fehlt die dazugehörige IF- oder WHEN-Anweisung.
  • 002 - Für ELSE fehlt die dazugehörige THEN-Anweisung.
9
Unerwartetes WHEN oder OTHERWISE.
Eine von diesen beiden Klauseln wurde außerhalb einer SELECT-Anweisung gefunden. Das konnte durch einen nicht mit END abgeschlossenen DO...END-Block oder durch einen Sprung mit der SIGNAL-Anweisung (diese endet die aktuelle SELECT-Anweisung) verursacht werden.
Zugehörigen Subcodes:
  • 001 - Für WHEN fehlt die dazugehörige SELECT-Anweisung.
  • 002 - Für OTHERWISE fehlt die dazugehörige SELECT-Anweisung.
10
Unerwartetes oder unpassendes END.
Entweder mehr END-Schlüsselworte als DO- bzw. SELECT-Anweisungen wurden gefunden oder wurden diese Anweisungen nicht mit einem dazu passenden END-Schlüsselwort abgeschlossen. Weitere möglichen Fehlerquellen:
  • Ein Sprung mit der SIGNAL-Anweisung von einer Schleife nach Außen. Diese Anweisung endet implizit jede Schleife.
  • Verwendung für einen END-Schlüsselwort eines Namen der nicht für das passende DO angewendet wurde.
Zugehörigen Subcodes:
  • 001 - Für END fehlt die dazugehörige DO- oder SELECT-Anweisung.
  • 002 - Das END folgende Symbol symbol muss entweder dem zusammenpassenden Blocknamen (control_variable in der Zeile line_namber tragen oder wegfallen.
  • 003 - END in einem Block darf kein Symbol haben, weil es weder einen LABEL noch ein Steuervariable control_variable gibt.
  • 004 - Das Symbol, dass END folgt, muss entweder der Steuervariable (control_variable) bei LABEL- oder SELECT-Anweisung entsprechen oder wegfallen.
  • 005 - END muss direkt die THEN-Anweisung folgen.
  • 006 - END muss direkt die ELSE-Anweisung folgen.
  • 007 - Das zu der SELECT-Anweisung zugehörige END darf kein Symbol bekommen, weil LABEL-Anweisung fehlt.
11
Steuerungsstapelspeicher voll.
Das Program überschreitet die Limitierung für Verschachtelung von Steuerungsstruckturen (z. B. DO...END- oder IF...THEN...ELSE-Blöcke) bzw. es generiertr eine endlose Schleife der INTERPRET-Anweisung
12
Klausel zu lang.
Nur für MVS-REXX verfügbar.
13
Ungültige Zeichen im Programm.
Es wurde ein Zeichen außerhalb eines Literals gefunden, das an dieser Stelle ungültig ist.
14
Unvollständiges DO/SELECT/IF.
Eine DO- bzw. eine SELECT- Anweisung ohne der abschließenden END-Klausel oder eine IF-Klausel ohne der THEN-Klausel wurde am Ende des Programs oder am Ende der INTERPRET-Anweisung gefunden. Bei der Fehlersuche kann die Verwendung der Namensvariablen für die END-Klausel helfen.
15
Ungültige hexadezimale oder binäre Konstante.
Eine hexadezimale Zeichenkette darf nur aus Ziffern 0..9und Buchstaben a...f oder A...F bestehen. Sie darf keine führenden oder endenden Leerzeichen haben. Die Leerzeichen dürfen nur auf der Bytegrenze verwendet werden.
Binäre Zeichenketten dürfen nur aus Ziffern 0 und 1 bestehen. Leerzeichen dürfen nur auf der 4-Bit-Grenze aufgesetzt werden.
16
Sprungmarke nicht gefunden.
Die Anweisung SIGNAL wurde für eine im Programm nicht vorhandene Sprungmarke ausgeführt oder ein Fehler wurde während der Ausführung des Programms entdeckt, für den die in der Anweisung SIGNAL ON angegebene Spungmarke nich vorhanden ist.
17
Unerwartete PROCEDURE.
Die PROCEDURE-Anweisung wurde auf der falschen Position gefunden. Es kann vorkommen, wenn die PROCEDURE-Anweisung nicht die erste Anweisung nach dem Aufruf der internen Prozedur ist oder wenn diese Anweisung nicht durch den Aufruf sonder durch den normalen Ablauf erreicht wurde.
18
THEN erwartet.
Die THEN-Klausel muss jede IF- oder WHEN-Klausel. folgen. Der REXX-Interpreter hat an dieser Stelle eine andere Klausel gefunden.
19
Symbol oder Zeichenkette erwartet.
Ein Symbol oder ein Name (eine Zeichenkette) wird in der ADDRESS-, CALL-, NAME-, SIGNAL-, TRACE- oder PARSE-Anweisung erwartet, wurde aber nicht gefunden. Entweder fehlt das Symbol bzw. der Name oder wurde irrtümlich ein Sonderzeichen (wie z. B. eine Klammer) eingeführt.
20
Symbol erwartet.
Ein Symbol wird in der CALL ON-, CALL OFF-, END-, ITERATE-, LEAVE-, NUMERIC-, PARSE-, SIGNAL ON-, oder SIGNAL OFF-Anweisung oder eine Symbol- bzw. eine Referenzliste wird in der DROP-oder EXPOSE-Anweisung erwartet, wurde aber nicht gefunden. Entweder fehlt das Symbol oder hat der REXX-Interpreter ein anderes Token gefunden.
21
Ungültige Daten am Ende der Klausel.
Klauseln, die ohne einen Ausdruck oder einen Symbol verwendet werden müssen, wie z. B. SELECT oder NOP, wird von einem Token anderem als Kommentar gefolgt.
22
Ungültiges Literal.
Ein Literal beinhaltet ungültige Zeichen. Das könnte geschehen, weil manche Zeichen nicht möglich sind oder weil der erweiterte Zeichensatz verwendet wird und manche Zeichenkombinationen nicht erlaubt sind.
23
Ungültiger Datensatz.
Ein Datensatz, der ein Ergebnis eines Ausdruck ist, beinhaltet ungültige Zeichen.Das könnte geschehen, weil manche Zeichen nicht möglich sind oder weil der erweiterte Zeichensatz verwendet wird und manche Zeichenkombinationen nicht erlaubt sind.
24
Ungültige TRACE-Anforderung.
Diese Fehlermeldung wird ausgegeben wenn:
  • Die Option der TRACE-Anweisung nicht mit A, C, E, F, I, L, N, O, oder R startet.
  • Während einer inaktiven Debugging wurde eine nicht ganze Zahl eingegeben.
25
Ungültiges Hilfsschlüsselwort gefunden.
Auf Stelle eines Hilfsschlüsselwortes wurde ein unerwertetes Token entdeckt. Zum Beispiel, die NUMERIC-Anweisung muss entweder vom Token DIGITS oder FUZZ oder FORM gefolgt sein.
26
Eine Ganzzahl erwartet.
Es wurde ein Ausdruck gefunden, deren Ergebnis keine an dieser Stelle erwartete Ganzzahl ist oder die Limitierung der NUMERIC DIGITS-Anweisung wurde überschritten (Standardwert: 999 999 999).
27
Ungültige DO Syntax.
Ein syntaktischer Fehler in einer DO-Anweisung wurde entdeckt. Zum Beispiel mehrfaches Verwenden der Hilfsschlüsselwörter BY, TO, FOR, WHILE oder UNTIL oder falsche bzw. keine Eingabe der Steuervariablen.
28
Ungültiges LEAVE oder ITERATE.
Die LEAVE- oder ITERATE-Anweisung wurde auf der falschen Stelle angewendet: Entweder ausserhalb einer aktiven Schleife oder der in der Anweisung angegebene Name stimmt mit keiner Steuervarieblen von irgendeiner aktiven Schleife.
29
Umgebungsname zu lang.
Der in der ADDRESS-Anweisung eingegebene Umgebungsname ist zu lang für das System auf dem der Interpreter läuft.
30
Name oder Literal zu lang.
Ein Variablenneme, ein Label, oder ein Literal ist länger als implementierter Limit von 250 Zeichen. Es gilt auch für die zugewisenen Namen z. B. einer Punktvariablen. Mögliche Ursachen sind:
  • Unerwartete Indexierung einer Punktvariablen
  • Vergessen der abschließenden Hochkoma oder Anführungszeichen für eine Zeichenkette
  • Verwendung eines Apostrophs in einer Zeichenkette. Z. B. 'don't' an Stelle von 'don''t' oder "don't"
31
Name beginnt mit Nummer oder "." (Punkt).
Es wurde eine Variable entdeckt, deren Name mit einer Ziffern oder mit einem Punkt (.) anfängt. Dieser Variablen kann kein Wert zugeordnet werden, weil man im ooREXX keine numerische Konstanten neu definieren kann.
33
Ungültiges Ausdrucksergebnis.
Das Ergebnis eines Ausdrucks ist nicht der erwartete Wert oder Datentyp.
34
Logischer Wert nicht 0 oder 1.
In der IF-, WHEN-, DO WHILE- oder DO UNTIL-Anweisung wurde ein Ausdruck gefunden, deren Ergebnis nicht 0 oder 1 ist. Jeder Wert einer logischen Abfrage musst den Wert 0 oder 1 verweisen. Zum Beispiel die Anweisung
	If value Then Call Continue
	Else Exit rc
funktioniert nur wenn der Wert von value entweder 0 (beenden des Programms) oder 1 ist (weitermachen mit der Prozedur Continue).
35
Ungültiger Ausdruck.
Ein Ausdruck beinhaltet syntaktischen Fehler, zum Beispiel:
  • Ein erwarteter Ausdruckist fehlt.
  • Ein Ausdruck wurde mit einem Oparatorzeichen beendet.
  • Zwei Operatoren wurden nacheinander angewendet.
  • Eine abschließende (rechte) Klammer wurde vergessen.
  • Sonderzeichen wurden in einem Ausdruck ohne Hochkomata oder Einführungszeichen angewendet.
36
Unpaariges "(" oder "[" im Ausdruck.
Abschließende Klammer ")" oder abscließende eckige Klammer "]" wurde nicht gefunden. Um eine einfache Klammer in einem Befehl anzuwenden muss sie in den Anführungszeichen oder Hochkommata angeschlossen werden.
37
Unerwartetes ")", "]" oder ",".
Entweder die Komma "," oder die abschließende (rechte) Klammer ")" oder die abschließende (rechte) eckige Klammer "]" wurden ausserrhalb einer Anweisung bzw. außerhalb eines Funktionsaufrufs gefunden. Zum Beispiel diese falschgeschriebene Anweisung:

Say Bitte N, J oder Leerzeichen eingeben

muss so geschrieben werden:

Say "Bitte N, J oder Leerzeichen eingeben"

38
Ungültige Schablone oder Muster.
Entweder ein Sonderzeichen wurde in einer Schablone der PARSE-Anweisung gefunden (zum Beispiel "%" oder die Syntax eines dynamischen Schablonenmusters ist falsch (zum Beispiel kein Symbol wurde hinter der linken Klammer der variablen Schablone gefunden). Dieser Retur-Code wird auch ausgegeben, wenn das Schlüsselwort WITH der Anweisung PARSE VALUE vergessen wurde.
39
Überlauf im Auswertungsstapelspeicher.
Eine Anweisung ist für den REXX-Interpreter zu komplex aufgebaut.
40
Inkorrekter Routinenaufruf.
Ein inkorrekter Aufruf einer REXX-(Sub)Routine wurde entdeckt. Mögliche Ursachen sind u. A.:
  • Falsche Aufrufparameter (Argumente) wurden an eine eingebaute Funktion übergeben.
  • Zu viele Argumente wurden an eine eingebaute, interne oder externe Funktion übergeben
  • Eine externe Routine ist nicht mit dem REXX-Interpreter kompatibel.
  • Eine nicht existierende Routine worde aufgerufen
Die letzte Möglichkeit kann entstehen, wenn ein Operator vor der linken Klammern "%" in einem Ausdruck vergessen wurde, zum Beispiel es wurde Time(a+b) an Stelle von Time*(a+b) geschrieben.
41
Fehler bei der arithmetischen Konvertierung .
Ein Argument in einem arithmetischen Ausdruck ist keine gültige Zahl oder besitzt einen Exponent, der ausserhalb des erlaubten Bereichs von -999 999 999 bis +999 999 999 liegt.

Üblichen Ursachen: es wurde ein Variablenname falsch geschrieben oder die Anfürungszeichen für den arithmetischen Operator in einem Ausdruck wurden vergessen.

42
Arithmetischer Überlauf/Unterlauf.
Ergebnis eines arithmetischen Ausdrucks braucht einen Exponent, der außerhalb des erlaubten Bereichs von neun Ziffern liegt (größer als 999 999 999 oder kleiner als -999 999 999 ist).

Dieser Fehler kann vorkommen beim Versuch einen Ausdruck zu berechnen z. B. beim dividieren durch Null oder bei der iterativen DO-Schleife.

43
Routine nicht gefunden.
Eine Funktion, in einer Anweisung oder ein Unterprogramm, das mit der CALL-Instruktion aufgerufen wurde, kann nicht im aktuellen Suchpfad gefunden werden. Mögliche Ursachen:
  • Der spezifizierte Prozedurname oder die Sprungmarke ist in dem Programm nicht vorhanden.
  • Es ist keine eingebaute Funktion (built-in function).
  • Der Interpreter kann diese Prozedur ausserhalb des Programms nicht finden.
Mögliche Ursache kann ein Tippfehler im Funktionsnamen sein oder, wenn der Fehler an einer Stelle entstanden ist, wo kein Aufruf erwartet war, das Zeichen für die linke Klammer wurde ohne des voranstehenden Operators bzw. des Trennzeichens angewendet. Zum Beispiel die arithmetische Anweisung für a*(b+c) wurde ohne Multiplikationsoperator "*" angewendet: a(b+c).
44
Eine Funktion gab keine Daten zurück.
Eine Routine wurde in einer Anweisung (als Funktion) aufgerufen. Diese Routine läuft fehlerfrei ab, aber liefert keine Daten zum verwenden in der Anweisung zurück. Entweder wurde ein Programm aufgerufen, das als ein Unterprogramm ein Befehl programmiert wurde, als Funktion aufgerufen oder wurde in dieser Routine vergessen einen Wert der RETURN-Anweisung zuzuordnen. Eine Funktion muss immer einen Wert zurückgeben, auch wenn es "nur" eine Nullzeichenkette (Zero-String) ist.
45
Bei der RETURN-Anweisung sind keine Daten angegeben.
Ein REXX-Programm wurde als Funktion aufgerufen, aber es endet ohne irgendwelche Daten über die RETURN-Anweisung an den Aufrufer zurückzuliefern.
46
Ungültiger Variablenverweis.
Die Syntax bei der variablen Referenzierung innerhalb der Anweisung ARG, DROP, EXPOSE, PARSE, PULL oder PROCEDURE ist fehlerhaft. Variable Referenzierung erlaubt eine Liste der Variablen über eine Variable an diese Anweisungen anzuhängen. Die Variable, die die Variablenliste beinhaltet, muß in runden Klammern angegeben werden. Zum Beispiel:
...
adrListe = "nachname vorname strasse nummer plz ort"
...
SayAddress: Prozedure Expose (adrListe)
...
Diese RC deutet darauf hin, dass entweder die rechte Klammer vergessen wurde oder der Name der Variablen falsch ist (nicht existiert).
47
Unerwatere Label.
Es wurde eine Label (Sprungmarke) innerhalb einer INTERPRET-Anweisung angewendet oder wehrend der interaktiven Programmverfolgung (interactive trace) eingegeben.
48
Ausfall im Systemdienst.
Der REXX-Interpreter hat die Verarbeitung des Programs auf Grund eines Fehlers in Systemdiensten, wie zum beispiel Datenein- bzw. Ausgabe, oder Bearbeitung einer externen Datenwarteschlange, angehalten.
49
Interpretationsfehler.
Ein schwerwiegender Fehler wurde wehrend des Ausführen oder wehrend der internen Konsistenzprüfung des Programms .
88
Falscher Aufrufparameter.
Ein Argument, das beim Aufruf an eine Funktion oder Prozedur übergeben wurde ist fehlerhaft.
89
Variable erwartet.
Eine Anweisung erwartet eine Variable, die durch diese Anweisung zugeordnet bzw. verarbeitet werden könnte.
90
Externer Name nicht gefunden.
Eine externe Klasse, Methode oder Routine (die mit der Option EXTERNAL der Anweisung ::CLASS, ::METHOD oder ::ROUTINE oder als zweiter Parameter von NEW angegeben wurde) kann nicht gefunden werden.
91
Kein Folgeobjekt.
Eine Methode liefert den erwarteten Ergebnissobjekt nicht zurück.
92
OLE-Fehler.
Entweder ein unbekannter OLE-Fehler wurde entdeckt oder wurde ein Fehler bei der Konvertierung eines OLE-Objekts in ein REXX-Objekt gefunden.
93
Inkorrekter Methodenaufruf.
Die angegebene Methode, eingebaute Funktion oder externe Routione existiert zwar, wurde aber auf inkorrektre Weise verwendet.
97
Objekt-Methode nicht gefunden.
Im Objekt ist die angegebene Methode nicht vorhanden. Oft ist eine nicht initialisierte Variable für diesen Fehler verantwortlich.
98
Ausführungsfehler.
Der REXX-Interpreter entdeckt einen spezifischen Fehler wehrend der Ausführung des Programms.
99
Umsetzungsfehler.
Ein Syntax-Fehler wurde entdeckt.
Your privacy: This web site has no cookies, no advertising and does not provide access data to anyone for any reason.
Copyright © Janosch R. Kowalczyk 1999, 2009. All rights reserved.
Most recent revision on 22 Dec 2009 (356) - 13:13:32
Jakoxx Logo