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