■ 可変行数の画面を表示させるにはDSPFのサブファイルのような可変行数の画面を表示させれるは、#OUT_HTMLとともにページの先頭へ戻る
#STD_OUT関数を用います。
次のようなテクニックを使います。
@HTMLファイルの中では、可変行以外の部分を記述する。
A可変行が、挿入される部分に、<!-- #EXEC CMD="CALL XXXXXX" -->
と記述する。
BXXXXXXという名前のプログラムを作成し、その中で、#STD_OUTを用いて
プログラム内から直接HTMLを出力する。
日付 品番 数量 金額 ←ココまでをHTMLファイルで記述 01/10 A010 10 1200 ←ココからは#STD_OUTで出力 01/11 B010 20 2000 01/12 C010 30 3000
HTMLファイル プログラム(PG010) ブラウザーへの出力 <table> → <table> <td>日付<td>品番<td>数量<td>金額 → <td>日付<td>品番<td>数量<td>金額 <!-- #EXEC CMD="CALL PG010"--> → SETLL FILE DO READ FILE → <td>01/10<td>A010<td>10<td>1200 CALLB '#STD_OUT" → <td>01/11<td>B010<td>20<td>2000 END → <td>01/12<td>C010<td>30<td>3000 ← SETON LR </table> → </table>
■ 次に作動するプログラムを、ボタンによって切り分ける<form>タグのaction属性は、次に表示するページ(作動するプログラム)を指定しますが、ページの先頭へ戻る
ひとつしか指定出来ませんので、そのままでは押されたボタンによって次の画面を変える事ができません。
このため、JavaScriptを用いて、action属性を書き換えます。
<script>
<!--
//------フォームサブミット
function form_submit(url){
document.FORM.action=url;
document.FORM.submit();
}
//-->
</script>
・
・
<button type="button" onClick="javascript:form_submit('PG010.PGM')">作成</button>
<button type="button" onClick="javascript:form_submit('PG020.PGM')">変更</button>
この例では、作成ボタンの場合はPG010が、変更ボタンの場合はPG020が作動します。
■ どのボタンが押されたかをプログラムで知る<input>タグでtype=hiddenの入力項目を定義し、JavaScriptで書き換えるページの先頭へ戻る
ことにより、どのボタンが押されたかを知ることが出来ます
<script>
<!--
//------フォームサブミット
function form_submit(button){
document.FORM.NEXT_ACTION.value=button;
document.FORM.submit();
}
//-->
</script>
・
・
<form method="get" name="FORM" action="PG010.PGM">
<input type="hidden" name="NEXT_ACTION" size="10">
<button type="button" onClick="javascript:form_submit('CRT')">作成</button>
<button type="button" onClick="javascript:form_submit('CHG')">変更</button>
この例では、作成ボタンの場合は『CRT』が、変更ボタンの場合は『CHG』がPG010に渡されます。
■ エラーメッセージなどの表示は(その1)HTMLファイルでページの先頭へ戻る
<font color="red">&&ERRMSG</font>
といい具合にコーディングします。
RPG側で、エラーがあった場合にERRMSGにメッセージをセットして、#OUT_HTMLを使います。
【HTMLファイル】
<font color="red">&&ERRMSG</font>
【RPG】
TOKCOD CHAIN TOKMST 90 90 EVAL DATA='ERRMSG=コードが正しくない' CALLB '#OUT_HTML' PARM LIB PARM FILE PARM MBR PARM DATA【説明】
ブラウザーへは、
@90がオンの場合、<font color="red">コードが正しくない</font>が送られ
A90がオフの場合、<font color="red"></font>が送られます
Aの場合、文字色がredが指定されていますが、表示する文字がないので何も表示されません。
90がオフの場合、DATAの中に、ERRMSGを定義する必要はありません。
#OUT_HTMLは、置換すべき値が見つからない場合、空白値でセットします。
■ エラーメッセージなどの表示は(その2)エラーの内容によって、色を変えたい場合などは、HTML文ごとセットして、#OUT_HTMLを呼びます。ページの先頭へ戻る
【HTMLファイル】
&&ERRMSG
【RPG】
TOKCOD CHAIN TOKMST 90 90 EVAL DATA='ERRMSG=<font color="red"> + コードが正しくない</font>' N90 EVAL DATA='ERRMSG=<font color="blue"> + コードが見つかりました</font>' CALLB '#OUT_HTML' PARM LIB PARM FILE PARM MBR PARM DATA【説明】
ブラウザーへは、
@90がオンの場合、<font color="red">コードが正しくない</font>が送られ
A90がオフの場合、<font color="blue">コードが見つかりました</font>が送られます
#OUT_HTMLは、単純に置換処理を行いますので、HTML文がデータの中に入っていれば
そのまま置換します。
■ Excel形式をダウンロードするにはWebプログラムからCRTXLSF(EXCEL作成)コマンドを呼び出し、
IFSにEXCELファイルを作成し、さらにブラウザーに書き出す事により、
ブラウザー内に直接、EXCELを開く事が出来ます。
ブラウザー WEBプログラム サブプログラム
(ユーザーのCLP)−−−−− −−−−−−−−− −−−−−−−−−−−−− 条件入力 → 1) ・検索条件を読み込み → 2) ・ワークファイルを作成 3) ・検索条件により
ワークファイルに
抜き出し4) ・CPYTOIMPFコマンドにより
CSVファイルを作成5) ← ・CRTXLSFコマンドにて
EXCELファイルを
IFSに作成EXCEL表示 ← 6) ・IFS内のEXCEL
ファイルをブラウザーに
書き出し
これにより、面倒な操作無しに、条件入力の結果で、直ぐにExcelを開く事が出来ます。
IFS内のExcelファイルをブラウザーに書き出すには、次の方法が便利です。
次のタグを持ったページを書き出します。
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=http://xyz.co.jp/IFSのディレクトリー/Excelファイル名">
このとき、Excelファイル名の拡張子は、必ずXLSにして下さい。
ページの先頭へ戻る
■ 簡単な入力チェックをブラウザー側で行うには(未入力チェック)簡単な入力は、チェックは、RPGプログラムに戻さなくても、
Javascriptを用いて、ブラウザー側で行う事が出来ます。
以下の例では、項目の未入力チェックを行い、メッセージを出します。
<script> <!-- //------フォームサブミット function form_submit(){ if(input_chk()==false){return;} document.FORM.submit(); } //------入力チェック function input_chk(){ //得意先コードのチェック if (document.FORM.TOKCD.value==""){ window.alert("得意先コードが未入力");return false;} return true; } ・ ・ <form method="GET" name="FORM" > 得意先コード:<input type="text" name="TOKCD" size="6" > <button type="button" onClick="javascript:form_submit()">送信</button> </form>
ページの先頭へ戻る
■ RPGから直接コマンドを実行させるにはRPGの中から、(CLを呼び出すなどせずに)直接コマンドを実行出来ます。
ファイルにOVRDBFをかけてからOPENしたり、ジョブのCCSIDを5035に変えたり
いちいちCLを作らなくても簡単に処理できます。
下の例では、SYOHINというファイルをプログラム内でOVRDBFを行ってから、
OPENしています。
FSYOHIN IF E K DISK USROPN * C EVAL cmd='OVRDBF SYOHIN CGILIB/SYOHIN' C CALL 'QCMDEXC' 90(←真中の標識です) C PARM cmd 500 C PARM 500 cmd_len 15 5 C OPEN SYOHIN C READ SYOHIN なお、D仕様書で以下の定義を行っておけば、 90がオン(エラー発生)のときに、メッセージ番号が取得できます。 D SDS D CPF_MSGNO 40 46
ページの先頭へ戻る