Anwendungsgebiet: PROCEDURE
Kommandobeschreibung
Das Kommando REPEAT-CMD ermöglicht die wiederholte Ausführung eines Kommandos, wobei ein speziell gekennzeichneter Teil (Namensteil, Operand, Operandenwert) nacheinander durch die Elemente einer Eingabeliste substituiert wird. Diese Elemente können als Sätze in einer Datei, einem Bibliothekselement oder als Listenelemente einer S-Variablen spezifiziert oder direkt am Terminal eingegeben werden. Das angegebene Kommando wird für jedes Element der Eingabeliste aufgerufen.
Die Substitution kann prinzipiell an beliebiger Stelle des Kommandos erfolgen; sie kann auch an mehreren Stellen vereinbart werden. Die Wiederholung des Kommandos erfolgt aber immer nur in einfacher Schleife (keine Unterschleifen).
Es kann angegeben werden, ob in einem Selektionsmenü die Elemente der Eingabeliste nochmals zur Überprüfung ausgegeben werden sollen.
Das Kommando ist besonders zur Ausführung von Kommandos geeignet, die nicht die Angabe von mehreren Werten (list-possible-Option) unterstützen.
Format
REPEAT-CMD |
CMD = <text 0..1800 with-low> ,SUBSTITUTION-LIST = *TERMINAL / <filename 1..54 without-gen-vers> / *VARIABLE(...) / *LIBRARY-ELEMENT(...) *VARIABLE(...) VARIABLE-NAME = <composed-name 1..255> *LIBRARY-ELEMENT(...) LIBRARY = <filename 1..54 without-vers> ,ELEMENT = <composed-name 1..64>(...) <composed-name 1..64>(...) VERSION = *HIGHEST-EXISTING / <composed-name 1..24> ,TYPE = S / <alphanum-name 1..8> ,DIALOG-SELECTION = *NO / *YES ,CONTINUE-AFTER-ERROR = *YES / *NO |
Operandenbeschreibung
CMD = <text 0..1800 with-low>
Angabe des BS2000-Kommandos, das wiederholt ausgeführt werden soll. Die Angabe ist in runde Klammern einzuschließen. Als Platzhalter für zu substituierende Teile sind die Zeichen %* anzugeben. Der Kommandoname ist ohne führenden Schrägstrich anzugeben.Beispiel: CMD=(WRITE-TEXT TEXT='%*')
SUBSTITUTION-LIST = *TERMINAL / <filename 1..54 without-gen-vers> / VARIABLE(...) / *LIBRARY-ELEMENT(...)
Bezeichnet das Eingabemedium für die Elemente der Eingabeliste.
SUBSTITUTION-LIST = *TERMINAL
Die Elemente der Eingabeliste werden vom Terminal gelesen. Nach Absenden des Kommandos REPEAT-CMD wird als Eingabeaufforderung die Zeichenfolge „%>>:“ ausgegeben. Jede Eingabe für ein Element ist mit den Tasten abzusenden. Danach erscheint erneut die Eingabeaufforderung. Das Einlesen wird beendet, wenn der String *END-OF-CMD eingegeben wird.
SUBSTITUTION-LIST = <filename 1..54 without-gen-vers>
Die Elemente der Eingabeliste werden aus der angegebenen Datei (ISAM-Datei mit Standardschlüsseln oder SAM-Datei) gelesen. Das Einlesen wird beendet, wenn Dateiende erkannt oder der String *END-OF-CMD gelesen wird.
SUBSTITUTION-LIST = VARIABLE(...)
Die Elemente der Eingabeliste der angegebenen Variablenliste werden gelesen. Das Einlesen wird beendet, wenn das Listenende erkannt oder der String *END-OF-CMD gelesen wird.
VARIABLE-NAME = <composed-name 1..255>
Name der Listenvariablen.
Die Variable muss existieren und mit dem Datentyp STRING deklariert worden sein. (Sie kann auch mit dem Datentyp ANY deklariert sein. Jedoch darf sie dann auch nur Strings enthalten.)
SUBSTITUTION-LIST = *LIBRARY-ELEMENT(...)
Die Elemente der Eingabeliste aus dem angegebenen Bibliothekselement werden gelesen. Das Einlesen wird beendet, wenn Dateiende erkannt oder der String *END-OF-CMD gelesen wird.
LIBRARY = <filename 1..54 without-vers>
Name der Bibliothek.
ELEMENT = <composed-name 1..64>(...)
Name des Bibliothekselements.
VERSION = *HIGHEST-EXISTING / <composed-name 1..24>
Version des Bibliothekselements.
TYPE = S / <alphanum-name 1..8>
Typ des Bibliothekselements.
DIALOG-SELECTION = *NO / *YES
Bestimmt, ob am Terminal ein Selektionsmenü ausgegeben wird. In diesem Menü werden alle Elemente der Eingabeliste zur nochmaligen Verifikation aufgelistet; Markierung mit beliebigem Zeichen möglich.
CONTINUE-AFTER-ERROR = *YES / *NO
Bestimmt, ob nach fehlerhafter Kommandoausführung die Verarbeitung mit dem nächsten Element der Eingabeliste fortgesetzt oder abgebrochen wird.
Kommando-Returncode
(SC2) | SC1 | Maincode | Bedeutung |
0 | CMD0001 | Ohne Fehler | |
2 | 0 | SDP2000 | Warnung: Nicht alle Elemente der Eingabeliste konnten erfolgreichabgearbeitet werden. garantierte Meldung: SDP2000 |
1 | SDP2001 | Keines der Elemente der Eingabeliste konnte erfolgreich abgearbeitet werden. |
Wurde aufgrund der Angabe CONTINUE-AFTER-ERROR=*NO die Verarbeitung nach dem ersten Fehler abgebrochen (Meldung SDP2003
), so wird der Returncode des fehlerhaften Kommandos geliefert.
Beispiel
Das Kommando ENTER-PROCEDURE soll mehrmals für dieselbe Prozedur, aber mit verschiedenen Auftragsnamen aufgerufen werden. Die Werte sollen am Terminal eingegeben und noch einmal kontrolliert werden:
/REPEAT-CMD (ENTER-PROC FROM=PROC.WAIT-600,JOB-CLASS=JCB00050, JOB-NAME=%*),SUBSTITUTION-LIST=*TERMINAL,DIALOG-SELECT=*YES %>>: PROC01 %>>: PROC02 %>>: PROC03 %>>: TESTA %>>: TESTB %>>: PROC04 %>>: *END-OF-CMD
Die Eingabe der Werte wird mit *END-OF-CMD beendet. Die eingegebenen Auftragsnamen werden jetzt noch einmal in einem Selektionsmenü zur Auswahl angeboten:
|
Das Kommando ENTER-PROCEDURE startet die vier Aufträge mit den ausgewählten Auftragsnamen (im Menü selektiert durch Markierung mit x):
% JMS0066 JOB 'PROC01' ACCEPTED ON 07-03-30 AT 11:17, TSN = 050L % JMS0066 JOB 'PROC02' ACCEPTED ON 07-03-30 AT 11:17, TSN = 050P % JMS0066 JOB 'PROC03' ACCEPTED ON 07-03-30 AT 11:17, TSN = 050Q % JMS0066 JOB 'PROC04' ACCEPTED ON 07-03-30 AT 11:17, TSN = 050R /