A. もちろんCGIDEV2とRPGではDB2/400のすべてのファイルに簡単にアクセスできます。ファイルの場所を指定しました。一般的に、プログラマが最初にCGIやWebアプリケーションを始めるときにライブラリ・リストの問題が生じます。ファイルがCGIライブラリ中にない場合、EXTFILEキーワードを使用するか、またはWebサーバーのジョブ・ライブラリ・リストでライブラリを手作業で更新してファイルが確実に見つかるようにしなければなりません。
B. CGIDEV2用のプロトタイプと変数が1つ以上のコピー・メンバーと登場します。
C. このアプリケーション用に定義する必要のあった変数はこの2つの作業用変数だけです。
D. このコードはCGIDEV2のバッファをクリアし、私たちが作成したHTMLフォームを組み入れています。GetHtmlifsMultの呼び出しは、複数のディスプレイ・ファイルをオープンしていると考えてください。GetHtmlifsMultサブ・プロシージャは一回の呼び出しで複数の外部定義HTML
IFSファイル(すなわちストリーム・ファイル)をメモリ中に読み込みます。
E. このステップは重要です。Webサーバーが私のプログラムに対してリクエスト・フォーム・フィールドに何かを送り返す場合、その値を取り出すことができます。そのリクエストが何も取り出せなかった場合は、それがアプリケーションに対する最初のリクエストであり、図1に示す最初のフォームを表示しなければならないことがわかります。フォームがブラウザに表示されると、Requestという隠しフィールドに「lookup」という値が入っている点に注意してください(図5のB)。ユーザーが項目番号に値を入力して[検索]をクリックすると、Requestフォーム・フィールドには「lookup」という値が入り、ここに示すステップで私のアプリケーションがその値を取り出します。こうしてようやく項目マスター・データベース・ファイルであるITEMS1ファイルで番号を検索できることがわかります。
F. SELECTロジックの部分に入るとき、Requestフィールドの値に基づいて検索をしなければならないことがわかります。検索を実行するには、ユーザーがWebフォームの項目番号エントリ中に入力した値をZhbGetVar呼び出しを使って取り出します。その結果はITEMS1のNumberフィールドに入れられます。ファイルを見に行ってその結果によってどうするかを決めます。
G. 項目番号が見つかりました。次にupdHTMLVarプロシージャを使ってブラウザに戻すHTML変数の値を計算します。たとえば、updHTMLvar('desc'
: descript );はdescriptの値を使って、表示するフォーム中で/%desc%/を参照している個所を更新(つまり置換)します。このプロセスの終わりで、WrtSectionプロシージャに対してHTMLソースからのフォームの名前を使ってフォームをブラウザに書き戻します。簡単ですね!
H. 項目番号が見つかりません。この場合、updHTMLVarプロシージャを使って、エラー・メッセージ・フォーム中の/%number%/を更新し、WrtSectionプロシージャを使ってエラー・フォームを書き出します。
I. Requestフィールドに「lookup」以外の値が入っている場合は、最初のフォームを表示して項目番号を入力させます(図1)。
J. すべて終了です。WrtSection('*fini')はCGIDEV2で使用され、処理中の作業がすべて終了したのですべての出力をブラウザに返さなければならない、ということを示します。最後にちょっとした後片付けです。すべてのファイルを閉じてください。