ESCAPE
|
TOP [REPOSITION ]
|
||
BOTTOM [(r)] [IMMEDIATE ]
|
|||
ROUTINE [IMMEDIATE ]
|
|||
MODULE [IMMEDIATE ]
|
ESCAPE
|
TOP [REPOSITION ]
|
||||
BOTTOM [(r)] [IMMEDIATE ]
|
|||||
ROUTINE [IMMEDIATE ]
|
|||||
MODULE [IMMEDIATE ]
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:
関連機能グループ:
ESCAPE
ステートメントは、処理ループやルーチンの実行を中断するために使用します。
キーワードの TOP
、BOTTOM
、および ROUTINE
によって、ESCAPE
ステートメントの実行後に処理をどこから続けるかを指定します。
ESCAPE TOP
および ESCAPE BOTTOM
ステートメントは、内部的に最も内側でアクティブになっている処理ループを参照します。 ESCAPE
ステートメントを、物理的に処理ループ内に置く必要はありません。
ESCAPE TOP
および ESCAPE BOTTOM
ステートメントをルーチン内(サブルーチン、サブプログラム、または FETCH RETURN
で起動されたプログラム)に指定すると、処理ループの実行中に呼び出されたルーチンは自動的に終了します。
同一の処理ループ内に、複数の ESCAPE
ステートメントを指定できます。
ESCAPE
ステートメントは、論理条件に基づいて実行できます。 ESCAPE
ステートメントが AT END OF DATA
、AT BREAK
、または AT END OF PAGE
ブロックの処理中に実行されると、特殊条件ブロックの実行を終了し、指定された ESCAPE
処理を行います。
IF NO RECORDS FOUND 条件の処理中に ESCAPE
ステートメントが実行されると、ループ終了処理は行われません(ESCAPE IMMEDIATE
と同じ)。
ESCAPE TOP | ESCAPE TOP を実行すると、処理ループの先頭から処理が続行されます。 処理ループが再び先頭から繰り返されます。
|
---|---|
REPOSITION |
同時に、
|
ESCAPE BOTTOM |
レポーティングモードでは、 |
(r) | 表記 (r) :ESCAPE BOTTOM に続けてラベルや参照番号を指定すると、ラベルや参照番号で示した処理ループの直後の最初のステートメントから処理が続行されます。
|
IMMEDIATE | キーワード IMMEDIATE を指定すると、ループ終了処理は行われません。
|
ESCAPE ROUTINE |
サブルーチンの場合、そのサブルーチンを呼び出したステートメントの、次のステートメントから処理が続行されます。 メインプログラムの場合は、Natural コマンドモードに入ります。 ルーチン内でアクティブになっているループはすべて終了し、ループ終了処理、およびユーザー開始( |
ESCAPE MODULE |
ESCAPE MODULE を実行すると、現在のプログラムレベル全体(すべての内部サブルーチンを含む)の制御が中止されます。 その後、制御は前のプログラムレベルのオブジェクトに返されます。 内部サブルーチンの階層内で
|
** 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
ENTER VALUE FOR CITY: PARIS (OR '.' TO TERMINATE)
RECORDS FOUND: 26 ENTER 'D' TO DISPLAY RECORDS 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