Setzen von Testpunkten
Paragrafen und Kapitel des inneren Programms, in dem die Unterbrechungsstelle liegt, können ohne Qualifikation angesprochen werden.
Auf Kapitel und Paragrafen in einem anderen Programm, das auch in einer anderen Übersetzungseinheit liegen kann, wird mit der S- und PROC-Qualifikation zugegriffen:
%INSERT [S=program-id.]PROC=program-id-innen.paragraph [IN kapitel]
Die S-Qualifikation muss immer dann angegeben werden, wenn der Testpunkt in einem anderen getrennt übersetzten Programm gesetzt werden soll.
Ein Testpunkt am Beginn der Procedure Division des äußersten Programms kann mit einer PROG-Qualifikation gesetzt werden:
%INSERT PROG=program-id.program-id
oder ausgeschrieben
%INSERT S=program-id.PROC=program-id.program-id
Dieses Vorgehen ist nur dann sinnvoll, wenn program-id nicht länger als 8 Zeichen ist oder ein LLM generiert wurde, da sonst der Source-Name, nicht aber der Procedure-Name auf 8 Zeichen abgeschnitten wird.
Ein Testpunkt auf den Anfang eines inneren Programms kann, da S und PROC verschieden sind, nicht mit einer PROG-Qualifikation gesetzt werden, sondern muss wie folgt angegeben werden:
%INSERT [S=program-id.]PROC=program-id-innen.program-id-innen
Namen in der aktuellen Übersetzungseinheit, die dort eindeutig sind, können auch ohne Qualifizierung angesprochen werden.
Zugriff auf Daten
Mit %D werden die Daten des aktuellen geschachtelten Programms gefunden sowie Daten mit dem GLOBAL-Attribut, die nicht lokal verdeckt sind; d.h. es kann auf die gleichen Daten zugegriffen werden, auf die auch das Programm selbst an dieser Stelle zugreifen kann.
Mit %SD kann man die Daten aller dynamisch umgebenden Programme erhalten, entsprechend der aktuellen Aufrufhierarchie.
Mit der S- und PROC-Qualifikation kann man gezielt auf ein Datum eines anderen Programms zugreifen:
%D PROC=program-id-innen.datenfeld
Dies ist auch mit %SD ohne Qualifikation möglich, sofern das Datum in einem rufenden Programm liegt.
Sowohl beim Zugriff auf Testpunkte als auch auf Daten gilt, dass die PROC-Qualifikation entsprechend der Programmverschachtelung mehrfach wiederholt werden kann.
Das %TRACE-Kommando protokolliert alle durchlaufenen Anweisungen der aktuellen CSECT; d.h. auch Anweisungen der gerufenen inneren Programme werden protokolliert, nicht aber die Anweisungen in getrennt übersetzten Programmen.
Sofern beim Trace die Anweisungstypen angezeigt werden, meldet AID, wegen intern generierter Paragrafen, gelegentlich zusätzliche LABEL-Angaben.