7.55.2 IF_KEYについてのコメント/警告

LANSA

7.55.2 IF_KEYについてのコメント/警告


·         IF_KEYコマンドは、必ず、ワークステーションを使用するDISPLAY、REQUEST、POP_UP、BROWSEなどのコマンドの実行後に使用してください。ワークステーションとの対話を行う前にIF_KEYコマンドを使用すると、予期しない結果になります。

·         値*PROMPTを指定すると、[プロンプト]キーが使用されたかどうかを検査することができます。ただし、多くのRDMLプログラムでは、関連するパラメータがPROMPT_KEY(*YES *AUTO)としてコーディングされているため、[プロンプト]キーの処理は自動的に実行されます。[プロンプト]キーが自動的に処理されないようにするには、PROMPT_KEY(*YES *NEXT)またはPROMPT_KEY(*YES L10)をコーディングします(L10はコマンド・ラベルです)。この場合、[プロンプト]キーがRDMLプログラムで処理されるものと見なされるため、IF_KEYコマンドでその使用を検査できるようになります。

·         検査値*CANCEL、*EXITHIGH、および*EXITLOWは、SAA/CUAファンクション・キーの割り当てとの完全な互換性のために用意されています。これらの値をSAA/CUA以外のアプリケーションで使用しないでください。

·         *CANCELは機能的に*MENUと同じです。

·         *EXITHIGHおよび*EXITLOWを検査する場合は、関連付けられたDISPLAY、REQUEST、またはPOP_UPコマンドでEXIT_KEYパラメータによって高位または低位の[終了]キーを適切に有効にする必要があります。1つのDISPLAY、REQUEST、またはPOP_UPコマンドで高位および低位の[終了]キーを両方有効にすることはできません。

·         LANSAディクショナリには、#IO$KEYという特別なフィールドが保持されています。このフィールドには、ワークステーションとの対話で最後に使用されたファンクション・キーが保管されます。このフィールドは、他のフィールドと同様に、IFまたはCASEステートメント内で検査できます。状況によっては、合成コマンドIF_KEYを使用するよりも、IFまたはCASEコマンドでこのフィールドを使用する方が適している場合もあります。

      以下は、このフィールドの使用例です。

    DISPLAY   USER_KEYS((15 'Purge')(16 'Commit')(17 'Save') (*ROLLUP 'Up')(*ROLLDOWN 'Down'))
 
    CASE      OF_FIELD(#IO$KEY)
           WHEN      VALUE_IS('= ''15''')
           WHEN      VALUE_IS('= ''16''')
           WHEN      VALUE_IS('= ''17''')
           WHEN      VALUE_IS('= ''UP''')
           WHEN      VALUE_IS('= ''DN''')
    ENDCASE
 

      ファンクション・キー番号(01〜24)を使用して、フィールド#IO$KEYを通常のファンクション・キーと比較することができます。ただし、RDMLプログラムの実行中に#IO$KEYがその他の値になることもあります。例えば、レコードの自動前進/[OK]キーが押されたことを示す'RA'、上スクロール・キーが押されたことを示す'UP'、下スクロール・キーが押されたことを示す'DN'などです。これらの値はAIDS値と呼ばれ、実際にはi5/05オペレーティング・システムの一部です。

·         DISPLAY、REQUEST、またはPOP_UPコマンドが実行され、これによって上スクロール(*ROLLUP)キーまたは下スクロール(*ROLLDOWN)キーが有効になっており、かつブラウズ・リストが表示されている場合、ユーザーがブラウズ・リストの「端」までスクロールしない限り、制御はRDMLプログラムに戻されません。

例えば、42個の項目で構成されるブラウズ・リストが表示されている場合(画面の各「ページ」に15個の項目が表示されるものとする)、上スクロール・キーが3回使用されるまでは、上スクロール処理はi5/05オペレーティング・システムによって自動的に処理されます。3回目の使用でユーザーはブラウズ・リストの「端」に達するため、制御がRDMLプログラムに戻されます。下スクロール処理についても同様です。