タイガー!タイガー!じれったいぞー!(SE編)

AS400,WAS,GlassFish,Java,JavaEE,JSF等の開発における日々の気づきをまとめたブログ(備忘録)。

【AS400】DSPF-画面幅を超えるフィールドの取り扱い方法

5250エミュレータ画面は、基本的に80×24のサイズになっていて、小規模な業務系アプリではまったく問題なく、必要なフィールドを画面へ配備できるのですが、コメントなど画面幅を超える長さをフィールドをメンテする場合、どうしたらいいのだろう? という疑問を解決したときの話です。

まずは、1,496桁の長さのフィールドを準備しました(コメント3)。

     A                                      UNIQUE                   
     A          R RECTS00                   TEXT('テストTABLE')    
     A*                                                              
     A            NUM            3S 0       COLHDG('NUM')           
     A            COMMENT1     120A         COLHDG('コメント1')  
     A            COMMENT2     120O         COLHDG('コメント2')  
     A            COMMENT3    1496O         COLHDG('コメント3')  
     A          K NUM     



次に画面ファイルの定義です。 キーワードCNTFLDにて、折り返し桁数を指定することができました!
下記の例では、74桁目で指定しました。

     A            D1COM3    R        B 03 04REFFLD(COMMENT3)        
     A                                      TEXT('コメント3')    
     A                                      CNTFLD(74)              
     A                                      OVRDTA OVRATR           
     A                                      DSPATR(UL)         

CNTFLDを指定した画面をメンテするアプリケーションを作成し、実行してみると、下記のように1画面内で1つの長い項目をメンテできるようになりました!
74桁目で折り返しされていることがわかるかと思います。

f:id:no14141:20150223130153j:plain

注意事項

フィールド名が長すぎると、UPDDTAコマンドが使用できなくなります(データ入力画面に入りきらない場合のみ)。

> UPDDTA TSZ15PF                                      
 一部のフィールドがデータ入力画面に入りきらない。   
DFUプログラムを保管または実行することができない。