Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

ALLOCATE-Anweisung

&pagelevel(4)&pagelevel

Funktion

Die ALLOCATE-Anweisung weist dynamischen Speicher zu.

Format 1

Wird Speicher für eine Datenbeschreibung (datenname-1) angefordert, für die die BASED-Klausel spezifiziert ist, so wird dieser Datenbeschreibung die Adresse des angeforderten Speichers zugeordnet.
Ist die RETURNING-Angabe vorhanden, enthält der Datenzeiger bezeichner-2 ebenfalls die Adresse des zugewiesenen Speichers.

Format 2

Wird Speicher als eine Anzahl von Zeichen angefordert, wird die Adresse des zugewiesenen Speichers im Datenzeiger bezeichner-2 zurückgegeben.

Format 1


ALLOCATE datenname-1

[INITIALIZED] [RETURNING bezeichner-2]


Syntaxregeln

  1. datenname-1 muss ein Datenelement sein, das mit der BASED-Klausel spezifiziert ist.

  2. Ist bezeichner-2 ein typbezogener Datenzeiger, so muss datenname-1 ebenfalls typisiert sein und die zugehörigen Typen müssen übereinstimmen.

  3. Ist datenname-1 stark typisiert, so muss auch bezeichner-2 ein typbezogener Zeiger sein, dem der gleiche Typ zugeordnet ist wie datenname-1.

  4. bezeichner-2 muss ein Datenelement der Kategorie datenzeiger referenzieren.

Format 2


ALLOCATE arithmetischer-ausdruck CHARACTERS

[INITIALIZED] RETURNING bezeichner-2


Syntaxregeln

  1. bezeichner-2 darf kein typbezogener Datenzeiger sein.

  2. bezeichner-2 muss ein Datenelement der Kategorie datenzeiger referenzieren.

Allgemeine Regeln für beide Formate

  1. arithmetischer-ausdruck legt die Anzahl von Bytes im Speicher fest, die angefordert werden. Das Resultat der Auswertung von arithmetischer-ausdruck wird in einem internen Datenfeld abgelegt, das mit PIC S9(9) BINARY definiert ist.

  2. Ist das Resultat der Auswertung kleiner oder gleich NULL wird kein Speicher angefordert und bezeichner-2 enthält den vordefinierten Wert NULL.

  3. Bei Format 1 richtet sich die Größe des angeforderten Speichers danach, wieviel Platz für eine Datenbeschreibung datenname-1 benötigt wird. Wenn eine Datenbeschreibung, die zu datenname-1 untergeordnet ist, eine OCCURS DEPENDING-Klausel enthält, wird die maximale Länge des Datensatzes angefordert.

  4. Ist der angeforderte Speicherplatz verfügbar, so wird er zugewiesen. Bei Format 1 wird die Adresse von datenname-1 auf die Adresse des zugewiesenen Speichers gesetzt. Der Datenzeiger bezeichner-2 aus der RETURNING-Angabe wird auf die Adresse des zugewiesenen Speichers gesetzt.

  5. Ist der angeforderte Speicherplatz nicht verfügbar, wird die Adresse von datenname-1 und/oder der Datenzeiger bezeichner-2 aus der RETURNING-Angabe auf NULL gesetzt. Es entsteht die Ausnahmesituation EC-STORAGE-NOT-AVAIL. Ist die Überprüfung für EC-STORAGE-NOT-AVAIL eingeschaltet, so wird der zugehörige Ausnahmezustand ausgelöst und in die entsprechende USE-Prozedur verzweigt. Nach Rücksprung aus der USE-Prozedur wird bei der auf die ALLOCATE-Anweisung folgende ausführbaren Anweisung fortgesetzt.

  6. Die INITIALIZED-Angabe bei Format 1 bewirkt, dass für datenname-1 eine INITIALIZE-Anweisung INITIALIZE datenname-1 WITH FILLER ALL TO VALUE THEN TO DEFAULT ausgeführt wird.

  7. Fehlt die INITIALIZED-Angabe bei Format 1, so wird eine INITIALIZE-Anweisung INITIALIZE datenname-1 WITH FILLER REPLACING DATA-POINTER BY NULL, PROGRAM-POINTER BY NULL, OBJECT-REFERENCE BY NULL ausgeführt.

  8. Die INITIALIZED-Angabe bei Format 2 bewirkt, dass der zugewiesene Speicher mit binären NULLEN initialisiert wird.

  9. Fehlt die INITIALIZED-Angabe bei Format 2, ist der Inhalt des zugewiesenen Speichers undefiniert.

  10.  Der Speicher bleibt zugewiesen, bis er entweder explizit mit einer FREE-Anweisung freigegeben wird oder der Programmlauf beendet wird.