このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1325685876/327
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文(含コード&リンク):以下の実行例のように,プログラムの実行が初めてで 
#  あればその旨のメッセージを表示し,実行が初めてでな 
#  ければ,1 回前(前回)に実行したときの日付と時刻を 
#  表示するプログラムを作成したい.以下の要件を満たす 
#  プログラムを作成せよ. 
#  「実行例」 
#  ./ab 
#  本プログラムを実行するのは初めてですね。 
#   
#  ./ab 
#  前回は2012 年1 月12 日17 時28 分35 秒でした。 
#  

:- dynamic.

program :-
        consult('ab実行履歴.pl'),
        実行履歴表示,
        実行履歴変更.

実行履歴表示 :-
        \+(実行履歴(_,_,_,_,_)),
        write('本プログラムを実行するのは初めてですね。 \n'),!.
実行履歴表示 :-
        実行履歴(_年,_月,_日,_分,_秒),
        writef('前回は%t 年%t 月%t 日%t 時%t 分%t 秒でした。\n',[_年,_月,_日,_分,_秒]). 

実行履歴変更 :-
        date(_年,_月,_日,_時,_分,S,Off,TZ,DST),
        実行履歴変更(_年,_月,_日,_時,_分),!.

実行履歴変更(_年,_月,_日,_時,_分) :-
        retract(実行履歴(_,_,_,_,_)),
        tell('ab実行履歴.pl'),
        writef(':- dynamic(実行履歴/5).\n実行履歴(%t,%t,%t,%t,%t).\n',[_年,_月,_日,_時,_分])),
        told.
実行履歴変更(_年,_月,_日,_時,_分) :-
        writef(':- dynamic(実行履歴/5).\n実行履歴(%t,%t,%t,%t,%t).\n',[_年,_月,_日,_時,_分])),
        told.