Anwendungsgebiet: PROCEDURE
Kommandobeschreibung
Mit dem Kommando SET-PROCEDURE-OPTIONS kann der Benutzer die Eigenschaften einer S-Prozedur festlegen. Das Kommando ist optional. Wird es verwendet, so muss es das erste Kommando des Prozedurkopfs sein. Wird es nicht verwendet, sind die Eigenschaften gemäß den Voreinstellungen von SDF-P vereinbart. Folgende Einstellungen können im Kommando SET-PROCEDURE-OPTIONS getroffen werden (in Klammern die Voreinstellung von SDF-P):
Zugelassener Prozeduraufruf (CALLER=*ANY)
Implizite Deklaration von S-Variablen (IMPLICIT-DECLARATION=*YES)
Umfang der Protokollierung (LOGGING=*YES)
Unterbrechung der Prozedur (INTERRUPT-ALLOWED=*YES)
Format der Prozedur (INPUT-FORMAT=*FREE-RECORD-LENGTH)
Variablenersetzung innerhalb von Datensätzen (DATA-ESCAPE-CHAR=*NONE)
SYSFILE-Umgebung der aktuellen Prozedurstufe (SYSTEM-FILE-CONTEXT=*STD)
Fehlerbehandlung, wenn Eingabedaten und Kommandos gemischt werden (DATA-ERROR-HANDLING=*YES)
Einstellung für die Jobvarialen-Ersetzung (Voreinstellung im Dialog JV-REPLACEMENT=*AFTER-BUILTIN-FUNCTION; in S-Prozeduren JV-REPLACEMENT=*NO)
Einstellung der Fehlerbehandlung (ERROR-MECHANISM=*SPIN-OFF-COMPATIBLE)
Unterdrücken ausgewählter SDF-P-Meldungen (SUPPRESS-SDP-MSG=*NONE)
Coded-Character-Set (CCS) für die Umsetzung von Klein- in Großbuchstaben und umgekehrt (TRANSLATION-CCS=*STD)
Hinweise
Voreinstellungen des Kommandos, die in der aktivierten Syntaxdatei modifiziert wurden, gelten für die Prozedur nur bei expliziter Angabe des SET-PROCEDURE-OPTIONS-Kommandos.
SET-PROCEDURE-OPTIONS darf nur einmal und dann nur als erstes Kommando der Prozedur aufgerufen werden (siehe auch Abschnitt „Prozedurkopf erstellen“).
Format
SET-PROCEDURE-OPTIONS |
CALLER = *ANY / *CALL / *INCLUDE ,IMPLICIT-DECLARATION = *YES / *NO ,LOGGING-ALLOWED = *PARAMETERS(...) / *YES / *NO *PARAMETERS(...) CMD = *YES / *NO ,DATA = *YES / *NO ,INTERRUPT-ALLOWED = *YES / *NO ,INPUT-FORMAT = *FREE-RECORD-LENGTH / *BY-SDF-OPTION ,DATA-ESCAPE-CHAR = *NONE / '&&' / '#' / '*' / '@' / '$' / *STD ,SYSTEM-FILE-CONTEXT = *STD / *SAME-AS-CALLER / *OWN ,DATA-ERROR-HANDLING = *YES / *NO ,JV-REPLACEMENT = *NONE / *AFTER-BUILTIN-FUNCTION ,ERROR-MECHANISM = *SPIN-OFF-COMPATIBLE / *BY-RETURNCODE ,SUPPRESS-SDP-MSG = *NONE / list-poss(2000): <alphanum-name 7..7> ,TRANSLATION-CCS = *STD / *EDF03IRV / *CURRENT |
Operandenbeschreibung
CALLER =
Vereinbart, mit welchen Kommandos die Prozedur aufgerufen werden darf.
CALLER = *ANY
Die Prozedur darf sowohl mit CALL-PROCEDURE als auch mit INCLUDE-PROCEDURE aufgerufen werden (ENTER-PROCEDURE setzt intern ein CALL-PROCEDURE-Kommando ab).
CALLER = *CALL
Die Prozedur darf nur mit CALL-PROCEDURE (oder ENTER-PROCEDURE) aufgerufen werden.
CALLER = *INCLUDE
Die Prozedur darf nur mit INCLUDE-PROCEDURE aufgerufen werden.
IMPLICIT-DECLARATION = *YES / *NO
Gibt an, ob implizite Deklaration von Variablen erlaubt ist.
LOGGING-ALLOWED =
Gibt an, ob Protokollierung für die Prozedur erlaubt ist und was protokolliert werden darf.
LOGGING-ALLOWED = *PARAMETERS(...)
Legt in den nachfolgenden Angaben fest, was protokolliert werden darf.
CMD = *YES / *NO
Gibt an, ob Kommandos protokolliert werden dürfen.
DATA = *YES / *NO
Gibt an, ob Daten protokolliert werden dürfen.
LOGGING-ALLOWED = *YES
Protokollierung ist erlaubt, das heißt, sowohl Kommandos als auch Daten dürfen protokolliert werden.
LOGGING-ALLOWED = *NOProtokollierung ist nicht erlaubt.
INTERRUPT-ALLOWED = *YES
Gibt an, dass die Prozedur mit der Funktionstaste unterbrochen und mit dem Kommando RESUME-PROCEDURE fortgesetzt werden darf.
INTERRUPT-ALLOWED = *NO
Gibt an, dass die Prozedur nicht mit der Funktionstaste unterbrochen werden kann.
INPUT-FORMAT =
Bezeichnet das Eingabeformat der Prozedursätze.
INPUT-FORMAT = *FREE-RECORD-LENGTH
Sätze werden in voller Länge interpretiert. Auf das Fortsetzungszeichen dürfen bis zum Satzende nur noch Leerzeichen folgen.
INPUT-FORMAT = *BY-SDF-OPTION
Das Eingabeformat der Prozedursätze ist über das Kommando MODIFY-SDF-OPTIONS, Operand CONTINUATION festgelegt (siehe Handbuch „Kommandos“ [3]).
Der Prozedursatz, der das Kommando SET-PROCEDURE-OPTIONS enthält, wird grundsätzlich in voller Länge interpretiert (entspricht der Angabe FREE-RECORD-LENGTH).
DATA-ESCAPE-CHAR =
Legt das Escape-Zeichen in Datensätzen fest. Das Escape-Zeichen ist das Zeichen, das die Ausdrucksersetzung einleitet.
DATA-ESCAPE-CHAR = *NONE
In Datensätzen soll keine Ausdrucksersetzung erfolgen.
DATA-ESCAPE-CHAR = '&&' / '#' / '*' / '@' / '$'Legt ein Escape-Zeichen fest.
DATA-ESCAPE-CHAR = *STD
Als Escape-Zeichen gilt das Zeichen &.
SYSTEM-FILE-CONTEXT =
Gibt an, mit welcher Systemdatei-Umgebung die Prozedur ablaufen soll.
SYSTEM-FILE-CONTEXT = *STD
Es wird eine eigene Systemdatei-Umgebung eingerichtet. Die Systemdatei SYSDTA wird automatisch der Systemdatei SYSCMD (also der Prozedurdatei) zugewiesen. Für die anderen Systemdateien werden die Zuweisungen des Aufrufers übernommen. Die Änderung von Zuweisungen gilt nur innerhalb der aktuellen Prozedurstufe. Bei Prozedurende erhalten die Systemdateien wieder die Zuweisungen des Aufrufers.
SYSTEM-FILE-CONTEXT = *SAME-AS-CALLER
Die Prozedur läuft in der Systemdatei-Umgebung des Aufrufers ab. Die Änderung von Zuweisungen innerhalb der aktuellen Prozedurstufe wirkt sich deshalb immer auf die Sys-temdatei-Umgebung des Aufrufers aus.
SYSTEM-FILE-CONTEXT = *OWN
Es wird eine eigene Systemdatei-Umgebung eingerichtet. Für alle Systemdateien werden die Zuweisungen des Aufrufers übernommen (auch für SYSDTA!). Die Änderung von Zuweisungen gilt nur innerhalb der aktuellen Prozedurstufe. Bei Prozedurende erhalten die Systemdateien wieder die Zuweisungen des Aufrufers.
Die Einstellung *OWN entspricht auch dem bisherigen Verhalten bei Nicht-S-Prozeduren.
DATA-ERROR-HANDLING =
Vereinbart, dass in bestimmten Fällen die Fehlerbehandlung ausgelöst wird.
DATA-ERROR-HANDLING = *YES
Vereinbart, dass in folgenden Fällen die Fehlerbehandlung ausgelöst wird:
wenn eine Prozedurzeile Daten enthält, wo Kommandos erwartet werden
wenn in Datenzeilen eine geforderte Ausdrucksersetzung nicht durchgeführt werden kann
wenn ein Datensatz ein einzelnes Escape-Zeichen enthält
DATA-ERROR-HANDLING = *NO
Es wird keine Fehlerbehandlung in den oben beschriebenen Fällen ausgelöst; &varname bleibt in den Daten unverändert stehen, falls varname weder als Funktion noch als Variable bekannt ist.
JV-REPLACEMENT =
Gibt an, ob bei der Ausdrucksersetzung auch eine Jobvariablenersetzung stattfinden kann.
JV-REPLACEMENT = *NONE
Bei der Ausdrucksersetzung werden Namen nicht als Jobvariablen-Namen interpretiert.
JV-REPLACEMENT = *AFTER-BUILTIN-FUNCTION
Bei einem Ausdruck der Form &(name) wird name als Jobvariablen-Name interpretiert, wenn es keine Variable oder vordefinierte Funktion dieses Namens gibt. Dieser Operandenwert soll ein zu Nicht-S-Prozeduren kompatibles Verhalten bei der Ausdrucksersetzung ermöglichen. Da der Jobvariablenname jederzeit durch neue Variablendeklarationen oder vordefinierte Funktionen überlagert werden kann, wird dem Anwender dringend empfohlen, diesen Operandenwert nicht einzustellen, sondern die Jobvariablenersetzung durch Verwendung der vordefinierte Funktion JV() durchzuführen. Also: &(JV('name')).
ERROR-MECHANISM =
Gibt an, ob die Fehlerbehandlung kompatibel zum Spin-Off-Verhalten von Nicht-S-Prozeduren ausgelöst oder ob Subcode1 ungleich Null berücksichtigt wird. Die Einstellung ist für die Fehlerbehandlung von Anweisungen wirkungslos.
ERROR-MECHANISM = *SPIN-OFF-COMPATIBLE
Die Fehlerbehandlung wird kompatibel zum bisherigen Spin-Off-Verhalten ausgelöst. Der Subcode1 wird nicht berücksichtigt. (Damit wird sichergestellt, dass das Fehlerverhalten von S-Prozeduren, die bereits in BS2000 V10.0 erstellt wurden, kompatibel bleibt).
Hinweis
Die Einstellung ERROR-MECHANISM=*SPIN-OFF-COMPATIBLE wirkt grundsätzlich S-Prozedur-lokal. Die Propagierung eines Fehlers in die rufende Prozedur geschieht ausschließlich über den Subcode1.
D. h. insbesondere, dass das implizite Verlassen einer *SPIN-OFF-COMPATIBLE-S-Prozedur bei aktivem Spin-Off und Subcode1 == 0 in der rufenden *SPIN-OFF-COMPATIBLE-S-Prozedur bzw. Nicht-S-Prozedur NICHT als Fehler gewertet und somit der Spin-Off dort deaktiviert wird.
ERROR-MECHANISM = *BY-RETURNCODE
Die Fehlerbehandlung wird ausgelöst, wenn der Subcode1 des letzten Kommando-Returncodes ungleich Null ist. Das Spin-Off-Verhalten wird nicht berücksichtigt. Bei der Einstellung *BY-RETURNCODE muss die Fehlerbehandlung in S-Prozeduren auf die Kommando-Returncodes der Kommandos abgestimmt werden.
Hinweis
Um sich vor späteren Änderungen in der Anwender-Syntaxdatei bezüglich der Voreinstellung zu schützen, sollte der gewählte Wert explizit in der Prozedur angegeben werden.
SUPPRESS-SDP-MSG =
Bestimmt, ob die Ausgabe bestimmter SDF-P-Meldungen (Meldungsklasse SDP) unterdrückt werden soll. Die Option gilt nur in der aufrufenden Prozedur (wird nicht weitervererbt).
SUPPRESS-SDP-MSG = *NONE
Die Meldungsausgabe wird nicht unterdrückt; alle SDF-P-Meldungen werden ausgegeben.
SUPPRESS-SDP-MSG = list-poss(2000): <alphanum-name 7..7>
Menge der SDF-P-Meldungen, die nicht ausgegeben werden sollen.
TRANSLATION-CCS =
Gibt den Coded-Character-Set (CCS) an, den die vordefinierten SDF-P-Funktionen LOWER-CASE() und UPPER-CASE() bei der Umsetzung in Klein- oder Großschreibung verwenden sollen. Die Verwendung eines CCS ungleich EDF03IRV ist nur möglich, wenn XHCS verfügbar ist.
Der CCS muss ein 8-Bit-Code sein, 16-Bit-Codes (UTFE, UNICODE) werden nicht unterstützt.
TRANSLATION-CCS = *STD
Das Verhalten kann systemglobal über einen optionalen Rep für SDF-P-BASYS gesteuert werden: Im Auslieferungszustand, also ohne Einsatz des Reps, wird kompatibel der Standardzeichensatz EDF03IRV verwendet, mit dem Rep ist *STD gleichbedeutend mit *CURRENT.
TRANSLATION-CCS = *EDF03IRV
Der Standardzeichensatz EDF03IRV wird verwendet (kompatibles Verhalten).
TRANSLATION-CCS = *CURRENT
Der dem Eingabestrom aktuell zugewiesene CCS wird verwendet.
Hinweis
String-Literale aus Prozeduren werden vom System bereits beim Einlesen in ein EBCDIC-kompatibles Format gebracht. Die Angabe eines CCS (expliziter Name oder implizit über Task-Einstellung) ist daher nur sinnvoll, wenn es sich um einen (erweiterten) EBCDI-Code wie z.B. EDF041 handelt, oder wenn statt String-Literalen z.B. Variableninhalte verarbeitet werden, die tatsächlich im angegeben CCS codiert wurden (z.B. mit der vordefinierten Funktion FROM-X-LITERAL).
Kommando-Returncode
Das Kommando SET-PROCEDURE-OPTIONS kann nur als erstes Kommando des Prozedurkopfes einer S-Prozedur verwendet werden. Fehler im Prozedurkopf erkennt SDF-P bei der Voranalyse und beendet den Prozeduraufruf.
Die Kommando-Returncodes können nur auftreten, wenn das Kommando außerhalb des Prozedurkopfs verwendet wird.
(SC2) | SC1 | Maincode | Bedeutung |
0 | CMD0001 | Ohne Fehler | |
1 | CMD0202 | Syntaxfehler | |
1 | SDP0118 | Kommando im falschen Kontext | |
3 | CMD2203 | Falsche Syntaxdatei | |
32 | CMD0221 | Systemfehler (interner Fehler) | |
130 | SDP0099 | Kein Adressraum mehr verfügbar |
Beispiel
Siehe Kommando MODIFY-PROCEDURE-OPTIONS, "MODIFY-PROCEDURE-OPTIONS Prozedureigenschaften während des Prozedurlaufs ändern ".