i - web RPG 使用者の手引き
DESCRIPTION
i - web RPG 使用者の手引き. 目 次. Ⅰ .i-webRPG とは?. P.3. Ⅱ .導入手順. P.5~. Ⅲ .i-webRPG の使用方法. P.9~. 1.組込関数. 1-1. #GET_FORM (変数取得). 1-2. #OUT_HTML (HTML書き出し). 1-3.HTMLの規則. 1-4. #STD_OUT (HTML書き出し). 2.コマンド. P.17~. 2-1. CRTWEBRPG (コンパイル). 2-2. CRTXLSF (エクセルファイル作成). - PowerPoint PPT PresentationTRANSCRIPT
目 次
Ⅱ.導入手順
Ⅰ.i-webRPG とは?
Ⅲ.i-webRPG の使用方法
1.組込関数
1-1. #GET_FORM (変数取得)
1-2. #OUT_HTML (HTML書き出し)
1-3.HTMLの規則
2.コマンド
2-1. CRTWEBRPG (コンパイル)
2-2. CRTXLSF (エクセルファイル作成)
3.ユーティリティー
3-1. FILE UPLOAD (IFSへのファイルアップロード)
3-3. HTMDRV (HTML作成補助ツール)
Ⅳ.サンプルプログラム
1.@WEBツールを使用してCGIプログラムを作成
1-1.キー画面表示処理
1-2.キー画面用HTMLソース
1-3.明細画面表示処理
1-4.明細画面用HTMLソース
1-5.エラー画面用HTMLソース
2.HTML作成補助ツールを使用してCGIプログラムを作成
2-1.URL入力
2-2.キー画面用HTMLソース
2-3.変数項目セット
2-4.明細画面用HTMLソース
2-3. SENDMAIL (AS400からメールの送信)
P.3
P.5~
P.9~
P.17~
P.20~
P.27~
P.33~
1-4. #STD_OUT (HTML書き出し)
3-2. UPLOAD TO PF (ファイルをQSYSへアップロード)
3
Ⅰ.i-webRPG とは?
RPGだけでwebプログラムを作成するツールで、Web 機能のコンポーネント群です。扱いやすいようにパーツ化(サブルーチン呼出し可能 )されており既存プログラムに容易に付け加える(プラグインする )ことが可能です。これによりお客様のアプリケーション資産を素早く、低コストでweb アプリケーションに対応させることができます。i-web RPG は、複雑なシステム API や呼出し手順等を全てカプセル化しておりますので扱い方は簡単です。Web ブラウザへの書出し (HTML 書出し )、 Excel への出力、メール送信、等々の機能が 1 つ 1つコンポーネント化されているので、必要な機能だけを既存プログラムに組み込むことができます。
4
1.組込関数
RPGプログラム内に組込み、ブラウザーとの入出力を行うための関数を提供します。 従来の5250画面プログラム、コーディングでの画面に対する、WRITE/READ/EXFMT 命令を 組込関数に置き換えたイメージで、web プログラムを作成できます。 関数は、次の2つです。
■ #GET_FORM READ 命令に当たる関数です。ブラウザーからの入力項目を読込みます。 ■ #OUT_HTML WRITE 命令に当たる関数です。ブラウザーへの書き出しを行います。
2.コマンド
web 適用業務を作成するのに必要ないくつかの機能をコマンド形式で提供します。
■ CRTWEBRPG (コンパイル) CGIプログラムをコンパイルする際に使用すると、便利なコマンドです。 モジュールの作成とプログラムの作成を一度に行います。 ■ CRTXLSF (エクセルファイル作成) CSVファイルよりエクセルファイルをIFSのディレクトリに作成します。 CSVファイルはレコード長5000バイトで作成してください。 ■ SENDMAIL (AS400からメール送信) IBM 社の AS/400 上で動く、 5250 グリーンスクリーン画面で実行可能なメール・クライアントです。 メールを利用するプログラム開発をサポートするツールです。
3.ユーティリティー
web アプリケーションを補助するユーティリティーを提供します。
■ CRTXLSF (IFSへのファイルアップロード) @WEB ツールのアップロードサービスプログラムを使用して、AS400へのアップロードが可能です。 ■ HTMDRV (HTML作成補助) 簡単なWEBアプリケーションを作成する際、このツールを使用することにより、 より簡単にCGIプログラムを作成することが出来ます。
5
Ⅱ.導入手順
① AS400内にSAVFを作成します。 コマンド: CRTSAVF FILE(QGPL/IWEBRPG)
2.セーブファイルの作成
3.FTPサーバーの立上げ
① AS400でFTPサーバーを開始させます。 コマンド: STRTCPSVR SERVER(FTP)
4.DOSプロンプトからのFTP操作
① DOSプロンプトを立上げ、FTPを用いてアップロードします。
・ FTP 貴社の AS400のIPアドレス ・( USER に対し、)ユーザーID ・( PASSWORD に対し、)パスワード ・ binary ・ put C:\iwebrpg.savf QGPL/IWEGRPG ・ QUIT
5.ライブラリーの導入
① AS400で@WEBライブラリーを作成します。 コマンド: CRTLIB LIB(@WEB)
② RSTLIB でライブラリー @WEB を復元します。 コマンド: RSTLIB SAVLIB(@WEB) DEV(*SAVF) SAVF(QGPL/SAVF) MBROPT(*ALL)
6.@WEBツールのセットアップ
セットアップにはパスワードが必要です。パスワードは、注文が完了次第お知らせ致します。
① セットアッププログラムを実行します。 コマンド: @WEB/SETTPWD パスワード
1.ダウンロード
① http://www.axel.ne.jp/i-web/install.htm
上記のURLより、 i-webRPG のダウンロード(約 3M )を行ってください。
入金確認後にもう一度メールでパスワードをお知らせ致します。以下の処理を行ってください。
① セットアッププログラムを実行します。 コマンド: @WEB/SETPPWD パスワード
6
7.作業ファイルの削除
② PC内のファイルを削除します。 ダウンロードファイルを削除してください。
8.ライブラリーリストのユーザー部分の変更
① @WEBライブラリーをライブラリーリストに追加します。 コマンド: WRKSYSVAL QUSRLIBL
ライブラリーリストの変更が出来るので先頭に@WEBを追加してください。 設定後、初期ライブラリーに@WEBが追加されます。
9.HTTP構成の変更
コマンド: WRKHTTPCFG
② 既存のファイルに以下のものを追加もしくは変更してください。 すでに定義してあればそのままで結構です。 このファイルにはHTTPサーバーの動作を規定する命令(ディレクティブ)が書かれます。
・ CCSID DIRECTIVES を追加します。 DefaultFsCCSID 5035 DefaultNETCCSID 0932 を追加。 ・ MAPPING DIRECTIVES を追加します。 Exec /@WEB/* /QSYS.LIB/@WEB.LIB/* を追加。 ・ PASS DIRECTIVES を追加します。 Pass /@WEB-DOC/* /UPLD/* を追加。
① HTTPサーバーが稼動中の場合は、サーバーを終了させます。 コマンド: ENDTCPSVR SERVER(*HTTP)
HTTPサーバーが終了します。
① セーブファイルの削除を行います。 コマンド: DLTF QGPL/IWEBRPG
次頁に参考として記述があります。
7
#------------------------------------------------------# AS/400 INTERNET CONNECTION SERVER CONFIGURATION # AXEL CORP,.#------------------------------------------------------# #*** HOSTNAME DIRECTIVES ***# HostName www.axel-net.co.jp# #*** CCSID DIRECTIVES ***# DefaultFsCCSID 5035 DefaultNETCCSID 0932# #*** PORT DIRECTIVES *** # Port 80 # #*** METHOD DIRECTIVES *** # Enable GET Enable HEAD Enable POST# #*** MAPPING DIRECTIVES *** # Exec /@WEB/* /QSYS.LIB/@WEB.LIB/* Pass /@WEB-DOC/* /UPLD/*
③ 次にHTTPサーバーを起動させます。 コマンド: STRTCPSVR SERVER(*HTTP)
これで追加、変更した設定が有効になります。
参考テキスト(一部だけ記述)
8
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 日本語英数 の表示切替が可能です。カナ
9
Ⅲ.i-webRPG の使用方法
1.組込関数
1-1. #GET_FORM (変数取得)
例1) パラメーター : field = 'CODE' / option = *BLANK 戻り値 : 0001 : 指定された変数名の値のみを EBCDIC に変換して返す 例2) パラメーター : field = *BLANK / option = *BLANK 戻り値 : CODE=0001&HINMEI= 品名 & : 環境変数で取得した変数を全て EBCDIC に変換して返す 例3) パラメーター : field = 'CODE' / option = '1' 戻り値 : CODE=0001& : 指定された変数名と変数値 EBCDIC に変換して返す 例4) パラメーター : field = *BLANK / option = '9' 戻り値 : CODE=0001&HINMEI=%B1%B2%B3%B4 : 環境変数で取得した変数を全て無変換で返す 例5) パラメーター : field = 'HINMEI' / option = '9' 戻り値 : HINMEI=%B1%B2%B3%B4 : 環境変数で取得した変数を全て無変換で返す
#GET_FORM は、ブラウザから入力された変数をプログラム内に読込みます。次の形式で使用します。
#GET_FORM(field:option)
fieldは HTML の変数名を指定します。optionはブランク /1 /9を指定します。
次の例では、入力項目のHTML上での変数名を、 CODE,HINMEI とし変数値はそれぞれ ‘ 0001’,‘ 品名’として、パラメータによる戻り値を示します。環境変数には CODE=0001&HINMEI=%B1%B2%B3%B4 というデータが渡ってきます。
実際のコーディングは以下のように記述されます。 D仕様書に以下の文を追加します。
D #GET_FORM PR 2000 EXTPROC('#GET_FORM') D 10 VALUE D 1
10
C仕様書にて使用する際以下のように使用します。
C CLEAR field 10 C CLEAR option 1 C MOVEL(P) ‘CODE' field C EVAL W_CODE = #GET_FORM(field:option)
field パラメーターに ‘ CODE’ をセットします。 option パラメーターにはブランクをセットしておきます。 W_CODE には ‘ 0001’が入ってきます。 取得したい変数が複数ある場合は、続けて #GET_FORM を 使用してください。
例 HTMLファイルでのフィールド名を CODE とする。 フィールド長は4バイトとする。 WEBにて入力された値は ‘ 0001’ とする。
また開発時にプログラムデバッグする際の機能として、環境変数の替わりにデータエリアから変数 データを取得して、後続処理の確認を行うことが可能です。
使用方法
① QTEMPに『TSTDTA』というデータエリアを作成します。 データエリアの長さは2000バイトです。
② データエリアに変数を入力します。
コマンド: CRTDTAARA DTAARA(QTEMP/TSTDTA) TYPE(*CHAR) LEN(2000)
コマンド: CHGDTAARA
データ内容(例) 得意先コード( TOKUCD )、得意先名( TOKUNM )とする。
TOKUCD=00000001&TOKUNM=AXEL商店
データは、フィールド名=変数値 となり、複数ある場合は間に‘&’をつけてください。
③ 対象のプログラムを、通常のプログラムをデバッグするのと同じように処理を行ってください。 注:この機能は、QTMHHTTP以外のユーザーでなければ働きません。
11
1-2. #OUT_HTML (HTML書き出し)
実際のコーディングは以下の様に記述します。 C仕様書にて使用する際以下のように使用します。
C EVAL DATA = 'TOKUNM=' + %TRIM(TKTOKNAM) + C %TRIM('&') + C 'ADR=' + %TRIM(TKTOKADR) + C %TRIM('&') C CALLB '#OUT_HTML' C PARM 'CGILIB’ LIB 10 C PARM 'QHTMSRC’ FIL 10 C PARM ‘AP0010H’ MBR 10 C PARM DATA 2000
DATA パラメーターには、 変数の名前=変数& とセットします。
プログラム外部で定義されたHTMLファイルを読み込み、ブラウザーに書き出します。この際、HTMLファイル内に置換の指定がある場合、プログラム内の変数の値で置き換えてから、書き出します。次の形式で使用します。
CALLB ‘#OUT_HTML’PARM LIB 10 HTMLライブラリーPARM FIL 10 HTMLファイルPARM MBR 10 HTMLメンバーPARM DATA 2000 置換定義
例 出力対象のHTMLファイルは、 ライブラリー: QCGILIB ファイル : QHTMSRC メンバー : AP0010H とする。 WEBに出力する変数項目は、 得意先名 'TOKUNM' 住所 ‘ TOKADR’ とする。
12
<!-- 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文は以下のように記述します。
13
1-3.HTMLの規則
i-webRPGでは、ブラウザーに出力されるHTMLをプログラムの外部に、 ソースファイルの形式で定義します。 そして、そのソースファイル内のHTMLの一部をプログラムの変数で置換して 最終的に、ブラウザーに出力します。 このため、通常のHTMLのルールのほかに、幾つかのルールが追加されています。 このルールは、i-webRPG内だけの特別なルールです。
1-3-1.単純な変数置換
&&変数名で記述した部分は、変数の内容に置換されます。
HTML文は以下のように記述します。
1-3-2.代替変数置換
リテラルを記述する事により、リテラルの部分が、変数の内容で置換されます。
プログラム内変数 TOKUNM=“ あいうえお”
HTMLファイル 得意先名は &&TOKUNM
#OUT_HTML
書き出されるHTML 得意先名は“あいうえお”
プログラム内変数 TOKUNM=“ あいうえお”
HTMLファイル < TD>< FLD=“TOKUNM" > AB9876 < /FLD>
#OUT_HTML
書き出されるHTML < TD>あいうえお
14
1-3-3.変数置換の範囲
< !-- IGNORE START --> と、 < !-- IGNORE END --> の間に挟まれた部分は、ブラウザーには書き出されません。
1-3-4.#OUT_HTMLが無視
変数置換処理は、 < !-- FLDREP START --> と、 < !-- FLDREP END --> の間に挟まれた部分に対してのみ行われます。
これは、置換処理がコンピューターの資源を大量に必要とするので、 置換処理の範囲を最低限に留める為です。
置換処理をHTMLに使用する場合、十分に配慮をする必要があります。
1-3-5.コマンドの実行
< !-- #EXEC CMD=“コマンド” --> と記述されると、記述された場所で、 コマンドが呼び出され実行されます。
例えば、< !-- #EXEC CMD=“CALL DTLSET” -->と記述すると、 プログラム DTLSET が実行されます。 この機能を用いて、行数が可変なテーブルの出力などを 行う事が出来ます。
1-3-6.コマンドの実行2
< !-- #EXEC CMD2=“コマンド” --> と記述されると、記述された場所で、 コマンドが呼び出され実行されます。コマンドにパラメーターがあり、そのパラメーターが 変数を使用する場合に使用します。
例えば、< !-- #EXEC CMD2=“CALL DTLSET PARM(‘&&CODE’)” -->と記述すると、 変数 &&CODE の値が置換わり、プログラム DTLSET が実行されます。
15
1-3. #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文の最後に必ず、改行コードをセットしてください。
16
** 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>
コンパイル時配列
17
2.コマンド
2-1. CRTWEBRPG (コンパイル)
CGIプログラムをコンパイルする際に使用すると、便利なコマンドです。 モジュールの作成とプログラムの作成を一度に行います。
プログラム . . . . . . . . . . > PGMID 名前 ライブラリー . . . . . . . . > LIB 名前 , *LIBL ソースファイル . . . . . . . . > SRCFILE 名前 ライブラリー . . . . . . . . > SRCLIB 名前 , *LIBL モジュール . . . . . . . . . . > MODNAME 名前 , *PGM ライブラリー . . . . . . . . > MODLIB 名前 , *LIBL , *CURLIB バインドディレクトリー . . . . > BNDDIR 名前 ライブラリー . . . . . . . . > @WEB 名前 , *LIBL , *CURLIB
パラメーター
上から順に プログラム:作成するプログラム名称 ライブラリー:作成するプログラムのライブラリー ソースファイル:コンパイルするプログラムソース ライブラリー:ソースファイルのライブラリー モジュール:モジュールの名称 ライブラリー:モジュールのライブラリー バインドディレクトリ:バインドするバインドディレクトリ名 ライブラリー:バインドディレクトリのライブラリー
18
2-2. CRTXLSF (エクセルファイル作成)
CSVファイルよりエクセルファイルをIFSのディレクトリに作成します。 CSVファイルはレコード長5000バイトで作成してください。
CSVF . . . . . . . . . . . CSVFILE 名前 ライブラリー . . . . . . . . *LIBL 名前 , *LIBL メンバー . . . . . . . . . . *FIRST 名前 , *FIRST XLSFのパス . . . . . . . . (80バイト) タイトル . . . . . . . . . . . (50バイト) 見出し . . . . . . . . . . . . (20バイト) 値の続きは+ (50項目まで可)
パラメーター
上から順に CSVF:対象のCSVファイル名 ライブラリー:CSVファイルのライブラリー メンバー:CSVファイルのメンバー名 XLSFのパス:エクセルファイル名を含めたのIFSパスを指定 タイトル:エクセル画面表示の際のタイトルをセット 見出し:エクセル画面表示の際の見出しをセット
注)このコマンドで作成されたファイルをウェブブラウザに表示させるのは EXCEL97 以上で推奨しております。
19
2-3. SENDMAIL (AS400からメール送信)
IBM 社の AS/400 上で動く、 5250 グリーンスクリーン画面で実行可能なメール・クライアントです。 メールを利用するプログラム開発をサポートするツールです。
パラメーター
上から順に 宛先:メール送信先の E-MAIL アドレスを指定してください。
件名:メールに件名が表示されます。
メール本文ファイル:送信するメンバーを含むソースファイル名をいれてください。 ソースファイルは92バイトのレコード長で作成してください。 ライブラリー メンバー
発信元:ご自身の E-MAIL アドレスを指定してください。
メールサーバー:メールサーバーのアドレスをいれてください。
添付ファイル:メールに添付したい IFS 上のファイルをパス付きで入れてください。 未入力の場合は *NONE が表示されます。
宛先 . . . . . . . . . . . . . (80桁) 件名 . . . . . . . . . . . . . (80桁) メール本文ファイル . . . . . . 名前 ライブラリー . . . . . . . . *LIBL 名前 , *LIBL メンバー . . . . . . . . . . *FIRST 名前 , *FIRST 発信元 . . . . . . . . . . . . メールサーバー . . . . . . . . (80桁) 添付ファイル . . . . . . . . . *NONE (80桁)
注意! このコマンドを使用する際は、実行環境のCCSIDが5035であるのをご確認ください。 件名が文字化けする恐れがあります。
20
3.ユーティリティー
3-1. FILE UPLOAD (IFSへのファイルアップロード)
① 第一画面で入力項目が2つあります。 IFSのディレクトリ名称とキー桁見出しです。 IFSのディレクトリ名称は、@WEBにて提供のIFSディレクトリ ‘ UPLD’の 下位レベルにて作成されるディレクトリの名称をここで入力します。 ネーミングはAS400での物理ファイル名やライブラリー名などの名前をつける時の ルールに準じます。 頭は半角英文字にて入力して下さい。 キー桁見出しは、次画面のキー項目を表示する際の見出しになります。 実行ボタンを押すと次画面が表示されます。
使用方法
ブラウザに以下のURLを入力して下さい。 xxxxxxxxxxx の部分は TCP/IP ドメインを入力して下さい。 http://xxxxxxxxxxx/@WEB/AP0010.PGM
@WEBツールのアップロードサービスプログラムを使用して、AS400へのアップロードが可能です。
ご使用前に
まず、HTMLファイルを一部修正します。以下のコマンドを入力して下さい。 コマンド: STRSEU SRCFILE(@WEB/QHTMSRC) SRCMBR(AP0010) OPTION(2) STRSEU SRCFILE(@WEB/QHTMSRC) SRCMBR(AP0020) OPTION(2)
<FORM name="FORM1" method="GET" action="HTTP://XXXXXXXXXXX//@WEB/AP0020.PGM" onSubmit="return inchk()"> この『 XXXXXXXXXXX 』の部分に TCP/IP ドメインを入力してください。 修正したら保存して終了してください。
21
③ 明細画面ではキー入力項目、ファイル名(パス)*3、備考*3が表示されます。 キー項目には、キーになる変数を入力して下さい。 ファイル名は、参照ボタンを押すとファイルの選択画面が表示されるので、 そこから選択してください。 備考は、必須入力ではありません。 実行ボタンを押すと、ファイルがAS400のIFSディレクトリ ‘ UPLD’の 指定ディレクトリにアップロードされます。
22
3-1. UPLOAD TO PF (ファイルをQSYSへアップロード)
@WEBツールのアップロードサービスプログラムを使用して、 AS400のQSYSへアップロードが可能です。
ご使用前に
まず、HTMLファイルを一部修正します。以下のコマンドを入力して下さい。 コマンド: STRSEU SRCFILE(@WEB/QHTMSRC) SRCMBR(AP0060) OPTION(2) <FORM name="FORM1" method="POST“
action="HTTP://XXXXXXXXXXXXXXX/@WEB/AP0070.PGM" ENCTYPE="multipart/form-data" onSubmit="return inchk()"
> この『 XXXXXXXXXXX 』の部分に TCP/IP ドメインを入力してください。 修正したら保存して終了してください。
使用方法
ブラウザに以下のURLを入力して下さい。 xxxxxxxxxxx の部分は TCP/IP ドメインを入力して下さい。 http://xxxxxxxxxxx/@WEB/ULTOPF.PGM
上記の画面が出力されます。
23
① PCファイルのパスを入力します。参照ボタンでファイルの選択が可能です。
送信先(AS)の設定を行います。
送信元の設定を行います。
① ファイル:既存もしくは新規の名前を入力してください。 ソースファイルの場合は、アップロード用のソースファイルを予め用意しておきます。 例) コマンド: CRTSRCPF FILE(TESTLIB/QUPLDSRC) RCDLEN(240) IGCDTA(*YES) TEXT(‘ アップロード用ソースファイル ’ ) ファイルを作成したら、 WEKOBJ ライブラリー名 / ファイル名 を実行します。 オプション‘2’で権限の編集を行います。 ユーザー‘ *PUBLIC’のオブジェクト権を‘ *ALL’に変更してください。 HTTPサーバーの権限は最小限なので、既存のソースファイルへアップロードをかけようとしても、 うまくいきません。予めアップロード用のソースファイルを作成しておく必要があります。
② ライブラリー:既存のライブラリー名を入力して下さい。
③ メンバー:既存もしくは新規の名前を入力してください。データの場合、ファイル名と同じ名前の場合は ‘ *FIRST’でもかまいません。
④ テキスト:テキストをここで入力します。
24
⑤ ソース仕様タイプ:ソースとしてアップロードする場合、入力して下さい。 例) TXT,HTM
⑥ ファイル形式:ソース、データどちらかを選択します。 データの場合は、AS側には5000バイトのレコード長でファイルが作成されます。 それ以上の長さになるデータがあった場合は、途中でデータが欠落しますのでご了承ください。
⑦ データの置換え:既存のデータの後ろから追加したい場合は、‘追加’、置換の場合は ‘置換’を選択してください。新規作成の場合は、どちらで選択しても作成されます。
⑧ 入力が完了したら、『送信』ボタンを押してください。アップロードが開始されます。 アップロードが終了したら、完了画面が表示されます。
25
3-3. HTMDRV (HTML作成補助)
簡単なWEBアプリケーションを作成する際、このツールを使用することにより、 より簡単にCGIプログラムを作成することが出来ます。
初期画面を表示させる際のURL記述
http://xxxx.xxxx.xx.xx/@WEB/HTMDRV.PGM?PGMID=XXXXXXX
HTMDRV はHTML作成補助ツール名 ? から後ろの PGMID=XXXXXXX はキー画面出力HTMLファイル名を入力する このように入力すると、キー画面が表示されます。
CONTENT-TYPE: TEXT/HTML<HTML><BODY><FORM name=”XXXXXX” method=”GET” action=http://xxxx.xxxx.xx.xx/@WEB/HTMDRV.PGM><!------ ユーザープログラム名称 --><input type="hidden" name="PGMID" value="XXXXXXXXXX"> (省略)<TABLE> <TR> <TD> 得意先 </TD> <TD><INPUT type="TEXT" name="KEY" maxlength="6"></TD> </TR></TABLE>
HTML文は以下のように記述します。
action で実行するプログラムのURLを記述をしますが固定で @WEB/HTMDRV.PGM を入れてください。 <!------ ユーザープログラム名称 -->の下で指定している <input> の value には、ユーザーが用意したプログラムを記述してください。 入力項目の部分(例の場合は得意先)の <input> の name は固定で “ KEY” と入力して下さい。 その他の部分は、通常のHTMLルールに従ってコーディングしてください。
26
ユーザープログラム(例)
* 得意先マスターFTOKUF IF E K DISK PREFIX(TK) * パラメーターC *ENTRY PLISTC PARM P_KEY 1000 キー群C PARM P_RTDATA 2000 返し変数 *C CALL 'EXTKEY'C PARM LRKB 1 LR区分C PARM P_KEY KEY 1000 キー群C PARM RTDATA 1000 返し変数C MOVEL(P) RTDATA W_TOKUCD 10C W_TOKUCD CHAIN TOKUFR 90C EVAL P_RTDATA = 'TOKUNM=' + %TRIM(TKTOKNAM) + 得意先名C %TRIM('&') +C 'ADR=' + %TRIM(TKTOKADR) + 住所C %TRIM('&')C SETON LRC RETURN補助ツールからパラメーターが渡ってくるので指定します。1000 バイトのキー値が入ってくるパラメーターと2000 バイトの補助ツールに返す変数のパラメーターを指定します。キーの抜き出し処理は、 EXTKEY というプログラム(@WEB提供プログラム)で行います。LR区分パラメーターは、データの終了時に ‘ E’ がセットされます。通常は、ブランクをセットしておきます。キー群パラメーターは補助ツールから取得したキー群データを最初にセットしておきます。2回目以降は、セットしません。返し変数パラメーターは、取得したキーデータがセットされます。キーが複数ある場合は、このプログラムを繰り返しCALLして下さい。一つずつHTMLの記述順にキーデータが取得できます。パラメーターセット方法は、 変数の名前 =変数値 & です。複数セットする場合は、’ &’の後ろに続けてセットしてください。
ユーザープログラムから渡された変数を使用して表示するHTMLファイルの名称は、ユーザープログラム名称と同じにしてください。EX) ユーザープログラムが『 PGM01』の場合、HTMLは『 PGM01』
・開発環境について HTML作成補助ツールを使用する場合は、ライブラリーは CGILIB で開発してください。 HTMLファイルは、 CGLIB/QHTMSRC で作成してください。 HTML作成補助ツールは固定で、CGILIBのプログラムと QHTMSRC で作成された HTMLファイルを探しにいきます。
27
Ⅳ.サンプルプログラム
i-webRPGのサンプルを入れてあるので、参考にして下さい。 得意先照会がサンプルとして QSMPSRC に入っています。
1-1.キー画面表示処理
************************************************************************** * メイン ************************************************************************** * ◆標準出力◆ C CALLB '#OUT_HTML' C PARM 'XXXXXX' LIB 10 ライブラリ名 C PARM 'XXXXXXX' FIL 10 ファイル名 C PARM 'SP0010H' MBR 10 メンバー名 C PARM DATA 2000 変数 * * ◆終了◆ C SETON LR C RETURN
キー画面 プログラム:SP0010
@WEBツール提供の標準出力プログラムをCALLBにて呼び出します。
“LIB”パラメータには、HTML文が書かれたソースが入っているライブラリを指定します。
“FIL”パラメータは、HTML文が書かれたソースが入っているファイル名を指定します。
“MBR”パラメータには、HTML文が書かれたメンバー名を指定します。
“DATA”パラメータはここでは使用しません。変数データをセットする際に使用します。
1.@WEBツールを使用してCGIプログラムを作成
28
1-2.キー画面用HTMLソース
CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 </TITLE> </HEAD> <BODY bgcolor="lightGrey"> <FORM name="FORM1" method="GET" action="HTTP://XXX.XXXX.XX.XX/XXXX/SP0020.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>
HTMLソース(SP0010H)
必ず記述してくださいこの後にはブランク行を入れてください。
<FORM> ~ </FORM> の間にある <INPUT> タグで指定したフィールドの変数値が渡されます。
ここでは、“TOKUCD”の値が渡されます。(イメージ: TOKUCD=入力した値)
29
1-3.明細画面表示処理
* 得意先マスター FTOKUI IF E K DISK PREFIX(TK) ************************************************************************** * 得意先マスターの構成 * TOKCD 10A COLHDG(' コード ') * TOKNAM 30O COLHDG(' 得意先名 ') * TOKADR 30O COLHDG(' 得意先住所 ') * * キーは TOKCOD ************************************************************************** * データ構造(DS) ************************************************************************** * @WEBツールの定義 * * 変数取得 (GET) D #GET_FORM PR 2000 EXTPROC('#GET_FORM') D 10 VALUE D 1
明細画面 プログラム:SP0020
@WEBツールを使用します。GET_FORM は、環境変数を取得し、キーデータを返すプログラムです。
2000 バイトのパラメータは出力パラメータです。変数値が返ってきます。
10バイトのパラメータは入力パラメータです。取得したい変数の名前をセットします。
1バイトのパラメータは入力パラメータです。返ってくる変数値のパターンをここで指定します。今回は、ブランクをセットします。
30
************************************************************************** * メイン ************************************************************************** * ◆環境変数より入力情報取得◆ C CLEAR W_TOKUCD 10 C CLEAR field 10 C CLEAR option 1 * 得意先 C MOVEL(P) 'TOKUCD' field C EVAL W_TOKUCD = #GET_FORM(field:option) * * ◆得意先マスターより情報を取得◆ C W_TOKUCD CHAIN TOKUIR 90 * データがなかったらエラー画面表示 C IF *IN90 = *ON C MOVEL(P) 'AP9999' @@PGMID * データがあれば変数を置き換えるパラメータにセット C ELSE C EVAL DATA = 'TOKUNM=' + %TRIM(TKTOKNAM) + 得意先名 C %TRIM('&') + C 'ADR=' + %TRIM(TKTOKADR) + 住所 C %TRIM('&') C ENDIF * * ◆標準出力◆ C CALLB '#OUT_HTML' C PARM 'XXXXXX' LIB 10 ライブラリ名 C PARM 'XXXXXXX' FIL 10 ファイル名 C PARM ‘SP0020H’ MBR 10 メンバー名 C PARM DATA 2000 変数 * * ◆終了◆ C SETON LR C RETURN
明細画面 プログラム:SP0020
ここで得意先コードを取得します。Fieldに‘ TOKUCD’とセットします。Optionは今回はブランクです。W_TOKUCD に変数値がセットされます。
@WEBツールの #OUT_HTML のパラメータ“DATA”に変数定義をセットします。
データ上はこうなります。TOKUNM=(株)○○システム &ADR=○○市○区2-○-3 &
変数の名前 =変数 & というルールです。複数項目の場合は、 & の後に続けてセットしてください。
31
1-4.明細画面用HTMLソース
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> <!------- ボディの表示 --> <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>
HTMLソース(SP0020H)
斜体の部分 &&TOKUNM と &&ADR が@WEBツールの #OUT_HTML の “ DATA” パラメータにセットし、置換処理が行われるフィールドです。置換処理が行われる範囲は、<!-- FLDREP START -->と <!-- FLDREP END --> の間です。置換対象は &&変数名 で記述します。
例えば…&&TOKUNM は (株)○○システム&&ADR は ○○市○区2-○-3
実際は上記のように置き換わります。
<!-- FLDREP START -->と <!-- FLDREP END -->はWEBのHTML文には記述されません。
32
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>
1-5.エラー面用HTMLソース
33
2.HTML作成補助ツールを使用してCGIプログラムを作成
2-1.URL入力
http://xxx.xxxx.xx.xx/xxxx/QHTMDRV.PGM?PGMID=AP0030H
HTML作成補助ツール名
キー画面出力HTMLファイル名
URLを入力しキー画面を出力させる
34
HTMLソース(SP0030H)
2-2.キー画面用HTMLソース
CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 </TITLE> </HEAD> <BODY bgcolor="lightGrey"> <FORM name="FORM1" method="GET" action="HTTP://xxx.xxxx.xx.xx/@WEB/HTMDRV.PGM"> <!------ ユーザープログラム名称 --> <input type="hidden" name="PGMID" value=“SP0040"> <!------ タイトルの表示 --> <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="KEY" 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>
HTML作成補助ツールのプログラムを指定します。
変数項目セットプログラムを指定します。明細表示HTMLファイル名はこの名前と同じにしてください。
この部分が、HTML作成補助ツールのプログラムに渡ります。
35
2-3.変数項目セット
プログラム:SP0040
* 得意先マスター FTOKUI2L01 IF E K DISK PREFIX(TK) ************************************************************************** * パラメータ ************************************************************************** C *ENTRY PLIST C PARM P_KEY 1000 キー群 C PARM P_RTDATA 2000 返し変数 ************************************************************************** * メイン ************************************************************************** * ◆キー取得◆ C CALL ‘QEXTKEY' C PARM LRKB 1 終了区分C PARM P_KEY KEY 1000 キー群 C PARM RTDATA 1000 返し変数C MOVEL(P) RTDATA W_TOKUCD 10 * * ◆得意先マスターより情報を取得◆ C W_TOKUCD CHAIN TOKUI2R 90 C IF *IN90 = *ON C MOVEL(P) *BLANK TKTOKNAM C MOVEL(P) *BLANK TKTOKADR C ENDIF * ◆変数を置き換えるパラメータをセット◆ C EVAL P_RTDATA = 'TOKUNM=' + %TRIM(TKTOKNAM) + 得意先名 C %TRIM('&') + C 'ADR=' + %TRIM(TKTOKADR) + 住所 C %TRIM('&') * * ◆終了◆ C SETON LR C RETURN
HTML作成補助ツールからパラメータが渡ってきます。
キー群パラメータは、1つもしくは複数のキーの値が入っています。今回は、得意先コードのみが入っています。
返し変数パラメータは、HTML作成補助ツールに渡すパラメータです。変数項目を渡します。
ここで、キー取得のプログラムを使用して1つづつキーの値を取得します。今回は得意先コードのみなので一回しか呼び出していません。
終了区分パラメータは、データの終了時に ‘ E’がセットされます。通常はブランクをセットします。
キー群パラメータはHTML作成補助ツールから取得したキー群データを最初にセットしておきます。2回目以降は、セットしません。
返し変数パラメータは、取得したキーデータがセットされます。
変数値をセットしていきます。セット方法は@WEBツールの#OUT_HTML (標準出力)プログラムのDATA パラメータのセット方法と同じです。
36
HTMLソース(SP0040)
2-4.明細画面用HTMLソース
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> <!------- ボディの表示 --> <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>
SP0020Hと記述は同じです。