ちょっと読みにくかったですね。すみません。
<Prolog の入力述語について>

項の入力にはread/1が使われてきましたが、これは、
・ ピリオドで終わらなくてはならない。
・ シンタックス的に正しい項以外はエラーとなってしまう。
など、実務での使用に適しません。それで改行までの文字列を
入力として受け取る、get_line/1の定義をしておくのが普通です。
get_lineはget_char/1 または get_code/1を改行がくるまで、
繰り返し使うことによって定義します。例えば、

get_line(Line) :-
        get_char(Char),
        get_line_2(Char,L),
        concat_atom(L,Line).

get_line_2('\n',[]) :- !.
get_line_2(A,[A|R]) :- get_char(B),get_line_2(B,R).

get_line_2は引数が違いますから、get_lineでもいいのですが、
ちょっと理由があってこうしました。これについては後に。