このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1294061094/703
#  [1] 授業単元:プログラミング演習 2 
#  [2] 問題文(含コード&リンク) 
#  
#  1..キーボードから学生番号と氏名の組をn個読み込み、ファイルに書き込む関数を作れ。ただし、nの値とファイル名は引数として取得するものとする。
#  2..引数で取得したファイル名のファイルから同じく引数で取得した個数の学生番号と氏名のデータを構造体変数に格納し、学生番号順に表示する関数を作れ。
#  3..以上で作成した関数を使用し、プログラムを完成せよ。ただし、nの値と使用するファイルの名前はプログラムの引数として与えられるものとする。

キーボードから学生番号と氏名の組をn個読み込み、ファイルに書き込む。その後そのファイルから情報を読み込み学生番号順に表示する(_n,_ファイル名) :-
        キーボードから学生番号と氏名の組をn個読み込み、ファイルに書き込む(_n,_ファイル名),
        引数で取得したファイル名のファイルから同じく引数で取得した個数の学生番号と氏名のデータを構造体変数に格納し、学生番号順に表示する(_n,_ファイル名).

'キーボードから学生番号と氏名の組をn個読み込み、ファイルに書き込む'(_n,_ファイル名) :-
        write('学生番号と氏名の組みをカンマ区切りで%t行入力してください : '),
        length(L,_n),
        findall(_行,(
                    append(_,[_行|_],L)),
                L),
        put_lines(_ファイル名,L).

引数で取得したファイル名のファイルから同じく引数で取得した個数の学生番号と氏名のデータを構造体変数に格納し、学生番号順に表示する(_n,_ファイル名) :-
        length(LL1,_n),
        see(_ファイル名),
        findall([_学生番号,_氏名],(
                    append(_,[_|_],L1L),
                    get_split_line(Instream,[','],[_学生番号,_氏名])),
                LL1),
        close(Instream),
        sort(LL1,LL2),
        append(_,[L|R],LL2),
        write_formatted('%t%t\n',L),
        R = [].