このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/830
#  [1]授業単元:OS  
#  [2]問題:  
#   
#  Cygwinで解答を作成してください.  
#  1. 引数にファイル名を指定すると, 
#  そのファイルのサイズとファイルの種類(一般ファイル,ディレクトリ,パイプ等), 
#  そして最終変更時刻を表示するコマンド(fviewという名称とする)を作成せよ. 
#  ただし,引数には,複数のファイルを指定できるようにすること. 
#  また,fstatを用いること. 
#    
#  実行  
#  $ fview aaa.txt bbb.txt ccc.txt …  
#  ヒント  
#  ファイルの種類は,fstat構造体メンバのst_modeの上位4ビットで表わされる.  
#   

program :-
        user_parameters(_user_parameters),

'引数にファイル名を指定すると,そのファイルのサイズとファイルの種類(一般ファイル,ディレクトリ,パイプ等),そして最終変更時刻を表示する'([fview,_ファイル名]) :-
        get_file_info(_ファイル名,L),
        サイズを取得(L,_サイズ),
        種類を取得(L,_種類),
        最終変更時刻(L,_最終変更時刻),
        write_formatted('サイズ: %t\n',[_サイズ]),
        write_formatted('種類: %t\n',[_種類]),
        write_formatted('最終変更時刻: %t\n',[_最終変更時刻]),!.

サイズを取得(L,_サイズ) :-
        append(_,[size(_サイズ)|_],L),!.

種類を取得(L,ファイル) :-
        append(_,[mode(_mode)|_],L),
        append(_,[ifreg|_],_mode),!.
種類を取得(L,ディレクトリ) :-
        append(_,[mode(_mode)|_],L),
        append(_,[ifdir|_],_mode),!.
種類を取得(L,パイブ) :-
        append(_,[mode(_mode)|_],L),
        append(_,[ifdir|_ifpipe],_mode),!.

最終変更時刻(L,_最終変更時刻) :-
        append(_,[atime(_atime)|_],L),
        localtime(_atime,_年,_月,_日,_,_,_,_時,_分,_秒),
        concat_atom([_年,'-',_月,'-',_日,' ',_時,':',_分,':',_秒],_最終変更時刻).