このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1284632294/521
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文(含コード&リンク): 
#  present.datを読み込み、小文字を全て大文字に変換し、以下のような形式[1]でファイルを 
#  出力するプログラムを作成せよ。また、present.datに自由なデータを6行追加し動作する 
#  ことを確認せよ。またこの際にpriceが空白の行を設け、priceが空白であった場合には 
#  price: xxxxと出力するようにせよ。 
#   
#  [1] 
#  code: abc-23 
#  name: tea_set 
#  price: 2500 
#         . 
#         . 
#         . 
#    以下略 
#   
#  present.dat 
#  ↓ 
#  ABC-23 Tea_set 2500 
#  EFG-34 Peach 2000 
#  HIJ-21 Greep 1500 
#   
#  

'present.datを読み込み、小文字を全て大文字に変換し、以下のような形式[1]でファイルを出力する。またこの際にpriceが空白の行を設け、priceが空白であった場合にはprice: xxxxと出力する'(_出力ファイル名) :-
        get_split_lines('present.dat',[': ',' '],LL1),
        '形式[1]に変換'(LL1,Lines),
        put_lines(_出力ファイル,Lines).

'形式[1]に変換'([],[]) :- !.
'形式[1]に変換'([[code,_code],[name,_name],[price,_price]|R1],[S|R2]) :-
        to_upper(_code,_code_2),
        to_upper(_name,_name_2),
        'priceが空白であった場合にはprice: xxxxと'(_price,_price_2),
        concat_atom([_code_2,_name_2,_price_2],' ',S),
        '形式[1]に変換'(R1,R2).

'priceが空白であった場合にはprice: xxxxと'(_price,_price) :-
        number(_price),!.
'priceが空白であった場合にはprice: xxxxと'('','XXXX') :- !.