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


