10/07/01 09:00:30
>>170
% Prolog (その一) 整列と併合を除く外殻だけ。
オンメモリ整列限界数(1000).
ファイルに保存された会員情報を指定された項目をキーとしてソートする(_対象ファイル,_鍵項目番号,_ソート方法) :-
オンメモリ整列限界数(_オンメモリ整列限界数),
open(_対象ファイル,read,Input),
ふたつの仮ファイルの取得と交互からくり生成,
入力出力ファイルを交互しながらの繰り返し(_,_仮出力ファイル,InputT,OutputT),
対象ファイルから読み込む(Input,_オンメモリ整列限界数,Lines,_診断),
鍵・昇降順・指定整列(Lines,_鍵項目番号,_ソート方法,_整列されたLines),
鍵項目番号とソート方法をしてファイル併合(_整列されたLines,_鍵項目番号,_ソート方法,InputT,OutputT),
_診断 = end_of_file,close(Input),
仮出力ファイルの内容を整理しながら標準出力に表示する(_仮出力ファイル,_鍵項目番号).
入力出力ファイルを交互しながらの繰り返し(_仮ファイルA,_仮ファイルB,InputT,OutputT) :-
仮ファイルからくり(_仮ファイルA,_仮ファイルB),
open(_仮ファイルA,read,InputT),
open(_仮ファイルB,write,OutputT).
仮ファイルからくり(X) :- 仮ファイルからくり(X).
ふたつの仮ファイルの取得と交互からくり生成 :-
tmpnam(_仮ファイル1),open(_仮ファイル1,write,Output1),close(Output1),
tmpnam(_仮ファイル2),opne(_仮ファイル2,write,Output2),close(Output2),
asserta(仮ファイルからくり(_仮ファイル2,_仮ファイル1)),
asserta(仮ファイルからくり(_仮ファイル1,_仮ファイル2)).