Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Verwendung von Datenzeigern

&pagelevel(4)&pagelevel

Zeiger können wie folgt verwendet werden:

  1. als formale Parameter in der PROCEDURE DIVISION USING-Angabe

  2. als aktuelle Parameter in der CALL- oder INVOKE-Anweisung

  3. in der SET-Anweisung: Zuweisen und Aktualisieren einer Adresse (UP/DOWN)

  4. in Vergleichsbedingungen: vergleichen mit der vordefinierten Adresse NULL, mit einem Datenadressbezeichner und anderen Zeigern auf Gleichheit und Ungleichheit

  5. in der LENGTH-Funktion: diese Funktion liefert den Wert 4 für FUNCTION LENGTH (LENGTH OF ...) und FUNCTION LENGTH (zeiger). FUNCTION LENGTH (ADDRESS OF ...) wird derzeit nicht unterstützt.

Beispiel 12-28

Ein Unterprogramm GNR liefere entsprechend folgendem Programmprototyp einen Zeiger auf einen Datensatz zurück:

Program-id. Get-Next-Record is prototype. *> returns the address of a
                                             record
Data Division.
Linkage Section.
01 ptrl usage pointer.
Procedure Division returning ptrl.
End-program Get-Next-Record.

Ein Anwenderprogramm habe folgende Deklarationen:

program get-next-record  *> in the Repository Paragraph

01 p usage pointer.  *> in the Working-Storage Section

01 my-wreck based.   *> in the Linkage Section
   02 name pic x(30).
   02 addr pic x(30).

Folgende Anweisung der Procedure Division ruft das durch den Prototyp beschriebene Programm:

Call "GNR" as Get-Next-Record returning p

Auf das Datum kann mit my-wreck zugegriffen werden, da der Zeiger p die Adresse eines Datensatzes enthält:

Set address of my-wreck to p
Move "SAM JONES" to name in my-wreck

Beispiel 12-29

01 p2 usage pointer.
01 data-record.     *> the full record layout is described
   02 ...

Soll ein Zeiger dem Programm Process-Record "PR“ übergeben werden, dann kann wie folgt codiert werden:

Set p2 to adress of data-record.
Call "PR" using p2.

Alternativ kann die Adresse von data-record auch folgendermaßen übergeben werden * :

Call "PR" using address of data-record

* in diesem Fall bleibt jedoch eine mögliche Änderung des übergebenen Zeigers durch das gerufene Programm für den Rufer ohne Wirkung.