IF Computer > IF/Prolog > Manuals > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > IF/PrologからC言語へのインタフェ−ス > IF/Prolog ストリーム ・インタフェース > IF/Prologからのストリームの使用

IF/Prologからのストリームの使用

IF/Prolog by Siemens
MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

以下にfile、string及びnullの3つの定義済みストリームを示します。

file ファイルシステム中のファイルを指すクラス。 string プログラム内で定義されたストリング定数を指すクラス。 null データを捨てる時に使うための「ブラックホール」を指すクラス。

総称ストリームの各ストリーム・クラスはその媒体タイプに関するすべてのI/O操作を実現しなければなりません。例えば、fileクラスは生成、読み込み、書き込みなどを実現しています。

新しいストリームを開く際、特定のストリーム・クラスに属する物理オブジェクトに論理名が関係づけられます。ストリームを開く述語open/3の最後の引数が新しいストリームの操作モードを決めます。例えば、ファイルはinputあるいはoutputとして開くことができます。 以下にストリームlog_1を開き、最初のトークンを読み取る例を示します。

open(log_1,file('file'),[input]), read(log_1,X)/

更に、述語 link_stream/2 を使って別の論理名を同一のストリームに対応づけることもできます:

link_stream(log_2,'fred').

あるストリームに対してなされたすべてのI/Oが完了し、そのストリームに関係づけられたすべての論理名をクローズしたとき、そのストリームがクローズします。上記のストリームをクローズするためには、次のようにしなければなりません:

close(log_1),close(log_2)

これらの総称的なストリームによって、物理的なデバイスを抽象化することができます。例えば、簡単なテスト用の文字列を使用して開発した後、fileクラスなど他の互換なストリーム・クラスを使用するように直して引き渡すなどといったことができます。述語stream_control/2を使って、ストリームに関する様々な制御ができます:

stream_control(log_1,at_eof(X)).

この例では、ストリームの状態が EOF (end of file) であるかどうかにしたがって、yesまたはnoのアトムをXとユニファイします。後で解説するように、ストリームに対する制御操作もストリーム定義の中で定義されています。

document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/c_interface/strint/usestri/print_de.html
published 2008/12/1 update 1995/10/31 (c) 1996-2006 IF Computer Japan
IF Computer 5-28-2 Sendagi, Bunkyo-ku Tel +81-3-5814-3352 start (AT) ifcomputer.com
Customer Support Tokyo 113-0022 Japan   http://www.ifcomputer.com
Back> managed with ubiCMS