ESCAPE
|
|
TOP
[REPOSITION]
|
|
BOTTOM
[(r)] [IMMEDIATE]
|
|||
ROUTINE
[IMMEDIATE]
|
|||
MODULE
[IMMEDIATE]
|
ESCAPE
|
|
|
TOP
[REPOSITION]
|
|
|
BOTTOM
[(r)] [IMMEDIATE]
|
|||||
ROUTINE
[IMMEDIATE]
|
|||||
MODULE
[IMMEDIATE]
|
Dieser Abschnitt behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Verwandte Statements:
FIND | FOR | HISTOGRAM | PARSE
JSON | PARSE
XML | READ |
READ RESULT SET
(SQL)| READ WORK
FILE | READLOB
| REPEAT | SORT
CALL | CALL FILE | CALL
LOOP | CALLNAT | DEFINE
SUBROUTINE | FETCH | PERFORM
Gehört zur Funktionsgruppe:
Das Statement ESCAPE dient dazu, den linearen Ablauf der Ausführung einer
Verarbeitungsschleife oder eines Subprogramms zu unterbrechen.
Mit den Schlüsselwörtern TOP, BOTTOM und ROUTINE
geben Sie an, wo die Verarbeitung nach dem ESCAPE-Statement fortgesetzt
werden soll.
Ein ESCAPE TOP- bzw. ESCAPE BOTTOM-Statement bezieht sich immer
auf die innerste gerade aktive Verarbeitungsschleife. Das ESCAPE-Statement
muss nicht unbedingt innerhalb der Schleife stehen.
Befindet sich das ESCAPE TOP- bzw. ESCAPE BOTTOM-Statement in
einem Subprogramm (Subroutine, Subprogramm oder mit FETCH RETURN aufgerufenes
Programm), werden die innerhalb der Verarbeitungsschleife aufgerufenen Subprogramme
automatisch beendet.
In einer Verarbeitungsschleife können mehrere ESCAPE-Statements enthalten
sein.
Die Ausführung eines ESCAPE-Statements kann an eine logische Bedingung
geknüpft werden. Befindet sich das ESCAPE-Statement in einem AT END OF
DATA-, AT BREAK- oder AT END OF PAGE-Statement-Block,
so wird die Verarbeitung des betreffenden Blocks abgebrochen und die
ESCAPE-Verarbeitung wie angegeben fortgesetzt.
Wird das ESCAPE-Statement während einer IF NO RECORDS
FOUND-Bedingung ausgeführt, werden keine schleifenabschließenden Verarbeitungen
durchgeführt (entspricht ESCAPE IMMEDIATE).
Syntax-Element-Beschreibung
| Syntax-Element | Beschreibung |
|---|---|
ESCAPE TOP
|
TOP-Option:
|
REPOSITION
|
TOP REPOSITION-Option:
Wenn ein Gleichzeitig setzt
|
ESCAPE BOTTOM
|
BOTTOM-Option:
Im Reporting Mode ist |
(r) |
Statement-Referenzierung:
Notation
Ein Label oder eine Referenznummer kann jedoch nur dann angegeben werden, wenn
das |
IMMEDIATE
|
IMMEDIATE-Option:
Wenn Sie das Schlüsselwort |
ESCAPE ROUTINE
|
ROUTINE-Option:
Diese Option bewirkt, dass das aktive Natural-Subprogramm, das entweder über
Im Falle einer Subroutine wird die Verarbeitung mit dem ersten Statement fortgesetzt, das auf das Statement folgt, mit dem die Subroutine aufgerufen wurde. Im Falle eines Hauptprogramms gelangt Natural in den Kommando-Modus. Alle
aktiven Schleifen innerhalb des Subprogramms werden beendet und
schleifenabschließende Verarbeitungen ( |
ESCAPE MODULE
|
MODULE-Option:
Diese Option bewirkt, dass die gesamte aktive Programmebene, einschließlich aller internen Subroutinen, die Kontrolle abgibt. Die Kontrolle wird dann an das Objekt der vorherigen Programmebene zurückgegeben. Wenn Wenn keine interne Subroutine aktiv ist, führt
Wie bei |
** Example 'ESCEX1': ESCAPE
************************************************************************
DEFINE DATA LOCAL
1 EMPLOY-VIEW VIEW OF EMPLOYEES
2 CITY
2 FIRST-NAME
2 NAME
2 AREA-CODE
2 PHONE
*
1 #CITY (A20) INIT <' '>
1 #CNTL (A1) INIT <' '>
END-DEFINE
*
REPEAT
INPUT 'ENTER VALUE FOR CITY: ' #CITY
/ 'OR ''.'' TO TERMINATE '
IF #CITY = '.'
ESCAPE BOTTOM
END-IF
/*
FND. FIND EMPLOY-VIEW WITH CITY = #CITY
/*
IF NO RECORDS FOUND
WRITE 'NO RECORDS FOUND'
ESCAPE BOTTOM (FND.)
END-NOREC
AT START OF DATA
INPUT (AD=O) 'RECORDS FOUND:' *NUMBER //
'ENTER ''D'' TO DISPLAY RECORDS' #CNTL (AD=M)
IF #CNTL NE 'D'
ESCAPE BOTTOM (FND.)
END-IF
END-START
/*
DISPLAY NOTITLE NAME FIRST-NAME PHONE
END-FIND
END-REPEAT
Ausgabe des Programms ESCEX1:
ENTER VALUE FOR CITY: PARIS (OR '.' TO TERMINATE)
Nach Eingabe und Bestätigung des Namens der Stadt:
RECORDS FOUND: 26 ENTER 'D' TO DISPLAY RECORDS D
Ergebnis nach Eingabe und Bestätigung von D:
NAME FIRST-NAME TELEPHONE
-------------------- -------------------- ---------------
MAIZIERE ELISABETH 46758304
MARX JEAN-MARIE 40738871
REIGNARD JACQUELINE 48472153
RENAUD MICHEL 46055008
REMOUE GERMAINE 36929371
LAVENDA SALOMON 40155905
BROUSSE GUY 37502323
GIORDA LOUIS 37497316
SIECA FRANCOIS 40487413
CENSIER BERNARD 38070268
DUC JEAN-PAUL 38065261
CAHN RAYMOND 43723961
MAZUY ROBERT 44286899
FAURIE HENRI 44341159
VALLY ALAIN 47326249
BRETON JEAN-MARIE 48467146
GIGLEUX JACQUES 40477399
KORAB-BRZOZOWSKI BOGDAN 45288048
XOLIN CHRISTIAN 46060015
LEGRIS ROGER 39341509
VVVV