このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1284632294/649
#  [1] 授業単元:プログラミング基礎 
#  [2] 問題文(含コード&リンク): 
#  ダイエットファイルに 
#   
#  20100930,curry and rice 
#  20101003,kitsune soba 
#  20101003,rice ball 
#   
#  のような形で日付とその日食べた昼食が保存されているとする. 
#  コマンド行引数にダイエットファイル名と日付(yyyymmdd 形式) を指定して実行すると, 
#  ファイルの中から指定した日付を含む行を検索し,その日の昼食を出力するプログラムを作成せよ. 
#  また,引数としてファイルと文字列を指定しなかった場合に,使い方を出力して終了するようにせよ. 
#  日付の検索には,標準関数char *strstr(const char *str1, const char *str2); を使用するのが簡単である. 
#   
#  【実行例】 
#  % ./q3-3 diet.txt 20100929 
#  date 20100929 was not found in file diet.txt 
#  % ./q3-3 diet.txt 20101003 
#  20101003,kitsune soba 
#  20101003,rice ball 
#  % ./q3-3 
#  Usage: ./q3-3 filename date(yyyymmdd) 
#  % 
#   
#  

program :-
        パラメータを得る(_ファイル,_日付),
        get_split_lines(_ファイル,[','],LL),
        日付をキーに検索する(_日付,LL,LL2),
        検索した行を表示する(_日付,LL2).
        halt.

パラメータを得る(_ファイル,_日付) :-
        user_paramaters(L),
        診断(L,_ファイル,_日付),!.        

診断([_ファイル,_日付],_ファイル,_日付) :- !.
診断(_,_,_) :-
        write('Usage: ./prolog filename date(yyyymmdd)\n'),
        halt.

日付をキーに検索する(_,[],[]) :- !.
日付をキーに検索する(_日付,[[_日付,_その日食べた昼食]|R1],[[_日付,_その日食べた昼食]|R2]) :-
        日付をキーに検索する(_日付,R1,R2),!.
日付をキーに検索する(_日付,[_|R1],R2) :-
        日付をキーに検索する(_日付,R1,R2),!.

検索した行を表示する([]) :- !.
検索した行を表示する([[_,_日付,_その日食べた昼食]|R]) :-
        write('%t,%t\n',[_日付,_その日食べた昼食]),
        検索した行を表示する(R).