(call BS2000 procedures from the POSIX shell)
Die auszuführende BS2000-Prozedur wird in einem ENTER-JOB mit dem Kommando CALL-PROCEDURE gestartet. bs2do wartet synchron auf die Beendigung des ENTER-JOB.
Syntax
bs2do[ -DV][ -o outfile] procedure [[(]parameter[)]] |
Debugmode - temporäre Dateien werden nicht gelöscht und stehen für Diagnose zur Verfügung.
Verbose - Einzelschritte werden auf stdout protokolliert.
Die beim Start des ENTER-JOB geöffnete BS2000-Systemdatei SYSOUT wird in die POSIX-Datei outfile kopiert.
Der Name der POSIX-Datei, die eine Kopie der beim Start des ENTER-JOB geöffneten BS2000-Systemdatei SYSOUT aufnimmt. outfile ist ein beliebiger POSIX-Pfadname.
Der Name der Datei, die die auszuführende BS2000-Prozedur enthält. procedure ist ein beliebiger POSIX-Pfadname oder ein String bs2:BS2Name.
Die Parameter der auszuführenden BS2000-Prozedur. Die Angabe erfolgt entsprechendder SDF-Syntax des Operanden PROCEDUR-PARAMETERS des BS2000-Kommandos CALL-PROC, wobei die einschließenden runden Klammern optional sind. Für procedure und parameter gilt: Sonderzeichen (z. B. (, ), $) sind für die Shell zu entwerten. bs2do interpretiert den Operanden nicht, u. a. werden z. B. Schlüsselwörter in Schlüsselwortparametern nicht in Großbuchstaben umgesetzt. |
Datei
Eingabe-Dateien:
Ausgabe-Dateien:
|
Variable
BS2DOOPT POSIX-Pfadname einer Optionsdatei. Ist die Umgebungsvariable BS2DOOPT nicht definiert, so wird die standardmäßig installierte Optionsdatei optionfile verwendet. |
Hinweis
Ausführliche Beschreibung bs2do baut im BS2000 den Stapelauftrag #T.pid.ENTER auf, wobei pid die POSIX-Prozessnummer des Prozesses ist, der bs2do ausführt). Eingeleitet wird der Stapelauftrag durch
Liegt die Prozedur procedure im POSIX-Dateisystem, wird diese in die BS2000-Datei T.pid.PRO kopiert. Dann wird der Stapelauftrag gestartet:
Die Operanden PROCESSING-ADMISSION, HOST, JOB-CLASS und JOB-PRIORITY sind über die Optionsdatei optionfile einstellbar. In dem Stapelauftrag wird die Systemdatei SYSOUT der Datei #T.<pid>.OUT zugeordnet, die Jobvariable #BS2DOJV eingerichtet und anschließend die Prozedur procedure aufgerufen, der Name der Jobvariablen #BS2DOJV ist über die Optionsdatei optionfile einstellbar:
Der Operand LOGGING ist über die Optionsdatei optionfile einstellbar. Der Operand FROM-FILE wird nur angegeben, wenn procedure im POSIX-Dateisystem liegt, ansonsten wird der String procedure unverändert übernommen. Sonderzeichen (z.B. (,),$) sind für die Shell zu entwerten. Nach Abschluss der Prozedur procedure wird die Systemdatei SYSOUT geschlossen und die POSIX-Shell gestartet.
Der Operand SHELL ist über die Optionsdatei optionfile einstellbar. Wurde in der Prozedur procedure keine Fehleranzeige gesetzt (/EXIT-PROCEDURE ERROR=NO), so wird an den Vaterprozess des Stapelauftrages das Signal SIGUSR1 als Endenachricht gesendet. Wurde in der Prozedur procedure die Fehleranzeige gesetzt (/EXIT-PROCEDURE ERROR=YES), wird der Inhalt der Jobvariablen #BS2DOJV und anschließend das Signal SIGUSR2 als Endenachricht an den Vaterprozess des Stapelauftrages gesendet. In beiden Fällen wird vorher bei angegebener Option -o outfile die Datei #T.pid.OUT in die POSIX-Datei outfile kopiert. Nach Beendigung der Shell werden alle Dateien T.pid gelöscht und der Stapelauftrag beendet. Alle temporären Dateien #T.pid werden ebenfalls gelöscht. Im Debugmode (Option -D) werden keine temporären Dateien, sondern ausschließlich Dateien T.pid angelegt, die bei Ende des Stapelauftrages nicht gelöscht werden. |
Die Optionsdatei
Die Optionsdatei ist aufgebaut nach dem Schema
Zeilen, die nicht mit einem gültigen Schlüsselwort keyword beginnen, werden ignoriert. Ausgenommen sind Fortsetzungszeilen. value kann über Zeilengrenzen mit dem Zeichen - fortgesetzt werden. Die folgende Liste zeigt die unterstützten Schlüsselwörter und die zugehörigen value-Angaben: BS2DOJV Jobvariablenname (optional). Wenn das Produkt Jobvariablen nicht zur Verfügung stellt, darf für dieses keyword kein value angegeben werden. SHELL Operanden von START-PROG zum Laden der POSIX-Shell PROCESSING-ADMISSION entsprechen den gleichnamigen Operanden von ENTER-JOB LOGGING entspricht dem gleichnamigen Operanden von CALL-PROC Die Standard-Optionsdatei /opt/BS2DO/options/bs2doopt.std: # # bs2do controlling job variable # (temporary JV in order to allow parallel calls within one userid) # BS2DOJV = #BS2DOJV # # BS2000 enter-job operands # PROCESSING-ADMISSION = SAME HOST = *STD JOB-CLASS = *STD JOB-PRIORITY = *STD # # BS2000 call-proc operands # LOGGING = NO # # optional shell configuration # #SHELL = *M($TSOS.SINLIB.POSIX-BC.vvv.SHELL,SH,RUN-MODE=ADVANCED,PROG-MODE=ANY) # |
Einschränkungen
Da bs2do nicht die BS2000-Sicherheitsmechanismen umgehen kann, sind Einschränkungen zu beachten, wenn PROCESSING-ADMISSION <> SAME in der Optionsdatei eingestellt ist:
|
Beispiel
In den folgenden Beispielen repräsentiert ein vorangestelltes DO: das Shellprompt, hinter dem Eingaben an die Shell folgen. Zeilen zwischen den Shellprompts sind Ausgaben des jeweiligen Kommandos. Beispielprozedur ist die Prozedur proc: /BEGIN-PROCEDURE PAR=YES(PROC-PAR=(&CMD='STA',&CMDPAR='L')) / / WRITE-TEXT T='-----> ''&CMD &CMDPAR''' / &CMD &CMDPAR / SKIP-COMMAND TO-LABEL=OK / / SET-JOB-STEP / MOD-JV JV-CONTENTS=#BS2DOJV,- / SET-VALUE=C'Command ''&CMD &CMDPAR'' failed' / SKIP-COMMAND TO-LABEL=ERR / /.ERR REMARK / WRITE-TEXT T='-----> DOING EXIT-PROCEDURE ERROR=YES' / EXIT-PROCEDURE ERROR=YES / /.OK REMARK / WRITE-TEXT T='-----> DOING EXIT-PROCEDURE ERROR=NO' / EXIT-PROCEDURE ERROR=NO / END-PROCEDURE Beispiel 1Prozedur proc in POSIX, einfache Auswertung des Endestatus.
Beispiel 2Prozedur proc in BS2000-Datei, Ausgabe von SYSOUT in POSIX
Beispiel 3Prozedur proc in BS2000-PLAM-Bibliothek, fehlerhafter Prozedurparameter
Beispiel 4Prozedur proc in POSIX, fehlerhafte Prozedurparameter, Umlenkung von stderr
|