Zeiger können wie folgt verwendet werden:
als formale Parameter in der PROCEDURE DIVISION USING-Angabe
als aktuelle Parameter in der CALL- oder INVOKE-Anweisung
in der SET-Anweisung: Zuweisen und Aktualisieren einer Adresse (UP/DOWN)
in Vergleichsbedingungen: vergleichen mit der vordefinierten Adresse NULL, mit einem Datenadressbezeichner und anderen Zeigern auf Gleichheit und Ungleichheit
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.