Kompilierte Prozedur identifizieren
Das Kommando COMPILE-PROCEDURE schreibt in die erste Zeile einer kompilierten Prozedur die folgende Identifizierung in Textform:
/ ///COMPILED-PROCEDURE///
Der Code des Zwischenformats wird direkt nach diesem Satz generiert. Diese Identifizierung wird von SDF-P-BASYS benutzt, um die kompilierte Prozedur von der S-Prozedur zu unterscheiden.
Darüber hinaus dient sie jeder anderen Systemkomponente, jedem Dienstprogramm oder jeder Benutzeranwendung zur Kenntlichmachung, dass das gelesene Objekt als eine Prozedur aufgefasst werden muss, die mit CALL-PROCEDURE aufgerufen werden kann. Dazu benutzen S-Prozeduren und kompilierte Prozeduren dieselben Erkennungszeichen (siehe auch "Prozedur-Interpreter "): Sie müssen mit /<kommando>
beginnen und das Kommando darf kein SET-LOGON-PARAMETERS (bzw. LOGON) oder BEGIN-PROCEDURE (bzw. PROCEDURE) sein.
Kompilierte Prozedur variabel gestalten
Im Gegensatz zu Quellprozeduren können kompilierte Prozeduren nicht mit Text-Editoren geändert bzw. modifiziert werden. Der Endbenutzer hat so keine Möglichkeit, kompilierte Prozeduren für seine Zwecke anzupassen. Darum sollte der Entwickler der Text-Prozedur unabhängige Anpassungsmechanismen in die Prozedur einbauen, d.h. z.B:
Prozedur-Parameter benutzen
Möglichkeiten zum Einlesen von Variablen durch Bildschirmeingabe schaffen (durch READ-VARIABLE)
Möglichkeiten zum Einlesen von Variablenmengen aus einer Textdatei bereitstellen (durch READ-VARIABLE)
Variablenbehälter mit einfachen Variablen einbauen
Prozedurausgänge für S-Prozeduren durch nicht kostenpflichtige Funktionen in die kompilierte Prozedur einbauen (z.B. mit CALL-PROCEDURE oder INCLUDE-PROCEDURE)
Job-Variable benutzen usw.
Hinweise
S-Prozeduren, die durch kompilierte Prozeduren in Listenvariablen oder mit einem Texteditor zur Laufzeit erzeugt werden, sind nicht selbst wiederum kompilierte Prozeduren. D.h. wenn kompilierte Prozeduren ohne das Subsystem SDF-P ausgeführt werden sollen, können sie zwar andere S-Prozeduren erzeugen, die kostenpflichtige SDF-P-Funktionen benutzen, aber sie können diese zur Laufzeit nicht ausführen lassen. Desgleichen können keine kostenpflichtigen SDF-P-Funktionen benutzt werden, wenn eine kompilierte Prozedur während der Laufzeit durch die Taste
oder HOLD-PROCEDURE unterbrochen wird und das Subsystem SDF-P nicht geladen ist.Es werden nur Fehler aufgedeckt, die während der Analyse von SDF-P-Kontrollstrukturen nach SYSOUT gemeldet werden. Es werden also nicht die Eingabe-Kommandos überprüft, sondern nur die Strukturen der Prozedur.
Wenn die Syntaxdateien der SDF-P-Kontrollflusskommandos zwischen der Kompila-tions-Zeit und der Laufzeit verändert werden, können inkompatible Änderungen zum Absturz der kompilierten Prozedur führen. Die Konsequenzen sind hier dieselben wie bei Text-Prozeduren, jedoch wird der Fehler nicht zur Aufrufzeit gemeldet, sondern erst zur Laufzeit der Kommandos der kompilierten Prozedur.
Kompilierte Prozeduren werden vom Prozedur-Compiler in Behälter abgelegt. Sie können auch ohne Konsequenzen für ihre Ausführung in andere Behälter kopiert werden, allerdings nicht in Variablenbehälter.
Nicht-S-Prozeduren können nicht kompiliert werden.