サブファイルのようなリスト形式の更新の例を紹介しよう。
リスト形式の更新系の適用業務が重要であるのは、リスト形式としての
全フィールドの更新はないにしても、チェック・ボックスが行の先頭に埋め込まれていて
チェックを入れてレコードの保守を行っている例は Webでは、いくらでも見かける。
例えば次のような MSN Hotmail の例がそうである。
ところがリスト形式の表示の適用業務の作成がかなり困難で、さらには
このようなリスト形式の更新系は全くできないという Web化ツールが国内でも
販売されていてメーカーは、このことをひた隠しにしているのは、ユーザーにとって
良心的であるとは言えないと思われる。
ちなみにそのマニュアルには POST メソッドでは 「CGI 側で値を取り出せるのは
一回だけである」とも書かれてあった。そのような変な仕様は IBM にも Apache にも全く存在しない。
何を記述してもよいかと言っても無茶な記述はユーザーの信用を無くすだけである。
それはともかく RPG# で Wizard 生成された RPG# ソースの更新にかかわる部分だけを
抜き出してみたのが次のソースである。
--------------------------------------------------------------------------------------------
D*( ファイル情報データ構造 )
D INFDSF DS
D SFLRRN 376 377B 0
:
0117.00 *********************************************************
0118.00 P SFLCTL01_UPD B EXPORT
0119.00 *********************************************************
0120.00 * 更新ボタンが押されたときの記述を行います。
0121.00 D PI
0122.00 C READ SFLCTL01 99
0123.00 C MOVE *ZEROS ADDRCD
0124.00 C MOVE *ZEROS UPDRCD
0125.00 C MOVE *ZEROS DLTRCD
0126.00 C 1 DO *HIVAL SFLRRN
0127.00 C SETOFF 50
0128.00 C READ SFREC01 50
0129.00 C 50 LEAVE
0130.00 C SHCODE IFNE *BLANKS
0131.00 C MOVE DSPDTA SAVDTA
0132.00 C SETOFF 90
0133.00 C TRNKEY CHAIN SHOHIN 90
0134.00 C N90 MOVE SAVDTA DSPDTA
0135.00 C*
0136.00 C 90 ADD 1 ADDRCD
0137.00 C N90 ADD 1 UPDRCD
0138.00 C*-----------------------------------------------------
0139.00 C 90 WRITE SHOHINR
0140.00 C N90 UPDATE SHOHINR
0141.00 C*-----------------------------------------------------
0142.00 C END
0143.00 C END
0144.00 C WRITE UPDEND 明細画面を出力
0145.00 P E
--------------------------------------------------------------------------------------------
これは普通のサブファィル更新と何ら変わるところはない。
INFDS で定義されているサブファイル・レコードの RRN : SFLRRN を 1〜*HIVAL に
セットして LOOP して READ SFREC01 によって読み取るとることによって
REOPRT 文に定義されている変数値の内容を次から次へと読み取ることができるのである。
上記の演算だけを見ればこれが Web適用業務であると気づく人はほとんどいないであろう。
RPG# による演算はそれほど自然で無理がないのである。
いつもと同じように普通に書けて普通に処理することができる。これが RPG# である。
RPG# であれば Web化といっても肩に力を入れる必要はないのだ。