9.182 PUT_RANGE_CHECK
指定されたフィールドのデータ・ディクショナリ(またはファイル定義)に、DICTIONARY(またはFILE)レベルの「値範囲」の妥当性検査を作成 /修正します。
フィールドにファイル・レベルの妥当性検査を追加する場合、関連するファイルは事前に組み込み関数START_FILE_EDITで編集セッションに投入しておく必要があります。
この組み込み関数に渡されるすべての引数値は、その値がオンライン妥当性検査定義のスクリーン・パネルを通じて入力された場合と同じように有効な値です。
この組み込み関数の使用には、通常の権限とタスク追跡ルールが適用されます。
詳細については、『LANSA/AD ユーザーガイド』の「フィールド妥当性検査」を参照してください。
Þこれは、 開発環境のみで使用される特殊BIF です。
各製品の対応
LANSA/AD |
使用可 |
IBM iのRDMLX区画では使用しないでください。 |
Visual LANSA for Windows |
使用可 |
Visual LANSAで実行される妥当性検査は、LANSA/ADで実行される妥当性検査ほど厳格ではありません。 |
Visual LANSA for Linux |
未対応 |
引数
番号 |
タイプ |
必須/任意 |
記述 |
最小長 |
最大長 |
最小小数桁数 |
最大小数桁数 |
---|---|---|---|---|---|---|---|
1 |
A |
必須 |
妥当性検査のレベル D = ディクショナリ・レベル F = ファイル・レベル |
1 |
1 |
||
2 |
A |
必須 |
妥当性検査のルールを適用するディクショナリ内のフィールド名 |
1 |
10 |
||
3 |
N |
必須 |
検査の順序番号 |
1 |
3 |
0 |
0 |
4 |
A |
必須 |
検査の記述 |
1 |
30 |
||
5 |
A |
必須 |
追加(ADD)時の検査を有効にする Y = 追加(ADD)時に検査を実行する U = 追加使用(ADDUSE)時に検査を実行する N = 追加(ADD)時に検査を実行しない |
1 |
1 |
||
6 |
A |
必須 |
変更(CHANGE)時の検査を有効にする Y = 変更(CHG)時に検査を実行する U = 変更使用(CHGUSE)時に検査を実行する N = 変更(CHG)時に検査を実行しない |
1 |
1 |
||
7 |
A |
必須 |
削除(DELETE)時の検査を有効にする Y = 検査を有効にする N = 検査を有効にしない |
1 |
1 |
||
8 |
A |
必須 |
検査がTRUEのときの対応 NEXT = 次の検査を実行する ERROR = 致命的なエラーを送信する ACCEPT = 値を受け入れ、検査を終了する |
4 |
6 |
||
9 |
A |
必須 |
検査が偽のときの対応 NEXT = 次の検査を実行する ERROR = 致命的なエラーを送信する ACCEPT = 値を受け入れ、検査を終了する |
4 |
6 |
||
10 |
A |
必須 |
メッセージ・ファイル詳細 メッセージ・ファイルから送信されるエラー・メッセージの詳細です。 メッセージ・ファイルの詳細は次のようなフォーマットにする必要があります。 開始 - 終了 説明 1 - 7 エラー・メッセージ番号 8 - 17 メッセージ・ファイル名 18 - 27 メッセージ・ファイル・ライブラリ メッセージ・テキストを使用する場合は、この引数をブランクで渡します。 |
27 |
27 |
||
11 |
A |
必須 |
メッセージ・テキスト |
1 |
80 |
||
12 |
L |
必須 |
値範囲の「開始値」を含める作業リスト 呼び出し元のRDMLファンクションは、項目の長さの合計が正確に20バイトで、かつ値範囲の「開始値」が最大で20エントリー指定できる作業リストを提供しなければなりません。値範囲の各「開始値」エントリーは、値範囲の「終了値」エントリーと対応させる必要があります。対応していない場合は予期しない結果が発生する場合があります。 送信する各リスト項目は、次のような形式にする必要があります。 1- 20バイト:値範囲の「開始値」 |
1 |
20 |
||
13 |
L |
必須 |
値範囲の「終了値」を含める作業リスト 呼び出し元のRDMLファンクションは、項目の長さの合計が正確に20バイトで、かつ値範囲の「終了値」が最大で20エントリーが指定できる作業リストを提供しなければなりません。値範囲の各「終了値」エントリーは、値範囲の「開始値」エントリーと対応させる必要があります。対応していない場合は予期しない結果が発生する場合があります。 送信する各リスト項目は、次のような形式にする必要があります。 1- 20バイト:値範囲の「終了値」 |
1 |
20 |
戻り値
番号 |
タイプ |
必須/任意 |
記述 |
最小長 |
最大長 |
最小小数桁数 |
最大小数桁数 |
---|---|---|---|---|---|---|---|
1 |
A |
必須 |
戻りコード OK = 妥当性検査が定義された ER = 致命的なエラーが検出された "ER" の場合は、戻りコード・エラー・メッセージが自動的に発行されます。ファイル編集セッションが関係していた場合、ファイル編集セッションはコミットメントされずに終了します。 |
2 |
2 |
例
ユーザーは、フィールド制御メニューに提供されたLANSAオプションで「値範囲」妥当性検査を追加できますが、これを使わずに特定のフィールドの「値範囲」妥当性検査を追加する場合は次のように行います。
********* Define arguments and lists
DEFINE FIELD(#LEVEL) TYPE(*CHAR) LENGTH(1) LABEL('Level')
DEFINE FIELD(#FIELD) TYPE(*CHAR) LENGTH(10) LABEL('Field')
DEFINE FIELD(#SEQNUM) TYPE(*DEC) LENGTH(3) DECIMALS(0) LABEL('Sequence #')
DEFINE FIELD(#DESCR) TYPE(*CHAR) LENGTH(30) LABEL('Description')
DEFINE FIELD(#RETCOD) TYPE(*CHAR) LENGTH(2) LABEL('Return code')
DEFINE FIELD(#ENBADD) TYPE(*CHAR) LENGTH(1) LABEL('Enable ADD')
DEFINE FIELD(#ENBCHG) TYPE(*CHAR) LENGTH(1) LABEL('Enable CHG')
DEFINE FIELD(#ENBDLT) TYPE(*CHAR) LENGTH(1) LABEL('Enable DLT')
DEFINE FIELD(#TRUE) TYPE(*CHAR) LENGTH(6) LABEL('Action if True')
DEFINE FIELD(#FALSE) TYPE(*CHAR) LENGTH(6) LABEL('Action if False')
DEFINE FIELD(#MSGDET) TYPE(*CHAR) LENGTH(27) LABEL('Message Detail')
DEFINE FIELD(#MSGTXT) TYPE(*CHAR) LENGTH(80) LABEL('Message Text')
DEFINE FIELD(#FRMRNG) TYPE(*CHAR) LENGTH(20) LABEL('From range')
DEFINE FIELD(#TORNG) TYPE(*CHAR) LENGTH(20) LABEL('To range')
DEF_LIST NAME(#FRMWRK) FIELDS((#FRMRNG)) TYPE(*WORKING) ENTRYS(20)
DEF_LIST NAME(#TOWRK) FIELDS((#TORNG)) TYPE(*WORKING) ENTRYS(20)
DEF_LIST NAME(#RNGBRW) FIELDS((#FRMRNG) (#TORNG)) ENTRYS(20)
GROUP_BY NAME(#VALCHK) FIELDS((#LEVEL) (#FIELD) (#SEQNUM) (#DESCR) (#ENBADD) (#ENBCHG) (#ENBDLT) (#TRUE) (#FALSE) (#MSGDET) (#MSGTXT))
********* Initialize Browse list
CLR_LIST NAMED(#RNGBRW)
INZ_LIST NAMED(#RNGBRW) NUM_ENTRYS(20) WITH_MODE(*CHANGE)
********* Clear Working lists
BEGIN_LOOP
CLR_LIST NAMED(#FRMWRK)
CLR_LIST NAMED(#TOWRK)
********* Request Validation check details
REQUEST FIELDS((#VALCHK)) BROWSELIST(#RNGBRW)
********* Load From and To range value working lists
SELECTLIST NAMED(#RNGBRW)
ADD_ENTRY TO_LIST(#FRMWRK)
ADD_ENTRY TO_LIST(#TOWRK)
ENDSELECT
********* Execute Built-In Function - PUT_RANGE_CHECK
USE BUILTIN(PUT_RANGE_CHECK) WITH_ARGS(#LEVEL #FIELD #SEQNUM #DESCR #ENBADD #ENBCHG #ENBDLT #TRUE #FALSE #MSGDET #MSGTXT #FRMWRK #TOWRK) TO_GET(#RETCOD)
********* Put "range of values" validation check was successful
IF COND('#RETCOD *EQ ''OK''')
MESSAGE MSGTXT('Put "range of values" validation check(s) was successful')
********* Put "range of values" failed
ELSE
IF COND('#RETCOD *EQ ''ER''')
MESSAGE MSGTXT('Put "range of values" validation check(s) failed')
ENDIF
ENDIF
END_LOOP