Tivoli Service Desk 6.0 Developer's Toolkit Interface Designer の手引き

第 3 章: マップ・ファイルと EHLLAPI マップ・ユーティリティー

目次に戻る


概要

概説

EHLLAPI で使用されるマップ・ファイルは ASCII テキスト・ファイルです。マップ・ファイルには、ヘッダーとフィールドという 2 つのセクションがあります。

ヘッダー・セクション

ヘッダー情報には、マップ・ファイルに対してグローバルな属性が含まれています。 たとえば、TSD Script Interpreter が各フィールドに入力する前に ERASE_EOF を押すようにすることができます。

ヘッダーのフォーマットは次の通りです。

*HEADER
CLEAR_FIRST = {{TRUE または ON}|{FALSE または OFF}}
MOVE_CURSOR = {{TRUE または ON}|{FALSE または OFF}}
LIBRARY = {ユーザー定義のフォーマット関数のデフォルト値として使用する kbc ライブラリー} 

ヘッダーは常にマップ・ファイルの最初のセクションでなければなりません。仕様は次の通りです。

フィールド・セクション

このセクションは、ホスト・フィールドと TSD Script データに対するそれらの関係を指定します。 基本的には、フィールド・セクションの各行は 1 つのホスト・データ・フィールド位置を 1 つの TSD Script レコード・フィールドにリンクさせます。 あるいは、転送されるデータが単一の TSD Script 変数である場合には、フィールド・セクション中の 1 つの行がホスト・データ・フィールド位置を その TSD Script 変数名とリンクさせます。 フィールド・セクションの各行はマップ・エントリーと呼ばれます。

マップ・ファイルのフィールド・セクションのフォーマットは次の通りです。

*FIELDS
{フィールド}[, ]{行}[, ]{{列}[, ]{{長さ} {{USERFORMAT
[, ]{[ファイル:]ルーチン名}|{SYSFORMAT[, ]{定数 [定数
...]}}

マップ・エントリーの各セグメントは空白文字 (1 つまたは複数のブランクまたはタブ) または コンマで区切らなければなりません。 各セグメントの説明は以下の通りです:

各ホスト・データ・フィールドは TSD Script タイプとの間で変換されなければなりません。

システム形式

各 TSD Script 単純フィールド・タイプごとに、一定のシステム形式がタイプに適用されます。

1 つのフィールドについて、システム形式を結合して複数のシステム形式をリストすることができます。 文字列のアップロード時に、左寄せしてゼロで埋め込みたい文字列がある場合には、 それを実行するための何らかの TSD Script コードを作成するか、あるいはマップ・ファイル中に システム形式として LEFT_JUSTIFY ZERO_PAD を指定することができます。 システム形式を使用する方が容易であり、TSD Script 変換ルーチンより速く実行されます。 特殊な TSD Script 変換ルーチンを作成する必要がない限り、システム形式を使用すべきです。

システム形式のアプリケーションは、形式設定される TSD Script 単純タイプによって 異なります。 TSD Script 単純タイプ、適用可能システム形式、および関連記述は次の通りです。

タイプ 説明
STRING
  • DEFAULT_FORMAT は、文字列が右寄せされ、ブランクで埋め込まれることを意味します。
  • LEFT_JUSTIFY は、文字列が左寄せされ、ブランクで埋め込まれることを意味します。
  • ZERO_PAD は、文字列がブランクではなくゼロで埋め込まれることを意味します。
INTEGER
  • DEFAULT_FORMAT は、整数が負数で、右寄せされ、ブランクで埋め込まれ、基数が 10 (10 進数) である場合に限り接頭部として符号が付きます。
  • LEFT_JUSTIFY は、整数が左寄せされることを意味します。
  • ZERO_PAD は、整数がゼロで埋め込まれることを意味します。
  • PREPEND_SIGN は、正数または負数にかかわらず、整数の前に接頭部として符号が付くことを意味します。
  • RADIX_16 は、整数が基数の 16 (16 進数) であることを意味します。
  • GROUP_BY_3 は、別の区切り記号が指定されていない限り、整数がコンマで 3 桁ずつのグループ (1000 単位ごと) に区切られることを意味します。たとえば、 1000000 は 1,000,000 となります。
  • GROUP_SEPR_DOT は、GROUP_BY_3 形式で使用される区切り記号がピリオドとなることを意味します。
  • GROUP_SEPR_SPACE は使用される区切り記号を意味します。
  • GROUP_BY_3 は、形式がスペースであることを意味します。
BOOLEAN
  • DEFAULT_FORMAT は、値が TRUE/FALSE の右寄せで表示されることを意味します。
  • LEFT_JUSTIFY は、値が左寄せされることを意味します。
  • YES_NO は、値が YES/NO で表示されることを意味します。
  • 1_0 は、値が 1/0 で表示されることを意味します。
REAL
  • DEFAULT_FORMAT は、数字が右寄せされ、ブランクで埋め込まれ、グループ化されず、ピリオドで示される小数点をもち、数字が負数の場合に限り符号が接頭部として付くことを意味します。
  • LEFT_JUSTIFY は、数字が左寄せされることを意味します。
  • ZERO_PAD は、数字がゼロで埋め込まれることを意味します。
  • PREPEND_SIGN は、正数または負数にかかわらず、数字の前に接頭部として符号が付くことを意味します。
  • DECIMAL_COMMA は、小数点がコンマで示されることを意味します。
  • GROUP_BY_3 は、別の区切り記号が指定されていない限り、数字がコンマで 3 桁ずつのグループ (1000 単位ごと) に区切られることを意味します。 たとえば、 1000000.00 は 1,000,000.00 となります。
  • GROUP_SEPR_DOT は、GROUP_BY_3 形式で使用される区切り記号がピリオドとなることを意味します。
  • GROUP_SEPR_SPACE は、GROUP_BY_3 形式で使用される区切り記号がスペースとなることを意味します。
TIME
  • DEFAULT_FORMAT は、値が右寄せで、ブランク、秒数で埋め込まれ、 24 時間形式で表示されることを意味します。
  • LEFT_JUSTIFY は、値が左寄せされることを意味します。
  • ZERO_PAD は、値がゼロで埋め込まれることを意味します。
  • WITHOUT_SECONDS は、値が時および分だけで表示されることを意味します。
  • AM_PM は、値が A.M. または P.M. を後に付けた 12 時間形式で表示されることを意味します。
DATE
  • DEFAULT_FORMAT は、値が右寄せで、ブランクで埋め込まれることを意味します。米国形式では、全表記の西暦 (たとえば、1999)、数字の月をスラッシュで区切って表示されます。
  • LEFT_JUSTIFY は、値が左寄せされることを意味します。
  • ZERO_PAD は、値がゼロで埋め込まれることを意味します。
  • EUROPEAN_FORMAT は、値が日 / 月 / 年で表示されることを意味します。
  • YMD_FORMAT は、値が年 / 月 / 日で表示されることを意味します。
  • DASH_SEPARATORS は、区切り記号がダッシュ ("--") であることを意味します。
  • NO_SEPARATORS は、値が区切り記号なしで表示されることを意味します。
  • TRUNCATE_CENTURY は、西暦が下 2 桁だけで表示されることを意味します。
  • NAMED_MONTHS は、値が月に対応する名前で表示されることを意味します。 たとえば、January 1, 1999 などです。
  • SHORT_NAMES は、月の名前が省略形になることを意味します。たとえば、Jan. 1, 1999 などです。
  • ALL_CAPS は、月の名前が大文字で表示されることを意味します。たとえば、 January 1, 1999 は JAN 1, 1999 となります。

ユーザー定義のフォーマット関数

一部の環境では、ユーザー自身の形式の関数を TSD Script で書くことができます。 ユーザー定義の 関数は入力データを受け入れて、それを新規の形式に変換し、操作の成功を示すブールを戻します。 ユーザー定義のフォーマット関数のプロトタイプは次の通りです。

FUNCTION {関数名}(VAL {ソース}:{ソース・タイプ}, REF
                  {ターゲット}:{ターゲット・タイプ}):BOOLEAN

ユーザー定義のフォーマット関数の説明は次の通りです。

ユーザー定義のフォーマット関数 説明
ソース・タイプ
  • ダウンロード は、ソース・タイプが常に STRING でなければならないことを意味します。
  • アップロードは、ソース・タイプが TSD Script 変数または変換されるレコード・フィールドのタイプと一致しなければならないことを意味します。
ターゲット・タイプ
  • ダウンロードは、ターゲット・タイプが TSD Script 変数または変換されるレコード・フィールドのタイプと一致しなければならないことを意味します。
  • アップロード は、ターゲット・タイプが常に STRING でなければならないことを意味します。
戻りタイプ 戻りタイプは BOOLEAN でなければなりません。関数が FALSE を戻した場合には、 TSD Script Interpreter はエラーが起こったとみなし、呼び出し元に EMUERR_FORMAT_FN_FAILURE (-7005) を戻します。 変換関数が TRUE を戻し、ターゲット値を $Unknown に設定している場合には、 TSD Script Interpreter は変換が成功したとみなし、操作を実行します。ダウンロードの場合には、TSD Script 変数またはレコード・フィールドは $Unknown 値を取ります。アップロードでは、TSD Script Interpreter はこのフィールドをスキップします。

データ・フローの方向によってタイプのルールが異なるために、ユーザー関数を含むマップは、 ターゲットおよびソース・タイプの両方が STRING でない限り、アップロードまたはダウンロード のいずれかに向けられなければなりません。

たとえば、Tivoli Problem Management (TPM) の重大度コード (数値) を英字スケール (たとえば、1 を A、2 を B など) に変換したいとします。 さらに、ダウンロード時に英字スケールから再び数値に戻したいと仮定します。 最初に、数値を英字に変更する (アップロードの場合) ための TSD Script 関数を書きます。

FUNCTION ToAlpha(VAL inSeverity:INTEGER, REF
                 outSeverity:STRING):BOOLEAN IS
ACTIONS
outSeverity := Char(64 + inSeverity);
                Exit(TRUE);
END; -- ToAlpha

次に、英字を数値に戻す (ダウンロードの場合) ためのルーチンを作成します。

FUNCTION ToNumeric(VAL inSeverity:STRING, REF
                  outSeverity:INTEGER):BOOLEAN IS
ACTIONS
outSeverity := CharCode(StrUpper(inSeverity)) - 64;
END; -- ToNumeric

これらの関数は CONVERT という名前のファイルに保管されるものとします。重大度のアップロード・マップ・フィールド定義では、ToAlpha 関数が次のように指定されます。

SEVERITY 10 10 1 USERFORMAT CONVERT:TOALPHA

重大度のダウンロード・マップ・フィールド定義では、ToNumeric 関数は次のように指定されます。

SEVERITY 10 10 1 USERFORMAT CONVERT:TONUMERIC

EHLLAPI マップ・ユーティリティー操作

概要

マップ・ファイルは単純なものですが、インターフェース・アプリケーション全体の マップ・ファイルを手書きすることは多くの時間を要することがあります。

行および列を計算してホスト画面の位置を正確に決定することは人間のエラーを招きやすいものです。 特に、開発者が多くのフィールドを含む多くの画面に向かい合う時などはそうです。

ほとんどのインターフェース開発者は、インターフェースの論理を作り上げるために 時間を費やすものです。

参考にするテキスト・ファイルが 1 つしかない場合は、後日 (または誰か他の人が) マップ・ファイルを変更することは困難です。

これらの懸念を克服するために、Tivoli Systems は EHLLAPI マップ・ユーティリティーを作成しています。

マップ・ユーティリティーとは?

EHLLAPI マップ・ユーティリティーは、TSD Script EMUMapUpload および EMUMapDownload によって使用されるマップ・ファイルを作成するための 直観的な方法を提供します。

EHLLAPI マップ・ユーティリティーでは、ホスト画面を取り込んで、それらをテキスト・ファイル (SCR ファイル) として保管することができます。取り込まれた画面を基にしたマップ・ファイルは、フィールド・エントリーが作成されるフィールドが選択された時に作成されます。フィールド・エントリーを選択するために、フィールドをクリックしてドラッグすることができます。

さらに、EHLLAPI マップ・ユーティリティーは、ツールが SCR ファイル (前に取り込まれている) をロードし、任意のマップ・ファイルを画面に適用するので、インターフェース保守のために有用です。 EHLLAPI マップ・ユーティリティーでは、フィールド・エントリーが可視的、直観的に作成、表示、編集、および削除されます。

EHLLAPI マップ・ユーティリティーは全体が TSD Script で書かれます。 TSD Script コードを変更したい場合には、 Tivoli Systems では、始める前にオリジナル・コード (maputil.kb, mapentry.df) のバックアップ・コピーを取ることをお勧めします。

開始

EHLLAPI マップ・ユーティリティーを使用するためには、マシンに TSD Developer's Toolkit が インストールされていなければなりません。 「取り込み」 オプションを使用するためには、 EHLLAPI Extensions for TSD Developer's Toolkit もインストールする必要があります。

ツールを開始するには、次のようにしてください。

  1. EHLLAPI マップ・ユーティリティーをインストールしたディレクトリーに進みます (このディレクトリーには maputil.kb ファイルが入っている) 。
  2. maputil.kb を解析します。
  3. コマンド行に、次のように入力します:
    KML MAPUTIL
  4. Enter キーを押します。
    結果: 空の、スクロール可能な TSD Developer's Toolkit - EHLLAPI マップ・ユーティリティー・ウィンドウが現れます。

特殊文字

ホストから取り込まれた画面を見ると、端末ウィンドウでは表示されなかった文字があるのが分かります。 これらの文字は、フィールド区切り文字としての働きをもつ隠されたホスト文字です。 これらの文字は、ユーザーがデータ・フィールドの始めと終わりを判別するのに役立つので、EHLLAPI マップ・ユーティリティーはこれらの文字を消去しません。

ホスト画面の取り込み

ユーザーが習熟しなければならない最初の操作は、ホスト画面の取り込みです。 これは、 どのホスト画面についてもアップロード / ダウンロード操作を設定する際に必要な最初のステップです。

画面を取り込むと、その画面は次のようになります。

Tivoli Systems では、取り込まれた画面ファイルに拡張子 .SCR を付けるという規則が 採用されていますが、ファイルの命名に際しては、希望する任意の拡張子を選択することができます。

ホスト画面を取り込むには、次のようにしてください。

  1. 端末エミュレーション・セッションを使用して、取り込みたいホスト画面に進みます。
  2. EHLLAPI マップ・ユーティリティーの 「ファイル」 メニューから、「ホスト画面の取り込み」を選択します。
    結果: ファイル名を入力するようプロンプトが出されます。
  3. 入力ボックスに正しいファイル名を入力します。
    結果: 使用する端末セッション (短縮名) を指定するようプロンプトが出されます。
  4. 「了解」を選択します。
    結果: 画面が取り込まれ、保管されて、TSD Developer's Toolkit-EHLLAPI マップ・ユーティリティー・ウィンドウに現れます。

注: 画面を取り込んだ後は、「ホスト画面の取り込み」メニュー・コマンドが非アクティブになります。

別のホスト画面を取り込みたい場合には、次のようにしてください。

EHLLAPI マップ・ユーティリティー・ウィンドウはサイズ変更が可能です。ホスト画面が完全には見えない場合は、画面全体が見えるようになるまで、ウィンドウ・サイズを変更することができます。ウィンドウが大きすぎると、ホスト画面の外側のエリアにマップ・エントリーを作ることができません。

注: 端末エミュレーション・セッションは画面を取り込むためにだけ使用します。 その他のすべての EHLLAPI マップ・ユーティリティー操作は、TSD Developer's Toolkit だけを使用します。 これにより、コミュニケーション・マネージャーのないマシンを使用しても、一度に多くの画面を取り込んで、後からマップを作成することができます。

画面ファイルのロード

前に取り込んだ画面ファイルをロードしたい場合は、次のようにしてください。

画面ファイルをロードした後で、「画面ファイルのロード」が非アクティブになります。 別の画面をロードしたい場合は、次のようにしてください。

マップ・エントリーの作成

画面ファイルをロードした後は、その画面のマップ・ファイルを作成することができます。

マップ・エントリーが作成されるフィールドを選択するためには、次のようにしてください。

  1. フィールドの最初の桁の左端にマウス・ポインターを位置付けます。
  2. ポインターをフィールドの終わりまでドラッグして、マウス・ボタンを放します。
    結果: 選択したエリアがシステムの強調表示カラーで強調表示されます。

ポインターのドラッグが速すぎると、フィールドの最初の文字が強調表示されたエリアに組み込まれ ない場合があります。 その場合には、上記のステップを繰り返してください。

強調表示されたエリアのエントリーを作成するためには、次のようにしてください。

  1. 「マップ」メニューから「エントリーの作成」を選択します (あるいは「挿入」を押します) 。
    結果: ダイアログ・ボックスが現れます。
  2. テキスト・ボックスの中の情報を完成します。
  3. 「了解」を選択します。
    結果: 強調表示されたフィールドがアクティブ・オブジェクトになります。アクティブ・オブジェクトは、システムのアクティブ・タイトル・テキストおよびアクティブ・タイトル・テキストの背景に表示されます。

マップ・エントリーの編集

マップ・エントリーを編集するには、次のようにしてください。

  1. マップ・エントリーをクリックしてそれを選択します。
    結果: そのマップ・エントリーがアクティブ・オブジェクトになります。
  2. 「マップ」メニューから「エントリーの編集」を選択します。
    結果: マップ・エントリーの設定を変更できるダイアログ・ボックスが現れます。
  3. 必要があれば、変更してください。
  4. 「了解」を選択します。

注: オブジェクトをダブルクリックすることは、それを 1 回クリックして「エントリーの編集」を選択することと同じです。

マップ・エントリーの削除

マップ・エントリーを削除するには、次のようにしてください。

  1. エントリーをクリックしてそれを選択します。
    結果: そのエントリーがアクティブ・オブジェクトになります。
  2. 「削除」を押します。

マップ・ヘッダー属性の設定

マップ・ファイルのヘッダー情報を設定するには、次のようにしてください。

マップ・ファイルの保管

名前のないマップ・ファイルを保管する (または別の名前で保管したい場合) には、次のようにしてください。

  1. 「ファイル」メニューから「マップの別名保管」を選択します。
    結果: 「ファイル名」ダイアログ・ボックスが現れます。
  2. テキスト・ボックスにファイル名を入力します。
  3. 「了解」を選択します。

すでに名前の付いたマップを保管したい場合には、次のようにしてください。

マップ・ファイルの適用

マップ・ファイルを画面に適用することによって、ユーザーは指定されたファイルを読み取る ことができ、マップ・ファイル中に見つかったマップ・エントリーを強調表示することができます。 これは、ユーザーがマップ・ファイルに追加したりマップ・ファイルを変更する必要がある時に役立ちます。

マップ・ファイルを画面に適用するには:

  1. 「マップ」メニューから「マップの適用」を選択します。
    結果: マップ・ファイルの名前を尋ねるダイアログ・ボックスが現れます。
  2. テキスト・ボックスにマップ・ファイルの名前を入力します。
  3. 「了解」を選択します。

マップが適用された後で、そのマップを編集、削除したり、エントリーを追加することができます。

EHLLAPI マップ・ユーティリティーのリセット

画面を表示した時、あるいはマップを画面に適用した時は、一部の「ファイル」メニュー・コマンドが使用不能になっています。新規の画面を取り込む必要がある場合、あるいは別の画面ファイルをロードする必要がある場合には、現行表示をリセットする必要があります。

現行表示をリセットするには、次のようにしてください。

EHLLAPI マップ・ユーティリティー・フォントの設定

ユーティリティー・ウィンドウで使用されるフォントを変更するには、次のようにしてください。

注: フォントの設定は EHLLAPI マップ・ユーティリティーのクローズ時に保管されません。

EHLLAPI マップ・ユーティリティーの終了

次のメソッドの 1 つを使用して、 EHLLAPI マップ・ユーティリティーの実行を終了することができます。

  1. 「ファイル」メニューから「終了」を選択します。
  2. ウィンドウのシステム・メニューをダブルクリックします。
  3. ウィンドウのシステム・メニューから、「クローズ」を選択します。

最新の変更を保管しないで終了を選択した場合には、そのファイルを保管するかどうかを尋ねるメッセージが現れます。

ファイルに名前を付けないで「Yes」を選択した場合には、ファイルに名前を付けることのできる「ファイル」ダイアログ・ボックスが現れます。

EHLLAPI マップ・ユーティリティーの例

AS/400 画面の例

この例では、ネットワーク属性を表示する AS/400 画面が示されます。例の中でユーザーは、次を行います。

  1. 画面を取り込みます。
  2. マップを作成します。
  3. 画面からのダウンロードを実行するのに必要なコード・セグメントを書きます。

この例のファイル (example.scr、example.kb、および example.map という名前) は OS2ASE ディレクトリーの中にあります。

ホスト画面は次の例のようになります。

ネットワーク属性システムの表示:

システム:
S1028662
現行システム名 . . . . . . . . . . . . . . . .. . . : S1028662
保留中のシステム名 . . . . . . . . . . . . . . . . .:
ローカル・ネットワーク ID. . . . . . . . . . . . . . : APPN
ローカル制御点名 . . . . . . . . . . . . . . . . . . : S1028662
デフォルト値のローカル位置 . . . . . . . . . . . . . : S1028662
デフォルトのモード . . . . . . . . . . . . . . . . . : BLANK
APPN ノード・タイプ . . . . . . . . . . . . . . . . : *ENDNODE
中間セッションの最大数 . . . . . . . . . . . . . . . : 200
経路追加抵抗 . . . . . . . . . . . . . . . . . . . . : 128
サーバー・ネットワーク ID/制御点名 . . . . . . . . .:

続く...
続行するには Enter (キー) を押してください。

F3=終了 F12=取消し

EHLLAPI マップ・ユーティリティーの開始

EHLLAPI マップ・ユーティリティーの例を使用するためには、次のステップにしたがってください。

  1. EHLLAPI マップ・ユーティリティーを開始します。
  2. コミュニケーション・マネージャーの端末エミュレーション・セッション (これをセッション "A" と名付けます) を開始します。
  3. ログオンして、AS/400 ネットワーク属性を表示するコマンドを出します。

EHLLAPI マップ・ユーティリティーによるマップの作成

前のセクションの手順を完了した後で、画面を取り込むことができます。

実際のインターフェースではおそらくもっと説明的な名前 (dnetattr.scr など) が使用されると思われますが、ここでは画面ファイル名として Example.scr が選択されます。基本的に画面ファイル名を使用して、example.map という名前のマップを作成します。

この例を簡単で効果的にするために、次が行われます。

次のリストは各マップ・エントリーに使用される情報を詳述したものです。

マップ・エントリー 説明
currentSystemName 長さは 8、システム形式は DEFAULT_FORMAT、TSD Script タイプは STRING 。
pendingSystemName 長さは 8、システム形式は DEFAULT_FORMAT、TSD Script タイプは STRING 。
localNetworkID 長さは 8、システム形式は LEFT_JUSTIFY、TSD Script タイプは STRING 。
localCPName 長さは 8、システム形式は DEFAULT_FORMAT、TSD Script タイプは STRING 。
dfltLocalLocation 長さは 8、システム形式は DEFAULT_FORMAT、TSD Script タイプは STRING 。
dfltMode 長さは 8、システム形式は LEFT_JUSTIFY 。
APPNNodeType 長さは 8、システム形式は DEFAULT_FORMAT、TSD Script タイプは INTEGER 。
maxNbrIntSess 長さは 4、システム形式は LEFT_JUSTIFY、TSD Script タイプは INTEGER 。
routeAddRes 長さは 3、システム形式は LEFT_JUSTIFY、TSD Script タイプは INTEGER 。

これらのシステム形式 (DEFAULT_FORMAT 以外) はアップロード操作で使用されます。ダウンロード 操作の場合は、値から空白文字が削除されます。 このマップでは、ヘッダー属性は設定されません。 代わりに、デフォルトの設定が使用されます。

すべてのエントリーを作成した後で、そのマップを EXAMPLE.MAP として保管してください。 EHLLAPI マップ・ユーティリティーが次の例のようなファイルを生成します。 この例は簡単な ダウンロードを実行します。 ただし、これは EHLLAPI マップ・ユーティリティーを使用した マップ作成の基本的なステップを図示しています。

*REM マップ・ファイル名は E:\EHLLAPI\MAPUTIL\example.map です。
*HEADER
CLEAR_FIRST = FALSE
MOVE_CURSOR = TRUE
*FIELDS
currentSystemName, 3, 55, 8, SYSFORMAT, DEFAULT_FORMAT
pendingSystemName, 4, 57, 8, SYSFORMAT, DEFAULT_FORMAT
localNetworkID,    5, 55, 8, SYSFORMAT, LEFT_JUSTIFY
localCPName,       6, 55, 8, SYSFORMAT, DEFAULT_FORMAT
dfltLocalLocation, 7, 55, 8, SYSFORMAT, DEFAULT_FORMAT
dfltMode,          8, 55, 8, SYSFORMAT, LEFT_JUSTIFY
APPNNodeType,      9, 55, 8, SYSFORMAT, DEFAULT_FORMAT
maxNbrIntSess,    10, 55, 4, SYSFORMAT, LEFT_JUSTIFY
routeAddRes,      11, 55, 3, SYSFORMAT, LEFT_JUSTIFY
このマップ・ファイルを使用する TSD Script コード・セグメントは次のようになります。
TYPES
NetAttrRec IS RECORD
    currentSystemName                             :STRING;
    pendingSystemName                             :STRING;
    localNetworkID                                :STRING;
    localCPName                                   :STRING;
    dfltLocalLocation                             :STRING;
    dfltMode                                      :STRING;
    APPNNodeType                                  :STRING;
    maxNbrIntSess                                 :INTEGER;
    routeAddRes                                   :INTEGER;
    $myDnloadMap {'EXAMPLE.MAP'}:STRING;
                END;
ROUTIINES
FUNCTION GetNetAttributes(VAL conn:EMUCONNECTION,
REF netAttr:NetAttrRec):INTEGER IS
-- 正しい画面が表示されているものとみなします。
VARIABLES
            rc :INTEGER;
ACTIONS
            rc := EMUMapDownload(conn,
                                 netAttr.$myDnloadMap,netAttr);
            IF (rc < 1) THEN
            WinMessageBox($DESKTOP,'Error',$MBOK,
                          'Map dnload returns '& rc);
                END;
            Exit(rc);
END; -- GetNetAttributes

ネットワーク ID のマップ・エントリーの作成

このセクションでは、サーバー・ネットワーク ID のマップ・エントリーを作成します。 サーバー・ネットワーク ID を含むことがあるフィールドは 5 つあります。

最初のフィールドの最初の文字から最後のフィールドの最後の文字までポインターをドラッグ すると、srvrNetworkID と呼ばれるエントリーが作成され、これは EHLLAPI マップ・ユーティリティーでは複数行フィールドとみなされます。 ParseSrvrNames と呼ばれるユーザー定義のフォーマット関数が作成されます。

フォーマット関数は次のようになります。

FUNCTION ParseSrvrNames(VAL inStr:STRING,
REF srvrNetworkID:LIST OF STRING):BOOLEAN IS
VARIABLES
                temp            :STRING;
ACTIONS
                temp         := StrTrim(StrLTrim(inStr)); -- get rid of                                                                                                                                                                                                 blank fields
    WHILE (Known(temp)) DO
                    ListInsert(srvrNetworkID, StrCopy(temp,1,8));
                    temp         := StrDelete(temp,1,80);
                END;
                Exit(TRUE);
END; -- ParseSrvrNames

レコードの中で文字列のリストとして srvrNetworkID を宣言します。

NetAttrRec IS RECORD
    currentSystemName                             :STRING;
    pendingSystemName                             :STRING;
    localNetworkID                                :STRING;
    localCPName                                   :STRING;
    dfltLocalLocation                             :STRING;
    dfltMode                                      :STRING;
    APPNNodeType                                  :STRING;
    maxNbrIntSess                                 :INTEGER;
    routeAddRes                                   :INTEGER;
    srvrNetworkID                                 :LIST OF STRING;
    $myDnloadMap {'EXAMPLE.MAP'}:STRING;
                END;

ダウンロード関数の実行時に、このリストは正しい値で更新されます。 このメソッドは、 EMUFillBuffer を繰り返し呼び出すよりも、あるいは TSD Script レコードの 中にダミー・フィールドを作成してマップ中のすべてのフィールドをダウンロードしてから 一度に 1 つの値をリストに挿入することよりも柔軟であることが分かります。


Tivoli Service Desk 6.0 Developer's Toolkit レガシー API の手引き

目次に戻る

著作権