第6章

高度な機能

5250 Connectには、他のComposer Connectにはない高度な機能がいくつかあります。 この章では、これらのうち 複数行処理および画面の取り扱いの2つの機能について説明します。

 
Top of page

5250複数行ウィザードについて

前に説明したように、5250 Connectには、データをXMLドキュメントから5250に、または5250画面からXMLドキュメントにすばやく簡単にドラッグできる、ドラッグアンドドロップ機能があります。ただし、行数が一定でない場合や画面が複数ある場合、ドラッグアンドドロップは有効な方法ではありません。この問題を解決するため、5250 Connectには、DOMと5250画面の間で複数対複数のデータ関係のマップを指定するための「複数行ウィザード」があります。複数行ウィザードは、5250コンポーネントで[アクション]>[新規アクション]を選択すると表示され、XMLドキュメントのデータを5250画面に繰り返し入力したり、5250画面で繰り返し表示されるデータをXMLドキュメントに出力したりすることができます。複数行ウィザードでは基本的に、あるドキュメントまたは画面から別のドキュメントや画面に対して、行数や画面数に関わらず、複数の行を自動的にマップする繰り返しループをアクションモデルに作成します。

 
Top of section

このガイドで使用する複数行サンプルについて

複数行ウィザードを使用してXMLドキュメントおよび5250画面の複数行のデータを入出力する方法は数多くありますが、このガイドではすべての方法については説明していません。ここでは、複数行ウィザードの一般的な使用方法を理解するために2つの基本的なコンポーネントの例を挙げます。

最初の手順では、複数のデータ要素をXMLドキュメントから5250画面に「入力」するための複数行ウィザードを使用するコンポーネントを示します。2つ目の手順では、複数のデータ要素を5250画面から出力DOMに「出力」するための複数行ウィザードを使用するコンポーネントを示します。

この節で扱う手順は、単に例として示すものです。Composerのチュートリアルとは異なり、これらの手順は各ステップに沿って操作されることを意図していません。

Procedure データを入力するための複数行ウィザードを準備する

  1. まず最初に、21新しい5250コンポーネントを作成するの手順に従ってコンポーネントを作成します。この例では、「5250SampleInput」というコンポーネントを作成します。このコンポーネントは、次のように5250コンポーネントエディタに表示されます。

  2. [記録]ボタンをクリックすると、ネイティブ環境ペインにサインオン画面が表示されます。

    5250SampleInput02

  3. サインオンした後、正しい画面に移動します。 この例では、[ユーザID ]と[パスワード]フィールドにユーザIDとパスワードをそれぞれ入力し、[Program/Procedure]フィールドには「GORD」と入力する必要があります。

  4. キーボードで<Enter>を押します。

    注記:   または、ネイティブ環境ペインにある5250キーパッドツールバーで[Enter]を選択することもできます。このツールバーを表示するには、5250コンポーネントエディタのメニューバーから[表示]、[キーパッドツールバー]の順に選択します。

    この例では、ネイティブ環境ペインに「ENTER ORDER」という5250画面が表示されます。

    5250SampleInput03

  5. 次に、入力DOMから、5250の[ENTER ORDER]画面内の対応するフィールドに必要なヘッダデータをドラッグアンドドロップします。

    表6 - 1

    マップ元:DOMフィールド

    マップ先:5250の[ENTER ORDER]画面のフィールド

    ODATE

    DATE:

    OCUST

    CUST:

    ONAME

    NAME:

    OBADDR

    BILL TO:(1行目)

    OBCITY

    BILL TO:(2行目)

    OBST

    BILL TO:(2行目、都市名の右にある2文字のフィールド)

    OBZIP

    BILL TO:(2行目、州名の右にある5文字のフィールド)

    OSADDR

    SHIP TO:(1行目)

    OSCITY

    SHIP TO:(2行目)

    OSST

    SHIP TO:(2行目、都市名の右にある2文字のフィールド)

    OSZIP

    SHIP TO:(2行目、州名の右にある5文字のフィールド)

    OPAY

    PAYMENT METHOD:

    OPAYINFO

    ACCOUNT #:

    5250の[ENTER ORDER]画面は次のように表示されます。

    5250SampleInput04

  6. 複数行アクションで使用するための繰り返し行の範囲を指定します。

  7. 複数行アクションで使用するために、繰り返しのデータを含む領域を手動で指定するか、その領域をハイライトする必要があります。この例では、5250の[ENTER ORDER]画面の行項目入力フィールドの領域を、左上隅から右下隅に向かってカーソルをドラッグしています。ドラッグした領域がグレーの背景色でハイライトされます。

    注記:   最初のフィールドの「外側」にカーソルを置いてドラッグを開始してください。フィールド内でドラッグを開始すると、Composerではフィールド自体を移動しようとしているとみなされます。

    5250の入力フィールド領域が次のように表示されます。

Procedure 複数行 ウィザードを使用してデータを入力する

注記:    データを出力する場合、112複数行ウィザードを使用してデータを出力するを参照してください。

  1. 5250コンポーネントエディタから、[アクション]、[新規アクション]、[複数行]の順に選択します。複数行ウィザードが表示されます。ダイアログボックスには、ハイライトした領域に基づいて自動的にデータが表示されます。

    1

    フィールドを編集する場合、または領域をハイライトしていない場合、次の手順に従います。

    注記:   5250画面は、24行x80カラムで構成されています。

  2. 必要に応じてフィールドを編集します。パラメータが適切である場合、[次へ]をクリックします。複数行ウィザードの2番目のパネルが表示されます。

Procedure 複数行ウィザードに繰り返しアクションを設定する

注記:   データを出力する場合、112複数行ウィザードを使用してデータを出力するを参照してください。

  1. 複数行ウィザードの最初のパネルが完了すると、次のダイアログボックスが表示されます。

  2. [XMLの使用形式]で、[入力]ラジオボタンを選択します。このパネルを使用して、複数の要素または画面の行を処理する繰り返しアクションを作成します。このアクションの使用方法は、すべてのコンポーネントで使用できる基本的な「要素の繰り返し」アクションと似ています。

  3. [対象]フィールドで、[式ビルダ]ボタンをクリックします。[式ビルダ]ウィンドウが表示されます。

    3270MultiRowInput02A

  4. [XPathコンテキスト]フレームで、[Input]要素を展開します。

  5. [OITEM]要素をダブルクリックします。ウィンドウの下部にあるコメントペインに式が表示されます。この例では、OITEMがループされる要素です。

    3270MultiRowInput02B

  6. [OK]をクリックします。複数行ウィザードの2番目の画面に戻ります。ここでは、[対象]フィールドに新しい式が表示されています。

    注記:   式ビルダを使用すると、Composerにより自動的に「エイリアス」が作成されます。この例では、OITEMというエイリアスが作成されています。エイリアスの詳細については、『exteNd Composerユーザガイド』を参照してください。

    3

  7. [次へ]をクリックします。複数行ウィザードの繰り返し画面が表示されます。

Procedure 次のレコードを繰り返す

注記:   データを出力する場合、112複数行ウィザードを使用してデータを出力するを参照してください。

  1. この画面では、ページの最後に達したときに行う操作を複数行ウィザードに指示します。この例(109データの入力に使用する複数行アクションを追加するを参照)では、データは1ページのみであるため、[ 次のレコードセットまで繰り返す]チェックボックスはオンになっていません。

    4

  2. [完了]をクリックします。複数行ウィザードで作成したアクションがアクションモデルペインに表示されます。ここでは、[すべての複数行マップアクションをここに追加します!]というコメントがハイライトされています。

    3270MultiRowInputMapAction01

Procedure データの入力に使用する複数行アクションを追加する

  1. アクションモデルで、[すべての複数行マップアクションをここに追加します!]というコメントがハイライト表示されていない場合は、選択してハイライトします。

  2. 入力DOMペインで、OITEMの最初の項目に移動します。

  3. OITEMのチャイルド要素を、5250画面にある行項目フィールドの最初の行の適切なフィールドにドラッグアンドドロップします(次の図を参照)。

    表6 - 2

    マップ元:入力DOM

    マップ先:5250の[ENTER ORDER 3270]画面

    OISKU

    PART

    OIDESC

    DESCRIPTION

    OIQTY

    QTY

    OICOST

    COST

    入力DOMと5250の[ENTER ORDER 3270]画面は次のように表示されます。

    5250MultiRowLoopAction01

    アクションモデルペインが次のように表示されます。

    3270MultiRowLoopAction02

複数行アクションのブロック内にあるマップアクションは、画面の絶対的な位置ではなく、行での相対的な位置によってフィールドを参照することに注意してください。つまり、最初のマップアクションのターゲットは、$RECORD/FIELD[1]です。複数行のコンテキスト内でドラッグアンドドロップによってマップアクションを作成すると、これらのフィールドのインデックスが自動的に作成されて割り当てられます。

最終的なアクションモデルが次のように表示されます。

5250CompleteActionModel01

  1. 5250コンポーネントエディタのメニューバーで、[ファイル]、[保存]の順に選択するか、[保存]ボタンをクリックします。

  2. 51アニメーションを実行するの指示に従って、コンポーネントをテストします。

Procedure 複数行ウィザードを使用してデータを出力する

  1. 21新しい5250コンポーネントを作成するの指示に従って、コンポーネントを作成します。この例では、「5250SampleOutput」というコンポーネントが作成されています。このコンポーネントは、次のように5250コンポーネントエディタに表示されます。

  2. [記録]ボタンをクリックします。ネイティブ環境ペインにサインオン画面が表示されます。

    5250SampleOutput02

  3. 正しい画面に移動します。 この例では、[ユーザID ]と[パスワード]フィールドにユーザIDとパスワードをそれぞれ入力し、[Program/Procedure]フィールドには「MENU」と入力する必要があります。

  4. キーボードで<Enter>を押します。この例では、ネイティブ環境ペインに「INSTRUCTIONS」という5250画面が表示されます。

    注記:   また、ネイティブ環境ペインにある5250キーパッドツールバーで[Enter]を選択することもできます。このツールバーを表示するには、5250コンポーネントエディタのメニューバーから[表示]、[キーパッドツールバー]の順に選択します。

    5250SampleOutput03

  5. この例では、[TRANSACTION]フィールドに「BRWS」、[NUMBER]フィールドに「10001」が入力されています。

  6. キーボードで<Enter>を押します。「FILE BROWSE」という5250画面が表示されます。

    5250SampleOutputFileBrowse01

  7. 複数行アクションで使用するために、繰り返しデータを含む領域を手動で指定するか、その領域をハイライトする必要があります。 この例では、データ領域の右上隅から左下隅に向かってカーソルをドラッグしています。ドラッグした領域がグレーの背景色でハイライトされます。

    注記:   最初のフィールドの「外側」にカーソルを置いてドラッグを開始してください。フィールド内でドラッグを開始すると、Composerではフィールド自体を移動しようとしているとみなされます。

  8. [FILE BROWSE]画面が次のように表示されます。

    5250SampleOutputFileBrowse02

  9. 5250コンポーネントエディタから、[アクション]、[新規アクション]、[複数行]の順に選択します。複数行ウィザードが表示されます。ダイアログボックスには、ハイライトした領域に基づいて自動的にデータが表示されます。

    1

  10. 必要に応じてフィールドを編集します。パラメータが適切である場合、[次へ]をクリックします。複数行ウィザードの2番目のパネルが表示されます。

  11. [XMLの使用形式]で、[出力]ラジオボタンを選択します。このパネルを使用して、複数の要素または画面の行を処理する繰り返しアクションを作成します。このアクションの使用方法は、すべてのコンポーネントで使用できる基本的な「要素の繰り返し」アクションと似ています。

  12. [対象]フィールドで、[式ビルダ]ボタンをクリックします。[式ビルダ]ウィンドウが表示されます。

    3270SampleOutExpression01

  13. [ XPathコンテキスト]フレームで、[出力]要素を展開します。

  14. [ACCINFO]要素をダブルクリックします。ウィンドウの下部にあるコメントペインに式が表示されます。この例では、ACCINFOがループされる要素です。

    3270SampleOutExpression02

  15. [OK]をクリックします。複数行ウィザードの2番目の画面に戻ります。ここでは、[対象]フィールドに新しい式が表示されています。

    注記:   式ビルダを使用すると、Composerにより自動的に「エイリアス」が作成されます。この例では、ACCINFOというエイリアスが作成されています。エイリアスの詳細については、『exteNd Composerユーザガイド』を参照してください。

    OUT6

  16. [次へ]ボタンをクリックします。複数行ウィザードの繰り返し画面が表示されます。この画面では、ページの最後に達したときに行う操作を複数行ウィザードに指示します。

    4

  17. [次のレコードセットまで繰り返す]チェックボックスをオンにします。

  18. [アテンションキーによって繰り返す]プルダウンリストから[F1]を選択します。

    注記:   5250画面には、繰り返しキーに関する説明が表示されます。この例では、次のページに移動するには<F1>キーを押すという指示が[FILE BROWSE]画面に表示されていました。

  19. [次へ]をクリックします。

Procedure 複数行ウィザードで境界パラメータページを設定する

  1. [空白のレコード]ラジオボタンを選択します。 これにより、ループアクションの終了ポイントは空白のレコードであることを指定します。式ビルダを使用して、ループの終了ポイントに別のインジケータを設定することもできます。式ビルダの使用の詳細については、『exteNd Composerユーザガイド』を参照してください。

    3270MultiRowBlankRecord

  2. [完了]をクリックします。複数行ウィザードで作成したアクションがアクションモデルペインに表示されます。ここでは、[すべての複数行マップアクションをここに追加します!]というコメントがハイライトされています。

    3270SampleOutputActionPane01

Procedure データを出力するための複数行アクションを追加する

  1. アクションモデルで、[すべての複数行マップアクションをここに追加します!]というコメントがハイライト表示されていない場合は、選択してハイライトします。

  2. 出力DOMペインで、ACCINFOの最初の項目に移動します。

  3. 5250の[FILE BROWSE]画面から出力DOMにデータをドラッグアンドドロップします(次を参照)。

    表6 - 3

    マップ元:FILE BROWSE

    マップ先:出力DOM

    NUMBER

    ACCTID

    NAME

    NAME

    AMOUNT

    BALANCE

    出力DOMが次のように表示されます。

    5250SampleOutput04

  4. 5250コンポーネントエディタのメニューバーで、[ファイル]、[保存]の順に選択するか、[保存]ボタンをクリックします。

  5. 51アニメーションを実行するの指示に従って、コンポーネントをテストします。

Procedure 複数行アクションを編集する

  1. アクションペインで、変更する複数行アクションをクリックします。ダイアログボックスが表示されます。

    3270EditMultiRowAction

  2. 該当するタブをクリックしてフィールドを編集した後、[OK]をクリックします。複数行ウィザードを使用してデータを入出力する方法については、前の節を参照してください。

 
Top of page

システムメッセージの処理

5250接続には、5250コンポーネントの実行で問題となり得る、端末セッションで受信した予期しないメッセージ画面を処理するための特別な機能があります。このタイプのメッセージ画面の例としては、システム管理者が端末にシステムのシャットダウンまたはその他のイベントについて警告するための通知を送信した場合の画面があります。システムトランザクションを処理する通常の5250コンポーネントの実行時にこの画面が表示されることは予期できず、また必要ありません。通常、これらのシステムメッセージは、読んだ後でAIDキーを押すと消えます。

TN5250接続によって、特殊な画面ハンドラを定義し、コンポーネント処理の対象外にする画面に応答できます。単一の接続で複数の画面ハンドラを指定することもできます。接続リソースで画面ハンドラを指定することにより、ハンドラを一度指定すると、同じ接続を使用して複数のコンポーネントでそのハンドラを利用できるようになります。

CaptureSysMsg

注記:   接続の画面ハンドラはシステム管理者からのメッセージのみに限定されません。画面ハンドラを指定すると、端末のデータストリームで受信するどの画面に対しても応答することができます。

Procedure 画面ハンドラを作成するための一般的な手順

  1. 5250接続リソースを使用する、作業用5250コンポーネントを作成します。

  2. 処理する画面をScreenDoc DOMで再現し、キャプチャします。

  3. 画面でフィールドとデータの組み合わせを選択し、この画面を画面ハンドラとして一意に特定します。

  4. 画面を識別する式と画面を閉じるためのAIDキーを指定して、画面ハンドラを接続リソースに追加します。

Procedure 画面ハンドラを作成するための詳細な手順

  1. 通常の方法で5250コンポーネントを作成します(つまり、接続とその他のリソースを必要に応じて作成し、次にコンポーネントを作成します)。

  2. ScreenDoc DOMが表示されていない場合、メニューバーから[表示]、[ウィンドウのレイアウト]の順に選択し、次に[XMLレイアウト]をクリックします。ScreenDocを[表示]リストに移動し、[OK]をクリックします。

  3. コンポーネントを保存し、開いたままにします。次の手順に従って、処理する特定の画面をキャプチャします。

    注記:   この作業には、システムオペレータ/管理者、または処理するメッセージ画面を設定した人の協力が必要です。

    a. ログインアクションを含む画面のマップの後にくる最初の画面のマップアクションに、ブレークポイントを設定します(これがログオンコンポーネントである場合、KeepAliveまたはLogonセクションの最初のアクションにブレークポイントを設定します)。

    b. <F5>キーを押して、コンポーネントをアニメーション表示します。

    c. <F9>キーを押して、ブレークポイントを実行します。

    d. <F6>キーを押して、アニメーション表示を一時停止します。

    e. システムメッセージを開始します。

    f. <Enter>キーを押すと、ネイティブ環境ペインには、システムメッセージが表示され、Screen Docペインには、メッセージがXML形式で表示されます。

    CaptureSysMsg

  4. この画面を処理する画面として特定するためのデータを持つテストフィールドを選択します。たとえば、「Display Messages」というデータを持つ画面タイトルフィールドを選択します。

  5. ScreenDocで、テストフィールドのXML表示にマウスのポインタを合わせ、XPathの完全なロケーション(ScreenDoc/SCREEN/FIELD[5]など)をメモします。

  6. <Shift>+<F5>キーを押してアニメーション表示を停止し、ホストシステムをサインオフします。次に、保存せずにコンポーネントを閉じます。

  7. Composerウィンドウで、コンポーネントの接続リソースを選択し、開きます。

  8. [接続情報]タブで[詳細]ボタンをクリックして、[詳細]ダイアログボックスを表示します。

  9. プロトコルをサポートするには[Telnet環境を有効にする]チェックボックスをオンにします。このチェックボックスがオフの場合、[リソース名]テキストフィールドを無効にしてクリアします。

  10. TN5250 Connectで使用されているデバイス名を[デバイス名]に入力します。

  11. [追加]ボタンをクリックし、画面ハンドラを指定する行を追加します。

  12. 式フィールドで、テストデータをテストフィールドのXPathと比較する式(例: ScreenDoc.XPath("string(SCREEN/FIELD[5])")= =" Display Messages")を入力します。"

    注記:   比較が適切に実行されるかどうかを確認するには、Xpath文字列関数を適用します。

  13. [AID/ディスパッチキー]フィールドで、画面への応答として送信するキーを選択します。

    5250DefineSystemScreen

  14. [OK]をクリックしてハンドラを保存し、次に[OK]をクリックして接続を保存します。

  15. ログオンおよび画面のマップアクションを通過したコンポーネントをアニメーション表示したり、ブレークポイントの設定、システムメッセージの開始、および送信キーの入力アクションまでアニメーション表示を行うなどして、システム画面ハンドラをテストします。




Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.  more ...