9.170 PUT_PROGRAM_CHECK
注意: 9.1 組み込み関数の規則 利用オプション
指定されたフィールドのデータ・ディクショナリ(またはファイル定義)に、DICTIONARY(またはFILE)レベルの「ユーザー・プログラム呼び出し」の妥当性検査を作成/修正します。
フィールドにファイル・レベルの妥当性検査を追加する場合、関連するファイルは事前に組み込み関数START_FILE_EDITで編集セッションに投入しておく必要があります。
この組み込み関数に渡されるすべての引数値は、その値がオンライン妥当性検査定義のスクリーン・パネルを通じて入力された場合と同じように有効な値です。
この組み込み関数の使用には、通常の権限とタスク追跡ルールが適用されます。
詳細については、『LANSA/AD ユーザーガイド』の「フィールド妥当性検査/トリガー」を参照してください。
この BIF は、9.2 開発環境のみで使用される組み込み関数 です。
引数
番号 | タイプ | 必須/任意 | 記述 | 最小長 | 最大長 | 最小小数桁数 | 最大小数桁数 |
|---|---|---|---|---|---|---|---|
1 | A | 必須 | 妥当性検査のレベル D = ディクショナリ・レベル | 1 | 1 | ||
2 | A | 必須 | 妥当性検査のルールを適用するディクショナリ内のフィールド名 | 1 | 10 | ||
3 | N | 必須 | 検査の順序番号 | 1 | 3 | 0 | 0 |
4 | A | 必須 | 検査の記述 | 1 | 30 | ||
5 | A | 必須 | 追加(ADD)時の検査を有効にする Y = 追加(ADD)時に検査を実行する | 1 | 1 | ||
6 | A | 必須 | 変更(CHANGE)時の検査を有効にする Y = 変更(CHG)時に検査を実行する | 1 | 1 | ||
7 | A | 必須 | 削除(DELETE)時の検査を有効にする Y = 検査を有効にする | 1 | 1 | ||
8 | A | 必須 | 検査がTRUEのときの対応 NEXT = 次の検査を実行する | 4 | 6 | ||
9 | A | 必須 | 検査が偽のときの対応 NEXT = 次の検査を実行する | 4 | 6 | ||
10 | A | 必須 | メッセージ・ファイル詳細 メッセージ・ファイルから送信されるエラー・メッセージの詳細です。 メッセージ・ファイルの詳細は次のようなフォーマットにする必要があります。 開始 - 終了 説明 メッセージ・テキストを使用する場合は、この引数をブランクで渡します。 | 27 | 27 | ||
11 | A | 必須 | メッセージ・テキスト | 1 | 80 | ||
12 | A | 必須 | この検査を実行するために呼び出されるプログラムの名前。ファンクションを呼び出す場合は、名前の前に"LF="を付けます。 注:ファンクションで検査を実行する場合は、追加のパラメータを指定することはできません。 | 1 | 10 | ||
13 | L | 必須 | 指定されたプログラムに渡される追加のパラメータを含める作業リスト 呼び出し元のRDMLファンクションは、項目の長さの合計が正確に20バイトで、かつ10個のパラメータ・エントリーを持つ作業リストを提供しなければなりません。 送信する各リスト項目は、次のような形式にする必要があります。 開始 - 終了 説明 | 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(#USRPGM) TYPE(*CHAR) LENGTH(10) LABEL('User program')
DEFINE FIELD(#PGMPRM) TYPE(*CHAR) LENGTH(20) LABEL('program parms')
DEF_LIST NAME(#PRMWRK) FIELDS((#PGMPRM)) TYPE(*WORKING) ENTRYS(10)
DEF_LIST NAME(#PRMBRW) FIELDS((#PGMPRM)) ENTRYS(10)
GROUP_BY NAME(#VALCHK) FIELDS((#LEVEL) (#FIELD) (#SEQNUM) (#DESCR) (#ENBADD) (#ENBCHG) (#ENBDLT) (#TRUE) (#FALSE) (#MSGDET) (#MSGTXT) (#USRPGM))
********* Initialize Browse list
CLR_LIST NAMED(#PRMBRW)
INZ_LIST NAMED(#PRMBRW) NUM_ENTRYS(10) WITH_MODE(*CHANGE)
********* Clear Working lists
BEGIN_LOOP
CLR_LIST NAMED(#PRMWRK)
********* Request Validation check details
REQUEST FIELDS((#VALCHK)) BROWSELIST(#PRMBRW)
********* Load key field working list
SELECTLIST NAMED(#PRMBRW)
ADD_ENTRY TO_LIST(#PRMWRK)
ENDSELECT
********* Execute Built-In Function - PUT_PROGRAM_CHECK
USE BUILTIN(PUT_PROGRAM_CHECK) WITH_ARGS(#LEVEL #FIELD #SEQNUM #DESCR #ENBADD #ENBCHG #ENBDLT #TRUE #FALSE #MSGDET #MSGTXT #USRPGM #PRMWRK) TO_GET(#RETCOD)
********* Put "call user program" validation successful
IF COND('#RETCOD *EQ ''OK''')
MESSAGE MSGTXT('Put "call user program" validation check(s) was successful')
********* Put "call user program" failed
ELSE
IF COND('#RETCOD *EQ ''ER''')
MESSAGE MSGTXT('Put "call user program" validation check(s) failed')
ENDIF
ENDIF
END_LOOP