Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

REPEAT-CMD Kommandoausführung wiederholen

&pagelevel(4)&pagelevel

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                                         Kurzname: REPCMD

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)SC1MaincodeBedeutung

0

CMD0001Ohne Fehler
20SDP2000Warnung: Nicht alle Elemente der Eingabeliste konnten erfolgreichabgearbeitet werden.
garantierte Meldung: SDP2000

1SDP2001

Keines der Elemente der Eingabeliste konnte erfolgreich abgearbeitet werden.
garantierte Meldung: SDP2001

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:

           Please select list elements
--------------------------------------------------------------------------------

 (x) PROC01
 (x) PROC02
 (x) PROC03
 ( ) TESTA
 ( ) TESTB
 (x) PROC04

--------------------------------------------------------------------------------

NEXT = *EXECUTE

       *ALL or *NONE or *EXECUTE or *CANCEL

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
/