Anwendungsgebiet: Variablenzugriff (Variableneigenschaften)
Die Funktion SIZE( ) fragt ab, aus wie vielen Elementen die angegebene Variable besteht. SIZE( ) kann auf Arrays, Listen und Strukturen angewendet werden.
In Verbindung mit der Funktion NEXT-VARIABLE-NAME( ) kann das Ergebnis von SIZE( ) zum Beispiel als Schleifenzähler verwendet werden, wenn der Aufbau von zusammengesetzten Variablen analysiert wird.
Format
SIZE( ) |
VARIABLE-NAME = string_ausdruck |
Ergebnistyp
INTEGER
Eingabeparameter
VARIABLE-NAME = string_ausdruck
Bezeichnet eine Variable (Array, Liste oder Struktur). Der Variablenname muss in Hochkommata eingeschlossen werden, wenn man ihn direkt (als Literal) angeben will (siehe dazu das folgende Beispiel sowie das Beispiel bei IS-DECLARED( ) ).
Ergebnis
Zahl der Elemente, aus denen die Variable „string_ausdruck“ besteht.
0
Der Wert „0“ wird in folgenden Fällen zurückgegeben:
„string_ausdruck“ enthält kein Element.
„string_ausdruck“ bezeichnet keine zusammengesetzte Variable, oder es gibt keine zusammengesetzte Variable mit diesem Namen.
Fehlermeldung
SDP1101 SYNTAX-FEHLER IM VARIABLEN-NAMEN
Beispiel
In der aktuellen Task wurde bereits taskglobal eine Listenvariable VARLIST angelegt und initialisiert. In der aktuellen Prozedur darf VARLIST genau 10 Elemente haben.
/IF SIZE('VARLIST') > 10 / WRITE-TEXT 'zu viele Elemente' / FOR I = *LIST(VARLIST) / SHOW-VARIABLE I / END-FOR / GOTO ZUVIEL /ELSE / ZAEHL = SIZE('VARLIST') / WHILE ZAEHL < 10 / VARLIST = ZAEHL+1, WRITE-MODE = *EXTEND / ZAEHL = ZAEHL+1 / END-WHILE /END-IF ... /ZUVIEL: "Fehlerbehandlung > 10 Listenelemente" ...
In der ersten Zeile wird die Größe der Listenvariablen VARLIST geprüft. Wenn diese mehr als 10 Elemente enthält, wird der Inhalt aller Elemente über eine FOR-Schleife ausgegeben und der Prozedurlauf mit der Fehlerbehandlung ZUVIEL fortgesetzt.
Wenn VARLIST nicht mehr als 10 Elemente enthält, wird der ELSE-Zweig des IF-Blocks abgearbeitet, der in einer WHILE-Schleife Elemente an VARLIST anhängt, bis VARLIST genau 10 Elemente enthält. Der Prozedurlauf wird dann mit dem Kommando fortgesetzt, das auf das Kommando END-IF folgt.