|
|
ACCEPT |
|
[IF] logical-condition |
REJECT |
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:AT
BREAK | AT START OF
DATA | AT END OF
DATA | BACKOUT
TRANSACTION | BEFORE BREAK
PROCESSING | DELETE | END TRANSACTION | FIND | HISTOGRAM | GET | GET SAME | GET TRANSACTION DATA | LIMIT | PASSW | PERFORM BREAK PROCESSING | READ | RETRY | STORE | UPDATE
関連機能グループ:データベースへのアクセスと更新
ステートメント ACCEPT および REJECT は、ユーザー指定の論理条件を基準にして、レコードを受け入れまたは除外します。ACCEPT/REJECT ステートメントは、処理ループ内でデータレコードを読み込むステートメント(FIND、READ、HISTOGRAM、CALL FILE、SORT または READ WORK FILE)とともに使用します。指定した条件は、レコードが選択され、読み込まれた後に評価されます。
ACCEPT/REJECT ステートメントの処理に達すると、レコードを読むステートメントで開始された現在稼働している最も内側の処理ループが、内部的に参照されます。
ACCEPT/REJECT ステートメントがサブルーチン内にあり、それがレコードの除外(REJECT)である場合、処理ループに入ったサブルーチンは自動的に終了します。そして、現在稼働している最も内側の処理ループの次のレコードで処理が続けられます。
| 構文要素 | 説明 |
|---|---|
IF |
IF 節: FIND、READ、または HISTOGRAM ステートメントでレコードが選択された/読み込まれた場合、IF 節を ACCEPT または REJECT ステートメントで使用して、指定された条件に加えて論理条件の基準を指定することもできます。論理条件の基準は、レコードが読み込まれ、レコードの処理が開始した後に評価されます。
|
logical-condition |
論理条件の基準: 基本の条件は、1 つの関係式です。複数の関係式を論理演算子(AND、OR)と組み合わせて、複合条件を構成することができます。
また、演算式を使用して、1 つの関係式を構成することもできます。 論理条件に使用するフィールドとして、データベースフィールドあるいはユーザー定義変数が指定できます。論理条件の詳細については、『プログラミングガイド』の「論理条件基準」を参照してください。 注意: |
通常 1 つの処理ループ内では、ACCEPT または REJECT ステートメントを 1 つのみ使用します。2 つ以上の ACCEPT/REJECT を連続して指定した場合は、次の条件が適用されます。
同一処理ループ内に、続けて ACCEPT および REJECT ステートメントを使用すると、指定した順序で処理されます。
ACCEPT 条件を満たすと、そのレコードは受け入れ(ACCEPT)られます。同じ処理ループ内の連続した ACCEPT/REJECT ステートメントは処理されません。
REJECT 条件を満たすと、そのレコードは除外(REJECT)されます。同じ処理ループ内の連続した ACCEPT/REJECT ステートメントは処理されません。
処理が最後の ACCEPT/REJECT ステートメントに達すると、そのレコードを受け入れるか除外されるかは、最後のステートメントで決定します。
他のステートメントが、複数の ACCEPT/REJECT ステートメントの間に挿入されていると、各 ACCEPT/REJECT ステートメントは独立して処理されます。
ACCEPT または REJECT ステートメントを含む処理ループに対して、LIMIT ステートメントや他の制限指定が与えられている場合は、各処理レコードは受け入れられる(ACCEPT)か除外される(REJECT)かにかかわらずカウントされ、制限数と比較されます。
** Example 'ACREX1': ACCEPT ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 NAME 2 SEX 2 MAR-STAT END-DEFINE * LIMIT 50 READ EMPLOY-VIEW ACCEPT IF SEX='M' AND MAR-STAT = 'S' WRITE NOTITLE '=' NAME '=' SEX 5X '=' MAR-STAT END-READ END
NAME: MORENO S E X: M MARITAL STATUS: S NAME: VAUZELLE S E X: M MARITAL STATUS: S NAME: BAILLET S E X: M MARITAL STATUS: S NAME: HEURTEBISE S E X: M MARITAL STATUS: S NAME: LION S E X: M MARITAL STATUS: S NAME: DEZELUS S E X: M MARITAL STATUS: S NAME: BOYER S E X: M MARITAL STATUS: S NAME: BROUSSE S E X: M MARITAL STATUS: S NAME: DROMARD S E X: M MARITAL STATUS: S NAME: DUC S E X: M MARITAL STATUS: S NAME: BEGUERIE S E X: M MARITAL STATUS: S NAME: FOREST S E X: M MARITAL STATUS: S NAME: GEORGES S E X: M MARITAL STATUS: S
** Example 'ACREX2': ACCEPT/REJECT
************************************************************************
DEFINE DATA LOCAL
1 EMPLOY-VIEW VIEW OF EMPLOYEES
2 NAME
2 FIRST-NAME
2 SALARY (1)
*
1 #PROC-COUNT (N8) INIT <0>
END-DEFINE
*
EMP. FIND EMPLOY-VIEW WITH NAME = 'JACKSON'
WRITE NOTITLE *COUNTER NAME FIRST-NAME 'SALARY:' SALARY(1)
/*
ACCEPT IF SALARY (1) LT 50000
WRITE *COUNTER 'ACCEPTED FOR FURTHER PROCESSING'
/*
REJECT IF SALARY (1) GT 30000
WRITE *COUNTER 'NOT REJECTED'
/*
ADD 1 TO #PROC-COUNT
END-FIND
*
SKIP 2
WRITE NOTITLE 'TOTAL PERSONS FOUND ' *NUMBER (EMP.) /
'TOTAL PERSONS SELECTED' #PROC-COUNT
END
1 JACKSON CLAUDE SALARY: 33000
1 ACCEPTED FOR FURTHER PROCESSING
2 JACKSON FORTUNA SALARY: 36000
2 ACCEPTED FOR FURTHER PROCESSING
3 JACKSON CHARLIE SALARY: 23000
3 ACCEPTED FOR FURTHER PROCESSING
3 NOT REJECTED
TOTAL PERSONS FOUND 3
TOTAL PERSONS SELECTED 1