このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1308749241/9
#  [1] 授業単元:構造体ポインタ[2] 問題文:  
#  name (文字列50字) 
#  height ←実数 
#  weight ←実数 
#  bmi ←実数 
#  これらをメンバとする構造体 pationdata の配列を定義する(charやintやdoubleなどをそれぞれの前につけます)。 
#  複数の人のデータを入れれる構造体 pationdata の配列を作成する。 
#  datafile.dat からデータを読み込んで、配列に保存していく。 
#  ここで注意するのは、ここで上から下までデータを読み込んだ時、データ数に合わせた配列が出来るようにすること。 
#  以下 datafile.dat の中身例 
#  tom 1.65 59.2 
#  jim 1.80 63.5 
#  (左から名前、身長、体重) 
#  配列に保存したデータを関数 BMI ( ) に渡す。 
#  この中で bmi を計算し、構造体の bmi メンバに保存する。 
#  配列に入っているデータを datafile2.dat に出力する。 
#  以下 datafile2.dat の中身例 
#  tom 1.65 59.2 21.70 
#  jim 1.80 63.9 22.10 
#  (右端にBMI数値を追加) 
#  最後にdatafile2.datを閉じる。 
#   
#  尚、datafile.datの中身は自由に決めてよい。 
#  bmi = weight / height * height  
#  (BMIは体重÷身長の2乗) 
# 

'datafile.dat からデータを読み込んで、構造体として保存していく'(_構造体ならび) :-
        abolish(pationdata/4),
        see('datafile.dat'),
        readln(L,Status),
        構造体として保存していく(L,Status),
        seen.
        
構造体として保存していく(_,end_of_file) :- !.
構造体として保存していく([_name,_height,_weight],_) :-
        _bmi is _weight / height * heigth,
        assertz(pationdata(name(_name),height(_height),weight(_weight),bmi(_bmi))),
        readln(L2,Status),
        構造体として保存していく(L2,Status).

'保存されているデータを datafile2.dat に出力する' :-
        tell('datafile2.dat'),
        pationdata(name(_name),height(_height),weight(_weight),bmi(_bmi)),
        writef('%t %t %t %t\n',[_name,_height,_weight,_bmi]),
        fail.
'保存されているデータを datafile2.dat に出力する' :-
        told.