LIMIT n |
このドキュメントでは、次のトピックについて説明します。
関連ステートメント:ACCEPT/REJECT | AT BREAK | AT START OF DATA | AT END OF DATA | BACKOUT TRANSACTION | BEFORE BREAK PROCESSING | DELETE | END TRANSACTION | FIND | GET | GET SAME | GET TRANSACTION | HISTOGRAM | PASSW | PERFORM BREAK
PROCESSING | READ | RETRY | STORE | UPDATE
関連機能グループ:データベースへのアクセスと更新
LIMIT ステートメントは、FIND、READ、または HISTOGRAM ステートメントで開始された処理ループの実行回数を制限するために使用します。
制限値は、他の LIMIT ステートメントで上書きされるまで、プログラム内の後続のすべての処理ループに有効となります。
LIMIT ステートメントは、制限値が明示されている個々のステートメント(例:FIND (n)
...)には適用されません。
制限値に達すると処理が終了し、メッセージが表示されます。また、処理ループが制限値を超えた場合の反応を決定するセッションパラメータ LE も参照してください。
LIMIT ステートメントの指定がなければ、Natural インストール時に Natural プロファイルパラメータ LT と一緒に定義されたデフォルトのグローバル制限が使用されます。
処理ループが制限に達したかどうかを確定するために、ループ内で読み込んだ各レコードを制限に対してカウントします。処理ループの制限には以下が適用されます。
ACCEPT/REJECT ステートメントで排除されたレコードは、制限数にカウントされます。
| 構文要素 | 説明 |
|---|---|
LIMIT
n |
制限値の指定
制限値 制限値がゼロであれば、処理ループに入りません。 |
** Example 'LMTEX1': LIMIT
************************************************************************
DEFINE DATA LOCAL
1 EMPLOY-VIEW VIEW OF EMPLOYEES
2 PERSONNEL-ID
2 NAME
2 CITY
END-DEFINE
*
LIMIT 4
*
READ EMPLOY-VIEW BY NAME STARTING FROM 'BAKER'
DISPLAY NOTITLE
NAME PERSONNEL-ID CITY *COUNTER
END-READ
*
END
NAME PERSONNEL CITY CNT
ID
-------------------- --------- -------------------- -----------
BAKER 20016700 OAK BROOK 1
BAKER 30008042 DERBY 2
BALBIN 60000110 BARCELONA 3
BALL 30021845 DERBY 4
** Example 'LMTEX2': LIMIT (valid for two database loops)
************************************************************************
DEFINE DATA LOCAL
1 EMPLOY-VIEW VIEW OF EMPLOYEES
2 NAME
END-DEFINE
*
LIMIT 3
*
FIND EMPLOY-VIEW WITH NAME > 'A'
READ EMPLOY-VIEW BY NAME STARTING FROM 'BAKER'
DISPLAY NOTITLE 'CNT(0100)' *COUNTER(0100)
'CNT(0110)' *COUNTER(0110)
END-READ
END-FIND
*
END
CNT(0100) CNT(0110)
----------- -----------
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3