PS 接続/切断およびマルチスレッド化

EHLLAPI アプリケーションは、別々のセッションへの接続を管理するには、ConnectPS および DisconnectPS EHLLAPI 機能を呼び出さなければなりません。アプリケーションは、セッションに永続的に接続されたままにならないようにするため、 慎重にコーディングしなければなりません。 セッションは、すべての EHLLAPI アプリケーションで共有しなければならないからです。また、使用する他の EHLLAPI 機能によっては、 アプリケーションがセッションに接続されていることも事前に確認しなければなりません。

HACL では、アプリケーションが明示的にセッションを接続または切断する必要は ありません。すべての HACL オブジェクトは、その作成時に特定の接続 (セッション) に関連付けられています。アプリケーションが、別の接続にアクセスするには、それぞれのためのオブジェクトを作成するだけでよいのです。例えば、次に示す例は、キー・ストローク ABC をセッション A に送ってから、次に DEF をセッション B に、さらに次に Enter キーをセッション A に送ります。 EHLLAPI プログラムでは、アプリケーションは、セッションを 1 つずつ接続/切断しなければなりません。 一度に 1 つのセッションとしか対話できないからです。HACL アプリケーションは、次のように必要な任意の順序でオブジェクトを使用することができます。
ECLPS		*PSA, *PSB;
 
PSA = new ECLPS('A');
PSB = new ECLPS('B');
 
PSA->Sendkeys("ABC");
PSB->Sendkeys("DEF");
PSA->Sendkeys("[enter]");

複数の接続 (セッション) と対話するアプリケーションの場合、これによって、複数の接続を管理するのに必要なコードを大幅に単純化することができます。

また EHLLAPI では、作業セッションが 1 つであることに加えて、 アプリケーションのマルチスレッド特性に対する制約もあります。EHLLAPI インターフェースを 呼び出すスレッドが複数あるアプリケーションの場合、表示スペースへの接続と 切断は慎重に管理する必要があり、複数のスレッドがあってもアプリケーションは一度に 1 つの セッションとしか対話できません。

ECLPS では、マルチスレッド化に関してアプリケーションは特に制約を受けません。アプリケーションは、任意の数のスレッド上で任意の数のセッションと並列対話することができます。