KLIC側での利用方法


コンパイル

jk ディレクトリにある、
jk.kl1, jkmain.kl1, jkinput.kl1, jkspool.kl1,
jkwrapstr.kl1, jkparse.kl1, jkinspector.kl1
の各ファイルを、インタフェースを利用するプログラムといっしょにコンパイルしてください。


初期設定

まず、KLICのUNIXインターフェースでソケットを作成し、Java側と接続済みのものを用意します。これに対して、 jk:jk/2を用いて、メッセージインタフェースを作成します。このゴールは、
jk -Stream +Sock
のようになっており、Streamにインタフェースへのストリームを返します。Sockには接続済みのソケットを指定します。例えば、以下のように利用します。
p1 :-
  unix:unix([bind(inet(9007),Serv]),
  p2(Serv).
p2(S) :- normal(Serv) |
  jk:jk(JK, Serv),
  JK = [get(Data)].
このようにして作成したメッセージインタフェースへのストリームに対して、以下に示すようなメッセージを送ることにより、メッセージ通信が行えるようになります。


インタフェースの利用

以下のメッセージを、作成したインタフェースへのストリームに送ることによりそれぞれの操作が行えます。

インタフェースの終了

以下のメッセージをインタフェース送ることにより、インタフェースは終了します。これらのメッセージを送らないで、インタフェースが閉じられた場合は、Java側からインタフェースが終了されるまで、インタフェースの処理が継続します。

データストリーム

データストリームのインタフェースを利用するには、以下のメッセージを利用すます。

オブジェクト操作

オブジェクトを作成するには、まず、以下の形式のメッセージを送ります。なお、利用するクラスのコンストラクタ、メソッドやフィールドは、publicアクセスにして、インタフェースからのアクセスが出来るようにしておく必要があります。 上記のメッセージで作成したオブジェクトに対して、操作を行う場合は、以下であげるメッセージを用います。なお、以下のメッセージの処理の実行は、オブジェクトごとに、逐次的に行われ、前の処理が終了するまで、次の処理が待たされます。オブジェクトが異なれば、その処理は並列に行われます。 クラスメソッド(Staticメソッド)や、クラスフィールド(Staticフィールド)に対する操作は、以下のメッセージをインタフェースに送ることにより実現されます。これらのメッセージを処理するために、別々のスレッドが生成されるため、処理は、並列に実行される。同期処理が必要な場合には、これらのメッセージの戻り値を利用してください。