57
i-web RPGX 使用者の手引き

i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

Embed Size (px)

Citation preview

Page 1: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

i- web RPGX使用者の手引き

Page 2: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

目 次

Ⅱ.導入手順

Ⅰ.i-webRPGX とは? P.3

P.8~

Ⅲ.i-webRPGX の使用方法

1.組込関数

1-1.#IWIN (入力変数の取込)

P.13~

1-2.#IWVAL (セッション変数ファイルからの変数値取込)

1-3.#IWSET (セッション変数ファイルへの変数値セット)

1-4.#IWOUT (HTML ファイル書き出し)

1-5.HTMLの規則

1-6.#STD_OUT (HTML書き出し)

1-7.#CHR2NUM (数字(文字)→数値変更<戻り値:文字>)

2.コマンド P.28~

2-1.CRTWEBRPG (コンパイル)

2-2.CRTHTMD (HTML定義ファイルの作成)

2-3.DLTHTMD (HTML定義ファイルの削除)

2-4.CLRIWR (i-web RPGX システムファイルのクリアー処理)

2-5.DLXLSF (EXCEL ファイルのダウンロード)

2-6.CRTFRMCSV (CSVからDB作成)

3.ユーティリティー P.38~

3-1.STRGEN (WEBプログラムソースジェネレータ)

3-2.#IWCMB (コンボボックス作成)

3-3.ULTOPFC(ファイルをQSYSへアップロード)

2-7.CRTCSVF (DBからCSVF作成)

Ⅳ.サンプルプログラム

1.得意先照会 処理内容 P.53~

2.i-web RPGX を使用してCGIプログラムを作成 P.54~

2-1.キー画面プログラム(SP0010)

2-2.キー画面HTMLソース(SP0010H)

2-3.明細画面HTMLソース(SP0020H)

2-4.エラー画面HTMLソース(SP9999H)

1-8.#IWNBR (セッション№/SEQ№獲得)

Page 3: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

3

Ⅰ.i-webRPGX とは?

RPGだけでwebプログラムを作成するツールで、Web機能のコンポーネント群です。

扱いやすいようにパーツ化(サブルーチン呼出し可能)されており既存プログラムに容易に付け加える(プラグインする)ことが可能です。

これによりお客様のアプリケーション資産を素早く、低コストでwebアプリケーションに対応させることができます。

i-web RPGX 機能の概要

IOプロシージャー機能

ブラウザーとの入出力は、#IW関数を用いて行います。

#IWプロシージャーは次の4つの組込関数から成ります。

 ・#IWIN ・・・ ブラウザーからの入力値を一括して入力域に読み込みます

 ・#IWVAL ・・・ 一括して読み込まれた入力域から個々の変数値を取り出します ・#IWSET ・・・ 出力域に変数値をセットします ・#IWOUT ・・・ 出力域の変数値をHTMLスケルトンとともにブラウザーに書き出します

セッション管理は、一連の画面推移をひとつの連続した処理とみなし、セッション内での変数の引継ぎを行います。

ブラウザーの『戻る』キーに対応した、変数の引継ぎにも対応します。セッション管理に必要な制御は、#IW関数の中で行われます。

PC連携機能

CSV、ExcelによるPCとのデータの連携に用いる機能を提供します。

 ・Excel形式のダウンロード ・・・ DBを直接Excel形式でダウンロードします

 ・CSVファイルの作成 ・・・ DBをCSV形式に変換します。DBのヘッダー情報も変換します ・CSVからDBの作成 ・・・ CSV形式のデータを、DBを作成してコピーします ・PCからDBへのアップロード ・・・ HTTPプロトコルでAS400へアップロードします

プログラム生成機能

DBおよび項目を対話型で指定し、それを照会するRPGおよびHTMLを自動生成します。

 ・単一レコード照会 ・・・ キーを入れて1データ表示するタイプです

 ・複数レコード照会 ・・・ 複数の検索条件を入力して、条件の一致するデータを表示するタイプです ・ウィンドウ型照会 ・・・ 検索の開始キーをパラメータで受け取り、複数件表示するタイプです

Page 4: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

4

#IW関数を使ってブラウザーとの入出力を行います。下記の図は、 ユーザープログラムで#IW関数を使用し、ブラウザーとの入出力の関係をあらわしています。

i-web RPGX 技術の概要

RPGプログラム

*HTTP入力データの変数

AS400

HTTPサ|バ|

AS400

EVAL sts_set=#IWIN(pgm_id)

*変数取得

EVAL sts_out = #IWOUT(‘XXX':'QHTMSRC':‘XXXX’)

セッション№ SEQ フィールド名 変数

0011 001 TOKUCD 1001

セッション変数ファイル得意先 1001

ブラウザからの入力値をセッション変数ファイルにセット

変数名より変数値をセッション変数ファイルより取得。

・・

K_TOK CHAIN TOKUF

得意先コード   名称   住所

1001 OOOO XXXX

データベース・・

*変数セット

セッション№:0011シーケンス№:001

セッション№ SEQ フィールド名 変数

0011 001 TOKUCD 1001

セッション変数ファイル

0011 002 TOKNM OOOO

0011 002 TOKAD XXXX

EVAL sts_set = #IWSET       (‘TOKNM':        set_val)

EVAL sts_set = #IWSET       ('TOKAD':        set_val)

*ブラウザに出力

EVAL K_TOK = #IWVAL(‘TOKCD')

HTML 定義ファイル

パラメータより定義ファイルからHTML情報を取得し標準出力

得意先 1001名 称 OOOO住 所 XXXX

セッション№:0011シーケンス№:002

変数名より変数値をセッション変数ファイルにセット。

Page 5: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

5

セッション管理

通常webアプリケーションを作成した場合、画面単位でプログラムが途切れ、次の画面への情報の受け渡しが

必要となります。受け渡し情報が多ければ多いほど処理が煩雑になってきます。

第一画面にて入力した値を、第三画面にて使用したい場合、第二画面のHTMLに HIDDEN タイプの情報をセットしておかないとプログラム自体は、画面出力単位で処理が終わるので、第三画面での表示が出来ない。

A S 4 0 0 H T T P サ ー バ ー

第一画面

プログラム

第ニ画面

プログラム

Web上での動き

処理の切れ目

第三画面

プログラム

Web上での動き

処理の切れ目

入力値=1100 ここでは

入力値=1100

使用しない

ここで

入力値=1100

を表示したい

<INPUTtype=“hidden” ・・・

と第ニ画面のHTMLに

情報をもたせる。

第二画面から情報を

取得し第三画面へ出力

Page 6: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

6

そこで I-webRPGX では、HTMLにセッション番号を持たせ、処理のつながりを持たせるようにしました。そして、変数情報をセッション変数ファイルというI-webRPGXのシステムファイルに書き込むことで、同じセッション番号のHTMLファイルであれば、先の画面処理からも、共通の変数情報を取出すことが出来ます。

セッション変数ファイル

OOOOTOKUNM0020012

1100TOKUCD0010012

変数値変数名シーケンス№セッション№

セッション№・シーケンス№は、 I-webRPGX のアプリケーションにて自動採番されます。HTMLへのセッション№・シーケンス№の定義も、出力時に自動で書き出されます。

A S 4 0 0 H T T P サ ー バ ー

第一画面

プログラム

第ニ画面

プログラム

Web上での動き

処理の切れ目

第三画面

プログラム

Web上での動き

処理の切れ目

入力値=1100 ここでは

入力値=1100

使用しない

ここで

入力値=1100

を表示したい

セッション№:0012シーケンス№:001

セッション№:0012シーケンス№:002

セッション№:0012シーケンス№:003

入力変数を

セッション

変数ファイルに

セット

セッション

変数ファイルか

ら入力変数を

取出す。

Page 7: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

7

1.組込関数

 RPGプログラム内に組込み、ブラウザーとの入出力を行うための関数を提供します。 従来の5250画面プログラム、コーディングでの画面に対する、WRITE/READ/EXFMT 命令を

 組込関数に置き換えたイメージで、webプログラムを作成できます。 関数は、次の4つです。

 ■ #IWIN  セッションの割り当て、ブラウザーからの入力項目をセッション変数ファイルに書き込む関数です。 ■ #IVAL

  READ命令に当たる関数です。セッション変数ファイルから、ブラウザーからの入力項目を読込みます。 ■ #IWSET  ブラウザーへ出力する変数項目をセッション変数ファイルに書き込む関数です。

 ■ #IWOUT  WRITE命令に当たる関数です。ブラウザーへの書き出しを行います。

2.コマンド

 web適用業務を作成するのに必要ないくつかの機能をコマンド形式で提供します。

 ■ CRTWEBRPG (コンパイル)

  CGIプログラムをコンパイルする際に使用すると、便利なコマンドです。  モジュールの作成とプログラムの作成を一度に行います。 ■ CRTHTMD (HTML定義ファイルの作成)

  HTMLファイルをHTML定義ファイルに書き込むコマンドです。  ■ DLTHTMD (HTML定義ファイルからの定義削除)  HTML定義ファイルに書き込んだ定義情報を削除するコマンドです。 

 ■ DLXLSF (エクセル形式にしてブラウザー出力)  データベースデータをエクセル形式にしてブラウザーに出力するコマンドです。 ■ CRTCSVF (CSVファイルをIFSに作成)

  データベースデータをCSV形式にしてIFSに出力するコマンドです。 ■ CRTFRMCSVF (CSVファイルからデータベース作成)  CSV形式ファイルからデータベースを作成するコマンドです。

3.ユーティリティー

 webアプリケーションを補助するユーティリティーを提供します。

 ■ STRGEN (ジェネレーター)  webアプリケーションプログラムを簡易作成するツールです。

i-web RPGXは、複雑なシステムAPIや呼出し手順等を全てカプセル化しておりますので扱い方は簡単です。

Webブラウザへの書出し(HTML書出し)、Excelへの出力、等々の機能が 1つ1つコンポーネント化されているので、必要な機能だけを既存プログラムに組み込むことができます。

Page 8: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

8

Ⅱ.導入手順

① AS400内にSAVFを作成します。  コマンド:CRTSAVF FILE(QGPL/IWEBRPGX)

2.セーブファイルの作成

3.FTPサーバーの立上げ

① AS400でFTPサーバーを開始させます。  コマンド:STRTCPSVR SERVER(*FTP)

4.DOSプロンプトからのFTP操作

① DOSプロンプトを立上げ、FTPを用いてアップロードします。

 ・FTP 貴社のAS400のIPアドレス ・(USERに対し、)ユーザーID ・(PASSWORDに対し、)パスワード

 ・binary ・put C:¥iwebrpgx.savf QGPL/IWEGRPGX ・QUIT

5.ライブラリーの導入

① AS400でIWRPGXライブラリーを作成します。  コマンド:CRTLIB LIB(IWRPGX)

② RSTLIB でライブラリー IWRPGX を復元します。  コマンド:RSTLIB SAVLIB(IWRPGX) DEV(*SAVF) SAVF(QGPL/SAVF) MBROPT(*ALL)

6.IWEBRPGX のセットアップ

セットアップにはパスワードが必要です。パスワードは、注文が完了次第お知らせ致します。

① セットアッププログラムを実行します。  コマンド:IWRPGX/SETTPW RPGX パスワード

1.ダウンロード

① http://axel.vis.ne.jp/i-web/iwrpgx.zip 上記のURLより、i-webRPGXのダウンロード(約4M)を行ってください。 ダウンロードしたファイルはZIPファイルです。解凍するとiwrpgx.savfというファイルになります。 

入金確認後にもう一度メールでパスワードをお知らせ致します。以下の処理を行ってください。

① セットアッププログラムを実行します。  コマンド:IWRPGX/SETPPW RPGX パスワード

Page 9: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

9

7.作業ファイルの削除

② PC内のファイルを削除します。

  ダウンロードファイルを削除してください。

8.ライブラリーリストのユーザー部分の変更

① IWRPGXライブラリーをライブラリーリストに追加します。  コマンド:WRKSYSVAL QUSRLIBL

 ライブラリーリストの変更が出来るのでQTEMPの下にIWRPGXを追加してください。

  設定後、初期ライブラリーにIWRPGXが追加されます。

9.HTTP構成の変更

  コマンド:WRKHTTPCFG

② 既存のファイルに以下のものを追加もしくは変更してください。  すでに定義してあればそのままで結構です。  このファイルにはHTTPサーバーの動作を規定する命令(ディレクティブ)が書かれます。

 ・CCSID DIRECTIVESを追加します。  DefaultFsCCSID 5035  DefaultNETCCSID 0932  を追加。

 ・HTTPサーバーがクライアントからの要求を受け取るポート番号を指定します。   Port 80

 ・CGIプログラムを利用する為のメソッドを使用可能にします。   Enable GET   Enable HEAD   Enable POST

 ・ブラウザが要求したCGIプログラムの実行パス名を実際のライブラリーのパス名に変換します。 

    Exec /実行パス名/* /QSYS.LIB/実際のライブラリー名/*

   

    i-web RPGX のツールを稼動できるように実行パスを追加します。

    Exec /RPGX/* /QSYS.LIB/IWRPGX.LIB/*

① HTTPサーバーが稼動中の場合は、サーバーを終了させます。

  コマンド:ENDTCPSVR SERVER(*HTTP)

  HTTPサーバーが終了します。

① セーブファイルの削除を行います。  コマンド:DLTF QGPL/IWEBRPGX

  次頁に参考記述があります。

Page 10: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

10

#------------------------------------------------------# AS/400 INTERNET CONNECTION SERVER CONFIGURATION # AXEL CORP,.#------------------------------------------------------# #*** CCSID DIRECTIVES ***#

DefaultFsCCSID 5035DefaultNETCCSID 0932

# #*** PORT DIRECTIVES *** #

Port 80 # #*** METHOD DIRECTIVES *** #

Enable GETEnable HEADEnable POST

# #*** MAPPING DIRECTIVES *** #

Exec /RPGX/* /QSYS.LIB/IWRPGX.LIB/*Exec /XXXX/* /QSYS.LIB/XXX.LIB/*

③ 次にHTTPサーバーを起動させます。

  コマンド: STRTCPSVR SERVER(*HTTP) HTTPSVR(DEFAULT)

  これで追加、変更した設定が有効になります。

  参考テキスト(一部だけ記述)

Page 11: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

11

10.その他導入及び初期作業での注意点

10-1.web適用業務のライブラリーの作成  web適用業務で使うライブラリーでアプリケーションの開発を行いますが、実行環境やIFSパス の設定を WRKHTTPCFG にて行う必要があります。

 例えば、ライブラリー CGILIB を実行環境として登録し、IFSパス CONTENTS を設定する場合。 ① コマンド:WRKHTTPCFG  ② #*** MAPPING DIRECTIVES *** に   Exec /CGI-BIN/* /QSYS.LIB/CGILIB.LIB/*  を追加。   /CGI-BIN/ は、本当の構成を web 上に表示させないために仮名として設定します。

 ③ # Pass /* /HTML/* に   Pass /CONT-DOC/* /CONTENTS/* を追加。

/ CONT-DOC / は、本当の構成を web 上に表示させないために仮名として設定します。

 以上の設定を行えば、実行プログラムやIFSパスが web 上で使用可能となります。 手順は 9.HTTP構成の変更 と同じ方法です。

10-2.ソースファイルの作成

 各APIは英語大文字・小文字を区別するので、ソースファイル作成時(CRTSRCPF)に パラメータCCSIDで 5035 を指定します。

 例。ライブラリー:CGILIB、ソースファイル:QHTMSRC とした場合   CRTSRCPF FILE(CGILIB/QHTMSRC) RCDLEN(112) IGCDTA(*YES) CCSID(5035)

10-3.5250エミュレータ(P-COM)の設定

 5250エミュレータも英小文字が扱えるように設定(PC5250ではホストコードページとして 『939 日本語英数小文字拡張』を指定)

 この設定を行うと、半角カナ文字が文字化します。コントロール+F3にて 930 日本語英数 カナ の表示切替が可能です。

Page 12: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

12

10-4.ジョブのCCSIDを変更する

 英小文字が扱えるようにするため、CCSIDを変更します。 i-web RPGX でのアプリケーション開発は、CCSIDを5035に変えて行ってください。

10-5.既存の i-web RPGX をアップロードなどで上書きする

  i-web RPGX では、ファイルを使用しています。 上書きする場合は、ファイルをバックアップして別のライブラリーに 退避させてから上書き作業をして下さい。その後、コピーなどでデータを戻してください。

 対象のファイルを以下に記述します。

  IWR00 PF コントロールファイル (FOR i-web RPGX)   IWR01 PF セッション管理ファイル  IWR01L1 LF セッション管理ファイル L1   IWR02 PF セッション変数ファイル  IWR02L1 LF セッション変数ファイル L1   IWR03 PF HTML 定義ファイル  IWR04 PF HTML 定義ファイル (ADD 部まとめ)  IWR05 PF HTML ログファイル

  コマンド:CHGJOB CCSID(5035)

Page 13: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

13

Ⅲ.i-webRPGX の使用方法

1.組込関数

1-1.#IWIN (入力変数の取込)

#IWIN は、ブラウザから入力された全ての変数値をI-webRPGXのシステムファイル、

(セッション変数ファイル)に書き出します。また、セッション№・シーケンス№の採番もここで処理されます。

i-web RPGX  #IW関数

RPGプログラム

*HTTP入力データの変数

AS400

HTTPサ|バ|

AS400

EVAL sts_set=#IWIN(pgm_id)

*変数取得

EVAL sts_out = #IWOUT(‘XXX':'QHTMSRC':‘XXXX’)

セッション№ SEQ フィールド名 変数

0011 001 TOKUCD 1001

セッション変数ファイル得意先 1001

ブラウザからの入力値をセッション変数ファイルにセット

変数名より変数値をセッション変数ファイルより取得。

・・

K_TOK CHAIN TOKUF

得意先コード   名称   住所

1001 OOOO XXXX

データベース・・

*変数セット

セッション№:0011シーケンス№:001

セッション№ SEQ フィールド名 変数

0011 001 TOKUCD 1001

セッション変数ファイル

0011 002 TOKNM OOOO

0011 002 TOKAD XXXX

EVAL sts_set = #IWSET       (‘TOKNM':        set_val)EVAL sts_set = #IWSET       ('TOKAD':        set_val)

*ブラウザに出力

EVAL K_TOK = #IWVAL(‘TOKCD')

HTML 定義ファイル

パラメータより定義ファイルからHTML情報を取得し標準出力

得意先 1001名 称 OOOO住 所 XXXX

セッション№:0011シーケンス№:002

変数名より変数値をセッション変数ファイルにセット。

Page 14: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

14

 実際のコーディングは以下のように記述されます。

 D仕様書に以下の文を追加します。

D #IWIN PR 1 EXTPROC('#IWIN') D 10 value D sts_in S 1 INZ D pgm_id S 10 INZ

 セッションが初回の場合は、セッション№が採番されます。 継続の場合は、セッション№はそのままです。 セッション№・シーケンス№は稼動するジョブ内のデータエリアに保管されます。

C EVAL pgm_id = ‘PGM010’C EVAL sts_in = #IWIN(pgm_id)

 例 プログラムIDを PGM010 とする。

#IWIN は、次の形式で使用します。

EVAL sts_in = #IWIN(pgm_id)

sts_in ・・・ 処理結果のステータスが返ってきます。0 : セッション初回

1 : セッション継続9 : エラー

pgm_id ・・・ プログラムIDをセットします。

Page 15: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

15

1-2.#IWVAL (セッション変数ファイルからの変数値取込)

セッション変数ファイルから変数名に対応する値を取得し、プログラム間の変数にセットします。

同じ変数名に対応する変数値が複数ある場合、変数値は現在のセッション№・最終のシーケンス№を持ってきます。

i-web RPGX  #IW関数

RPGプログラム

*HTTP入力データの変数

AS400

HTTPサ|バ|

AS400

EVAL sts_set=#IWIN(pgm_id)

*変数取得

EVAL sts_out = #IWOUT(‘XXX':'QHTMSRC':‘XXXX’)

セッション№ SEQ フィールド名 変数

0011 001 TOKUCD 1001

セッション変数ファイル得意先 1001

ブラウザからの入力値をセッション変数ファイルにセット

変数名より変数値をセッション変数ファイルより取得。

・・

K_TOK CHAIN TOKUF

得意先コード   名称   住所

1001 OOOO XXXX

データベース・・

*変数セット

セッション№:0011シーケンス№:001

セッション№ SEQ フィールド名 変数

0011 001 TOKUCD 1001

セッション変数ファイル

0011 002 TOKNM OOOO

0011 002 TOKAD XXXX

EVAL sts_set = #IWSET       (‘TOKNM':        set_val)EVAL sts_set = #IWSET       ('TOKAD':        set_val)

*ブラウザに出力

EVAL K_TOK = #IWVAL(‘TOKCD')

HTML 定義ファイル

パラメータより定義ファイルからHTML情報を取得し標準出力

得意先 1001名 称 OOOO住 所 XXXX

セッション№:0011シーケンス№:002

変数名より変数値をセッション変数ファイルにセット。

Page 16: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

16

EVAL 結果フィールド = #IWVAL(‘変数名')

変数名 ・・・ HTMLの変数名をリテラルでセット。結果フィールド ・・・ 変数値が入ってきます。

 実際のコーディングは以下のように記述されます。 D仕様書に以下の文を追加します。

D #IWVAL PR 1000 EXTPROC('#IWVAL')D 32 const

 C仕様書にて使用する際、以下のように使用します。

C EVAL K_TOKCD = #IWVAL(‘TOKUCD')

 例 HTML変数名を TOKUCD とする。   結果フィールドは K_TOKUCD とする。フィールド長は4バイトとする。   WEBにて入力された値は ‘0001’ とする。

 K_TOKUCD には ‘0001’が入ってきます。 取得したい変数が複数ある場合は、続けて#IWVALを

 使用してください。

#IWVALは、次の形式で使用します。

Page 17: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

17

1-3.#IWSET (セッション変数ファイルへの変数値セット)

セッション変数ファイルに指定された変数名で変数値をセットします。

i-web RPGX  #IW関数

RPGプログラム

*HTTP入力データの変数

AS400

HTTPサ|バ|

AS400

EVAL sts_set=#IWIN(pgm_id)

*変数取得

EVAL sts_out = #IWOUT(‘XXX':'QHTMSRC':‘XXXX’)

セッション№ SEQ フィールド名 変数

0011 001 TOKUCD 1001

セッション変数ファイル得意先 1001

ブラウザからの入力値をセッション変数ファイルにセット

変数名より変数値をセッション変数ファイルより取得。

・・

K_TOK CHAIN TOKUF

得意先コード   名称   住所

1001 OOOO XXXX

データベース・・

*変数セット

セッション№:0011シーケンス№:001

セッション№ SEQ フィールド名 変数

0011 001 TOKUCD 1001

セッション変数ファイル

0011 002 TOKNM OOOO

0011 002 TOKAD XXXX

EVAL sts_set = #IWSET       (‘TOKNM':        set_val)EVAL sts_set = #IWSET       ('TOKAD':        set_val)

*ブラウザに出力

EVAL K_TOK = #IWVAL(‘TOKCD')

HTML 定義ファイル

パラメータより定義ファイルからHTML情報を取得し標準出力

得意先 1001名 称 OOOO住 所 XXXX

セッション№:0011シーケンス№:002

変数名より変数値をセッション変数ファイルにセット。

Page 18: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

18

#IWSETは、次の形式で使用します。

EVAL sts_set = #IWSET(‘変数名':set_val)

変数名 ・・・ HTMLの変数名をリテラルでセット。set_val ・・・ 変数値をセットします。

sts_set ・・・処理結果のステータスが返ってきます。0 : 追加1 : 変更

9 : エラー

 実際のコーディングは以下のように記述されます。 D仕様書に以下の文を追加します。

D #IWSET PR 1 EXTPROC('#IWSET')D 32 const D 1000 value D sts_set S 1 D set_val S 1000 INZ

 C仕様書にて使用する際、以下のように使用します。

 例 HTML変数名を TOKUNM とする。   変数値セットフィールドは、AATOKNM とする。

C EVAL set_val = %TRIM(AATOKUNM)C EVAL sts_set = #IWSET('TOKUNM':set_val)

 set_val に変数 AATOKUNM の値をセットします。セットしたい変数が複数ある場合は、 続けて #IWSET を使用してください。

Page 19: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

19

1-4.#IWOUT (HTML ファイル書き出し)

パラメーターで指定されたHTML定義ファイルを読み込み、ブラウザーに書き出します。

この際、HTMLファイル内に置換の指定がある場合、セッション変数ファイル内でセットした変数値で置き換えてから、書き出します。

i-web RPGX  #IW関数

RPGプログラム

*HTTP入力データの変数

AS400

HTTPサ|バ|

AS400

EVAL sts_set=#IWIN(pgm_id)

*変数取得

EVAL sts_out = #IWOUT(‘XXX':'QHTMSRC':‘XXXX’)

セッション№ SEQ フィールド名 変数

0011 001 TOKUCD 1001

セッション変数ファイル得意先 1001

ブラウザからの入力値をセッション変数ファイルにセット

変数名より変数値をセッション変数ファイルより取得。

・・

K_TOK CHAIN TOKUF

得意先コード   名称   住所

1001 OOOO XXXX

データベース・・

*変数セット

セッション№:0011シーケンス№:001

セッション№ SEQ フィールド名 変数

0011 001 TOKUCD 1001

セッション変数ファイル

0011 002 TOKNM OOOO

0011 002 TOKAD XXXX

EVAL sts_set = #IWSET       (‘TOKNM':        set_val)EVAL sts_set = #IWSET       ('TOKAD':        set_val)

*ブラウザに出力

EVAL K_TOK = #IWVAL(‘TOKCD')

HTML 定義ファイル

パラメータより定義ファイルからHTML情報を取得し標準出力

得意先 1001名 称 OOOO住 所 XXXX

セッション№:0011シーケンス№:002

変数名より変数値をセッション変数ファイルにセット。

Page 20: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

20

#IWOUTは、次の形式で使用します。

EVAL sts_out = #IWOUT(‘ライブラリー’:‘ファイル':out_mbr)

ライブラリー ・・・ 出力されるHTMLのライブラリー名をリテラルでセット。ファイル ・・・ 出力されるHTMLのファイル名をリテラルでセット。out_mbr ・・・出力されるHTMLのメンバー名をセットします。

sts_out ・・・処理結果のステータスが返ってきます。1 : 出力成功9 : エラー

 実際のコーディングは以下のように記述されます。 D仕様書に以下の文を追加します。

D #IWOUT PR 1 EXTPROC('#IWOUT') D 10 const D 10 const D 10 value D sts_out S 1 D out_mbr S 10 INZ

 C仕様書にて使用する際、以下のように使用します。

 例 ライブラリーをCGILIB、ファイルをQHTMSRC、メンバーをTST010とする。

C EVAL out_mbr = ‘TST010’C EVAL sts_out = #IWOUT(‘CGILIB':'QHTMSRC':C out_mbr)

 処理によってメンバー名が変わる場合は、処理毎でout_mbrの値を変更します。

Page 21: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

21

 <!-- FLDREP START --> から <!-- FLDREP END --> の間が

 置換操作の対象となります。 <TD>&&TOKUNM</TD> には TKTOKNAM の値が入り <TD>&&ADR</TD> には TKTOKADR の値がそれぞれ入ります。

 置換項目は &&変数名 で記述してください。

CONTENT-TYPE: TEXT/HTML

<HTML><BODY>      (省略)<TABLE><TR>

<TD> 得 意 先 </TD><TD> 住   所 </TD>

</TR><TR>

<!-- FLDREP START --><TD>&&TOKUNM</TD><TD>&&ADR</TD><!-- FLDREP END -->

</TR></TABLE></BODY></HTML>

 HTML文は以下のように記述します。

注)HTMLソースを作成しただけでは、稼動しません。  i-web RPG コマンド CRTHTMD を使ってHTML定義ファイルに登録しなければなりません。

  i-web RPG コマンド CRTHTMD については次章 P.28『2.コマンド』のところで解説します。

Page 22: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

22

1-5.HTMLの規則

   i-web RPGX では、ブラウザーに出力されるHTMLをプログラムの外部に、

   ソースファイルの形式で定義し、その定義をCRTHTMDを使用して定義ファイルに設定します。   (CRTHTMDについては、P.28 『2.コマンド』のところで解説します。)   そして、そのソースファイル内のHTMLの一部をプログラムの変数で置換して

   最終的に、ブラウザーに出力します。   このため、通常のHTMLのルールのほかに、幾つかのルールが追加されています。   このルールは、i-web RPGX 内だけの特別なルールです。

   1-5-1.単純な変数置換

  &&変数名で記述した部分は、変数の内容に置換されます。

  HTML文は以下のように記述します。

 1-5-2.代替変数置換

  リテラルを記述する事により、リテラルの部分が、変数の内容で置換されます。

変数値TOKUNM=“あいうえお”

HTML定義ファイル得意先名は&&TOKUNM

#IWOUT

書き出されるHTML得意先名は“あいうえお”

変数値TOKUNM=“あいうえお”

HTML定義ファイル<TD><FLD=“TOKUNM">AB9876</FLD>

#IWOUT

書き出されるHTML<TD> <FLD=“TOKUNM">あいうえお

Page 23: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

23

 1-5-3.変数置換の範囲

  <!-- IGNORE START --> と、

  <!-- IGNORE END -->   の間に挟まれた部分は、ブラウザーには書き出されません。

 1-5-4.HTMLに書き出さない

  変数置換処理は、  <!-- FLDREP START --> と、

  <!-- FLDREP END -->   の間に挟まれた部分に対してのみ行われます。

  これは、置換処理がコンピューターの資源を大量に必要とするので、

  置換処理の範囲を最低限に留める為です。

  置換処理をHTMLに使用する場合、十分に配慮をする必要があります。

 1-5-5.コマンドの実行

  <!-- #EXEC CMD=“コマンド” --> と記述されると、記述された場所で、

  コマンドが呼び出され実行されます。

  例えば、<!-- #EXEC CMD=“CALL DTLSET” -->と記述すると、

  プログラム DTLSET が実行されます。 この機能を用いて、行数が可変なテーブルの出力などを  行う事が出来ます。

 1-5-6.コマンドの実行2

  <!-- #EXEC CMD2=“コマンド” --> と記述されると、記述された場所で、

  コマンドが呼び出され実行されます。コマンドにパラメーターがあり、そのパラメーターが  変数を使用する場合に使用します。

  例えば、<!-- #EXEC CMD2=“CALL DTLSET PARM(‘&&CODE’)” -->と記述すると、

  変数 &&CODE の値が置換わり、プログラム DTLSET が実行されます。   

Page 24: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

24

1-6.#STD_OUT (HTML書き出し)

プログラム中にて作成されたHTML文を、ブラウザーに書き出します。

次の形式で使用します。

CALLB ‘#STD_OUT’PARM OUT 2048 文字列

 実際のコーディングは以下の様に記述します。 C仕様書にて使用する際以下のように使用します。

例 WEBに出力する変数項目は、

  得意先名 'TOKUNM'   住所  ‘TOKADR’ とする。

D* コンパイル時配列DHTM S 80 DIM(52) PERRCD(1) CTDATA D* 改行コードDNL C x'15' * ◆HTML文作成◆

C DO 52 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) +C %TRIM(NL)* ◆標準出力◆

C IF i = 25 OR C i = 52 C CALLB '#STD_OUT' C PARM OUT 2048 C CLEAR OUT C ENDIFC ENDDOC SETON LRC RETURN

 コンパイル時配列は次頁へ

 #STD_OUT は、一度に2048バイト分までのHTML文を出力することが出来ます。 例では、途中まで OUT パラメーターにHTML文をためて出力させています。 一行のHTML文の最後に改行コードをセットしています。

Page 25: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

25

** CTDATA HTML *******************************************CONTENT-TYPE: TEXT/HTML

<HTML> <HEAD> <TITLE> 得意先照会 </TITLE> </HEAD> <BODY bgcolor="lightGrey"> <FORM name="FORM1" method="GET"

action="HTTP://WWW1.AXEL.NE.JP/CGI-BIN/AP0040.PGM"> <!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="navy"> <P align="center"><B><FONT size="4" color="White"> 得意先照会 </FONT></B></P> </TD></TR>

</TABLE> </CENTER><BR><BR> <!------- ボディの表示 --> <CENTER> <TABLE border="0"> <TR>

<TD><FONT size="2"> 得意先 </TD> <TD><INPUT type="TEXT" name="TOKUCD" maxlength="6"></TD>

</TR> </TABLE> </CENTER><BR><BR> <CENTER> <TABLE border="0"> <TR><TD><INPUT type="SUBMIT" value=" 実行 "></TD></TR>

</TABLE> </CENTER> </FORM> </BODY> </HTML>

 コンパイル時配列

Page 26: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

26

1-7.#CHR2NUM (数字(文字)→数値変更<戻り値:文字>)

数値変換する文字列・変換する数値の総桁数・小数点以下桁数を受取り、

変換した数値を文字列として返します。(戻り値の1桁目は、マイナス符号。ただし、文字列中の数字・マイナス符号・小数点以外の文字は無視されます。次の形式で使用します。

EVAL 戻り値 = #CHR2NUM(cnv_str:数値の総桁数:小数点以下桁数)

cnv_str ・・・ ブラウザーから受け取った文字列。数値の総桁数 ・・・ 変換する数値の総桁数。小数点以下桁数 ・・・ 変換する数値の小数点以下桁数。

戻り値 ・・・ 変換された文字列

例えば、ブラウザーでは数字9桁、小数点以下3桁の数値が『123,456.7-』だとするとこの関数を使用した場合、戻り値は『-123456700』となります。

 実際のコーディングは以下のように記述されます。 D仕様書に以下の文を追加します。

D #CHR2NUM PR 31 EXTPROC('#CHR2NUM') D 50 value D 2 0 const D 2 0 const *

D cnv_str S 50 INZ

 実際に使用する際、以下のように使用します。

 例 cnv_strに入っている値を123,456.7-、総桁数9桁、小数点以下3桁とする

D #CHR2NUM PR 31 EXTPROC('#CHR2NUM')D 50 value D 2 0 const D 2 0 const *

D cnv_str S 50 INZ * D DS D dec_str 1 31 INZ D d_minus 1 1 INZ D d_numeric 2 31 INZ *

D W_num S 9 3 INZ ********************************************************************

              ・              ・              ・C EVAL dec_str = #CHR2NUM(cnv_str:9:3)C MOVEL d_numeric W_num C IF d_minus = '-' C Z-SUB W_num W_num C ENDIF

 W_num の値は『123456.700-』となります。

Page 27: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

27

1-8.#IWNBR (セッション№/SEQ№獲得)

C CALLB '#IWNBR' C PARM iw_session 9C PARM iw_seqno 4C PARM seq_mode 1

 実際のコーディングは以下のような形で記述します。

  iw_session ・・・ 出力パラメータで、セッション№が入ってきます。

  iw_seqno ・・・ 出力パラメータで、シーケンス№が入ってきます。

  seq_mode ・・・ 入力パラメータで、処理モードをあらわします。        Nの場合は、インクリメント後シーケンス№、ブランクの場合は、現シーケンス№を取得。

iwebRPGXのwebPGMで使用する共用データエリアからセッション№・

シーケンス№を取り出します。ユーザープログラムで、セッション№・シーケンス№を獲得する際に使用します。

Page 28: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

28

2.コマンド

  プログラム . . . . . . . . . . > PGMID 名前   ライブラリー . . . . . . . . > LIB 名前 , *LIBL   ソースファイル . . . . . . . . > SRCFILE 名前   ライブラリー . . . . . . . . > SRCLIB 名前 , *LIBL  モジュール . . . . . . . . . . > MODNAME 名前 , *PGM   ライブラリー . . . . . . . . > MODLIB 名前 , *LIBL , *CURLIB  バインドディレクトリー . . . . > BNDDIR 名前   ライブラリー . . . . . . . . > IWRPGX 名前 , *LIBL , *CURLIB  デバッキング用ビュー . . . . . > *NONE *STMT, *SOURCE, *LIST...  ターゲット・リリース . . . . . > *CURRENT *CURRENT, *PRV, VXRXMX

パラメーター

 上から順に

 プログラム:作成するプログラム名称 ライブラリー:作成するプログラムのライブラリー

 ソースファイル:コンパイルするプログラムソース ライブラリー:ソースファイルのライブラリー モジュール:モジュールの名称

 ライブラリー:モジュールのライブラリー バインドディレクトリ:バインドするバインドディレクトリ名 ライブラリー:バインドディレクトリのライブラリー

 デバッグ用ビュー:コンパイル済みプログラム・オブジェクトに使用可能なデバッグのレベルおよび          ソース・レベルのデバッグに使用可能なソース・ビューを指定。 ターゲットリリース:作成されるオブジェクトを使用するオペレーティング・システムのリリースを指定。

2-1.CRTWEBRPG (コンパイル)

CGIプログラムをコンパイルする際に使用すると、便利なコマンドです。

モジュールの作成とプログラムの作成を一度に行います。

Page 29: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

29

パラメーター

  ソースファイル . . . . . . . . 名前  ライブラリー . . . . . . . . *LIBL 名前 , *LIBL  メンバー . . . . . . . . . . 名前 , *FIRST

 上から順に

 ソースファイル:定義するHTMLソース ライブラリー:ソースファイルのライブラリー

 メンバー:HTMLファイルの名前

2-2.CRTHTMD (HTML定義ファイルの作成)

HTMLファイルの定義を i-web RPGX システムファイルであるHTML定義ファイルに登録します。

このコマンドで定義ファイルに登録しておかないと、ブラウザー表示することが出来ません。このコマンドは、DSPFやPRTFのコンパイルと同じように考えていただければよいかと思います。ですから、HTMLソースの変更があった場合は、このコマンドで定義しなおしてください。

定義ファイルは以下のファイルで構成されています。

IWR03 ・・・HTML 定義ファイル

IWR04 ・・・HTML 定義ファイル (ADD 部まとめ)

Page 30: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

30

パラメーター

  ソースファイル . . . . . . . . 名前  ライブラリー . . . . . . . . *LIBL 名前 , *LIBL  メンバー . . . . . . . . . . 名前 , *FIRST

 上から順に

 ソースファイル:定義したHTMLソース ライブラリー:ソースファイルのライブラリー

 メンバー:HTMLファイルの名前

2-3.DLTHTMD (HTML定義ファイルの削除)

HTMLファイルの定義を i-web RPGX システムファイルであるHTML定義ファイルから削除します。

このコマンドは、既に使用しないHTML定義を削除するものです。

定義ファイルは以下のファイルで構成されています。

IWR03 ・・・HTML 定義ファイル

IWR04 ・・・HTML 定義ファイル (ADD 部まとめ)

Page 31: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

31

パラメーター

  日数 . . . . . . . . . . . . . 30 数値 (1-999)

  日数:1~999まで入力できます。パラメータに入力した数値以前のデータを削除しにいきます。

     デフォルト値は30日になっています。

2-4.CLRIWR (i-web RPGX システムファイルのクリアー処理)

セッション管理しているi-web RPGX システムファイルのレコードをクリアーします。

一度このファイルに登録されるとずっと履歴としてデータが残ってしまいます。このコマンドを使って、定期的にレコードのクリアー処理を行うことを薦めます。

クリアー処理されるシステムファイルは以下のファイルで構成されています。

IWR01 ・・・ セッション管理ファイル

IWR02 ・・・ セッション変数ファイルIWR05 ・・・ セッションログファイル

Page 32: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

32

2-5.DLXLSF (EXCEL ファイルのダウンロード)

このコマンドでAS/400データベースの名前、ライブラリー名を与えるだけで、

内容をEXCEL形式でダウンロードします。

DBファイル . . . . . . . . . 名前ライブラリー . . . . . . . . *LIBL 名前 , *LIBL

タイトル . . . . . . . . . . . コメント . . . . . . . . . . .

パラメーター

 上から順に

 DBファイル:対象データベースファイル ライブラリー:対象データベースのライブラリー タイトル:エクセル出力時の表タイトル一行目に出力

 コメント:エクセル出力時の表コメント二行目に出力

イメージは、以下のようになります。

注)エクセルで表示できるフィールドの最大数は88項目までです。  それを超えるものは、無視されます。

Page 33: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

33

このコマンドを使用し以下のようにして、

Excelダウンロード・プログラムを簡単に作成できます。

①ブラウザーより検索条件を入力する

  ↓②ウェブプログラムで条件を受け取り、ワークファイルに書き出す  ↓

③DLXLSFコマンドを発行

データベースをExcel形式でダウンロード

i M ac

iM ac

ブラウザーから条件の入力

ブラウザーからエクセルの表示

ユーザー作成のウェブプログラム

*検索条件の取得  EVAL XXXX = #IWVAL(‘XXXXXX’)*条件にしたがって、ワークファイルの作成      ・

      ・  WRITE WKFIL      ・

      ・*ワークファイルをエクセル形式でダウンロード      ・

      ・  EVAL CMD=‘DLXLSF・・・’  CALL ‘QCMDEXC’

  PARM CMD      ・      ・

  SETON LR

ダウンロード用ワークファイル

Page 34: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

34

2-6.CRTFRMCSV (CSVからDB作成)

AS/400CSVファイルの1,2行目に、それぞれ、フィールド名、見出し名を記述しておくと、 

自動でAS/400内に、物理ファイルを作成します。

CSVF . . . . . . . . . . . 名前ライブラリー . . . . . . . . *LIBL 名前 , *LIBL

出力ファイル名 . . . . . . . . 名前ライブラリー . . . . . . . . *LIBL 名前 , *LIBL

タイプ . . . . . . . . . . . . FHD 名前上書き . . . . . . . . . . . . *NO 名前

パラメーター

 上から順に

 CSVF ・・・ CSVファイル名 ライブラリー ・・・ ライブラリー名

 出力ファイル名 ・・・ 作成データベース名 ライブラリー ・・・ ライブラリー名 タイプ ・・・ CSVデータのタイプ

       FHD ー 1行目=フィールド名/2行目=見出し/3行目以降=データ       HFD ー 1行目=見出し/2行目=フィールド名/3行目以降=データ       FD ー 1行目=フィールド名/2行目以降=データ

       HD ー 1行目=見出し/2行目以降=データ       D ー 1行目以降=データ 上書き ・・・既にファイルがある場合、上書き(*YES)

Page 35: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

35

このコマンドを使用すると、

①『DLXLSF』を使用してAS/400のデータベースをエクセルにダウンロードする  ↓

②データベースファイルデータをエクセルでメンテナンスする  ↓③エクセルでCSVファイルを作成する

  ↓④『ULTOPFC』で、CSVファイルをAS/400上にアップロード  ↓

⑤『CRTFRMCSV』で、AS/400にデータベース化

といった処理が簡単に出来ます。

CSVファイルよりデータベースの作成

CSVファイル

HINCOD,HINMEI,MAKER,UTANKA,STANKA,ZAIKO

コード、品名、メーカー、売単価、仕入単価、在庫数

10590,PLUS,電動専用替え消しゴム,190,95,26

13519,PLUS,エアイン 大 1個,72,36,111

13528,PLUS,ダストフリー 1個,72,96,0

13770,PLUS,電動式 鉛筆削り,4194,2097,25

15498,PKUS,手動鉛筆削り,998,499,9

データ記述

A R RECORD

A HINCOD 6S 0 COLHDG(‘コード’)

A HINMEI 52 COLHDG(‘品名’)

A MAKER 10 COLHDG(‘メーカー’)

A UTANKA 11S 0 COLHDG(‘売単価’)

A STANKA 11S 0 COLHDG(‘仕入単価’)

A ZAIKO 5S 0 COLHDG(‘在庫数’)

① データ記述の作成

③ データのコピー ② 物理ファイルの作成

AS/400データベース

Page 36: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

36

2-7.CRTCSVF (DBからCSVF作成)

このコマンドでAS/400データベースを指定すると、IFS(統合ファイルシステム)に

CSVファイルが作成されます。

ファイル . . . . . . . . . . . 名前ライブラリー . . . . . . . . *LIBL 名前 , *LIBL, *CURLIB

ストリームファイル . . . . . .

メンバー . . . . . . . . . . . *FIRST 名前 , *FIRST ストリームファイル の置換え . . . . . . *YES *YES, *NO データベースファイルの CCSID . *JOB 1-65533, *JOB, *FILE ストリームファイル のコードページ . . . *SYSTEM 1-32767, *SYSTEM

追加のパラメーター

見出し情報 . . . . . . . . . . *NONE *NONE, *FLDNAM, *COLHDG... レコードエラーの許可 . . . . . *ABORT 1-9999, *ABORT, *IGNORE レコードエラーメッセージ . . . *BOTH *BOTH, *STMF, *SECLVL, *NONEストリング区切り文字 . . . . . *DOUBLEQUOTE 文字値 , *DOUBLEQUOTE... フィールド区切り文字 . . . . . *COMMA 文字値 , *COMMA, *SPACE デバッグリスト . . . . . . . . *NO *YES, *NO

パラメーター

 上から順に

 ファイル ・・・ データベースファイル名 ライブラリー ・・・ ライブラリー名 ストリームファイル ・・・ IFSのパス <例)/TEMP/TOKU.CSV >

 メンバー ・・・ データベースメンバー名 ストリームファイルの置換え ・・・既にファイルがある場合、上書き(*YES) データベースファイルのCCSID ・・・ データベースファイルのCCSIDを指定

             *JOB ・・・ デフォルトジョブCCSIDを使用             *FILE ・・・ データベースファイルCCSIDを使用 ストリームファイルのコードページ ・・・ ストリームファイルのコードページを指定

             *SYSTEM ・・・ システム値を使用

Page 37: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

37

追加のパラメーター

 補足し情報 ・・・ ストリームファイルに書かれている補足情報を指定         *NONE ・・・ 補足情報は書かれません

         *FLDNAM ・・・ フィールド名が、1行目に挿入されます         *COLHDG ・・・ カラムヘディングが、 1行目に挿入されます         *BOTH ・・・ カラムヘディングが1行目に、フィールド名が、2行目に挿入されます

 レコードエラーの許可 ・・・ レコード・エラーを無視するかどうかを明示します           *ABORT ・・・レコード・エラーは許されません。                 レコード・エラーが検知される場合、プログラムは異常終了します

           *IGNORE ・・・復元可能なエラーの場合には処理し続けます  レコードエラーメッセージ ・・・レコード・エラー・メッセージがジョブ・ログに送られるかどうか明示します          致命的な内部プログラム・エラーあるいは完成メッセージは、

          プログラム・メッセージキューに常に送られます          *BOTH ・・・ レコード・エラー・メッセージはストリームファイルに書かれ、                ロー・レベルのメッセージとしてジョブログに送られます

          *STMF ・・・ レコード・エラー・メッセージはストリームファイルに書かれます          *SECLVL ・・・ レコード・エラー・メッセージはロー・レベルのメッセージとして                   ジョブログに送られます

          *NONE ・・・ レコード・エラー・メッセージは送られません ストリング区切り文字 ・・・ ストリング区切り文字を指定の文字に変えます。

              *DOUBLEQUOTE ・・・ 区切り文字は 『“』 を使用します

              *SPACE ・・・ 区切り文字はスペースに置き換えます

 フィールド区切り文字 ・・・ フィールド区切り文字を指定の文字に変えます

              *COMMA ・・・ 区切り文字は 『,』 を使用します

              *SPACE ・・・ 区切り文字はスペースに置き換えます

 デバッグリスト ・・・ デバッグリストを出力させるかどうか指定します

注)CSVに変換できるフィールドの最大数は88項目までです。  それを超えるものは、出力されません。  出力されるデータが9、999件を超えた場合、ファイルを処理することができません。

Page 38: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

38

3.ユーティリティー

3-1.STRGEN (WEBプログラムソースジェネレータ)

i-web RPGX を使用した、簡単な照会型プログラムソース及びHTMLソースを作成します。

画面にしたがって必要情報を設定するだけで、プログラムソース及びHTMLソースを作成します。ジェネレータにより、単一レコード照会・サブファイル型照会・ポップアップウィンドウといった3種類のプログラムソースを作成することが出来ます。

画面は、4つで構成されています。1.基本情報入力

2.ヘッダー部情報入力3.名細部情報入力4.実行確認

WEBプログラムソースジェネレータ

基本情報入力

作成ライブラリ

テンプレートの選択

使用ファイル

ヘッダー部情報入力

キー項目の選択

名細部情報入力

明細表示項目の選択

実行確認

明細表示項目の選択

プログラムソースとHTMLソースの作成

選択したファイル

単一レコード照会 サブファイル型照会 ポップアップウィンドウ

テンプレート

作成されたメンバー

プログラム HTML

Page 39: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

39

画面イメージ(単一レコード照会)

① 基本情報入力 ② ヘッダー部情報入力

③ 明細部情報入力 ④ 実行確認画面

Page 40: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

40

画面イメージ(サブファイル型照会)

① 基本情報入力 ② ヘッダー部情報入力

③ 明細部情報入力 ④ 実行確認画面

Page 41: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

41

画面イメージ(ポップアップウィンドウ)

① 基本情報入力 ② ヘッダー部情報入力

③ 明細部情報入力 ④ 実行確認画面

Page 42: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

42

① 基本情報入力

1.プログラムソースの指定

ライブラリ/ソースファイル

 RPGプログラムソース及びHTMLソースの生成先ソースファイル名/ライブラリを指定します。

 ソースファイルは、既存のものである必要があります。 ライブラリの指定には、*LIBLは使用できません。

メンバー/プログラム名称

 RPGプログラムID(=メンバー名)・プログラム名(メンバーテキスト)を指定します。 HTMLソースメンバーのIDは、RPGプログラムID+’H’+連番(数字1文字)で自動で

 採番されるため、RPGプログラムのIDは最長8桁に制限されます。 プログラムIDは、重複するメンバーが存在する時は生成後置き換えられ、存在しない時は

 新規に作成されます。 (ジェネレートプログラム内では、テンポラリーファイルとしてQTMPSRC@@というソースファイルを  QTEMPに作成し、いったんそこに指定されたIDのプログラム及びHTMLソースを作成します。

  生成がエラーなく完了後にユーザー指定のライブラリ・ソースファイルに作成されたソースを  コピーし、メンバーの作成もしくは置換えを行っています。) HTMLソースのメンバー名は、RPGプログラムのメンバー名(画面で指定された内容)と

 同一になります。 また、プログラム名は、HTMLのタイトルとしても使用されます。

2.テンプレートの指定

テンプレート

 テンプレートには、以下の3種があり、それぞれについて同数のソースメンバーが生成されます。

① 1レコード照会

   TMP100   TMP100H1   TMP100H2

   TMP100H3

② 複数レコード照会

   TMP200   TMP2001   TMP200H1

   TMP200H2   TMP200H3   TMP200H4

③ ポップアップウィンドウ 

   TMP300

明細行数 ②複数レコード照会、③ウィンドウ型照会を選択した場合、明細部の行数を指定します。

 (①1レコード照会選択時は指定不可)

Page 43: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

43

3.データベースの指定

データベースID/ライブラリ

 生成するプログラムで使用するデータベースファイル・ライブラリを1つ指定します。

 ライブラリの指定には、*LIBLは使用できません。 データベースファイルには、物理ファイル・論理ファイルいずれも指定できます。 データベースファイルにはキーフィールドが必要です。(キーなしではエラー)

 キーフィールドがユニークキーを含まない場合、プログラムの生成は行われますが、 生成されたプログラムは正しく動作しません。 また、データベースフィールドが88を超える場合、88番目以降のフィールドは無視されます。

データベースPREFIX

 RPGプログラム内で使用するデータベースフィールドのPREFIX2文字を指定します。

 (1文字は不可) また、PREFIXやプログラム内で使用するワークフィールドを‘W@’+フィールドIDという形で

 作成するため、データベースのフィールドIDは8文字以内である必要があります。

Page 44: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

44

② ヘッダー部情報入力

1.①1レコード照会、③ポップアップウィンドウ を選択した場合

(a) キー入力部フィールドの選定、表示順の指定

 基本情報入力で指定したデータベースファイルのキーフィールドが一覧表示されます。

 SEQの欄にユニークキーとなるフィールドを含む必要なフィールドを選択し、 表示順にナンバリングしてください。 指定の際は、枝番も使用できます。

例:  SEQ               表示順

1 13 2 34 4

3 1 2

 実行キーで指定した表示順に並び替えられます。

 (ただし、エラーが残っている場合は、並び替えは行われませんので、まずエラーを修正してください。)

(b) 選択されたフィールドのラベル編集

 web画面上に表示されるフィールドラベルを編集できます。(初期値はデータベース定義値)

 ただし、ラベルをブランクにすることはできません。 ブランクにすると、データベースに定義されているフィールドラベルがセットされます。

(c) 数字フィールドの場合、編集コード

 数値フィールド(属性P・Sのみ)の内容をweb画面上に表示する際の編集コードを指定できます。

 P(パック10進数)、S(ゾーン10進数)以外の数値属性については対応していません。

2.②複数レコード照会 を選択した場合

(a) キー入力部フィールドの選定、表示順の指定

 基本情報入力で指定したデータベースファイルの全フィールドが一覧表示されます。

 明細に表示するレコードを選択するための条件とするフィールドを指定してください。 選択するフィールドは、キーフィールドである必要はありません。 指定方法については、上記(a)と同様です。

(b) 選択されたフィールドのラベル編集

(c) 数字フィールドの場合、編集コード いずれも、指定方法については上記と同様です。

Page 45: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

45

③ 明細部情報入力

1.①1レコード照会 を選択した場合

(a) 明細部フィールドの選定、表示順の指定

 基本情報入力で指定したデータベースファイルのキーフィールドを除く全フィールドが一覧表示されます。

 SEQの欄にユニークキーとなるフィールドを含む必要なフィールドを選択し、 表示順にナンバリングしてください。 指定の際は、枝番も使用できます。

例:  SEQ               表示順

1 13 2 34 4

3 1 2

 実行キーで指定した表示順に並び替えられます。

 (ただし、エラーが残っている場合は、並び替えは行われませんので、まずエラーを修正してください。)

(b) 選択されたフィールドのラベル編集

 web画面上に表示されるフィールドラベルを編集できます。

 初期値はヘッダー部情報入力画面でラベルを編集した場合は、キー部と同値が、 編集していない場合はデータベース定義値がセットされます。 ラベルをブランクにすることはできません。

 ブランクにすると、データベースに定義されているフィールドラベルがセットされます。

(c) 数字フィールドの場合、編集コード

 数値フィールド(属性P・Sのみ)の内容をweb画面上に表示する際の編集コードを指定できます。 P(パック10進数)、S(ゾーン10進数)以外の数値属性については対応していません。

2.②複数レコード照会、③ウィンドウ型照会 を選択した場合(a) 明細部フィールドの選定、表示順の指定

 基本情報入力で指定したデータベースファイルの全フィールドが一覧表示されます。 明細に表示するレコードを選択するための条件とするフィールドを指定してください。

 選択するフィールドは、キーフィールドである必要はありません。 指定方法については、上記(a)と同様です。

(b) 選択されたフィールドのラベル編集

(c) 数字フィールドの場合、編集コード いずれも、指定方法については上記と同様です。

Page 46: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

46

④ 実行確認画面

すべての指定が完了すると実行確認画面が表示されます。実行確認=‘Y’を入力+実行キーで生成が開始されます。

なお、この時点でも生成するRPGプログラム/HTMLソースメンバーの存在チェックを行い、

プログラム・HTMLのどれか1つでも既存であった場合は、その旨の確認メッセージが表示されます。

Page 47: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

47

⑤ その他注意事項

1.データベースファイルのキーフィールドについて

 画面上で選択するキーフィールドは、あくまでもweb画面に表示するためのキーフィールドの指定と

 表示順の指定です。 ジェネレートプログラムでは、指定されたデータベースのキー順とキーフィールドすべてを レコードを特定するためのユニークキーとして扱い、プログラムを生成します。

 (それが実際にユニークキーであるかどうかをプログラム内で判別することができないため) 従って、もし、指定されたデータベースファイルにユニークキー以外にもキーが指定されている場合、 すべてのキーフィールドを対象にレコードを特定するためのロジックを作成します。

 (たとえば、指定したデータベースのユニークキーが商品コードで、キーフィールドとしては 登録日・商品コードの場合、ヘッダー部情報入力で登録日のみを選択しても プログラムは商品コード・登録日をキーとして生成されます。)

2.ジェネレータのデータベース情報取得能力の限界について

 データベースから取得する情報のうち、フィールド情報についてはフィールド数88までと

 限定されています。 従って、指定されたデータベースファイルのフィールド数が88を超える場合、 89番目以降のフィールドは無視されます。

 また、89番目以降の無視されるフィールドの中にキーフィールドが含まれる場合、 そのフィールドはキーフィールドとしても無視されてしまいますのでご注意ください。

3.ポップアップウィンドウの戻り値について

 ウィンドウ型照会の場合、ラジオボタンをクリックすることによって、値を呼び出し元PGMに

 返すようにコーディングされています。 返す値は、指定されたデータベースファイルのキーフィールドの内容です。 (キーが年月・得意先コード・商品コードならば、キー情報入力画面で選択した値にかかわらず

 年月・得意先コード・商品コードを返すように生成されます。)

4.ネーミングの制限

 HTMLソースファイルIDを「プログラムID + ’H’ + 連番(1桁の数字)」

 として作成するため、プログラムIDは8桁以内で設定してください。

プログラムID

Page 48: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

48

3-2.#IWCMB (コンボボックス作成)

ウェブアプリケーションにて以下のような表現をさせたい場合、

<SELECT> タグを使用しますが、#IWCMB を使用することでその部分の記述を楽に作成することが出来ます。

← この部分

以下のように使用します。

CALLB '#IWCMB ' PARM P_STS 1PARM P_NAM 20PARM P_VAL 10PARM P_ITM 100PARM P_SEL 1

 上から順に

 P_STS ・・・ ステータス。値により処理が変わります。      ‘1’ ー 開始。コンボボックスの開始タグを書き出すので、最初に必ずセットしてください。

      ‘9’ ー 終了。終了タグを書き出すので、最終セットの時に必ずセットしてください。

 P_NAM ・・・ 名前。コンボボックスの名称。 P_VAL ・・・ 値。CGIプログラムに渡される値。

 P_ITM ・・・ 表示項目。ブラウザーで表示される値。 P_SEL ・・・ 初期表示区分。デフォルト表示させたい値の場合、このパラメーターに      ‘1’をセットする。

Page 49: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

49

C DO *HIVAL IC READ FILE 90*C MOVEL *BLANK P_STSC MOVEL *BLANK P_NAMC MOVEL *BLANK P_VAL C MOVEL *BLANK P_ITMC MOVEL *BLANK P_SEL*

C IF *IN90=*OFF C EVAL P_VAL = %TRIM(XXXXX) C EVAL P_ITM = %TRIM(XXXXX)C ENDIF *

C SELECT *タグ終了

C WHEN *IN90 C MOVEL '9' P_STS*タグ開始

C WHEN i = 1 C MOVEL '1' P_STSC EVAL P_NAM = ‘XXXXXX’*デフォルト表示

C WHEN i = 2 C MOVEL '1' P_SELC ENDSL *

C CALLB '#IWCMB ' C PARM P_STS 1C PARM P_NAM 20C PARM P_VAL 100C PARM P_ITM 100C PARM P_SEL 1*

C 90 LEAVE*

C ENDDO

実際ユーザープログラムで使用すると、以下のようなコーディングになると思います。

(例)ファイルを読んでその内容をコンボボックスに出力   P_VALにはコードをセットし、P_ITMには名称をセット。   2レコード目のデータをデフォルト表示とする。

 尚、#IWCMBの中で標準出力しているので、このロジックの前でコンボボックスの前の

 HTMLを標準出力する必要があります。

Page 50: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

50

3-3.UPTOPFC(ファイルをQSYSへアップロード)

  i-web RPGX のアップロードサービスプログラムを使用して、

  AS400のQSYSへアップロードが可能です。

 使用方法

 ブラウザに以下のURLを入力して下さい。xxxxxxxxxxx の部分はTCP/IPドメインを入力して下さい。 http://xxxxxxxxxxx/RPGX/ULTOPFC.PGM

   上記の画面が出力されます。

注)ULTOPFCを使用するためには、コマンド WRKHTTPCFGにて  EXEC 文を登録する必要があります。  登録方法は、P.9 『9.HTTP構成の変更』を参照してください。

Page 51: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

51

① PCファイルのパスを入力します。参照ボタンでファイルの選択が可能です。

送信先(AS)の設定を行います。

送信元の設定を行います。

① ファイル:既存もしくは新規の名前を入力してください。  ソースファイルの場合は、アップロード用のソースファイルを予め用意しておきます。

例)

コマンド:CRTSRCPF FILE(TESTLIB/QUPLDSRC) RCDLEN(240) IGCDTA(*YES)TEXT(‘ アップロード用ソースファイル ’)

  ファイルを作成したら、WEKOBJ ライブラリー名/ファイル名 を実行します。  オプション‘2’で権限の編集を行います。  ユーザー‘*PUBLIC’のオブジェクト権を‘*ALL’に変更してください。

  HTTPサーバーの権限は最小限なので、既存のソースファイルへアップロードをかけようとしても、  うまくいきません。予めアップロード用のソースファイルを作成しておく必要があります。

② ライブラリー:既存のライブラリー名を入力して下さい。

③ メンバー:既存もしくは新規の名前を入力してください。データの場合、ファイル名と同じ名前の場合は

  ‘*FIRST’でもかまいません。

④ テキスト:テキストをここで入力します。

⑤ ソース仕様タイプ:ソースとしてアップロードする場合、入力して下さい。  例)TXT,HTM

⑥ ファイル形式:ソース、データどちらかを選択します。  データの場合は、AS側には5000バイトのレコード長でファイルが作成されます。  それ以上の長さになるデータがあった場合は、以降のデータが無視されます。  

⑦ データの置換え:既存のデータの後ろから追加したい場合は、‘追加’、置換の場合は  ‘置換’を選択してください。新規作成の場合は、どちらで選択しても作成されます。

⑧ コマンド入力:CALLやCRTSRCPFなどのコマンドが入力できます。  例)CALL TEST01 (‘001’ ‘XXXX’ ‘AAAA’)

  HTTPサーバーの機能上、実行できないコマンドもあります。ご了承ください。

⑨ 入力が完了したら、『送信』ボタンを押してください。アップロードが開始されます。

  アップロードが終了したら、完了画面が表示されます。

Page 52: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

52

Ⅳ.サンプルプログラム

i-webRPGXのサンプルを入れてあるので、参考にして下さい。

得意先照会がサンプルとしてQSMPSRCに入っています。コピーして使用してください。

1.得意先照会 処理内容

キー入力画面

明細画面 エラー画面

1.得意先コードを入力します。

2.実行ボタンを押します。3.データがあった場合は、名称、住所が表示されます。  データがなかった場合は、エラー画面が表示されます。

Page 53: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

53

2-1.キー画面プログラム(SP0010)

* 得意先マスターFTOKUF IF E K DISK PREFIX(TK) *************************************************************************** 得意先マスターの構成* TOKCD 10A COLHDG(' コード ') * TOKNAM 30O COLHDG(' 得意先名 ') * TOKADR 30O COLHDG(' 得意先住所 ') * * キーは TOKCOD *************************************************************************** データ構造(DS)***************************************************************************<< DSP CONTROLL>>

D cur_dsp S 3 INZ *************************************************************************** WEBツールの定義***************************************************************************<< 初期処理 >>

D #IWIN PR 1 EXTPROC('#IWIN') D 10 VALUE D sts_in S 1 D pgm_id S 10 INZ('SP0010') *<< 変数値獲得 >>

D #IWVAL PR 1000 EXTPROC('#IWVAL') D 32 const D get_val S 1000 INZ *<< 変数値セット >>

D #IWSET PR 1 EXTPROC('#IWSET') D 32 const D 1000 value D sts_set S 1 D set_val S 1000 INZ *<< 出力処理 >>

D #IWOUT PR 1 EXTPROC('#IWOUT') D 10 CONST D 10 CONST D 10 VALUE D sts_out S 1 D out_mbr S 10 INZ *

D out_mbr1 S 10 INZ('SP0010H') D out_mbr2 S 10 INZ('SP0020H') D out_mbr3 S 10 INZ('SP9999H')

2.i-web RPGX を使用してCGIプログラムを作成

ここで、i-web RPGX 関数の定義を記述しています。

使用するのは、

#IWIN (入力変数の取込)#IWVAL (セッション変数ファイルからの変数値取込)#IWSET (セッション変数ファイルへの変数値セット)#IWOUT (HTML ファイル書き出し)

です。

#IWOUT で使用する、HTMLのメンバー名をここで記述しています。

SP0010H (キー入力画面)SP0020H (明細画面)SP9999H (エラー画面)

Page 54: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

54

*************************************************************************** メイン**************************************************************************

* ◆初期処理◆C EVAL sts_in = #IWIN(pgm_id) * 画面モードの獲得

C EVAL cur_dsp = #IWVAL('cur_dsp') * 画面モード初期値 = 'TOP'

C IF cur_dsp = *BLANK C EVAL cur_dsp ='TOP' C ENDIF * * ◆画面状況◆

C SELECT * キー画面標示

C WHEN cur_dsp ='TOP' C EVAL out_mbr = out_mbr1 * 明細画面標示

C WHEN cur_dsp ='DTL' * 得意先コード取得

C CLEAR W_TOKUCD 10 C EVAL W_TOKUCD = #IWVAL('TOKUCD') * 得意先マスターより情報を取得

C W_TOKUCD CHAIN TOKUFR 90 * データがなかったらエラー画面表示

C IF *IN90 = *ON C EVAL out_mbr = out_mbr3 * データがあれば明細表示

C ELSE C EVAL out_mbr = out_mbr2 C EVAL set_val = TKTOKNAM C EVAL sts_set = #IWSET('TOKUNM':set_val) C EVAL set_val = TKTOKADR C EVAL sts_set = #IWSET('ADR':set_val) C ENDIF C ENDSL * * ◆標準出力◆

C EVAL sts_out=#IWOUT(‘CGILIB':'QHTMSRC':out_mbr)* ◆終了◆

C SETON LRC RETURN

    キー画面プログラム(SP0010)

ここで得意先コードを取得します。パラメーターに‘TOKUCD’とセットします。W_TOKUCDに変数値がセットされます。

出力画面のコントロールを行っています。値によって処理が変わります。

ここで、入力値を取得、またはセッション№・シーケンス№を採番します。

ここで出力データをセッション変数ファイルに書き出します。

指定のHTMLファイルを標準出力します。

Page 55: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

55

2-2.キー画面HTMLソース(SP0010H)

CONTENT-TYPE: TEXT/HTML

<HTML> <HEAD> <TITLE> 得意先照会 by i-web RPGX</TITLE>

</HEAD>

<BODY bgcolor="lightGrey"> <FORM name="FORM1" method="GET" action="SP0010.PGM">

<!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="navy"> <P align="center"><B><FONT size="4" color="White"> 得意先照会 </FONT></B></P></TD></TR>

</TABLE> </CENTER><BR><BR>

<!------- ボディの表示 --> <CENTER> <TABLE border="0"> <TR>

<TD><FONT size="2"> 得意先 </TD> <TD><INPUT type="TEXT" name="TOKUCD" maxlength="6"></TD>

</TR> </TABLE> </CENTER><BR><BR>

<!------- 表示情報 --> <INPUT type="HIDDEN" name="cur_dsp" value="DTL">

<!------------------->

<CENTER> <TABLE border="0"> <TR><TD><INPUT type="SUBMIT" value=" 実行 "></TD></TR>

</TABLE> </CENTER>

</FORM> </BODY>

</HTML>

必ず記述してくださいこの後にはブランク行を入れてください。

<FORM> ~ </FORM> の間にある <INPUT>タグで指定したフィールドの変数値が渡されます。

ここでは、“TOKUCD”の値が渡されます。(イメージ:TOKUCD=入力した値)

ここで、表示情報を設定しています。

実際のブラウザーのソースにはこの行に『<INPUT TYPE=“HIDDEN” NAME=“SESSION”VALUE=“000000001”><INPUT TYPE=“HIDDEN”NAME=“SEQNO” VALUE=“0001”>』のタグが自動で入ってきます。ここで、セッション№とシーケンス№をセットしています。<FORM> タグがあれば、必ず追加されます。

Page 56: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

56

2-3.明細画面HTMLソース(SP0020H)

CONTENT-TYPE: TEXT/HTML

<HTML> <HEAD> <TITLE> 得意先照会 by i-web RPGX</TITLE>

</HEAD>

<BODY bgcolor="lightGrey">

<!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="navy"> <P align="center"><B><FONT size="4" color="white"> 得意先照会 </FONT></B></P></TD></TR>

</TABLE> </CENTER><BR><BR>

<!------- ボディの表示 --> <CENTER> <TABLE border="1" cellspacing="0"> <TR bgcolor="#6666FF"> <TD><P align="center"><B><FONT color="white"> 得 意 先 </FONT></B></TD>

<TD><P align="center"><B><FONT color="white"> 住   所 </FONT></B></TD></TR> <TR bgcolor="white">

<!-- FLDREP START --><TD>&&TOKUNM</TD> <TD>&&ADR</TD> <!-- FLDREP END -->

</TR> </TABLE> </CENTER>

</BODY>

</HTML>

斜体の部分 &&TOKUNM と&&ADR が#IWSETで変数値をセットし、置換処理が行われるフィールドです。置換処理が行われる範囲は、<!-- FLDREP START -->と<!-- FLDREP END --> の間です。置換対象は &&変数名 で記述します。

例えば…&&TOKUNM は (株)○○システム&&ADR は ○○市○区2-○-3

実際は上記のように置き換わります。

<!-- FLDREP START -->と<!-- FLDREP END -->はWEBのHTML文には記述されません。

Page 57: i-web RPGX 使用者の手引き - axel.vis.ne.jpaxel.vis.ne.jp/i-web/document/RPGXmanual.pdf · AS400 EVAL sts_set=#IWIN(pgm_id) *変数取得 ... コマンド:CRTLIB LIB(IWRPGX)

57

2-4.エラー画面HTMLソース(SP9999H)

CONTENT-TYPE: TEXT/HTML

<HTML> <HEAD> <TITLE> 得意先照会 </TITLE>

</HEAD>

<BODY bgcolor="LightGrey">

<!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="Navy"> <P align="center"><B><FONT size="4" color="White"> 得意先照会 </FONT></B></P></TD></TR>

</TABLE> </CENTER><BR><BR><BR>

<!------- ボディの表示 --> <CENTER> <HR SIZE="3" WIDTH="360"> <TABLE border="0"> <TR><TD><FONT size="3"> 入力された得意先がありません </TD></TR>

</TABLE> <HR SIZE="3" WIDTH="360"> </CENTER>

</BODY>

</HTML>