現在地: RAMP-TSガイド > プログラミング・テクニック > コマンドハンドラー・タブと多数の 5250 デスティネーション画面 > プログラム制御のコマンドタブと多数のデスティネーション画面

プログラム制御のコマンドタブと多数のデスティネーション画面

コマンドタブに表示する画面を制御するプログラムを作成できます。設定が少々難しいですが、その後の拡張は簡単です。

ビジネスオブジェクト "レポート" を作成します。

この "レポート" に "レポート要求の送信" という 1 つのインスタンス・レベルのコマンドハンドラーを設定します。このコマンドをデフォルトにします。

ビジネスオブジェクト "レポート" で、非表示のフィルターを作成し、インスタンスリストに 5 つのリポート名を入れます。関連するリポートを識別するための AKeyN 値または NKeyN 値を必ず追加してください。例:

BEGIN_COM ROLE(*EXTENDS #VF_AC007) HEIGHT(182) WIDTH(326)

Mthroutine uInitialize Options(*Redefine)

#Com_Owner.avHiddenFilter := TRUE

#avListManager.ClearList

Invoke #avListManager.AddtoList Visualid1('Report 1') Visualid2('Daily production report') AKey1('uReport1') NKey1(1)

Invoke #avListManager.AddtoList Visualid1('Report 2') Visualid2('Monthly production report') AKey1('uReport2') NKey1(2)

Invoke #avListManager.AddtoList Visualid1('Report 3') Visualid2('Overloaded production report') AKey1('uReport3') NKey1(3)

Invoke #avListManager.AddtoList Visualid1('Report 4') Visualid2('Monday Morning Management Report') AKey1('uReport4') NKey1(4)

Invoke #avListManager.AddtoList Visualid1('Report 5') Visualid2('Daily production report') AKey1('uReport5') NKey1(5)

* Instance list updating has been completed

INVOKE METHOD(#avListManager.EndListUpdate)

Endroutine

End_Com    

インスタンスリストとコマンドハンドラー・タブは、次のようにユーザーに表示されます。

X-20060224151044544133

ユーザーがインスタンスリストのいずれかのリポートをクリックすると、関連する 5250 デスティネーション画面がタブに表示されます。

通常の方法で 5 つの 5250  デスティネーションフォームを定義します。 

1番目の 5250 デスティネーション・フォーム (例:uReport1) だけを "レポート要求の送信" コマンド・ハンドラー・タブに関連付けます。

インスタンス・リストの数値キー値 NKey1 に要求したリポート番号が含まれている場合は、uReport1 に移動するスクリプトを次のように変更できます。

/* See is the report number in the instance list is for some other report */

/* If it is then "reroute" this request to correct 5250 destination form  */

switch ( objListManager.NKey1[0] )

{

  case 2: NAVIGATE_TO_SCREEN("uReport2"); return;

  case 3: NAVIGATE_TO_SCREEN("uReport3"); return;

  case 4: NAVIGATE_TO_SCREEN("uReport4"); return;

  case 5: NAVIGATE_TO_SCREEN("uReport5"); return;

}

/* Normal navigation logic to handle report number 1 */

NAVIGATE_TO_JUNCTION("whatever");

など。。。

インスタンスリストの英数字キー値 AKey1 に要求した 5250 デスティネーション画面の名前が含まれている場合は、スクリプトを次のように変更できます。

/* See is the 5250 screen name is this screen's name                     */

/* If it is then "reroute" this request to correct 5250 destination form */

if (objListManager.AKey1[0] != "uReport1")

{

   NAVIGATE_TO_SCREEN(objListManager.AKey1[0]);

   return;

}

/* Normal navigation logic to handle this screen */

NAVIGATE_TO_JUNCTION("whatever");

など。。。