＜CGIデモのインストール方法＞

（１）apacheをインストールします。すでにインストール済みの場合は（２）に進んでください。
　　入手サイト：　http://www.apache.jp/　などからリンクされているダウンロードサイト

　　Windows６４ビット版は　httpd-2.2.11-win64.zip をダウンロードして検証しました。以下ではこの手順を説明します。
　　（３２ビット版はＷｅｂから直接インストール、設定が可能となっています）

　①　入手サイトからファイルを自分のPCへダウンロードします。
　②　入手したファイルを適当なフォルダに解凍します。(ここでは C:\Apache64 に解凍したとして説明します）
　③　ＣＭＤShellを開き、ＣＤコマンドで　C:\Apache64\bin　へ移動します。
　④　httpd.exe を使って、Apacheをインストールします。  　C:\Apache64\bin>httpd.exe -k install
　⑤　エラーが出る場合はつぎのようにします。（Vistaの場合）
　　　　・[コントロールパネル]->[ユーザーアカウント]->[ユーザーアカウント制御の有効化または無効化]
　　　　　->[ユーザーアカウント制御(UAC)を使ってコンピュータの保護に役立たせる]＜チェックをはずす＞
　　　　　-> [OK]ボタンを押してパソコン再起動。

　　　　・ＣＭＤShellは次のようにして開いてから、④の方法でApacheをインストールします。
　　　　　　スタート->すべてのプログラ->アクセサリ->コマンドプロンプトを右クリック->管理者権限として実行
　　　　・インストールが終了したら、前記のユーザーアカウント制御の有効化に戻しておきます。

　⑥　C:\Apache64\confフォルダの配下にある、httpd.conf をメモ帳などのエディタで開き、
　　　下記のように書き換えます。

　　　・ ServerRoot "/httpd-2.2-x64"         ==>  ServerRoot "C:/apache64"
　　　　　（以下、DocumentRoot、ScriptAlias、Directoryの　/httpd-2.2-x64となっているところを全て
　　　　　　C:/apache64　に書き換えます）

　　　・ #ServerName www.example.com:80      ==>  ServerName localhost:80
　　　　　（公開する場合は、公開サーバーホスト名:公開ポート番号　です ）

　⑦　[コントロールパネ]ルから、[管理ツール]->[サービス]を起動し、[Apache2.2]サービスを開始または再起動します。

（２）ＰｒｏｌｏｇによるＣＧＩのデモは、AZ-Prologのインストールディレクトリのsample\cgi_demo　に入っています。
　　ここでは、、AZ-PrologのインストールディレクトリをC:\AZ-Prolog.750として説明します。

　①　C:\AZ-Prolog.750\sample\cgi_demo\cgi-bin　下の全ファイルを　C:/apache64\cgi-binへコピー
　②　C:\AZ-Prolog.750\sample\cgi_demo\htdocs 　下の全ファイル、ディレクトリを　C:/apache64\htdocsへコピー

（３）日本語形態素解析器：MeCab　および日本語係り受け解析器：CaboChaのデモのためには、これらのインストールが必要です。

　　　注：　・２０１０年３月バージョンではＷＩＮ６４版ではこの機能をサポートしておりません。
            ・６４ビット版でもこのＣＧＩは３２ビット版AZ-Prologでデモをおこないますので、
　　　　　　　設定してください。

　　　　　　　＜ダウンロードサイト＞
　　　　　　　　http://www.chasen.org/~taku/software/cabocha/
　　　　　　　　http://mecab.sourceforge.jp/

　　　　　　　＜カボチャの設定ファイルの一部変更＞
　　　　　　　　CaboChaインストールディレクトリ\etc\cabocharc の次の部分を"chasen" から"mecab" に書き換えます。
　　　　　　　　現版：　morphological-analyzer =  chasen
　　　　　　　　変更：　morphological-analyzer =  mecab

　　　　　　　＜PATHの設定＞
　　　　　　　　Mecab,Cabocha それぞれのインストールDIR\bin を[コントロールパネル]->[システム]->[環境変数の設定]でＰＡＴＨに追加します。
　　　　　　　　例：　PATH=C:\Program Files\CaboCha\bin;C:\Program Files\MeCab\bin;<もともとのパス>

（４）ODBCのデモには、あらかじめ設定が必要です。
　　　注：　２０１０年３月現在、この機能は３２ビット版に限られます。 （正確にはAccessの64BitODBCドライバが未提供なので未検証）

　　　デモ用にAccessのtest.mdbがAZ-Prologのインストールディレクトリ\system\odbc\にあります。これをODBCドライバに設定します。 
　　　２０１０年３月現在 MS Accessには６４BitOS版のODBCドライバが、提供されていませんので、６４ビット版でもこのＣＧＩは
　　　３２ビット版AZ-Prologでデモをおこないますので、設定してください。

　　　　＜３２ビットＯＳ＞
　　　　[コントロールパネル]->[管理ツール]->[データソース（ODBC)]->[システムDNS]->[追加:ドライバ]("Microsoft Access Driver"を選択）
　　　　->[構成：データソース名]（testと入力）]->[構成：選択]（前記ファイルを選択）]->[詳細設定]（Login/Passwdともに　testと入力）
　　　　＜６４ビットＯＳ＞
　　　　%systemdrive%\Windows\SysWoW64\Odbcad32.exe　を起動し、上記のODBC・DSNを設定します。
　　　　参考：http://support.microsoft.com/kb/942976/ja

（５）上記が終了しましたら、ブラウザを開き、アドレス欄に次の入力でデモを開始することができます。
　　　http://localhost/az_index.html

　　　 64bit版のAZ-Prologパッケージには32bitPrologインタプリタ(prolog32.exe,prologcgi32.exeなど)も含まれています。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
＜ＰｒｏｌｏｇによるＣＧＩの書き方＞

　（１）ソースコードの一行目にＣＧＩ用Ｐｒｏｌｏｇインタプリタを記述します。
　　　例：　#! c:\AZ-Prolog.750\bin\prologcgi
　　　
　　　なお、標準インストールされ、AZ-Prolog.750\binにパスが設定されているか、ApacheインストールDIR\binの下にＰｒｏｌｏｇＣＧＩインタプリタ
　　　をコピーしておけばpath部分は不要となります。

      Prologcgi.exe    めかぶ、かぼちゃ言語処理パッケージを含まないＣＧＩ用インタプリタ
      Prologcgi_l.exe  めかぶ、かぼちゃをリンクした言語処理パッケージ(２０１０年３月版では３２ビット版のみ）

　（２）起動直後に呼び出されるトップレベルの述語(top_call/0)をソースコードに必ず記述します。

　　　top_call:- 処理.

　（３）出力文は、ＨＴＭＬの構文規則に沿った内容で記述。
      ①文字コードの出力の最初に、文字コード宣言（content-Type,charsetの構文）を出力します。（上記参照）
      ②ＨＴＭＬ文の詳細はＨＴＭＬに関する説明書などをお調べください。ソース表示した場合などの見やすさを考慮し、
        ブラウザでの改行表示は　<br> だけで十分ですが、nl を補っておくといいでしょう。

　（４）バイトコードへコンパイルしたＰｒｏｌｏｇオブジェクトをソースコードに含めることも可能。
　　　ＣＧＩ記述ソースコードをバイトコードＣＧＩへ変換するには、ＡＺ−Ｐｒｏｌｏｇコンパイラを使い、容易に変換できます。
　　　バイトコードコンパイルしたアプリケーションはインタプリタコードに比べ４倍程度、実行スピードが上がります。
　　　例：　>azpc -p xxxx.cgi /byte    
              xxxx.b が生成されます。xxxxB.cgi などにrename したほうがお行儀がよろしいでしょう

　（５）フルコンパイルしたコードをＷｅｂアプリケーションとするには、AZ-Prologのインストールディレクトリ下　system\pl　にある
　　　prologcgi.pl utility.pl を同時にコンパイルリンクします。コンパイルオプションに、/no と /dcurses を指定してください。
　　　必要に応じ、鬼車パッケージ、めかぶ、かぼちゃパッケージ、ＯＤＢＣパッケージなどもリンクします。
　　　public 宣言、extern 宣言、mode 宣言などはコンパイラの説明をお読みいただき、適切にお付けください。
　　　フルコンパイルしたアプリケーションは１０倍程度、実行スピードが上がります。

　　　例：　>azpc -p queens.cgi $(AZ-Prolog)\system\pl\utility.pl $(AZ-Prolog)\system\pl\prologcgi.pl /fast /e queens /no /dcurses

　（６）ＣＧＩ用拡張組込述語

　　●　get_param/2   　   ＣＧＩ呼び出しの際の引数を取得。指定タグが引数にないときは失敗。
　　　    ?-get_param(+タグ名,-値 ).

　　　　　　 タグ名は呼び出し元のＣＧＩ，ＨＴＭＬでsubmitされたformのinputタグ内のnameに設定された値です。
　　　　　　 <form action='xxxx.cgi' method="POST">
　　　　　　      <input type="text" name="num"  value="10">　　　＜＝＝タグ名：num  値：10
　　　　　　      <input type="submit" value="実行"></td>
　　　　　　 </form>

　　　　　　 ファイルを送信した場合、該当タグの値として　{ファイル名、受信データタイプ,ファイル内容}がユニファイされます。
　　　　　　 <form enctype='multipart/Form-data' action='xxxx.cgi' method='POST'>
　　　　　　     <input type='file' name='user_file' >　　　＜＝＝タグ名：user_file　値:{選択されたファイル名,Type,ファイル内容}
　　　　　　     <input type='submit' value='UpLoad'>
　　　　　　 </form>

　　●　html_call/1        リストを引数とし、リストの各要素を　write　します。要素が文字列リストの場合は全要素
                       　　をput。また、要素が call(述語）の場合のみ、Ｐｒｏｌｏｇ述語呼び出しを行います。 

　　●　html_tmplate(テンプレートファイル名） 　　　　　　　　　　　　　　　　　tmp_name/2 をassert後に呼び出す
　　●　html_tmplate(テンプレートファイル名,データファイル名アトム）　　　　　　定義ファイルを指定して呼び出す
　　●　html_tmplate(テンプレートファイル名,[変数名1=値1,変数名2=値2.....]）　　変数と値の組を渡して呼び出す
  
　　＜テンプレートの利用＞
　　　　 画面構成部分とデータ部分を切り離し、同一の画面イメージ（テンプレート）で複数のページを容易に生成する
　　　　ことが可能となります。
 
 　　　　【　テンプレートファイル　】 
 　　　　ＨＴＭＬファイルを用意し、データ部分（文字列、写真ファイル名など）を変数書式に置き換えます。
 　　　　この変数部分は、変数と値の対応を定義することにより、上記述語で呼び出される際、自動的に置き換えられます。
 　　　　書式：　<TMPL_VAR NAME=変数名>
 
　　　　 特定の変数が値充足されたときのみ生かしたい行があるときは、条件文で囲うことで切り分けができます。
 　　　　書式：　<TMPL_IF NAME=変数名>  ...生かしたいＨＴＭＬ文...  </TMPL_IF>
  
　　　　【　変数と対応値の定義　】
　　　　 単位節： tmp_name(変数名,   値). 　を静的・動的に定義するか、あらかじめ定義されているファイルから読込みます。
                  または、変数名と、キーと変数名、値の組をデータベースに登録しておき、次のような節を定義します。
    　　　　　　　tmp_name(VarName,Value):- get_key(ID),select_each([Value],tmp_get,[ID,VarName]),!.

　　●　set_exit_timer/1    引数はミリセコンドをあらわす整数でこの時間が経過したときにPrologプロセスが強制終了されます。
                            利用はＣＧＩに限りませんが、バグや誤入力でプロセスが終了せずサーバー負荷が高まるのを防ぎます。
  　　    ?-set_exit_timer(+整数).

　（７）ＣＧＩ利用時にシステムによって生成されるインタプリタコード

　　●　param_assoc_list/1  ＣＧＩ呼び出しの際の全引数をタグと値の組のリストが保存されます。。
　　　　　　　　　　　　　　チェックリストのように、値が異なる複数の同一タグ一覧を処理するときに利用できます。
  　　    ?-param_assoc_list(-リスト).
　　　　　　　　　　　　　　リスト＝[タグ１、値１、タグ２、値２、タグ３、値４ ......]

　　●　my_cgi_name/1       ＣＧＩ読み込み時のファイル名がこの単位節で保存されます。
  　　    ?-my_cgi_name(？アトム).

　（８）ＣＧＩ用ＰｒｏｌｏｇインタプリタのＣＭＤShellでの動作確認方法。タグ付き引数の渡し方は次のようにします。

      c:\apache64\cgi-bin>prologcgi queens.cgi?"num=8&disp=true"
