Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

&-Ersetzung

&pagelevel(4)&pagelevel

Auch Kommandos, die keine Ausdrücke als Operandenwerte zulassen, können durch Variablenwerte modifiziert werden. In S-Prozeduren werden an nahezu beliebiger Stelle (bei einigen Kommandos, z.B. SDF-P-Kontrollflusskommandos, bestehen Einschränkungen) im Bereich der Kommandooperanden und auch des Kommandonamens selbst SDF-P-Ausdrücke durch ihren Wert ersetzt, bevor die eigentliche Analyse des Kommandos beginnt. Hierzu ist an der entsprechenden Stelle im Kommando der Ausdruck in Klammern einzuschließen und das Fluchtsymbol & voranzustellen. Falls der Ausdruckswert vom Typ INTEGER oder BOOLEAN ist, wird er zuvor in einen String konvertiert. Im einfachsten Fall besteht der Ausdruck nur aus dem Namen einer einfachen Variablen; die Klammern können dann entfallen, und der Variablenname ist, wenn ihm nicht ohnehin ein Leer- oder Sonderzeichen folgt, durch einen Punkt vom nachfolgenden Text zu trennen:

/ZEIT = 40
/ENTER-JOB E.TEST1,CPU-LIMIT=&ZEIT           "Limit = 40 Sekunden"
/ENTER-JOB E.TEST2,CPU-LIMIT=&(ZEIT * 60)    "Limit = 40 Minuten"
/ENTER-JOB E.TEST3,JOB-CLASS=JC&ZEIT.MAX     "Jobklasse = JC40MAX"

Die Einfügung von Jobvariablenwerten, für die in Nicht-S-Prozeduren eine ähnliche Syntax gilt, geschieht in S-Prozeduren mittels Aufruf der vordefinierten Funktion JV:

/&* pruefe Folgendes!
/SHOW-JV JV-CONTENTS=$USERXY.TSN
/&*  die JV soll die TSN eines laufenden Auftrags enthalten
/SHOW-JOB-STATUS TSN=&(JV('$USERXY.TSN'))

In den meisten Fällen wird allerdings die Verwendung der Jobvariablen als Container für eine S-Variable einfacher sein:

/DECL-VAR DB-TSN(TYPE=STRING),CONTAINER=*JV($USERXY.TSN)
/  "..."
/SHOW-JOB-STATUS TSN=&DB-TSN

Es ist zu beachten, dass die &-Ersetzung nicht rekursiv ausgeführt wird, d.h., wenn sie wiederum ein Fluchtsymbol & erzeugt, löst dieses keine erneute Ersetzung aus.