このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1294061094/215
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文(含コード&リンク):  
#   (1)商品情報(商品コード、品名,価格,在庫量、入荷日)を、ファイルから線形リストに商品コードの昇順に読み込む。 
#   (2)線形リストの全データを画面に出力する。 
#   (3)指定した条件(品名)に合う商品情報を画面に出力する。 
#  

'商品情報(商品コード、品名,価格,在庫量、入荷日)を、ファイルから線形リストに商品コードの昇順に読み込む'(_商品コードの昇順の商品情報ならび) :-
        open(_ファイル,read,Insteam),
        findall([_商品コード,_品名,_価格,_在庫量,_入荷日],(
                    repeat,
                    read(Instream,商品情報(_商品コード,_品名,_価格,_在庫量,_入荷日))),
                L1),
        close(Instream),
        sort(L1,_商品コード昇順の商品情報ならび).

'線形リストの全データを画面に出力する'(_商品コード昇順の商品情報ならび) :-
        append(_,[_商品情報|R],_商品コード昇順の商品情報ならび),
        write_formatted('%q,%q,%q,%q,%q\n',_商品情報),
        R = [].

'指定した条件(品名)に合う商品情報を画面に出力する'(_商品情報ならび,_指定した条件としての品名) :-
        append(_,[_商品コード,_指定した条件としての品名,_価格,_在庫量,_入荷日]|_],_商品情報ならび),
        write_formatted('%q,%q,%q,%q,%q\n',[_商品コード,_指定した条件としての品名,_価格,_在庫量,_入荷日]),
        fail.
'指定した条件(品名)に合う商品情報を画面に出力する'(_商品情報ならび,_指定した条件としての品名) :-
        write('これ以上情報はありません\n').