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.