Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Ausdrücke in der Eingabe ersetzen

&pagelevel(4)&pagelevel

Der Wert eines Prozedurparameters, eines S-Variablenausdrucks oder einer Jobvariablen kann Kommando- oder Anweisungsteile ersetzen. Der zu ersetzende Ausdruck ist gekennzeichnet durch ein &-Zeichen, dem unmittelbar der Name des Prozedurparameters bzw. der Jobvariablen oder ein in Klammern gesetzter S-Variablenausdruck folgt. SDF ersetzt den Ausdruck vor der Ausführung durch den entsprechenden Wert. Die daraus resultierende Eingabe wird von SDF syntaktisch geprüft. Die Ersetzung von Ausdrücken ist im ungeführten Dialog, in Prozeduren und im Batchbetrieb möglich. Im (temporär) geführten Dialog ist sie nur in der NEXT-Zeile und in der Eingabe für Operandenwerte erlaubt.

Prozedurparameter ersetzen

Ausdrücke der Form „&parameter“ werden in Nicht-S-Prozeduren durch den Wert ersetzt, der parameter im Kommando BEGIN-PROCEDURE, CALL-PROCEDURE bzw. beim Prompting zugewiesen wurde. Ersetzt werden Ausdrücke in Kommandos. Innerhalb von Eingabedaten (werden von SYSDTA gelesen) werden Ausdrücke nur ersetzt, wenn ein Escape-Zeichen im Operanden ESCAPE-CHARACTER des BEGIN-PROCEDURE vereinbart wurde (#, @, & bzw. *) und der Ausdruck mit diesem Zeichen beginnt. Innerhalb von Anweisungen (von SYSSTMT gelesen) werden Ausdrücke derzeit wie in Kommandos ersetzt. Es wird jedoch empfohlen ESCAPE-CHARACTER='&' zu vereinbaren, da eine Änderung dieses Verhaltens nicht auszuschließen ist.

Für die Ersetzung von Prozedurparametern bestehen folgende Einschränkungen:

  • Innerhalb von CJC-Kommandofolgen ist das Ersetzen nicht möglich.

  • Prozedurparameter können in Prozeduren oder ENTER-Dateien den führenden Schrägstrich vor Kommandos bzw. die zwei führenden Schrägstriche vor Anweisungen, den führenden Punkt von Nicht-S-Marken, den Strichpunkt als Kommandotrenner und das Fortsetzungszeichen nicht ersetzen.

  • Ausdrücke können nicht geschachtelt werden.

  • Bei Verdoppelung des &-Zeichens bzw. des Escape-Zeichens wird keine Ersetzung durchgeführt und das zweite &- bzw. Escape-Zeichen entfällt.

Jobvariablen ersetzen

Diese Funktion ist nur verfügbar, wenn das kostenpflichtige Substem JV geladen ist.

Ausdrücke zur Ersetzung von Jobvariablen werden angegeben:

  • direkt über Jobvariablennamen in der Form &(jv-name).

  • indirekt über ihren Jobvariablenkettungsnamen in der Form &(*jv-link). Die Verknüpfung von Kettungsname mit der Jobvariablen erfolgt vorher durch das Kommando
    SET-JV-LINK LINK-NAME = jv-link, JV-NAME = jv-name.

Hinweis

Vor der Jobvariablenersetzung ersetzt ACS ggf. den Aliasnamen einer JV durch ihren realen Pfadnamen (gemäß Aliaskatologeintrag).

Für die Ersetzung von Jobvariablen bestehen folgende Einschränkungen:

  • Eine Jobvariable kann nur in ihrer gesamten Länge einen Ausdruck ersetzen.

  • Für die einzusetzende Jobvariable muss Lesezugriff bestehen, sonst wird die Eingabe als Syntaxfehler abgewiesen.

  • Innerhalb von CJC-Kommandofolgen ist das Ersetzen nicht möglich.

  • Jobvariablen können keine Eingabedaten ersetzen. Anweisungen an Programme mit SDF-Oberfläche werden von SDF nicht wie Eingabedaten, sondern wie Kommandos behandelt.

  • Jobvariablen können in Prozeduren den führenden Schrägstrich vor Kommandos bzw. die zwei führenden Schrägstriche vor Anweisungen, den führenden Punkt von Nicht-S-Marken, den Strichpunkt als Kommandotrenner und das Fortsetzungszeichen nicht ersetzen.

  • Jobvariablen können nicht als Prozedurparameter eingesetzt werden. Diese Einschränkung kann z.B. durch Verwendung eines Kettungsnamens umgangen werden (siehe Beispiel 3).

  • Ausdrücke können nicht geschachtelt werden.

  • Im Dialog und in S-Prozeduren wird eine Jobvariablen-Ersetzung in der oben gezeigten Form nur durchgeführt, wenn keine gleich lautende S-Variable bzw. Builtin-Funktion bekannt ist. Diese Form kann aber ersetzt werden durch die Builtin-Funktion JV( ). Die Angabe besitzt dann die Form „&(JV(JV-NAME=<c-string 1..54>))“. Siehe auch Builtin-Funktion "JV( ) - Jobvariable abfragen".
    Enthält der Jobvariablenname die Katalog- und/oder die Benutzerkennung, kann nur eine Jobvariablen-Ersetzung durchgeführt werden.

S-Variablenausdrücke ersetzen

Ausdrücke der Form „&(ausdruck)“ werden im Dialog und in S-Prozeduren ersetzt durch den Wert von ausdruck, wobei ausdruck der Name eine S-Variablen, einer Builtin-Funktion oder ein gültiger S-Variablenausdruck sein kann. Für eine S-Variable, deren Name keinen Punkt enthält, kann der Ausdruck auch in der Form „&s-variable” angegeben werden. Prozedurparameter einer S-Prozedur sind S-Variablen und werden ebenfalls in Ausdrücken ersetzt.

Ersetzt werden Ausdrücke in Kommandos. Innerhalb von Eingabedaten (werden von SYSDTA gelesen) werden Ausdrücke nur ersetzt, wenn ein Escape-Zeichen im Operanden DATA-ESCAPE-CHARACTER des Kommandos SET-PROCEDURE-OPTIONS vereinbart wurde (#, @, & bzw. *) und der Ausdruck mit diesem Zeichen beginnt.
Innerhalb von Anweisungen (von SYSSTMT gelesen) werden Ausdrücke derzeit wie in Kommandos ersetzt.

Ausdrücke können geschachtelt werden.

Für Ersetzung von S-Variablenausdrücken bestehen folgende Einschränkungen:

  • Kontrollflusskommandos können nicht erzeugt werden.

  • Der zu ersetzende S-Variablenausdruck wird in den Typ STRING konvertiert.

  • S-Marken können nicht erzeugt werden.

  • Innerhalb von CJC-Kommandofolgen ist das Ersetzen nicht möglich.

  • S-Variablenausdrücke können in Prozeduren und ENTER-Dateien den führenden Schrägstrich vor Kommandos bzw. die zwei führenden Schrägstriche vor Anweisungen, den führenden Punkt von Nicht-S-Marken, den Strichpunkt als Kommandotrenner und das Fortsetzungszeichen nicht ersetzen.

  • Bei Verdoppelung des &-Zeichens bzw. des Escape-Zeichens wird keine Ersetzung durchgeführt und das zweite &- bzw. Escape-Zeichen entfällt.

 

Beispiele

1. Ersetzen von Jobvariablen im Dialog:

/cre-jv jv=cmd ————————————————————————————————————————— (1)
/mod-jv jv=cmd,set-value='SHOW-FILE-ATTR' —————————————— (2)
/&(cmd) ———————————————————————————————————————————————— (3)

%         3 :2OSG:$USER1.ALT.SYS.LOGON.USERPROC.X1 
%        51 :2OSG:$USER1.ALT.SYSSDF.USER.EXAMPLE.1
%        21 :2OSG:$USER1.DATEI.1
%        48 :2OSG:$USER1.DATEI.2 
%        84 :2OSG:$USER1.DATEI.3
%        66 :2OSG:$USER1.OUT.SORT1-2
%         3 :2OSG:$USER1.PROC.JV 
%:2OSG: PUBLIC:     7 FILES RES=      276 FRE=       39 REL=      21 PAGES 

/mod-jv jv=egon,set-value='-FILE-ATTR F-NAME=PROC.' ———— (4)
/set-jv-link link-name=walter,jv-name=egon ————————————— (5)
/sh&(*walter)

%         3 :2OSG:$USER1.PROC.JV   ———————————————————————————————————  (6)
%:2OSG: PUBLIC:     1 FILE  RES=        3 FRE=       2 REL=       0 PAGES 

(1)

Es wird der Jobvariablenname „CMD“ vereinbart.

(2)

Die Jobvariable CMD erhält den Wert 'SHOW-FILE-ATTR' (Abkürzung des Kommandonamens SHOW-FILE-ATTRIBUTES).

(3)

Nach Absenden des Kommandos wird der Variablenstring durch das in der Jobvariablen definierte Kommando ersetzt und das Kommando ausgeführt.

(4)

Der Wert der Jobvariablen EGON wird geändert. Er enthält jetzt nur noch einen Teil des Kommandonamens ('-FILE-ATTRIBUTES') und den teilqualifizierten Dateinamen 'PROC.'.

(5)

Der Jobvariablen EGON wird der Linkname „WALTER“ zugeordnet.

(6)

Nach Absenden des Kommandos wird der Variablenstring durch den der Jobvariablen zugeordneten Kommandoteil ersetzt und das Kommando ausgeführt. Der Bezug zur Jobvariablen wird durch den Linknamen hergestellt.

 

2. Ersetzen von Jobvariablen und S-Variablen im Dialog:
/sh-jv cmd    —————————————————————————————————————————————————————————————— (1)
%SHOW-FILE-ATTR
/&(cmd) proc.jv    ————————————————————————————————————————————————————————— (2)
%         3 :2OSG:$USER1.PROC.JV
%:2OSG: PUBLIC:      1 FILE  RES=         3 FRE=         2 REL=         0 PAGES 
/cmd='PRINT-DOCUMENT'   ———————————————————————————————————————————————————— (3)
/sh-var cmd
CMD = PRINT-DOCUMENT
/&(cmd) proc.jv    ————————————————————————————————————————————————————————— (4)
%  SCP0810 SPOOLOUT FOR FILE ':2OSG:$USER1.PROC.JV' ACCEPTED. TSN: '1FAL', SPOOL
OUT-NAME: 'SDFTEST', MONJV: '*NONE'
%  SCP1025 PRINT JOB ACCEPTED BY SERVER 'GH5090Y0' WITH TSN '5BXC'
/&(:2osg:cmd) proc.jv   ———————————————————————————————————————————————————— (5)
%         3 :2OSG:$USER1.PROC.JV
%:2OSG: PUBLIC:      1 FILE  RES=         3 FRE=         2 REL=         0 PAGES 
/&(jv(jv-name='CMD')) proc.jv   ———————————————————————————————————————————— (6)
%         3 :2OSG:$USER1.PROC.JV
%:2OSG: PUBLIC:      1 FILE  RES=         3 FRE=         2 REL=         0 PAGES 
/ 

Die Jobvariable CMD besitzt den Wert SHOW-FILE-ATTR.

(1)

Die Jobvariable CMD besitzt den Wert SHOW-FILE-ATTR.

(2)

Der Kommandoname wird aus der Jobvariablen CMD ersetzt, d.h., es wird SHOW-FILE-ATTRIBUTES für die Datei PROC.JV ausgeführt.

(3)

Die S-Variable CMD wird implizit durch Zuweisen des Wertes PRINT-DOCUMENT eingerichtet.

(4)

In der Eingabe wird der Ausdruck &(CMD) jetzt durch den Inhalt der S-Variablen CMD ersetzt, d.h., es wird das Kommando PRINT-DOCUMENT für die Datei PROC.JV ausgeführt.

(5)

Um bei der Ersetzung den Inhalt der Jobvariablen CMD zu erhalten, wird dem Namen der Jobvariablen die Katalogkennung vorangestellt.

(6)

Die Ersetzung der Jobvariableninhalts kann auch über die Builtin-Funktion JV( ) erreicht werden.

 

3. Name der zu ersetzenden Jobvariablen wird als Prozedurparameter einer Nicht-S-Prozedur übergeben:
/BEGIN-PROC PAR=*YES(PROC-PAR=(&PARAM1))    ——————————————————————  (1) 
    .
    .
    .
/SET-JV-LINK LINK-NAME=PARAM1,JV-NAME=&PARAM1    —————————————————  (2) 
/&(*PARAM1) ,FILE-NAME=LST.JOB      ——————————————————————————————  (3) 
    .
    .
    .
/END-PROC

(1)

Die durch den Prozedurparameter PARAM1 spezifizierte Jobvariable soll das jeweils auszuführende Kommando enthalten.Da die Angabe „&(&PARAM1)“ nicht zulässig ist, wird im Folgenden der Umweg über einen Kettungsnamen beschritten.Zur Möglichkeit eines verschachtelten Ausdrucks siehe Beispiel 4, Punkt (4).

(2)

Der aktuelle Jobvariablenname wird für den Prozedurparameter PARAM1 eingesetzt und mit dem Kettungsnamen PARAM1 verknüpft.

(3)

Für den Kettungsnamen PARAM1 wird der Inhalt der vereinbarten Jobvariablen eingesetzt.

PRINT-DOCUMENT DOCUMENT-FORMAT=*TEXT(LINE-SPACING= *BY-EBCDIC-CONTROL), LAYOUT-CONTROL=*PAR(ROTATION=90, LEFT-MARGIN=10) als Jobvariablenwert bewirkt z.B., dass die Datei LST.JOB wie angegeben ausgedruckt wird. Enthält die Jobvariable z.B. SHOW-FILE-ATTRIBUTES INFORMATION=*PAR (HISTORY=*YES,SECURITY= *YES) , werden die gewünschten Dateiattribute der Datei LST.JOB ausgegeben.

4. Ersetzung von Jobvariablen und S-Variablen in einer S-Prozedur, wobei der Jobvariablenname als Prozedurparameter übergeben wird:

Inhalt der Prozedurdatei DO.JVTEST:

/        SET-PROC-OPT  JV-REPLACE=*AFTER-BUILTIN
/        DECL-PAR      JV-1(INIT=*PROMPT)
/        &(JV(JV-NAME=JV-1))   FILE-NAME=LST.JOB
/ERROR:  IF-BLOCK-ERROR
/            WRITE-TEXT  C'** Error &MC **'
/        ELSE
/            WRITE-TEXT  C'** Command &(&(JV-1)) executed **'
/        END-IF
/END:   EXIT-PROC

Prozedurablauf:

/show-jv jv=cmd ————————————————————————————————————————————————————————————— (1) 
%SHOW-FILE-ATTR
/call-proc do.jvtest,log=*yes
%          1  1 /SET-PROC-OPT  JV-REPLACE=*AFTER-BUILTIN
%          2  1 /DECL-PAR      JV-1(INIT=*PROMPT)
%JV-1: cmd   ———————————————————————————————————————————————————————————————— (2) 
%          3  1 /SHOW-FILE-ATTR   FILE-NAME=LST.JOB  ———————————————————————— (3) 
%       3 :N:$USER0001.LST.JOB
%:N:    PUBLIC:      1 FILE  RES=        3  FRE=         3  REL=        3 PAGES 
%          4  1 /ERROR:
%          4  1 /   IF-BLOCK-ERROR
%          6  1 /ELSE
%          7  1 /WRITE-TEXT  C'** Command SHOW-FILE-ATTR executed **'
** Command SHOW-FILE-ATTR executed **  —————————————————————————————————————— (4) 
%          8  1 /END-IF
%          9  1 /END:
%          9  1 /   EXIT-PROC
/                                                                               

(1)

Als Inhalt der Jobvariablen CMD wird SHOW-FILE-ATTR angezeigt.

(2)

Nach Aufruf der Prozedur DO.JVTEST wird der Prozedurparameter JV-1 gepromptet und der Wert CMD zugewiesen. Der Ausdruck wird ersetzt durch den Wert der Jobvariablen, den die Builtin-Funktion JV( ) ermittelt. Der gesuchte Jobvariablenname wird über die S-Variable JV-1 an die Builtin-Funktion übergeben.

(3)

Es wird das Kommando SHOW-FILE-ATTRIBUTES ausgeführt.

(4)

An dieser Stelle wurde ein verschachtelter Ausdruck verwendet:

Eine Jobvariable soll ersetzt werden, wobei sich der Name aus dem zu ersetzenden Ausdruck für die S-Variable JV-1 ergibt. Es wird also der Inhalt der Jobvariablen CMD ersetzt.