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.
interrupt(-旧スイッチ,+新スイッチ)
interrupted
プログラムの実行は、通常は割り込み文字CTRL-CあるいはBREAKをタイプすることで止められますが、これはオペレ−ティングシステムによって異なります。
interrupt/2は、割り込みモ−ドをテストしたり変更します。使用可能なモ−ドは、マニュアルとオ−トマチック(デフォルト)です。
マニュアルモ−ドでは、"interrupt(_,off)"で設定されます。また割り込みが起こると、割り込みフラグが設定されますが、プログラムの実行は止まりません(interrupted/0を参照して下さい)。
オ−トマチックモ−ドはデフォルトですが、"interrupt(Old,on)"で設定することもできます。割り込みが起こると、IF/Prologは"raise_error(interrupt)"を呼び出します。現在のゴ−ルの実行が取り消され、ユ−ザはインタプリタのプロンプト"?-"に戻ります。
interrupted/0は、割り込みフラグが設定されていてモ−ドがマニュアルの場合に成功します。また、割り込みフラグをリセットします。
error_protect/2で現在のゴ−ルが呼び出されると、その例外処理の第1引数がエラ−メッセ−ジ"interrupt"に単一化されます。
?- interrupt(_,off),
repeat, write('waiting '),
interrupted,
write(' O U C H !\n').
waiting waiting waiting wating . . . ^C O U C H !
yes
?- interrupt(_,on),
error_protect( (repeat,write('waiting '),fail),
write(Message) ).
waiting waiting waiting waiting . . . ^C interrupt
Message = interrupt
yes
?- _
on/off_expected スイッチはonでもoffでもない。
|