Mit dem Makroaufruf VARINF können Variablen analysiert werden, auch zusammengesetzte Variablen, deren Elemente selbst wieder zusammengesetzte Variablen sind.
Operation | Operanden |
VARINF | MF = E |
MF = D ,PREFIX = V / prefix | |
MF = C ,PREFIX = V / prefix ,MACID = ARI / macid | |
MF = L ,NAMLEN = <integer 1..255> ,NAMADR = <name 1..8> ,SCOPE = *VISIBLE / *TASKONLY ,POSIT = *CURRENT / *UP / *DOWN / *NEXT ,MAXLEN = <integer 1..4096> ,RESADR = <name 1..8> |
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 der Zeichenfolge VARINF; sie können mit PREFIX verändert werden.
PREFIX = V / prefix
Definiert das erste Zeichen der generierten Namen.
Voreinstellung: Die generierten Namen beginnen mit dem Buchstaben V.
MF = C
C-Form des Makroaufrufs: erzeugt eine Operandenliste, deren symbolische Namen mit der Zeichenfolge VARI beginnen. Sie können durch PREFIX und MACID verändert werden.
PREFIX = V / prefix
Definiert das erste Zeichen der generierten Namen.
Voreinstellung: Die generierten Namen beginnen mit dem Buchstaben V.
MACID = ARI / macid
Bis zu drei Zeichen langer String, der die Zeichen 2 bis 4 der generierten Namen ersetzt. Standard: ARI
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>
Bezeichnet den symbolischen Namen der Adresse des Variablennamens, von dem ausgehend die Elementnamen abgefragt werden sollen.
SCOPE
Bezeichnet den Geltungsbereich der Variablen.
= *VISIBLE
Die Variable ist eine prozedurlokale Variable.
= *TASKONLY
Die Variable ist eine taskglobale Variable.
POSIT
Bestimmt das Variablenelement, dessen Name zurückgeliefert werden soll. Es erfolgt keine absolute, sondern nur eine relative Positionierung, jeweils ausgehend von dem Variablenelement, auf das zuletzt zugegriffen wurde.
= *CURRENT
Liefert den Namen des aktuellen Variablenelements, das heißt des Variablenelements, das als Ausgangspunkt für die Positionierung dient (Existenzprüfung).
= *UP
Liefert den Namen der zusammengesetzten Variablen, zu der das aktuelle Variablenelement gehört.
= *DOWN
Wenn das aktuelle Variablenelement selbst eine zusammengesetzte Variable ist, liefert POSITION=*DOWN den Namen des ersten Elements dieser zusammengesetzten Variablen.
= *NEXT
Liefert den Namen der nächsten zusammengesetzten Variablen auf der gleichen Ebene.
MAXLEN = <integer 1..4096>
Bezeichnet die maximale Länge des Feldes, in dem der Variablenname zurückgeliefert wird.
RESADR = <name 1..8>
Symbolische Adresse des Feldes, in dem der Variablenname zurückgeliefert wird.
Die folgenden Ausgabefelder sind in der Operandenliste nach dem Aufruf zu finden:
<PR> = <prefix><macid> <PR>VALL : Länge des Ergebnisnamens <PR>VTYP : Variablentyp: Mögliche Werte: <PR>VANY: *ANY <PR>VSTR: *STRING <PR>VINT: *INTEGER <PR>VBOO: *BOOLEAN <PR>VSTU: *STRUCTURE <PR>MULT : MULTIPLE-ELEMENTS: Mögliche Werte: <PR>MNO: *NONE <PR>MARR: *ARRAY <PR>MLIS: *LIST <PR>SINF : STRUCTURE INFORMATION (relevant wenn: <PR>VTYP=<PR>VSTU) Mögliche Werte: <PR>SDYN: *DYNAMIC <PR>SCMD: *BY-SYSCMD <PR>SLAY: LAYOUT
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 | 0003 | Area zu klein |
00 | 40 | 0004 | Variable nicht deklariert |
00 | 40 | 0005 | Variablenbehälter nicht verfügbar |
00 | 40 | 0007 | Letztes Variablenelement erreicht, kein weiteres Variablenelement vorhanden |
00 | 01 | FFFF | Unbekannte Unit- oder Funktions-Nummer |
00 | 02 | FFFF | Funktion nicht verfügbar |
00 | 03 | FFFF | Falsche Version der Operandenliste |