7.5.1 BROWSEのパラメータ

LANSA

7.5.1 BROWSEのパラメータ


FIELDS

FROM_FILE

WHERE

WITH_KEY

IO_ERROR

IO_STATUS

ACROSS_SEP

ADD_KEY

CHANGE_KEY

DELETE_KEY

DOWN_SEP

EXIT_KEY

GENERIC

ISSUE_MSG

MENU_KEY

NBR_KEYS

NO_SELECT

ONE_FOUND

RETURN_RRN

SHOW_NEXT

USE_SELECT

USER_KEYS

VAL_ERROR

FIELDS

ファイル内のレコードでブラウズするフィールド、またはブラウズするフィールドを指定するグループ名を指定します。

FROM_FILE

「I/Oコマンドでのファイル名の指定」を参照してください。

WHERE

「条件および式の指定」を参照してください。

WITH_KEY

「I/Oコマンドでのファイル・キー・リストの指定」を参照してください。

NBR_KEYS

このパラメータをWITH_KEYパラメータと組み合わせて使用すると、実行時にレコードをブラウズするために実際に使用されるキー・フィールドの数を変えることができます。

デフォルト値*WITHKEYを指定すると、キー・フィールドの数が、WITH_KEYパラメータに指定された数と常に同じになり、実行時にこの値は変更されません。

キー・フィールドの数を実行時に変えるには、キー数の値が保持されている数値フィールドの名前を指定します。指定するフィールドは、数値タイプで、このファンクションまたはデータ・ディクショナリで定義されていなければなりません。

実行時にNBR_KEYSフィールドに保持されている値が、0未満であったり、WITH_KEYパラメータに指定されたキー・フィールドの数を超えていてはなりません。

詳細については、使用例を参照してください。

GENERIC

総称検索を要求するかどうかを指定します。総称検索では、検索キーとファイル・キーとの比較時にキー値のブランク以外または0以外の部分のみが使用されるため、全キー検索または部分キー検索とは異なります。

英数字フィールドに対して総称検索を使用すると、検索フィールドの一番左にあるブランク以外の部分のみがファイル・キーと比較されます(すなわち、比較において、末尾ブランクは無視されます)。

数値フィールドに対して総称検索を使用すると、検索フィールドの一番左にある0以外の部分のみがファイル・キーと比較されます(すなわち、比較において、末尾ゼロは無視されます)。また、数値フィールドの総称比較は、検索キーとファイル・キーの実際の値に関わらず、どちらの数値も正であるものとして実行されます。

これらの総称検索の規則により、ブランクの英数字検索キーまたは0の数値キーは、選択されたすべてのレコードに一致することに注意してください。

例えば、ファイルに名前フィールドのキーが指定され、以下の値が保持されているとします。

SM

SMIT

SMITH

SMITHS

SMITHY

SMYTHE

 

ここで、以下のSELECTステートメントを使用します。

SELECT  WITH_KEY('SM')

 

この場合、ファイル内では、完全なキー値'SM'に一致するレコードは最初のレコードのみであるため、そのレコードのみが選択されます。

SELECTステートメントを以下のように変更します。

SELECT  WITH_KEY('SM') GENERIC(*YES)

 

この場合、指定されたキー値の非ブランク部分のみがファイル・キーと比較されるため、ファイル内のすべてのレコードが選択されます。

デフォルト値*NOを指定すると、総称検索は要求されません。

*YESを指定すると、総称検索が実行されます。総称検索を使用する場合、実際には、実行時に指定された最後のキーに対してのみ総称検索が実行されます。WITH_KEYパラメータで指定された他の(それより前にある)キーは、ファイル内の値と正確に一致しなければなりません。ファイル内のデータとの総称的な比較は行われません。

例えば、州、郵便番号、および名前のキーが指定された名前と住所のファイルについて考えます。ここで、以下のコマンドを使用します。

SELECT  WITH_KEY('NSW' 2000 'SM') NBR_KEYS(3) GENERIC(*YES)

 

この場合、州がNSW、郵便番号が2000、名前がSMで始まるすべての名前が選択されます。これは、英数字フィールドに対する総称検索の一例です。検索キーと、ファイルから読み取られたデータとの比較時には、末尾ブランクは無視されます。また、ファイルのデータと実際に総称的に比較されるのは、最後のキー('SM')のみであることに注意してください。他のキーである'NSW'および2000は、ファイルから読み取られたデータと正確に一致していなければなりません。

実行時に、以下のように2つのキーを使用するようコマンドを動的に変更したとします。

SELECT  WITH_KEY('NSW' 2000 'SM') NBR_KEYS(2) GENERIC(*YES)

 

この場合、州がNSW、郵便番号が2で始まるすべての名前が選択されます。これは、末尾0が無視される、数値フィールドに対する総称検索の一例です。

IO_STATUS

I/O操作の結果の「戻りコード」を受け取るフィールドの名前を指定します。

デフォルト値*STATUSを指定すると、戻りコードが、IO$STSという特別なフィールドに保管されます。このフィールドは、他のフィールドと同様にRDMLプログラムで参照できます。

戻りコードを受け取るフィールドとしてユーザー・フィールドを指定する場合、このフィールドは、長さ2の英数字フィールドである必要があります。ユーザー・フィールドを指定した場合も、特別なフィールドであるIO$STSが更新されます。

値については、「RDML I/O戻りコード」を参照してください。

IO_ERROR

このコマンドの実行時にI/Oエラーが発生した場合に実行するアクションを指定します。

I/Oエラーは、「致命的」エラーと見なされ、ファイルが見つからなかった、ファイルが壊れている、ファイルを割り当てることができない、などがこれに該当します。これらのタイプのエラーが発生すると、ファンクションにおいて、そのファイルが関与しているすべての処理が停止します。

デフォルト値*ABORTを指定すると、ファンクションが打ち切られ、I/Oエラーの性質を示すエラー・メッセージが発行されます。

デフォルト値*ABORTを使用しない場合は、I/Oエラーの発生時に制御を渡す先の有効なコマンド・ラベルを指定する必要があります。

VAL_ERROR

このコマンドで妥当性検査エラーが検出された場合に実行するアクションを指定します。

妥当性検査エラーは、ファイルに対して追加、更新、または削除を行う情報が、そのファイル内のフィールドに関連付けられたFILEまたはDICTIONARYレベルの妥当性検査に合格しなかった場合に発生します。

デフォルト値*LASTDISを指定すると、直前の表示画面に制御が戻されます。この画面では、関連付けられた妥当性検査に失敗したフィールドが反転表示され、エラーのある最初のフィールドにカーソルが配置されます。

デフォルト値*LASTDISを使用しない場合は、制御を次のコマンドに渡すよう指定する*NEXT、または制御を渡す先の有効なコマンド・ラベルを指定する必要があります。

*LASTDISは、「直前の表示画面」がない場合(バッチ・ファンクション内など)でも有効です。この場合、ファンクションが打ち切られ、該当するエラー・メッセージが発行されます。

*LASTDISを使用する場合、「直前の表示画面」は、データベース・コマンド(INSERT、UPDATE、DELETE、FETCH、およびSELECT)と同じレベルでなければなりません。データベース・コマンドがSUBROUTINE内で指定され、「直前の表示画面」が呼び出し元ルーチンまたはメインラインの場合など、レベルが異なるとこのファンクションは打ち切られ、該当するエラー・メッセージが発行されます。

これは、Visual LANSAでイベント・ルーチンとメソッド・ルーチンを使用する場合には当てはまりません。これらの場合、制御は呼び出しルーチンに戻されます。フィールドには、エラーがあることと、フォームの親階層で見つかった最初のステータス・パーに返されたメッセージが表示されます。または、メッセージがない場合は、実行スタック内で見つかったステータス・バーを持つ最初のフォーム(PRIM_OBJTから継承した再利用可能パーツなど)が表示されます。

USE_SELECT

ブラウズ画面でレコードの選択を可能にするかどうかを指定します。

デフォルト値*YESを指定すると、ユーザーは、ブラウズ画面で選択するレコードを指定できます。レコードが選択されると、このファンクション内のすべてのフィールドに、関連付けられた値が保管され、プログラムは引き続き次のステートメントを実行します。

*YES以外に指定できる値は*NOのみです。この値を指定した場合、ブラウズ画面は選択列のない状態で表示されます。Enterキーまたはファンクション・キーが押されると、プログラムは引き続き次のステートメントを実行します。ファンクション内のフィールドの値は変更されません。I/Oの状況として、ブラウズ画面に1つ以上のレコードがある場合はOK、ブラウズ画面にレコードが1つもない場合はNRが返されます。

NO_SELECT

ブラウズ画面の項目が選択されなかった場合に実行するアクションを指定します。

デフォルト値*NEXTを指定すると、次の実行可能なコマンドに制御が渡されます。

それ以外の場合は、制御を渡す先のコマンドに関連付けられたラベルを指定してください。

USE_SELECT(*NO)が指定されている場合、このオプションは無視されます。

ONE_FOUND

BROWSEコマンドにより検索条件に一致するレコードが1つのみ見つかった場合に実行するアクションを指定します。

デフォルト値*DISPLAYを指定すると、そのレコードがユーザーに表示されます。

*DISPLAY以外に指定できるオプションは*SELECTのみです。この値を指定すると、そのレコードが自動的に選択され、これによって非常に簡単に総称検索リストを構築できます。部分キーを指定することもでき、一致するレコードが1つのみ見つかった場合は、そのレコードが取得されます。複数のレコードが見つかった場合は、LANSAに、目的のレコードを選択するようユーザーに求めるプロンプトが表示されます。

ISSUE_MSG

「ファイルの終わり」メッセージを自動的に発行するかどうかを指定します。

デフォルト値*NOを指定すると、メッセージは発行されません。

*NO以外に指定できる値は*YESのみです。この値を指定すると、メッセージが自動的に発行されます。メッセージは、ユーザーに表示される次の画面形式の22/24行目、またはバッチ・ジョブのジョブ・ログに表示されます。

RETURN_RRN

選択されたレコードの相対レコード番号を返す先のフィールドの名前を指定します。

このパラメータで指定するフィールドは、数値タイプで、このファンクションまたはLANSAデータ・ディクショナリで定義されていなければなりません。

詳細については、『Visual LANSA 開発者ガイド』「外部ファイルの読み込み」を参照してください。

DOWN_SEP

ブラウズ画面の行間隔を指定します。指定する値は、*DESIGNまたは1〜10の数値である必要があります。DESIGNを指定すると、デフォルト値1が設定されます。

ACROSS_SEP

ブラウズ画面の列間隔を指定します。指定する値は、*DESIGNまたは1〜10の数値である必要があります。DESIGNを指定すると、デフォルト値1が設定されます。

EXIT_KEY

ワークステーションでブラウズ・リストを表示するときに、[終了]ファンクション・キーを有効にするかどうかを指定します。また、[終了]キーが押されたときの処理も指定します。

デフォルト値*YESを指定すると、画面の表示時に[終了]キーが有効になります。

*YESを使用する場合は、[終了]キーが押されたときに制御を渡す先のコマンド・ラベルを指定することもできます。

ラベルを指定しない場合、デフォルト値*EXITが使用されます。この場合、LANSAシステムが完全に終了します。SAA/CUA区画では、これは「高位の」終了と呼ばれます。

*NOを指定すると、画面の表示時に[終了]ファンクション・キーは有効になりません。

MENU_KEY

ワークステーションでブラウズ・リストを表示するときに、[メニュー]ファンクション・キーを有効にするかどうかを指定します。また、[メニュー]キーが押されたときの処理も指定します。

デフォルト値*YESを指定すると、画面の表示時に[メニュー]キーが有効になります。*YESを使用する場合、[メニュー]キーが押されたときに制御を渡す先のコマンド・ラベルを指定することもできます。ラベルを指定しない場合、デフォルト値*MENUが使用されます。この場合、プロセスのメイン・メニューが再表示されます。

*NOを指定すると、画面の表示時に[メニュー]ファンクション・キーは有効になりません。

ADD_KEY

ワークステーションでブラウズ・リストを表示するときに、[追加]ファンクション・キーを有効にするかどうかを指定します。また、[追加]キーが押されたときの処理も指定します。

デフォルト値*NOを指定すると、画面の表示時に[追加]ファンクション・キーは有効になりません。

*YESを指定すると、画面の表示時に[追加]キーが有効になります。*YESを使用する場合、[追加]キーが押されたときに制御を渡す先のコマンド・ラベルを指定することもできます。ラベルを指定しない場合、デフォルト値*NEXTが使用されます。この場合、次のRDMLコマンドが実行されます。

CHANGE_KEY

ワークステーションでブラウズ・リストを表示するときに、[変更]ファンクション・キーを有効にするかどうかを指定します。また、[変更]キーが押されたときの処理も指定します。

デフォルト値*NOを指定すると、画面の表示時に[変更]ファンクション・キーは有効になりません。

*YESを指定すると、画面の表示時に[変更]キーが有効になります。*YESを使用する場合、[変更]キーが押されたときに制御を渡す先のコマンド・ラベルを指定することもできます。ラベルを指定しない場合、デフォルト値*NEXTが使用されます。この場合、次のRDMLコマンドが実行されます。

DELETE_KEY

ワークステーションでブラウズ・リストを表示するときに、[削除]ファンクション・キーを有効にするかどうかを指定します。また、[削除]キーが押されたときの処理も指定します。

デフォルト値*NOを指定すると、画面の表示時に[削除]ファンクション・キーは有効になりません。

*YESを指定すると、画面の表示時に[削除]キーが有効になります。*YESを使用する場合、[削除]キーが押されたときに制御を渡す先のコマンド・ラベルを指定することもできます。ラベルを指定しない場合、デフォルト値*NEXTが使用されます。この場合、次のRDMLコマンドが実行されます。

USER_KEYS

ワークステーションでブラウズ・リストを表示するときに有効にする追加のユーザー・ファンクション・キーを最大5個指定します。

割り当てるユーザー・ファンクション・キーがコマンドで有効になったときに、LANSAの標準機能である[終了]、[メニュー]、[メッセージ]、[追加]、[変更]、または[削除]に割り当てられているファンクション・キーと競合しないようにしてください(すなわち、1つのファンクション・キーを複数の機能に割り当てることはできません)。

追加のユーザー・ファンクション・キーは、以下の形式で指定します。

(ファンクション・キー番号  '記述'  ラベル)

??????表記の説明:

ファンクション・キー番号

通常の機能またはファンクション・キーの番号。1〜24の範囲で指定します。

'記述'

ファンクション・キーに割り当てる機能に関する記述。この記述は、画面形式の23行目に表示されます。最大長は8文字です。

ラベル

ファンクション・キーが押されたときに制御を渡す先の任意指定のラベル。デフォルト値として特別な値*NEXTが使用されます。この値を指定すると、(このコマンドの後の)次のコマンドに制御が渡されます。

押されたファンクション・キーをRDMLプログラムでテストする方法の詳細については、IF_KEYコマンドのセクションを参照してください。

以下の使用例について考えます。

BROWSE  ......  USER_KEYS((14 'Commit')(15 'Purge'))

      IF_KEY  WAS(*USERKEY1)

        << Commit logic >>

      ENDIF

      IF_KEY  WAS(*USERKEY2)

        << Purge logic >>

      ENDIF

 

IF_KEYコマンドは、割り当てられている実際のファンクション・キー番号ではなく、USER_ KEYSパラメータで宣言されている順序を示すシンボル名でキーを参照することに注意してください。これにより、ファンクション・キーの割り当てを簡単に変更することができます。

SHOW_NEXT

[次ファンクション]フィールドを画面の22行目に表示するかどうかを指定します。[次ファンクション]フィールドは、そのたびに[プロセス]メニューに戻らなくても、1つのプロセス内でファンクション間を移動できるようにする機能です。「次ファンクション」処理の詳細については、『LANSA/AD ユーザーガイド』「ファンクション制御テーブル」を参照してください。

デフォルト値*PROを指定すると、このファンクションが属しているプロセスのメニュー選択スタイルが"FUNCTION"の場合のみ、[次ファンクション]フィールドが表示されます。[プロセス]メニューの選択スタイルが"NUMBER"または"CURSOR"の場合、[次ファンクション]フィールドは表示されません。

*YESを指定すると、このファンクションが属しているプロセスで使用されるメニュー選択スタイルに関係なく、[次ファンクション]フィールドが表示されます。

*NOを指定すると、このファンクションが属しているプロセスで使用されるメニュー選択スタイルに関係なく、[次ファンクション]フィールドは表示されません。

注: SAA/CUAアプリケーションでは、SHOW_NEXTパラメータは無視されます。