Anwendungsgebiet: PROCEDURE
Kommandobeschreibung
Das Kommando COMPILE-PROCEDURE konvertiert eine S-Prozedur in eine kompilierte Prozedur, d.h. in ein Zwischenformat, das dann auch in Umgebungen benutzt werden kann, in denen das Subsystem SDF-P nicht zur Verfügung steht.
In kompilierten Prozeduren kann der volle Umfang von SDF-P benutzt werden. Das gilt auch, wenn diese Prozeduren in einer Umgebung gestartet werden, die nur SDF-P-BASYS enthält.
Hinweise
Das Kommando COMPILE-PROCEDURE ist Teil des Subsystems SDF-P. Es wird abgewiesen, wenn dieses Subsystem nicht geladen ist (auch wenn es in einer kompilierten Prozedur enthalten ist)
Es ist nicht möglich, bei den Operanden FROM-FILE und TO-FILE Wildcards anzugeben. Bei beiden Operanden ist es aber möglich, sowohl Dateien als auch Bibliothekselemente anzugeben.
Inkonsistente Angaben bei Ein- und Ausgabe werden als Semantikfehler bewertet, d.h. es wird die dafür vorgesehene Fehlerbehandlung angestoßen.
Fehlermeldungen werden nur nach SYSOUT gesendet. Diese Meldungen sind bis auf ein paar zusätzliche Compiler-spezifische Meldungen identisch mit denen von CALL-PROCEDURE bei einer aufgerufenen Prozedur.
Die compiler-spezifischen Meldungen sind:
SDP1300 PROZEDUR-COMPILER VERSION '(&00)' GESTARTET SDP1301 PROZEDUR-COMPILER NORMAL BEENDET SDP1302 PROZEDUR-COMPILER ABNORMAL BEENDET
Auch S-Prozeduren, die keine oder nur teilweise kostenpflichtige Funktionen von SDF-P nutzen, können mit COMPILE-PROCEDURE konvertiert und bei Installationen ohne das Subsystem SDF-P mit dem Subsystem SDFPBASY ausgeführt werden.
Format
COMPILE-PROCEDURE |
FROM-FILE = <filename 1..54 without-gen> / *LIBRARY-ELEMENT(...) *LIBRARY-ELEMENT(...) LIBRARY = <filename 1..54 without-gen> ,ELEMENT = <composed-name 1..64>(...) <composed-name 1..64>(...) VERSION = *HIGHEST-EXISTING / *UPPER-LIMIT / <composed-name 1..24> ,TYPE = J / <alphanum-name 1..8> ,TO-FILE = <filename1..54without-gen> / *LIBRARY-ELEMENT(...) / *DUMMY *LIBRARY-ELEMENT(...) LIBRARY = *SAME / <filename 1..54 without-gen> ,ELEMENT = *SAME(...) / <composed-name 1..64>(...) *SAME(...) VERSION = *SAME / *UPPER-LIMIT / *INCREMENT / *HIGHEST-EXISTING / <composed-name 1..24> <composed-name 1..64>(...) VERSION = *SAME / *UPPER-LIMIT / *INCREMENT / *HIGHEST-EXISTING / <composed-name 1..24> ,TYPE = SYSJ / <alphanum-name 1..8> |
Operandenbeschreibung
FROM-FILE =
Bezeichnet die Quellprozedur.
FROM-FILE = <filename 1..54 without-gen>
Name der Prozedurdatei.
FROM-FILE = *LIBRARY-ELEMENT(...)
Die Prozedur ist in einer PLAM-Bibliothek gespeichert.
LIBRARY = <filename 1..54 without-gen>
Name der PLAM-Bibliothek, die die Prozedur enthält.
ELEMENT = <composed-name 1..64>(...)
Name des Elements
VERSION =
Bezeichnet die Versionsnummer des Elements.
VERSION = *HIGHEST-EXISTING
Wählt die höchste existierende Versionsnummer.
VERSION = *UPPER-LIMIT
Wählt die höchste mögliche Versionsnummer.
VERSION = <composed-name 1..24>
Wählt die angegebene Versionsnummer.
TYPE= J / <alphanum-name 1..8>
Typ des Elements. Default-Typ ist J.
TO-FILE =
Gibt an, wo die kompilierte Prozedur gespeichert werden soll.
TO-FILE = <filename 1..54 without-gen>
Name der Datei, in der die kompilierte Prozedur gespeichert werden soll.
TO-FILE = *DUMMY
Es muss keine Prozedur kompiliert werden. Das Kommando überprüft nur die Prozedur (siehe dazu CALL-PROCEDURE EXECUTION = *NO).
TO-FILE = *LIBRARY-ELEMENT(...)
Die kompilierte Prozedur wird in einer PLAM-Bibliothek gespeichert.
LIBRARY = *SAME / <filename 1..54 without-gen>
Name der PLAM-Bibliothek, die die kompilierte Prozedur enthalten soll. Der Defaultwert ist die Bibliothek der Quellprozedur.
ELEMENT =
Name des Elements für die kompilierte Prozedur.
ELEMENT = *SAME(...)
Der Name des Elements ist derselbe wie bei der Quellprozedur.
VERSION =
Bezeichnet die Versionsnummer des Elements (nur bei S-Prozeduren).
VERSION = *SAME
Wählt dieselbe Versionsnummer wie bei der Quellprozedur.
VERSION = *UPPER-LIMIT
Wählt die höchste mögliche Versionsnummer.
VERSION = *INCREMENT
Die Versionsnummer des Elements wird erhöht.
VERSION = *HIGHEST-EXISTING
Wählt die höchste existierende Versionsnummer.
VERSION = <composed-name 1..24>
Wählt die angegebene Versionsnummer.
ELEMENT = <composed-name 1..64>(...)
Name des Elements
VERSION =
Bezeichnet die Versionsnummer des Elements (nur bei S-Prozeduren).
VERSION = *SAME
Wählt dieselbe Versionsnummer wie bei der Quellprozedur.
VERSION = *UPPER-LIMIT
Wählt die höchste mögliche Versionsnummer.
VERSION = *INCREMENT
Die Versionsnummer des Elements wird erhöht.
VERSION = *HIGHEST-EXISTING
Wählt die höchste existierende Versionsnummer.
VERSION = <composed-name 1..24>
Wählt die angegebene Versionsnummer.
TYPE= SYSJ / <alphanum-name 1..8>
Typ des Elements. Default-Typ ist SYSJ.
Kommando-Returncode
(SC2) | SC1 | Maincode | Bedeutung / garantierte Meldungen |
0 | CMD0001 | Ohne Fehler | |
1 | CMD0202 | Syntaxfehler | |
1 | SDP0118 | Kommando im falschen Kontext | |
1 | SDP0138 | Fehler bei Voranalyse der Prozedur garantierte Meldung: SDP0138 | |
1 | SDP0223 | Falsche Umgebung | |
3 | CMD2203 | Falsche Syntaxdatei | |
32 | CMD0221 | Systemfehler (interner Fehler) | |
64 | SDP0091 | Semantikfehler | |
130 | SDP0099 | Kein Adressraum mehr verfügbar |
Beispiel
Installation A: SDF-P ist gestartet
/ASSIGN-SYSLST TO-FILE=THE-RESULT-LISTING /MODIFY-JOB-OPTIONS LISTING=*YES / /"EINE FEHLERHAFTE PROZEDUR WIRD KOMPILIERT" /COMPILE-PROCEDURE *LIB(LIB=THE-PROC-LIB,EL=THE-ERRONEOUS-PROC),- / TO-FILE=*LIB-ELEMENT SDP1300 PROZEDUR-COMPILER VERSION 'V2.4A20' WURDE GESTARTET SDP0201 ES WURDE EIN UNVOLLSTÄNDIGES BLOCKSCHLIESSKOMMANDO BENUTZT : SDP1302 PROZEDUR-COMPILER WURDE MIT FEHLER BEENDET / /MODIFY-JOB-OPTIONS LISTING=*NO /ASSIGN-SYSLST TO-FILE=*PRIMARY /"LISTING: THE-RESULT-LISTING" / /... /"NACH DER KORREKTUR" /COMPILE-PROCEDURE *LIB(LIB=THE-PROC-LIB,EL=THE-CORRECT-PROC),- / TO-FILE=*LIB-ELEMENT SDP1300 PROZEDUR-COMPILER VERSION 'V2.4A20' WURDE GESTARTET SDP0302 PROZEDUR-COMPILER WURDE BEENDET
Installation B: SDF-P ist nicht gestartet:
/CALL-PROCEDURE *LIB(LIB=THE-PROC-LIB,EL=THE-CORRECT-PROC) % 1 1 /SET-PROCEDURE-OPTIONS % 2 1 /DECLARE-VARIABLE A(TYPE=INTEGER,INITIAL-VALUE=1) % 3 1 /WHILE (A < 3) % 4 1 /IF (NOT IS-CAT-FILE ('MYFILE.1')) % 4 1 /END-IF % 5 1 /A=A+1 % 6 1 /END-WHILE % 4 1 /IF (NOT IS-CAT-FILE ('MYFILE.2')) % 4 1 /CREATE-FILE MYFILE.2 % 4 1 /END-IF % 5 1 /A=A+1 % 6 1 /END-WHILE % 1 /EXIT-PROCEDURE ERROR=*NO