サブファイルのようなリスト形式の更新の例を紹介しよう。
リスト形式の更新系の適用業務が重要であるのは、リスト形式としての
全フィールドの更新はないにしても、チェック・ボックスが行の先頭に埋め込まれていて
チェックを入れてレコードの保守を行っている例は 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化といっても肩に力を入れる必要はないのだ。