Funktion
Die USE-Anweisung leitet Prozedurvereinbarungen ein und legt die Bedingungen für deren Ausführung fest. Die USE-Anweisung selbst wird jedoch nicht ausgeführt.
Format 1 | vereinbart Benutzerkennsatzroutinen. |
Format 2 | vereinbart Prozeduren, die durchlaufen werden sollen, falls für eine Datei ein Ein-/Ausgabe-Fehler auftritt. |
Format 3 | wie Format 2, aber mit GLOBAL-Anweisung. Gilt nur für geschachtelte Programme. |
Format 4 | vereinbart Prozeduren, die durchlaufen werden sollen, wenn ein Ausnahmezustand ausgelöst worden ist. |
Format 5 | vereinbart Prozeduren, die vom Listenprogrammsteuersystem (Report Writer) vor der Listenausgabe durchlaufen werden sollen (siehe Kapitel „Listenprogramm (Report-Writer)"). |
Format 1 für sequenzielle Dateiorganisation
USE {BEFORE | AFTER} STANDARD [ENDING | BEGINNING] [REEL | UNIT | FILE] LABEL PROCEDURE ON {dateiname-1}...
Syntaxregeln
dateiname-1 muss in einer Dateierklärung (FD) der DATA DIVISION des Programms enthalten sein.
dateiname-1 darf nicht der Name einer Sortierdatei sein.
Mit dateiname-1 wird diejenige Dateierklärung bezeichnet, für die die angegebenen Kennsatzprozeduren durchgeführt werden sollen.
Die angegebenen Prozeduren werden im Zusammenhang mit OPEN- und CLOSE-Anweisungen für die Datei durchlaufen.
Nach Durchlaufen einer USE-Prozedur wird das Programm bei der aufrufenden Routine fortgesetzt.
BEFORE oder AFTER bezeichnen die Art der zu verarbeitenden Kennsätze.
BEFORE bedeutet, dass nicht standardisierte Kennsätze verarbeitet werden sollen (solche Kennsätze können nur für Magnetbanddateien angegeben werden).
AFTER bedeutet, dass auf Standard-Dateikennsätze standardisierte Benutzerkennsätze folgen und diese verarbeitet werden sollen.
BEGINNING oder ENDING zeigt an, dass entweder Anfangs- oder Endekennsätze verarbeitet werden sollen.
Falls die Angaben BEGINNING und ENDING fehlen, werden die vereinbarten Prozeduren sowohl für Anfangs- als auch Endekennsätze durchlaufen.
Die Angaben REEL, UNIT oder FILE bedeuten, dass die vereinbarten Prozeduren durchlaufen werden sollen, wenn Datenträger-, Spulen- oder Dateikennsätze vorhanden sind.
Die Angabe REEL gilt nicht für Plattenspeicherdateien. Die Angabe UNIT ist nicht anwendbar für Dateien im wahlfreien Zugriffsmodus, da in diesem Fall nur Dateikennsätze verarbeitet werden. Vom Compiler werden die Angaben REEL und UNIT gleich behandelt.
Fehlen die obigen Angaben, werden die vereinbarten Prozeduren, je nach Art des Datenträgers, entweder für Spulen- und Dateikennsätze oder für Datenträger- und Dateikennsätze durchlaufen.
Für zeilensequenzielle Dateien ist die USE-Anweisung vom Format 1 nicht zulässig.
Allgemeine Regeln
Die für eine Datei zu bearbeitenden Kennsätze müssen innerhalb der Dateierklärung einer Datei als Datennamen in der LABEL RECORDS-Klausel aufgeführt werden und als 01 Datenfelder innerhalb der Dateierklärung oder der LINKAGE SECTION definiert werden.
Der gleiche Dateiname kann in verschiedenen Variationen der USE-Anweisung von Format 1 auftreten. Jedoch darf dies nicht den gleichzeitigen Aufruf mehrerer Prozedurvereinbarungen bewirken.
Falls die Angabe dateiname-1 benutzt wird, darf innerhalb der Dateierklärung für diese Datei nicht die LABEL RECORDS-Klausel mit OMITTED-Angabe vorhanden sein.
Für externe Dateien können keine Benutzerkennsatzroutinen vereinbart werden.
Die Standardsystemprozeduren werden für alle Standardkennsätze durchlaufen, die aus System- und Benutzerkennsätzen bestehen.
Kennsätze von Eingabe- oder Ein-/Ausgabe-Dateien werden in der folgenden Reihenfolge überprüft:
Die Standard-Anfangskennsätze werden vom Ein-/Ausgabe-System überprüft.
Benutzer-Anfangskennsätze werden von eventuell vorhandenen USE-Prozeduren überprüft.
Die Standard-Endekennsätze werden vom Ein-/Ausgabe-System überprüft.
Benutzer-Endekennsätze werden von eventuell vorhandenen USE-Prozeduren überprüft.
Kennsätze für Ausgabedateien werden in folgender Reihenfolge erzeugt:
Die Standard-Anfangskennsätze werden vom Ein-/Ausgabe-System erzeugt.
Benutzer-Anfangskennsätze werden von eventuell vorhandenen USE-Prozeduren erzeugt.
Bevor die Benutzer-Anfangskennsätze ausgegeben werden, wird überprüft, ob sie mit den Zeichen UHL beginnen.
Die Standard-Endekennsätze werden vom Ein-/Ausgabe-System erzeugt.
Benutzer-Endekennsätze werden von eventuell vorhandenen USE-Prozeduren erstellt.
Bevor die Benutzer-Endekennsätze ausgegeben werden, wird überprüft, ob sie mit den Zeichen UTL beginnen.
Innerhalb einer USE-Prozedur darf keine Bezugnahme auf Prozeduren außerhalb der Prozedurvereinbarungen (DECLARATIVES) enthalten sein mit Ausnahme der PERFORM-Anweisung.
Auf Prozedurnamen, die einer USE-Anweisung untergeordnet sind, darf aus einer anderen Prozedur oder außerhalb der Prozedurvereinbarungen (DECLARATIVES) nur mit einer PERFORM-Anweisung Bezug genommen werden.
Der Ausgang für eine Prozedurvereinbarung vom Format 1 wird durch den Compiler hinter der letzten Anweisung des entsprechenden Kapitels erzeugt. Alle logischen Programmabläufe innerhalb des Kapitels müssen auf diesen Ausgang führen.
Zur Allgemeinen Regel 7. gibt es eine Ausnahme:
Die GO TO-Anweisung mit MORE-LABELS-Angabe kann als spezieller Ausgang benutzt werden. Nach Ausführung dieser Anweisung werden vom Laufzeitsystem die folgenden Schritte durchlaufen:
Falls Kennsätze erzeugt werden, werden die aktuellen Anfangs- oder Endekennsätze geschrieben; danach wird das Programm am Anfang der Prozedurvereinba
rung fortgesetzt, um weitere Kennsätze erzeugen zu können. Der Benutzer ist dafür verantwortlich, dass die letzte Anweisung des Kapitels durchlaufen wird, nachdem die Kennsätze erzeugt worden sind. Hierbei ist zu beachten, dass nach Ausführung der GO TO-Anweisung mit MORE-LABELS-Angabe auf alle Fälle ein Kennsatz geschrieben wird; falls vom Benutzer kein neuer Kennsatz zur Verfügung gestellt wurde, wird vom Laufzeitsystem ein Hilfskennsatz analog Allgemeine Regel 7. erzeugt.Falls Kennsätze überprüft werden, wird vom System ein zusätzlicher Anfangs- oder Endekennsatz gelesen; danach wird das Programm am Anfang der Prozedurvereinbarung fortgesetzt, um weitere Kennsätze überprüfen zu können. Während der Verarbeitung von Benutzerkennsätzen wird jedoch die Prozedurvereinbarung nur dann angesprungen, wenn weitere Benutzerkennsätze vorliegen. In diesem Falle muss der Programmierer also keinen Programmablauf durch die letzte Anweisung des Kapitels vorsehen. Wenn jedoch nicht standardisierte Kennsätze verarbeitet werden, ist dem System deren Anzahl nicht bekannt. Daher muss in diesem Fall die letzte Anweisung des Kapitels durchlaufen werden, um die Kennsatzverarbeitung abzuschließen.
Beispiel 8-82
In diesem Beispiel behandelt eine Prozedurvereinbarung (ALPHA) Anfangskennsätze und eine andere (BETA) Endekennsätze. Die Prozedurverbarungen werden sowohl im Eingabe- als auch Ausgabemodus durchlaufen.
IDENTIFICATION DIVISION. PROGRAM-ID. USESEQ. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. TERMINAL IS T. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT BEISPIEL-DATEI ASSIGN TO "TESTBAND". DATA DIVISION. FILE SECTION. FD BEISPIEL-DATEI, RECORD CONTAINS 100 CHARACTERS, LABEL RECORD IS BEISPIEL-KENNSATZ, DATA RECORD IS BEISPIEL-SATZ. 01 BEISPIEL-KENNSATZ. 02 KENNSATZ-KENNUNG PICTURE X(4). 02 KENNSATZ-INHALT PICTURE X(76). 01 BEISPIEL-SATZ PICTURE X(100). WORKING-STORAGE SECTION. 77 EIN-AUSGABE-INDIKATOR PICTURE X. 88 EINGABEMODUS VALUE "I". 88 AUSGABEMODUS VALUE "O". 77 KENNSATZ-ZAEHLER PICTURE 9. PROCEDURE DIVISION. DECLARATIVES. ALPHA SECTION. USE AFTER STANDARD BEGINNING FILE LABEL PROCEDURE ON BEISPIEL-DATEI. ALPHA-1. IF EINGABEMODUS THEN DISPLAY "512010 KENNSATZ GELESEN:-" BEISPIEL-KENNSATZ UPON T GO TO MORE-LABELS ELSE IF KENNSATZ-ZAEHLER = 0 THEN MOVE "UHL1" TO KENNSATZ-KENNUNG MOVE "1. KENNSATZ ERZEUGT DURCH ALPHA." TO KENNSATZ-INHALT DISPLAY "511030 KENNSATZ ERZEUGT:-" BEISPIEL-KENNSATZ UPON T MOVE 1 TO KENNSATZ-ZAEHLER GO TO MORE-LABELS ELSE MOVE "UHL2" TO KENNSATZ-KENNUNG MOVE "2. KENNSATZ ERZEUGT DURCH ALPHA" TO KENNSATZ-INHALT DISPLAY "511530 WEITERER KENNSATZ ERZEUGT:-" BEISPIEL-KENNSATZ UPON T MOVE 2 TO KENNSATZ-ZAEHLER END-IF END-IF. ALPHA-END. EXIT. BETA SECTION. USE AFTER STANDARD ENDING FILE LABEL PROCEDURE ON BEISPIEL-DATEI. BETA-1. IF EINGABEMODUS THEN DISPLAY "522010 KENNSATZ GELESEN: " BEISPIEL-KENNSATZ UPON T GO TO MORE-LABELS ELSE IF KENNSATZ-ZAEHLER = 0 THEN MOVE "UTL1" TO KENNSATZ-KENNUNG MOVE "1. KENNSATZ ERZEUGT" TO KENNSATZ-INHALT DISPLAY "521030 KENNSATZ ERZEUGT:-" BEISPIEL-KENNSATZ UPON T MOVE 1 TO KENNSATZ-ZAEHLER GO TO MORE-LABELS ELSE MOVE "UTL2" TO KENNSATZ-KENNUNG MOVE "2. KENNSATZ ERZEUGT DURCH BETA" TO KENNSATZ-INHALT DISPLAY "521530 WEITERER KENNSATZ ERZEUGT: " BEISPIEL-KENNSATZ UPON T MOVE 2 TO KENNSATZ-ZAEHLER END-IF END-IF. BETA-END. EXIT. END DECLARATIVES. GAMMA SECTION. AUF-GEHTS. MOVE "O" TO EIN-AUSGABE-INDIKATOR. OPEN OUTPUT BEISPIEL-DATEI CLOSE BEISPIEL-DATEI STOP RUN.
Beispiel 8-83
In diesem Beispiel sind UHL-FELD, KENNSATZ-NR und BENUTZER-INFO gemeinsame Kennsatzfelder. Daher ist es erlaubt, das Feld UHL-FELD im Paragrafen L-1 ohne Kennzeichnung zu verwenden.
Angaben in der DATA DIVISION:
FD DATEI-1 ... LABEL RECORD IS KENNSATZ-1 ... 01 KENNSATZ-1. 02 UHL-FELD PIC X(3). 02 KENNSATZ-NR PIC 9. 02 BENUTZER-INFO PIC X(76). 01 SATZ-1. ... FD DATEI-2 ... LABEL RECORD IS KENNSATZ-2 ... 01 KENNSATZ-2. 02 UHL-FELD PIC X(3). 02 KENNSATZ-NR PIC 9. 02 BENUTZER-INFO PIC X(76). 01 SATZ-2.
Anweisungen in der PROCEDURE DIVISION:
L SECTION. USE AFTER STANDARD LABEL PROCEDURE ON INPUT. L-1. IF UHL-FELD NOT = "UHL" THEN STOP RUN. ... GO TO MORE-LABELS. L-9. EXIT. M SECTION. ... EROEFFNEN SECTION. OEFFNEN. OPEN INPUT DATEI-1, DATEI-2.
Format 2 für alle Dateiorganisationsformen
USE AFTER STANDARD {ERROR | EXCEPTION} PROCEDURE ON { {dateiname-1}... | INPUT | OUTPUT | I-O | EXTEND}
Syntaxregeln
Die Angaben ERROR und EXCEPTION sind gleichbedeutend und können wahlweise verwendet werden.
dateiname-1 darf nur in einer USE-Anweisung angegeben werden. INPUT, OUTPUT, I-O und EXTEND dürfen höchstens einmal angegeben werden.
Die Dateien, auf die in der USE-Anweisung implizit (INPUT, OUTPUT, I-O und EXTEND) oder explizit (dateiname-1, dateiname-2,...) Bezug genommen wird, brauchen nicht dieselbe Organisation und denselben Zugriff zu haben.
Allgemeine Regeln
Die USE-Prozeduren werden durchlaufen:
bei Auftreten einer Ende-Bedingung, wenn die Ein-/Ausgabe-Anweisung, bei der diese Bedingung auftrat, keine AT END-Angabe enthält, oder bei Auftreten einer Schlüsselfehler- Bedingung, wenn die Ein-/Ausgabe-Anweisung, bei der diese Bedingung auftrat, keine INVALID KEY-Angabe enthält.
bei Auftreten eines schwerwiegenden Fehlers - FILE STATUS CODE ≥ 30.
Bei Angabe von dateiname-1 werden die Fehlerbehandlungsprozeduren nur für die genannten Dateien durchlaufen. Für diese Dateien werden keine anderen USE-Prozeduren durchlaufen.
Vor Ausführung der Benutzerfehlerroutine werden die Standardsystemroutinen zur Behandlung von Ein-/Ausgabe-Fehlern durchlaufen.
Nach Durchlaufen einer USE-Prozedur wird das Programm bei der laufenden Routine fortgesetzt.
INPUT bedeutet, dass die angegebenen Prozeduren nur für Dateien durchlaufen werden, die sich im Eingabemodus befinden (OPEN-Anweisung mit INPUT-Angabe).
OUTPUT bedeutet, dass die angegebenen Prozeduren nur für Dateien durchlaufen werden, die sich im Ausgabemodus befinden (OPEN-Anweisung mit OUTPUT-
Angabe).I-O bedeutet, dass die angegebenen Prozeduren nur für Dateien durchlaufen werden, die sich im Aktualisierungsmodus befinden (OPEN-Anweisung mit I-O-Angabe).
EXTEND bedeutet, dass die angegebenden Prozeduren nur für Dateien durchlaufen werden, die sich im Erweiterungsmodus befinden (OPEN-Anweisung mit EXTEND-Angabe).
Innerhalb einer USE-Prozedur darf keine Bezugnahme auf Prozeduren außerhalb der Prozedurvereinbarungen (DECLARATIVES) enthalten sein, mit Ausnahme der PERFORM- und der RESUME-Anweisung.
Auf Prozedurnamen, die einer USE-Anweisung untergeordnet sind, darf aus einer anderen Prozedur oder außerhalb der Prozedurvereinbarungen (DECLARATIVES) nur mit einer PERFORM-Anweisung Bezug genommen werden.
Die Anweisungen innerhalb einer USE-Prozedur dürfen nicht dazu führen, dass eine noch aktive USE-Prozedur erneut aktiviert wird.
Beispiel 8-84
IDENTIFICATION DIVISION. PROGRAM-ID. USESEQ2. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. TERMINAL IS T. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT OPTIONAL EINGABE ASSIGN "EINGABE" FILE STATUS ANZEIGE. DATA DIVISION. FILE SECTION. FD EINGABE. 01 SATZ PIC X(80). WORKING-STORAGE SECTION. 01 ANZEIGE PIC XX. 01 CLOSE-INDIKATOR PIC X VALUE "0". 88 DATEI-ZU VALUE "0". 88 DATEI-OFFEN VALUE "1". PROCEDURE DIVISION. DECLARATIVES. EINGABE-FEHLER SECTION. USE AFTER ERROR PROCEDURE ON EINGABE. STATUS-ABFRAGE. IF ANZEIGE = "10" DISPLAY "Dateiende von Eingabe erreicht" UPON T ELSE DISPLAY "Nicht behebbarer Fehler (" ANZEIGE ") FUER DATEI EINGABE" UPON T IF DATEI-OFFEN CLOSE EINGABE END-IF DISPLAY "Programm abnormal beendet" UPON T STOP RUN END-IF. END DECLARATIVES. ANFANG SECTION. ARBEIT. OPEN INPUT EINGABE SET DATEI-OFFEN TO TRUE READ EINGABE CLOSE EINGABE WITH LOCK SET DATEI-ZU TO TRUE OPEN INPUT EINGABE CLOSE EINGABE STOP RUN.
Beispiel 8-85
IDENTIFICATION DIVISION. PROGRAM-ID. USEREL. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. TERMINAL IS T. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT OPTIONAL WORKFILE ASSIGN TO "WORKFILE" ORGANIZATION IS RELATIVE ACCESS MODE IS DYNAMIC RELATIVE KEY IS RELSCHL FILE STATUS ANZEIGE. DATA DIVISION. FILE SECTION. FD WORKFILE. 01 SATZ. 03 INHALT PIC X(100). WORKING-STORAGE SECTION. 01 ANZEIGE PIC XX. 01 RELSCHL PIC 9(4). 01 CLOSE-INDIKATOR PIC X VALUE "0". 88 DATEI-ZU VALUE "0". 88 DATEI-OFFEN VALUE "1". PROCEDURE DIVISION. DECLARATIVES. EINGABE-FEHLER SECTION. USE AFTER ERROR PROCEDURE ON WORKFILE. STATUS-ABFRAGE. EVALUATE ANZEIGE WHEN "10" DISPLAY "Dateiende von WORKFILE erreicht" UPON T WHEN "22" DISPLAY "Satz mit Schluessel" RELSCHL "SCHON VORHANDEN" UPON T WHEN "23" DISPLAY "Satz mit Schluessel" RELSCHL "NICHT VORHANDEN" UPON T WHEN OTHER DISPLAY "Nicht behebbarer Fehler "(" ANZEIGE ")" "FUER DATEIEINGABE" UPON T IF DATEI-OFFEN THEN CLOSE WORKFILE END-IF DISPLAY "Programm abnormal beendet" UPON T STOP RUN END-EVALUATE. END-DECLARATIVES. HAUPT SECTION. AUF-ZU. ... STOP RUN.
Beispiel 8-86
IDENTIFICATION DIVISION. PROGRAM-ID. USEIND. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. TERMINAL IS T. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT OPTIONAL DATEI1 ASSIGN TO "EIN-AUS" ORGANIZATION IS INDEXED RECORD KEY ISAMSCHL ACCESS MODE IS DYNAMIC FILE STATUS ANZEIGE. DATA DIVISION. FILE SECTION. FD DATEI1. 01 SATZ. 03 ISAMSCHL PIC 9(8). 03 INHALT PIC X(72). WORKING-STORAGE SECTION. 01 ANZEIGE PIC XX. 01 CLOSE-INDIKATOR PIC X VALUE "0". 88 DATEI-ZU VALUE "0". 88 DATEI-OFFEN VALUE "1". PROCEDURE DIVISION. DECLARATIVES. DATEI-FEHLER SECTION. USE AFTER ERROR PROCEDURE ON DATEI1. STATUS-ABFRAGE. EVALUATE ANZEIGE WHEN "10" DISPLAY "Dateiende von DATEI1 erreicht" UPON T WHEN "21" DISPLAY "Satz mit Schluessel" ISAMSCHL "SCHON VORHANDEN ODER NICHT IN" "AUFSTEIGENDER REIHENFOLGE" UPON T WHEN "22" DISPLAY "Satz mit Schluessel" ISAMSCHL "SCHON VORHANDEN" UPON T WHEN "23" DISPLAY "Satz mit Schluessel" ISAMSCHL "NICHT VORHANDEN" UPON T WHEN OTHER DISPLAY "Nicht behebbarer Fehler" "(" ANZEIGE ") FUER DATEIEINGABE" UPON T IF DATEI-OFFEN THEN CLOSE DATEI1 END-IF DISPLAY "Programm abnormal beendet" UPON T STOP RUN END-EVALUATE. END DECLARATIVES. HAUPT SECTION. AUF-ZU. ... STOP RUN.
Format 3 USE Anweisung mit GLOBAL-Angabe
USE GLOBAL AFTER STANDARD {EXCEPTION | ERROR} PROCEDURE ON {{dateiname-1}... | INPUT | OUTPUT | I-O | EXTEND}
Die USE-Anweisung mit GLOBAL-Angabe kann in geschachtelten Programmen angegeben werden, um Prozedurvereinbarungen bzw. Kennsatzroutinen als global zu definieren.
Für die Vereinbarung von Benutzerkennsatzroutinen darf keine GLOBAL-Klausel angegeben wersen.
Syntaxregeln
Eine USE-Prozedur benötigt keine FD-Erklärung mit GLOBAL-Klausel.
Weitere Syntaxregeln zur USE-Anweisung siehe Formate vorher.
Allgemeine Regeln
Die GLOBAL-Angabe für eine USE-Prozedur hat die gleiche Wirkung wie die GLOBAL-Klausel in Daten- und Dateibeschreibungen.
Beansprucht eine Ein-/Ausgabeanweisung eine USE-Prozedur, so wird die gültige USE-Prozedur aus der Menge aller in dem geschachtelten Programm vereinbarten USE-Prozeduren nach folgenden Präzedenzregeln ausgewählt:
Wenn im selben Programm eine passende (siehe Format 2) USE-Prozedur definiert ist, so wird diese ausgewählt.
Wenn a) nicht zutrifft, gilt eine passende USE-Prozedur, die im direkt übergeordneten (nächstäußeren) Programm als global vereinbart ist.
Wenn weder a) noch b) zutreffen, gilt eine passende USE-Prozedur, die im indirekt übergeordneten Programm als global vereinbart ist.
Regel c) wird solange angewendet, bis alle indirekt übergeordneten Programme nach der gültigen globalen USE-Prozedur durchsucht sind.
Als Erweiterung zum ANS85 erlaubt der hier beschriebene Compiler auch PERFORM-Anweisungen, die sich auf Programmteile außerhalb der Prozedurvereinbarungen (DECLARATIVES) beziehen. Diese Programmteile können auch CALL-, GO TO-, GOBACK- und EXIT PROGRAM-Anweisungen enthalten. Bei Anwendung einer globalen USE-Prozedur kann es zu einem rekursiven Aufruf desjenigen Programms kommen, das die USE-Prozedur aktiviert hat. Ein - stets unerlaubter - rekursiver Aufruf wird erst beim Ablauf des Programms festgestellt und führt zum Programmabbruch.
Eine globale USE-Prozedur sollte deshalb keine EXIT PROGRAM-Anweisung ausführen.
Beispiel 8-87
für die Gültigkeitsbereiche globaler USE-Prozeduren
Format 4 für Ausnahmezustände
USE AFTER {EXCEPTION CONDITION | EC } {ausnahmesituationsname | EC-ALL} ...
Syntaxregeln
ausnahmesituationsname muss einer der in der Tabelle 45 aufgeführten Namen sein.
Innerhalb einer USE-Prozedur darf keine Bezugnahme auf Prozeduren außerhalb der Prozedurvereinbarungen (DECLARATIVES) enthalten sein, mit Ausnahme der PERFORM- und RESUME-Anweisung.
Auf Prozedurnamen, die einer USE-Anweisung untergeordnet sind, darf aus einer anderen Prozedur oder außerhalb der Prozedurvereinbarungen (DECLARATIVES) nur mit einer PERFORM-Anweisung Bezug genommen werden.
EC ist gleichbedeutend mit EXCEPTION CONDITION.
Allgemeine Regeln
Die Anweisungen innerhalb einer USE-Prozedur dürfen nicht dazu führen, dass eine noch aktive USE-Prozedur erneut aktiviert wird.
Wird ein Ausnahmezustand ausgelöst, so wird die erste USE-Prozedur, in der der zugehörige Ausnahmesituationsname angegeben ist, ausgewählt.
Ist dieser Ausnahmesituationsname in keiner USE-Prozedur angegeben, so wird die erste USE-Prozedur, in der EC-ALL angegeben ist, ausgewählt.
Ist auch EC-ALL in keiner USE-Prozedur angegeben, so wird der Programmlauf abhängig von der Kategorie der Ausnahmesituation (fatal/non-fatal) abgebrochen oder bei der nächsten ausführbaren Anweisung fortgesetzt.Wird eine USE-Prozedur durch eine Ausnahemsituation aktiviert, so wird der Programmlauf abgebrochen, wenn die USE-Prozedur nicht durch die Ausführung einer expliziten Anweisung (z.B. GOBACK, RESUME) verlassen wurde.