Discover AS/400

AS/400に関する覚書

意外に簡単なRPGでWEB(照会PGM編)

AS/400はwebサーバーとしての機能を持っています。この機能を利用してRPGでWEBアプリケーションを作ってみましょう。

私がこの検証を行うにあたって以下の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>
ここでのポイントは、formタグのaction=/cgi-bin/T0101です
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章に載っているデバッグを行ってみてください。

HOME : TOP

Category

Archive