Anwendungsgebiet: PROCEDURE
Das Kommando ist Bestandteil von BS2000/OSD-BC (Stand der Beschreibung: V7.0). Der Aufrufer benötigt (im Gegensatz zu den SDF-P-Kommandos) die Privilegien STD-PROCESSING bzw. HARDWARE-MAINTENANCE.
Kommandobeschreibung
Das Kommando CALL-PROCEDURE startet eine gespeicherte Kommandofolge (Prozedur). Bei Abarbeitung werden darin enthaltene symbolische Parameter durch die im Kommandoaufruf angegebenen Werte (Operand PROCEDURE-PARAMETERS) ersetzt.
S-Prozeduren:
Als Aktualparameter können Variablen übergeben werden, über die die Prozedur auch Ausgabewerte zurückliefert.
Die Aktualparameter können als Stellungs- oder als Schlüsselwortparameter übergeben werden. Die Reihenfolge der Stellungsparameter entspricht dabei der dynamischen Reihenfolge der DECLARE-PARAMETER-Kommandos; die Namen der Schlüsselwörter entsprechen den Namen der formalen Prozedurparameter. Die Schlüsselwörter dürfen bis zur Eindeutigkeit abgekürzt werden.
Die Protokolierung wird im Kommandoaufruf eingestellt; ebenso, ob ein bereits geladenes Programm entladen werden darf.
Prozeduren können gespeichert werden als:
katalogisierte (auch temporäre) SAM- oder ISAM-Datei mit Sätzen variabler Länge
Element vom Typ J oder SYSJ einer PLAM-Bibliothek
S-Variable vom Typ Liste
Prozedur-Formate:
Text-Prozedur
Die S-Prozedur liegt im ursprünglichen Textformat vor. Volle SDF-P-Funktionalität kann nur verwendet werden, wenn bei Aufruf der Prozedur das kostenpflichtige Subsystem SDF-P geladen ist. In Bibliotheken sollte für Text-Prozeduren der Elementtyp J verwendet werden.Objekt-Prozedur
Die S-Prozedur im Textformat wurde mit dem Kommando COMPILE-PROCEDURE in ein Zwischenformat kompiliert. Diese Objekt-Prozedur kann, unabhängig von der Verfügbarkeit des Subsystems SDF-P, die volle SDF-P-Funktionalität nutzen (mit Ausnahme des Kommandos COMPILE-PROCEDURE). In Bibliotheken sollte für Objekt-Prozeduren der Elementtyp SYSJ verwendet werden (Default-Wert bei COMPILE-PROCEDURE).
Format
CALL-PROCEDURE |
FROM-FILE = <filename 1..54 without-gen> / *LIBRARY-ELEMENT(...) / *VARIABLE(...) *LIBRARY-ELEMENT(...) LIBRARY = <filename 1..54 without-gen> ,ELEMENT = <composed-name 1..64>(...) <composed-name 1..64>(...) VERSION = *HIGHEST-EXISTING / <composed-name 1..24> ,TYPE = *STD / *BY-LATEST-MODIFICATION / <alphanum-name 1..8> *VARIABLE(...) VARIABLE-NAME = <composed-name 1..255> ,PROCEDURE-PARAMETERS = *NO / <text 0..1800 with-low> ,LOGGING = *PARAMETERS(...) / YES / *NO / *PARAMETERS(...) CMD = *BY-PROC-TEST-OPTION / *YES / *NO ,DATA = *BY-PROC-TEST-OPTION / *YES / *NO ,UNLOAD-ALLOWED = *YES / *NO ,EXECUTION = *YES / *NO |
Operandenbeschreibung
FROM-FILE = <filename 1..54 without-gen> / *LIBRARY-ELEMENT(...) / *VARIABLE(...)
Name der Prozedurdatei.
FROM-FILE = *LIBRARY-ELEMENT(...)
Die Prozedur ist in einem PLAM-Bibliothekselement abgelegt.
LIBRARY = <filename 1..54 without-gen>
Name der PLAM-Bibliothek, die die Prozedurdatei als Element (Typ J oder SYSJ; siehe Operand TYPE) enthält.
ELEMENT = <composed-name 1..64>(...)
Name des Elements.
VERSION = *HIGHEST-EXISTING / <composed-name 1..24>
Version des Bibliothekelements. Voreingestellt ist HIGHEST-EXISTING, d.h. die Prozedur wird dem Element mit der höchsten Version entnommen.
TYPE = *STD / *BY-LATEST-MODIFICATION / <alphanum-name 1..8>
Bestimmt den Elementtyp, unter dem die Prozedurdatei in der PLAM-Bibliothek abgelegt ist.
TYPE = *STD
Die Prozedurdatei kann als Element des Typs SYSJ oder J abgelegt sein.
Das angegebene Element wird zuerst unter den Elementen vom Typ SYSJ gesucht. Falls es dort nicht existiert, wird unter den Elementen vom Typ J weitergesucht.
Eine Nicht-S-Prozedur kann nur als Element vom Typ J vorliegen.
Eine S-Prozedur kann sowohl als Text-Prozedur (ursprüngliches Textformat) als auch als Objekt-Prozedur (kompiliertes Zwischenformat) vorliegen. Zur Vereinfachung der Verwaltung beider Formate in einer Bibliothek sollten Text-Prozeduren als Element vom Typ J und Objekt-Prozeduren als Element vom Typ SYSJ ablegt sein. Mit dem Kommando COMPILE-PROCEDURE (Bestandteil des kostenpflichtigen Subsystems
SDF-P) wird aus einer Text-Prozedur vom Typ J standardmäßig eine Objekt-Prozedur vom Typ SYSJ (Default-Wert) erzeugt.
Die Angabe von TYPE=*STD (Default-Wert) stellt sicher, dass bei Einhaltung dieser Konvention Objekt-Prozeduren bevorzugt aufgerufen werden.
TYPE = *BY-LATEST-MODIFICATION
Die Prozedurdatei kann als Element des Typs SYSJ oder J abgelegt sein.
Existiert das angegebene Element sowohl als Typ SYSJ als auch J, wird das zuletzt geänderte Element aufgerufen. Bei gleichem Zeitstempel wird des Element vom Typ SYSJ aufgerufen.
Die Angabe von TYPE=*BY-LATEST-MODIFICATION stellt sicher, dass z.B. während der Testphase bei der Erstellung bzw. Erweiterung einer Prozedur das aktuellste Element aufgerufen wird.
TYPE = <alphanum-name 1..8>
Die Prozedurdatei wird ausschließlich unter den Elementen des angegebenen Typs gesucht.
FROM-FILE = *VARIABLE(...)
Die Prozedur ist in einer S-Variablen vom Typ Liste abgelegt.
VARIABLE-NAME = <composed-name 1..255>
Name der S-Variablen.
PROCEDURE-PARAMETERS = *NO / <text 0..1800 with-low>
Definiert die aktuellen Prozedurparameter; die Parameter müssen in Klammern eingeschlossen werden.
Zu Prozedurparametern siehe auch „Prozedurparameter übergeben“ff.
LOGGING = *PARAMETERS(...) / *YES / *NO
Steuert die Protokollierung des Prozedurablaufs.
Der Operand LOGGING wird bei Aufruf von Nicht-S-Prozeduren ignoriert, da die Protokollierung dort nur im Prozedurkopf vereinbart werden kann (siehe BEGIN-PROCEDURE, Operand LOGGING).
Bei Protokollierung einer S-Prozedur wird jede abgearbeitete Prozedurzeile mit vorangestellter Zeilennummer und Prozedurstufe ausgegeben.
Zu Protokollierung siehe auch „Protokollierung einstellen“ff.
LOGGING = *PARAMETERS(...)
Die Protokollierung kann getrennt eingestellt werden für Kommando-/Anweisungszeilen und Datenzeilen.
CMD = *BY-PROC-TEST-OPTION / *YES / *NO
Gibt an, ob Kommandos protokolliert werden sollen. Voreingestellt ist BY-PROC-TEST-OPTION, d.h. keine Protokollierung (entspricht *NO) bzw. der Wert, den der Benutzer mit dem Kommando MODIFY-PROC-TEST-OPTIONS als Voreinstellung gewählt hat (Bestandteil des kostenpflichtigen Subsystems SDF-P).
DATA = *BY-PROC-TEST-OPTION / *YES / *NO
Gibt an, ob Datenzeilen protokolliert werden sollen. Voreingestellt ist BY-PROC-TEST-OPTION, d.h. keine Protokollierung (entspricht *NO) bzw. der Wert, den der Benutzer mit dem Kommando MODIFY-PROC-TEST-OPTIONS als Voreinstellung gewählt hat (Bestandteil des kostenpflichtigen Subsystems SDF-P).
UNLOAD-ALLOWED = *YES / *NO
Legt fest, ob ein Programm, das zum Zeitpunkt des Prozeduraufrufs geladen ist, entladen werden darf.
Der Schutz vor Programmentladung ist nur für das Entladen mit den Kommandos LOAD-/START-EXECUTABLE-PROGRAM (bzw. LOAD-/START-PROGRAM) und CANCEL-PROGRAM gewährleistet.
Die Angabe YES wird ignoriert, wenn der Prozeduraufruf aus einer Prozedur erfolgt, für die UNLOAD-ALLOWED=*NO vereinbart wurde.
EXECUTION = *YES / *NO
Legt fest, ob die Prozedur nur zu Testzwecken analysiert werden oder auch ausgeführt werden soll.
Für Nicht-S-Prozeduren kann nur EXECUTION=*YES vereinbart werden.
Der Test ist mit MODIFY-SDF-OPTIONS (Operand MODE) möglich.
Kommando-Returncode
Die nachfolgenden Kommando-Returncodes werden nur zurückgegeben, wenn die aufgerufene Prozedur selbst keinen Kommando-Returncode liefert (z.B. EXIT-PROCEDURE wegen Fehlers nicht ausgeführt).
Kommando-Returncodes, deren Maincode mit „SSM“ beginnt, werden nur bei Aufruf einer Nicht-S-Prozedur zurückgegeben.
Kommando-Returncodes, deren Maincode mit „SDP“ beginnt, werden nur bei Aufruf einer S-Prozedur zurückgegeben.
(SC2) | SC1 | Maincode | Bedeutung |
0 | CMD0001 | Ohne Fehler | |
2 | 0 | SSM2058 | Protokoll-Typ-Fehler |
2 | 0 | SSM2065 | EOF auf Prozedurdatei, /END-PROC simuliert |
1 | SSM2036 | Unvollständiger Operand | |
1 | SSM2054 | Symbolischer Operandenfehler | |
1 | SSM2055 | Symbolischer Operandenfehler in /BEGIN-PROC | |
1 | SDP0138 | Fehler bei Voranalyse der Text-Prozedur oder Objekt-Prozedur fehlerhaft | |
1 | CMD0202 | Syntaxfehler | |
3 | CMD2203 | Falsche Syntaxdatei | |
32 | CMD0221 | Systemfehler (interner Fehler) | |
64 | SDP0093 | Nicht-S-Prozedur kann nur Element vom Typ J sein | |
64 | SDP0144 | Fehler bei Parameterübertragung | |
64 | SSM2052 | DVS-Fehler (Open-Fehler) | |
64 | SSM2053 | keine SAM/ISAM-Datei oder Datei beginnt nicht mit /BEGIN-PROC bzw. /PROC | |
64 | SSM2056 | Parameter von /CALL-PROC und /BEGIN-PROC passen nicht zusammen | |
64 | SSM2061 | Fehler bei Zugriff auf Bibilothekselement | |
64 | SSM2064 | Prozedurdatei kann nicht von entferntem Rechner geholt werden | |
130 | SDP0099 | Kein Adressraum mehr verfügbar | |
xx | xxxxxxx | sonstige Returncodes der aufgerufenen Prozedur |