このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1288531658/649
#  [1] 授業単元: プログラム  
#  [2] 問題文(含コード&リンク):行頭でピリオド(.)が入力されるまで、 
#  入力された文字を出力するプログラムを作成しなさい。なお、行頭ピリオド自身は表示しない。 
#  [条件] 配列を使用しないこと。つまり、1 文字ずつgetchar で入力し、 
#  putchar で出力することになる。<入出力情報> 
#  入力出力 
#  キーボードディスプレイ 
#  <エラー仕様> 
#  行頭ピリオドの後に文字がある場合は、 
#  行頭でピリオドと認識し、プログラムを終了 
#  

'行頭でピリオド(.)が入力されるまで、入力された文字を出力するプログラムを作成しなさい。なお、行頭ピリオド自身は表示しない。' :-
        rawmode,
        get_char(_文字),
        '行頭でピリオド(.)が入力されるまで、入力された文字を出力する'(_文字),
        norawmode.

'行頭でピリオド(.)が入力されるまで、入力された文字を出力する'('.') :- !.
'行頭でピリオド(.)が入力されるまで、入力された文字を出力する'(_文字) :-
        put_char(_文字),
        get_char(_文字2),
        行末まで入出力を繰り返す(_次の文字2),
        get_char(_文字3),
        '行頭でピリオド(.)が入力されるまで、入力された文字を出力する'(_文字3).

行末まで入出力を繰り返す('\n') :-
        put_char('\n'),!.
行末まで入出力を繰り返す(_文字) :-
        put_char(_文字),
        get_char(_文字2),
        行末まで入出力を繰り返す(_文字2).