Der Makroaufruf PUTVAR weist einer Variablen einen Wert zu. PUTVAR kann auf einfache Variablen und Elemente zusammengesetzter Variablen angewendet werden.
Wenn eine einfache Variable bei der Zuweisung noch nicht existiert, dann wird sie angelegt, falls IMPLICIT-DECLARATION=*YES und IMPDEC = *STD gilt oder im Makroaufruf IMPDEC=*YES angegeben ist.
Elementen zusammengesetzter Variablen kann ein Wert zugewiesen werden, wenn sie vom Typ Integer, Boolean, String oder Any sind.
Operation | Operanden |
PUTVAR | MF = E ,PARAM = <name 1..8> / (<integer 1..15> ) |
MF = D ,PREFIX = P / prefix | |
MF = C ,PREFIX = P / prefix ,MACID = UTV / macid | |
MF = L ,NAMLEN = <integer 1..255> ,NAMADR = <name 1..8> ,SCOPE = *VISIBLE / *TASKONLY ,IMPDEC = *YES / *NO / *STD ,VALLEN = <integer 0..4096> ,VALADR = <name 1..8> ,VALTYPE = *INTEGER / *BOOLEAN / *STRING |
Operandenbeschreibung
MF = E
Execute-Form des Makroaufrufs; erzeugt einen SVC.
PARAM
Bezeichnet die Adresse der Operandenliste, die für den Makroaufruf ausgewertet wird (Adresse des Makroaufrufs mit MF=L).
= <name 1..8>
Bezeichnet die symbolische Adresse der Operandenliste.
= (<integer 1..15>)
Bezeichnet das Register, das die Adresse der Operandenliste enthält.
MF = D
DSECT-Form des Makroaufrufs: erzeugt eine DSECT für die Operandenliste. Die generierten Namen beginnen mit dem Buchstaben P; sie können mit PREFIX verändert werden.
PREFIX = P / prefix
Definiert das erste Zeichen der generierten Namen.
Voreinstellung: Die generierten Namen beginnen mit dem Buchstaben P.
MF = C
C-Form des Makroaufrufs: erzeugt eine Operandenliste, deren symbolische Namen mit der Zeichenfolge PUTV beginnen. Sie können durch PREFIX und MACID verändert werden.
PREFIX = P / prefix
Definiert das erste Zeichen der generierten Namen.
Voreinstellung: Die generierten Namen beginnen mit dem Buchstaben P.
MACID = UTV / macid
Bis zu drei Zeichen langer String, der die Zeichen 2 bis 4 der generierten Namen ersetzt. Voreinstellung: UTV
MF = L
LIST-Form des Makroaufrufs: erzeugt die Operandenliste für den Makroaufruf mit MF=E (Execute-Form). Der Makroaufruf muss über eine symbolische Adresse adressierbar sein.
NAMLEN = <integer 1..255>
Bezeichnet die Länge des Variablennamens.
NAMADR = <name 1..8>
Symbolische Adresse eines Feldes, das den Variablennamen enthält.
SCOPE
Definiert den Geltungsbereich der Variablen.
= *VISIBLE
Die Variable wird als prozedurlokale Variable angelegt.
= *TASKONLY
Die Variable wird als taskglobale Variable angelegt.
IMPDEC = *YES / *NO / *STD
Legt fest, ob die Variable implizit angelegt wird, wenn sie noch nicht vorhanden ist, unabhängig von der Einstellung in der umgebenden Prozedur.
= *STD
Gibt an, dass die Prozeduroption IMPLICIT-DECLARATION der gegenwärtigen Prozedur verwendet wird.
VALLEN = <integer 0..4096>
Wird nur bei Angabe von VALTYPE=*STRING ausgewertet.
Bezeichnet die Länge des Strings.
VALADR = <name 1..8>
Bezeichnet die symbolische Adresse des Werts, der in die Variable zu schreiben ist.
VALTYPE
Legt den Datentyp des Werts fest.
= *INTEGER
Der Wert hat den Typ INTEGER. Entsprechend muss die Variable vom Typ INTEGER oder ANY sein, sonst tritt ein Fehler auf.
= *BOOLEAN
Der Wert hat den Typ BOOLEAN. Es tritt ein Fehler auf, wenn
- der Wert an der Adresse VALADR weder TRUE noch FALSE ist.
- die Variable weder vom Typ BOOLEAN noch vom Typ ANY ist.
= *STRING
Der Wert hat den Typ STRING. Entsprechend muss die Variable vom Typ STRING oder ANY sein, sonst tritt ein Fehler auf.
Die Länge des Strings wird mit VALLEN definiert.
Returncodes
Die folgende Tabelle listet die Returncodes in hexadezimaler Schreibweise auf.
Subcode2 | Subcode1 | Maincode | Bedeutung |
00 | 00 | 0000 | Makroaufruf war erfolgreich; kein Fehler |
00 | 01 | 0001 | Parameter-Fehler |
00 | 01 | 0002 | Syntaxfehler im Variablennamen |
00 | 40 | 0004 | Variable nicht deklariert |
00 | 40 | 0005 | Variablenbehälter nicht verfügbar |
00 | 40 | 0006 | VALTYPE passt nicht zu Wert oder Variablentyp |
00 | 01 | FFFF | Unbekannte Unit- oder Funktions-Nummer |
00 | 02 | FFFF | Funktion nicht verfügbar |
00 | 03 | FFFF | Falsche Version der Operandenliste |