意外に簡単なRPGでWEB(照会PGM編)
私がこの検証を行うにあたって以下のIBMの文書の7章を参考にしました。
「AS/400 V3 TCP/IP機能とインターネット」研修用資料
以降の説明では、以下の2つの事が済んでいるの前提で記述いたします。
1)TCP/IPの設定が完了している
2)ibm http Serverの設定が完了している。(完了していない方は上記資料6章をご参照ください)
では、今回作成するアプリケーションの全体像ですが、商品マスターの照会です。
【第1画面】固定的なhtmlより商品コードを入力します。
【第2画面】第1画面よりcgiが起動されて、AS400上の商品マスターを参照した結果のhtmlを出力する。
■詳細作業
1)第1画面のhtmlソースの作成【レイアウト】
以下のhtmlをIFS上の/MYWEB/T0101.htmで保管します。
| <html> <head> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>商品照会</title> </head> <body> <p>商品照会</p> <form method=GET action="/cgi-bin/T0101"> <p>商品コード:<input type="text" name="SHSHCD" size="20"></p> <p><input type="submit" value="送信"></p> </form> </body> </html> |
cgi-binはAS400のWRKHTTPCGHで以下のような定義を行っています。
EXEC /cgi-bin/* /QSYS.LIB/MYLIB.LIB/*
この画面より商品コードに00000001を入力ご送信ボタンをおすと、以下のようなurlが実行されます。
http://192.168.1.1/cgi-bin/T0101?SHSHCD=00000001
HTTPCFGでcgi-binはMYLIBに設定しているので、このurlリクエストでMYLIB/T0101のプログラムが起動されます。
2)ソースファイルの作成
CCSID=5035のソースファイルを作成します。作成するメンバーはILE-RPGですのでRPGLEソースを作ります。
| > CRTSRCPF FILE(MYLIB/QRPGLESRC) RCDLEN(112) IGCDTA(*YES) CCSID(5035) ライブラリー MYLIB にファイル QRPGLESRC が作成された。 |
3)RPGソースの作成
CCSID5035のプログラムを作成するので、エミュレータのコードページを939英数小文字に設定して、サインオン後にCHGJOB CCSID(5035)のコマンドで環境を5035にします。
ソースの登録を行います。 ここからダウンロード→RPG DDS
ここのポイントは、urlからのパラメータの受け取りです。
第1画面のformタグのmethod=GETですのでこの場合は環境変数経由で受け取りになります。環境変数を受け取るAPI=QtmhGetEnvを使用してパラメータを受け取ります。
method=POSTの場合には標準入力経由になりますのでQtmhRdStinを使用しますが、ここではGETでコーディングしています。
もう1つのポイントはhtmlの出力になりますが、標準出力経由でブラウザーへ戻します。そのときのAPIがQtmhWrStoutです。H
このAPIの引数にhtmlをセットしますので、RPGにてhtmlソースを生成します。
この例ではコンパイル時テーブルで固定的なhtmlを定義してファイルからセットする部分はコンパイル時テーブルに動的に差し替えて引数を生成しています。
4)コンパイル
PF,RPGをコンパイルします。
| > CRTPF MYLIB/WMSH MYLIB/QDDSSRC ライブラリー MYLIB にファイル WMSH が作成された。 メンバー WMSH が MYLIB のファイル WMSH に追加された。 > CRTRPGMOD MODULE(MYLIB/T0101) SRCFILE(MYLIB/QRPGLESRC) DBGVIEW(*ALL) モジュール T0101 がライブラリー MYLIB に入れられました。最高の重大度は 00 。 04/04/17 の 09:00:00 に作成されました。 > CRTPGM PGM(MYLIB/T0101) BNDSRVPGM(QTCP/QTMHCGI) プログラム T0101 がライブラリー MYLIB に作成された。 |
5)実行
ブラウザーのアドレス欄に第1画面のhtmlを指定する。
http://192.168.1.1./MYWEB/T0101.htm
ここでブラウザー上に表示されない場合には、以下を確認してみましょう。
・urlが間違っていないか。
・HTTPCFGの確認(ポート番号など指定していないか)
・httpサーバーを起動しているか。
表示された場合には、商品コードを入力して送信ボタンを押します。
第2画面が出ない場合は、「AS/400 V3 TCP/IP機能とインターネット」研修用資料 の7章に載っているデバッグを行ってみてください。