このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1308749241/601
#  [1] 授業単元: ファイル入出力 
#  [2] 問題文(含コード&リンク):  
#  ファイルを読み込んで,ファイル中の英小文字を英大文字に,英大文字を英小文字に変換してファイルに書き出すプログラムを作成せよ. 
#  $ cat sample.txt 
#  1. Software Engineering 
#   
#  Based on the tenets of software engineering and computing science, 
#  the Department of Software Engineering provides students with 
#  a comprehensive grounding in software development and information 
#  processing. As society becomes increasingly dependent on various 
#  ... 略 ... 
#   
#  $ 実行例 
#  入力ファイル名 > sample.txt 
#  出力ファイル名 > sample-out.txt 
#  $ cat sample-out.txt 
#  1. sOFTWARE eNGINEERING 
#   
#  bASED ON THE TENETS OF SOFTWARE ENGINEERING AND COMPUTING SCIENCE, 
#  THE dEPARTMENT OF sOFTWARE eNGINEERING PROVIDES STUDENTS WITH 
#  A COMPREHENSIVE GROUNDING IN SOFTWARE DEVELOPMENT AND INFORMATION 
#  PROCESSING. aS SOCIETY BECOMES INCREASINGLY DEPENDENT ON VARIOUS 
#  ... 略 ... 
#  

'ファイルを読み込んで,ファイル中の英小文字を英大文字に,英大文字を英小文字に変換してファイルに書き出す'(_入力ファイル,_出力ファイル) :-
        open(_入力ファイル,read,Instream),
        open(_出力ファイル,write,Outstream),
        '英小文字を英大文字に,英大文字を英小文字に変換して書きだす'(Instream,Outstream),
        close(Outstream),
        close(Instream),!.

'英小文字を英大文字に,英大文字を英小文字に変換して書きだす'(Instream,Outstream) :-
        at_end_of_stream(Instream),!.
'英小文字を英大文字に,英大文字を英小文字に変換して書きだす'(Instream,Outstream) :-
        get_char(Instream,_文字),
        英小文字を英大文字に,英大文字を英小文字に変換して(_文字,_文字2),
        put_char(Outstream,_文字2),
        '英小文字を英大文字に,英大文字を英小文字に変換して書きだす'(Instream,Outstream).

英小文字を英大文字に,英大文字を英小文字に変換して(_文字,_文字2) :-
        _文字 @>= 'a',
        _文字 @=< 'z',
        to_upper(_文字,_文字2),!.
英小文字を英大文字に,英大文字を英小文字に変換して(_文字,_文字2) :-
        _文字 @>= 'A',
        _文字 @=< 'Z',
        to_lower(_文字,_文字2),!.
英小文字を英大文字に,英大文字を英小文字に変換して(_文字,_文字).