RAMP-TSAD03 ステップ6. ハンドラーの動的な関連付け
今までのステップでは、RAMPツールを使用して特別なフィールド・ハンドラーを持続的に定義する方法を学習しました。
また、RAMPスクリプトで特別なハンドラーを動的に定義、変更、および削除することもできます。通常、これはログオン画面スクリプトで行われるため、1回のみ発生します。ただし、この機能は特別な目的のために個々の画面スクリプトで使用することができます。
特別なフィールド・ハンドラーを動的に定義または再定義するには、SET_SPECIAL_FIELD_HANDLER()ファンクションを使用します。特別なフィールド・ハンドラーを動的に削除するには、DROP_SPECIAL_FIELD_HANDLER();を使用します。
ハンドラーの動的な削除は、ハンドラーが現在表示されている場合、それに影響を及ぼしません。再表示できなくなるだけです。
1. RAMPツールを起動し、DisplayEmployee画面のスクリプトを見つけます。
2. 画面のvHandle_ARRIVEファンクション内で、以下のように新しいハンドラーをutxtDepartmentフィールドに動的に添付します。
SET_SPECIAL_FIELD_HANDLER("utxtDepartment",KeyEnter,"DF_PRM06"); /* Attach an Enter Key handler */
コードは以下のようになります。
Enterキーが押されると、DF_PRM06ハンドラーが呼び出されます。
3. 変更をコミットし、RAMP定義の部分的な保存を行います。
4. 人事アプリケーションで従業員の詳細を表示し、変更したスクリプトを使用して画面を表示します。
5. [部門コード]フィールドでF4を押し、フィールドからDF_PRM04ハンドラーを呼び出します。
6. [部門コード]フィールドでEnterを押し、フィールドからDF_PRM06ハンドラーを呼び出します。
つまり、使用するファンクション・キーによって区別した、複数のハンドラーを同じフィールドに添付できます。
7. 次に、以下のコードをvHandle_ARRIVEファンクションに追加して、フィールドに関連付けられているF4ハンドラーをドロップします。
DROP_SPECIAL_FIELD_HANDLER("utxtDepartment",KeyF4); /* Drop the F4 handler */
コードは以下のようになります。
8. リストから別の従業員を選択し、[部門コード]フィールドでF4を使用しても特別なコマンド・ハンドラーDF_PRM04が表示されないことを確認します(代わりに、5250プロンプタ画面が表示されます)。
9. Enterを使用してDF_PRM06ハンドラーをアクティブにできることを確認します。
Destination到着スクリプトでは、このような操作は普通ではない(つまり、特別な)ことに注意してください。ほとんどの動的な添付はログオン・スクリプトで1回のみ行われ、そのセッション全体で持続します。