Der Makro CMDWCC prüft ein vorgegebenes Wildcard-Suchmuster auf korrekte Syntax und führt einen Mustervergleich durch. Beispiele zur Verwendung von CMDWCC finden Sie auf "CMDWCC Wildcard-Syntax prüfen und Mustervergleich durchführen".
Operation | Operanden |
CMDWCC | ACTION = list-poss(2): *CHECK / *MATCH ,PAT@ = <var: pointer> ,PATL = <var: int:4> ,INP@ = NULL / <var: pointer> ,INPL = 0 / <var: int:4> ,FGG = *NO / *YES / <var: bit:1> ,PART_Q = *NO / *YES / <var: bit:1> ,SYNTAX = *BS2000 / *POSIX ,WORK@ = NULL / <var: pointer> ,PREFIX = C / <char:1> ,MACID = MDW / <char:3> ,MF = D / C / L / M / E ,PARAM = <var: pointer> |
ACTION =
legt fest, ob nur die Wildcard-Syntax geprüft oder auch ein Mustervergleich durchgeführt wird.
*CHECK
Das Wildcard-Suchmuster wird auf korrekte Syntax geprüft.
*MATCH
Das Wildcard-Suchmuster wird mit der bei INP@ angegebenen Zeichenkette verglichen. Das Suchmuster sollte vorher oder gleichzeitig mit *CHECK unbedingt auf korrekte Syntax geprüft werden.
PAT@ = <var: pointer>
Adresse des Wildcard-Suchmusters.
PATL = <var: int:4>
Länge des Wildcard-Suchmusters.
INP@ =
Nur für ACTION=*MATCH:
Gibt die Adresse einer Zeichenkette an, mit der das Wildcard-Suchmuster verglichen werden soll.
NULL
Es wird keine Vergleichszeichenkette angegeben.
<var: pointer>
Adresse der Zeichenkette.
INPL = 0 / <var: int:4>
Länge der Zeichenkette (nur für ACTION=*MATCH).
FGG =
Legt fest, ob beim Vergleich des Wildcard-Suchmusters mit der Eingabe-Zeichenkette Dateigenerationsnummern (fgg, file generation group) unterstützt werden.
*NO
Dateigenerationsnummern werden nicht unterstützt.
*YES
Dateigenerationsnummern werden unterstützt.
<var: bit:1>
Bitvariable: | bit = 0: Dateigenerationsnummern werden nicht unterstützt. |
PART_Q =
Legt fest, ob beim Vergleich des Wildcard-Suchmusters mit der Eingabe-Zeichenkette teilqualifizierte Dateinamen unterstützt werden.
*NO
Teilqualifizierte Dateinamen werden nicht unterstützt.
*YES
Teilqualifizierte Dateinamen werden unterstützt.
<var: bit:1>
Bitvariable: | bit = 0: Teilqualifizierte Dateinamen werden nicht unterstützt. |
SYNTAX =
Legt fest, welcher Typ der Wildcard-Syntax verwendet wird.
*BS2000
Die komplette BS2000-Wildcard-Syntax kann verwendet werden.
*POSIX
Die Wildcard-Syntax gemäß POSIX wird verwendet.
WORK@ =
Nur für ACTION=*MATCH:
Gibt die Adresse eines Arbeitsbereiches für den Vergleich der Eingabe-Zeichenkette mit dem Wildcard-Suchmuster an.
NULL
Es wird kein Arbeitsbereich angegeben.
<var: pointer>
Adresse eines Arbeitsbereiches. Der Arbeitsbereich muss mindestens (5*PATL/4 + 5)*4 Bytes lang und auf Wortgrenze ausgerichtet sein.
Beschreibung der Parameter PREFIX, MACID, MF und PARAM siehe Abschnitt „Typen vonMakroaufrufen“.
Rückinformation und Fehleranzeigen
Der Returncode wird im Standardheader des Parameterbereiches übergeben.
Standardheader | cc: Subcode 2 (SC2) |
(SC2) | SC1 | Maincode | Bedeutung |
00 00 00 00 01 | 00 40 40 01 00 | 0000 | kein Fehler |
Hinweise
Suchmuster für einen Dateinamen können vom Datentyp <filename> oder <partial-filename> sein.
Ein teilqualifizierter Dateiname kann ebenfalls als Wildcard-Suchmuster verwendet werden.
Bei Überprüfung von Dateinamen mit Dateigenerationsnummer auf Übereinstimmung mit einem Wildcard-Suchmuster ist die folgende Tabelle zu beachten. Die Tabelle enthält die zurzeit geltenden Möglichkeiten, bei denen eine Übereinstimmung möglich ist.
Zu Dateigenerationsgruppen (fgg, file generation group) siehe Benutzerhandbuch „Einführung in das DVS“ [7].
INPUT-Zeichenfolge | PATTERN-Zeichenfolge | Übereinstimmung möglich? |
ohne fgg | ohne fgg | ja |
mit absoluter fgg | ohne fgg | ja |
mit relativer fgg | ohne fgg | ja |
abs_fgg: | absolute Generationsnummer (*nnnn), 0001 |
rel_fgg: | relative Generationsnummer (+/-nn), 0 |
Diese Tabelle kann bei zukünftigen Systemerweiterungen ihre Gültigkeit verlieren und ist deshalb nicht als garantierte Schnittstelle zu betrachten.
Beispiele zur Verwendung von CMDWCC
EXWCC START BASR 10,0 USING *,10 * * HOW TO USE CMDWCC * * * EXAMPLE 1: PL1 IS INITIALIZED USING MF=L * EX1 LA 1,PL1 CMDWCC MF=E,PARAM=PL1 B EX2 PL1 CMDWCC MF=L,PAT@=A(PAT),PATL=8,INP@=A(INP),INPL=8, * SYNTAX=*BS2000,ACTION=*MATCH,WORK@=A(WA) * * EXAMPLE 2: PL2 IS INITIALIZED USING MF=L WITH DUMMY VALUES * AND MODIFIED USING MF=M BEFORE EXECUTION * NOTE: MF=M ASSUME THAT THE PARAMETER AREA IS POINTED BY REGISTER 1 * EX2 LA 1,PL2 USING CWCC_MDL,1 CMDWCC MF=M,PATL=PATL,INPL=INPL,PAT@=A(PAT),INP@=A(INP), * WORK@=A(WA) CMDWCC MF=E,PARAM=PL2 B EX3 PL2 CMDWCC MF=L,PAT@=A(0),PATL=0,INP@=A(0),INPL=0, * SYNTAX=*BS2000,ACTION=*MATCH,WORK@=A(0) * * EXAMPLE 3: PL3 IS INITIALIZED USING MF=L WITH DUMMY VALUES * AND MODIFIED USING MF=M BEFORE EXECUTION IN ANOTHER WAY * NOTE: MF=M ASSUME THAT THE PARAMETER AREA IS POINTED BY REGISTER 1 * EX3 LA 1,PL3 USING CWCC_MDL,1 LA 2,PAT ST 2,PATADD LA 2,INP ST 2,INPADD LA 2,WA ST 2,WAADD CMDWCC MF=M,PATL=PATL,INPL=INPL,PAT@=PATADD,INP@=INPADD, * WORK@=WAADD CMDWCC MF=E,PARAM=PL3 TERM PL3 CMDWCC MF=L,PAT@=A(0),PATL=0,INP@=A(0),INPL=0, * SYNTAX=*BS2000,ACTION=*MATCH,WORK@=A(0) PATADD DS A INPADD DS A WAADD DS A * * PATTERN AND INPUT * PAT DC C'PATTERN* ' PATL DC F'8' INP DC C'PATTERNA ' INPL DC F'8' WA DS 0A DS XL1000 CMDWCC MF=D END