ここでは、本製品で提供するCOBOL ISAPIサブルーチンのサンプルプログラムについて説明します。
概要
COBOL ISAPIサブルーチンを使って、Cookieを使用したアプリケーション間のデータの引継ぎやサーバやブラウザ情報などを取得する方法を示します。
提供プログラム
ISAMAIN.cob(COBOLソースプログラム)
ISAINIT.cob(COBOLソースプログラム)
ISATERM.cob(COBOLソースプログラム)
ISASTART.htm(呼出し用ページ)
ISARPLY1.htm(結果出力用ページ)
ISARPLY2.htm(結果出力用ページ)
ISAERROR.htm(結果出力用ページ(エラー処理用))
ISASMPL1.def(モジュール定義ファイル)
COBOL85.cbr(実行用の初期化ファイル)
使用しているISAPIサブルーチン
COBW3_INIT
COBW3_SET_CNV_NX
COBW3_PUT_HTML
COBW3_RECEIVE_HEADER
COBW3_GET_REQUEST_INFO
COBW3_SET_COOKIE_XX
COBW3_GET_COOKIE_XX
COBW3_FREE
ビルド・リビルド
翻訳およびリンクは、プロジェクトマネージャのビルド機能を使用して行います。
注意
プロジェクトファイルは、NetCOBOLのインストール先フォルダーをC:\COBOLとして説明しています。以降の説明で、フォルダー名がC:\COBOLとなっているところは、NetCOBOLをインストールしたフォルダーに変更してください。
プロジェクトマネージャを起動します。
プロジェクトファイル“ISASMPL1.prj”を開きます。
プロジェクトファイルを選択し、[プロジェクト]-[オプション]メニューから“翻訳オプション”を選択します。
→ [翻訳オプション]ダイアログが表示されます。
翻訳オプションLIBに、COBOL ISAPIサブルーチンの登録集ファイル(COBW3.cbl、ISAPIINF.cbl、ISAPICTX.cbl、ISAPIFLG.cbl)が格納されているフォルダーを指定します。翻訳オプションALPHALの設定で“英大文字と等価に扱う”を選択し、さらに“WORD - COBOLの語”を選択します。また、翻訳オプションTHREADの設定で、“MULTI - マルチスレッドとする”を選択します。確認後、[OK]ボタンをクリックします。
→ プロジェクトマネージャウィンドウに戻ります。
プロジェクトにインポートライブラリF3BISAPI.libとモジュール定義ファイルISASMPL1.defが指定されていることを確認します。
プロジェクトマネージャの[プロジェクト]メニューから“ビルド”を選択します。
→ ビルド終了後、ISASMPL1.dllが作成されていることを確認してください。
参照
“NetCOBOLユーザーズガイド”の“ISAPIサブルーチンを使用したアプリケーションの作成と実行”の“翻訳およびリンク”
サーバプログラムの実行環境の設定
プロジェクトマネージャの[ツール]メニューから“実行環境設定ツール”を選択します。
→ 実行環境設定ツールが表示されます。
[ファイル]メニューの“開く”を選択し、ISASMPL1.dllが存在するフォルダーに、実行用の初期化ファイル(COBOL85.cbr)を作成します。
[共通]タブを選択し、以下を設定します。
環境変数情報@MessOutFileに、出力メッセージの格納ファイル名を指定します。
環境変数情報@WinCloseMsgに、OFFを指定します。
環境変数情報@CBR_ISAPI_LOGFILEに、ログファイル名を指定します。
環境変数情報@CBR_ISAPI_SEVERITYに、重要度を指定します。
[適用]ボタンをクリックします。
→ 設定した内容が実行用の初期化ファイルに保存されます。
[ファイル]メニューの“終了”を選択し、実行環境設定ツールを終了します。
参照
“NetCOBOLユーザーズガイド”の“ISAPIサブルーチンの環境変数設定”
また、例題が入ったフォルダーを物理パスとした適切な仮想ディレクトリをIISに登録してください。IISへの仮想ディレクトリの登録方法は、“NetCOBOL ユーザーズガイド”の“IISの設定方法”を参照してください。
プログラムを実行する前に
呼出し用ページ(ISASTART.htm)のFORMタグのACTION属性に指定されているWebアプリケーションのパスを、実際に実行するWebサーバの仮想パスに変更してください。
プログラムの実行
IISで指定されたフォルダーに例題の各ファイルをコピーします。
IISが起動されていることを確認し、Webブラウザで呼出し用ページ(ISASTART.htm)をIISに登録した仮想ディレクトリで構成されるURLを指定して表示します。あとは画面の指示に従い「実行」ボタンを押してください。
参照
“NetCOBOLユーザーズガイド”の“ISAPIアプリケーションの実行”
注意
CookieをサポートしていないWebブラウザおよびWebブラウザがCookieを受け入れない設定になっている場合、この例題は正しく動作しません。
例題の解説
この例題で行っている処理は、次のとおりです。
Cookieデータの取得
Webブラウザから送信されるCookieデータの取得を行います。
Cookieデータの登録
結果出力用ページの出力
Cookieデータの内容に応じて、出力する結果出力用ページを切り分けます。また、必要に応じて変換データを登録して結果出力用ページの編集を行います。
画面と処理の遷移は次のとおりです。
例題における個々の機能の使い方と使用目的について、簡単に説明します。
Cookieデータの取得
この例題で使用するCookie名は”Your Access Counter”です。したがって、このCookieデータを取得するためには、COBW3-COOKIE-NAMEに上記Cookie名を編集し、”COBW3_GET_COOKIE_XX”を呼び出します(440行目~450行目)。
この例題では、Cookieデータの有無を初回(ISASTART.htmからの初めての起動)の判定およびアクセス回数の保持に使用しています。初回アクセスの場合は、Cookieデータがないため、COBW3_GET_COOKIE_XXを呼び出してもCookieデータは見つからない点を利用して、初回処理を行っています(490行目~530行目)。一方、初回以降はCookieデータが必ず送信されるので、この点を利用します(540行目~550行目)。なお、初回処理でカウンタの値を1に設定し、初回以降で、1ずつ増加させます。
Cookieデータの登録
登録したいCookie名をCOBW3-COOKIE-NAMEに、内容をCOBW3-COOKIE-VALUEに設定し、COBW3_SET_COOKIE_XXを呼び出します。なお、この例題では、Cookieデータは”Your Access Counter”だけであるので最初に設定した値をそのまま使用します(440行目)。ここで登録されたCookieデータは、結果出力用ページの出力時にWebブラウザに送信されます。
リクエスト情報の取得
取得方法は非常に簡単で、取得したい情報の条件名を指定し、COBW3_GET_REQUEST_INFOを呼び出すだけです。情報の取得に成功すると、該当する情報がCOBW3-REQUEST-INFOに設定されます。
この例題では、2つのリクエスト情報を取得しています。ひとつは、仮想ディレクトリに対応する物理パスの情報で、アプリケーション(ISASMPL1.dll)と同じパスに格納されている結果出力用ページのパス名を決定するために使用しています(1660行目~1720行目)。IIS配下のWebアプリケーションではカレントフォルダーが不定のため、この情報を元にパス名を決定するか絶対パス指定などを行う必要があります。もうひとつは、画面に表示する項目として、Webブラウザが実行されているホスト名を取得しています(820行目~880行目)。
ヘッダ情報の取得
この場合も取得方法は非常に簡単で、取得したいHTTPヘッダ名をCOBW3-HEADER-NAMEに設定し、COBW3_RECEIVE_HEADERを呼び出すだけです。HTTPヘッダ情報の取得に成功すると、その情報がCOBW3-HEADER-VALUEに設定されます。
この例題では、画面に表示する項目としてWebブラウザの情報の取得に使用しています。Webブラウザの情報は”User-Agent”ヘッダから取得できます(990行目~1050行目)。