HTTPサーバーとWeb開発

77. RPG# 入門bU

サブファイルのようなリスト形式の更新の例を紹介しよう。
リスト形式の更新系の適用業務が重要であるのは、リスト形式としての
全フィールドの更新はないにしても、チェック・ボックスが行の先頭に埋め込まれていて
チェックを入れてレコードの保守を行っている例は 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 : SFLRRN1〜*HIVAL
セットして LOOP して READ SFREC01 によって読み取るとることによって
REOPRT 文に定義されている変数値の内容を次から次へと読み取ることができるのである。
上記の演算だけを見ればこれが Web適用業務であると気づく人はほとんどいないであろう。
RPG# による演算はそれほど自然で無理がないのである。
いつもと同じように普通に書けて普通に処理することができる。これが RPG# である。
RPG# であれば Web化といっても肩に力を入れる必要はないのだ。