Java 用ホスト・アクセス・クラス・ライブラリー

Java 用ホスト・アクセス・クラス・ライブラリー


概念

以下のセクションで、 ホスト・アクセス・クラス・ライブラリー (HACL) のいくつかの基本概念について説明します。 これらの概念を理解すれば、ライブラリーを有効に使用するのに役立ちます。

セッション

HACL のコンテキストで、 セッション・オブジェクト (ECLSession) にはホストへの接続とその接続の特性がカプセル化されています。 セッション・オブジェクトは、ECLPS (表示スペース)、ECLOIA (オペレーター情報域)、 および ECLXfer (ファイル転送) といったその他のセッション固有のオブジェクトのコンテナーの役割も果たします。  ホスト印刷セッション・オブジェクト (ECLHostPrintSession) は、セッション・オブジェクトから派生し、印刷時のホストとの接続をカプセル化します。

セッション・オブジェクトには、関連するグラフィカル・ユーザー・インターフェース (GUI) はありません。 つまり、ECLSession のインスタンスを作成してもエミュレーター画面は表示されません。

TLS

TLS を使用して、セキュリティーを確保するするために Host On-Demand セッションを暗号化することができます。セキュア・セッションを有効にするには、SESSION_PROTOCOL_TLS パラメーターを使用してください。

コンテナー・オブジェクト

いくつかの HACL クラスは、他のオブジェクトを含みます。例えば、ECLSession オブジェクトは、 ECLPS、ECLOIA、および ECLXfer オブジェクトのインスタンスを含みます。 コンテナーは、収容されたオブジェクトへの参照を戻すメソッドを提供します。 例えば、ECLSession オブジェクトには GetOIA メソッドがありますが、 これは OIA オブジェクトを指すポインターを戻します。 収容されたオブジェクトは、 そのコンテナーのクラスの共用メンバーとしてインプリメントされるのではなく、 メソッドを通してのみアクセスされます。

リスト・オブジェクト

いくつかの HACL クラスにはリスト反復機能があります。例えば、ECLFieldList クラスはフィールドのリストを管理します。 HACL リスト・クラスは、リスト内容の変更を反映するよう非同期で更新されることはありません。 アプリケーションは、リストの内容を更新するために明示的に Refresh メソッドを呼び出さなければなりません。 それによって、反復中にリストが変更されたかどうかを心配せずに、 アプリケーションでリストを反復することができます。

イベント

HACL は、特定のイベントを非同期通知する機能を備えています。 アプリケーションは、特定のイベントが起きたときに通知を受けるように選択することができます。 例えば、アプリケーションは、 ホストとの接続状況が変更されると通知を受けるようにすることができます。 現在、HACL は次のようなイベントの通知をサポートします。

イベント

イベントの取り込みに使用するインターフェース

通信の接続と切断 ECLCommNotify
表示スペースの更新 ECLPSListener
オペレーター情報域 (OIA) の更新 ECLOIANotify
ファイル転送進行イベント ECLXferListener
画面認識イベント ECLRecoNotify
ホスト印刷イベント ECLPrintJobListener

イベント通知は、個々の HACL 通知インターフェースによって定義されます。 イベント・タイプごとに別々のインターフェースが存在します。 アプリケーションがイベントの通知を受けられるようにするには、 通知が必要なイベントのタイプに対応するインターフェースをインプリメントしたオブジェクトを定義および作成しなければなりません。 次に、適切な HACL 登録機能を呼び出して、 そのオブジェクトを登録しなければなりません。 アプリケーション・オブジェクトを登録すると、 その後イベントが発生したら、そのたびに NotifyEvent メソッドが呼び出されます。

注: アプリケーションの NotifyEvent メソッドは、 別の実行スレッド上に非同期で呼び出されます。 そのため、NotifyEvent メソッドは、再入可能でなければならず、 また、アプリケーション・リソースにアクセスする場合は、 適切なロックまたは同期化を使用すべきです。

エラー処理

一般的に、HACL は ECLErr オブジェクトを throw することによって、 アプリケーションにエラーを示します。 アプリケーションがエラーを catch するには、 次のように HACL メソッドの呼び出しを try/catch ブロック内に入れてください。

            try {
        pos = ps.ConvertRowColToPos(row, col);
    } catch (ECLErr err) {
        System.out.println("HACL Error! " + err.GetMsgText());
    }

HACL エラーが catch されたとき、アプリケーションから ECLErr オブジェクトのメソッドを呼び出せば、 エラーの正確な原因を判別することができます。 また、ECLErr メソッドを呼び出して、 完全な言語依存のエラー・メッセージを作成することもできます。

アドレッシング (行、桁、位置)

HACL では、ホスト表示スペース内の位置をアドレッシングする方法が 2 つあります。 アプリケーションは、行と桁の座標を使うか、 または単一の線形位置値を使って文字をアドレッシングすることができます。 表示スペースのアドレッシングの場合、 使用するアドレッシング方式に関係なく、常に 1 をベースにします (0 ベースではありません)。

行と桁のアドレッシング方式が有用なのは、 ホスト・データの物理画面表示に直接関係したアプリケーションの場合です。 長方形の座標システム (左上隅が行 1 桁 1) を使うのが、 画面で点をアドレッシングする本来の方法です。 線形位置アドレッシング法 (左上隅を位置 1 とし、左から右に向かって、上から下へ進む方法) が便利なのは、 表示スペース全体を単一のデータ・エレメント配列として表示するアプリケーションの場合、 または、このアドレッシング法を使用する EHLLAPI インターフェースから移植されたアプリケーションの場合です。

一般的には、同じメソッドでも、呼び出すシグニチャーが異なると、 選択するアドレッシング方式も異なります。 例えば、アプリケーションで、ホスト・カーソルを指定の画面座標に移動するには、 次に示す 2 つのシグニチャーのどちらかで ECLPS.SetCursorPos を呼び出します。

ps.SetCursorPos(81);
ps.SetCursorPos(2, 1);

ホスト画面が行あたり 80 桁で構成されている場合、 上記のステートメントはどちらも同じ結果を生じさせます。 この例では、アドレッシング方式における若干の相違も示します。 表示スペースの行あたりの文字数についてアプリケーションに前提条件がある場合、 線形位置を使用したメソッドでは予期しない結果が生じることがあります。 例えば、この例のコードの 1 行目は、 132 桁に構成された表示スペースの行 1 の桁 81 にカーソルを置きます。 コードの 2 行目は、表示スペースの構成に関係なく行 2 桁 1 にカーソルを置きます。


[ ページの先頭 | 前のページ | 次のページ | 目次 ]