Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


SmartPad4i(Cobos4i) 1レコードで1000byte超えのサブファイルを使用する方法

SmartPad4i , Cobos4iではRPGⅢプログラムでサブファイルを使用する際、1レコードで1000byteの転送がデフォルトの設定となります。 ※RPGLE , COBOLでは32676byteになります。
そのため、サブファイルでComboボックスを使用する場合等、1レコードに多くのデータを設定したい場合には、RPGⅢプログラムを変更する必要がございます。
Tipsではその方法についてご説明します。

1レコードで1000byteを超えるか確認

サブファイルに項目数の多いコンボボックスを複数設定している場合、1レコードの出力データが1,000byteを超えることがあります。

ライブラリに展開されたI/Oファイルを確認する場合、DSPFFDコマンドでレコード長を確認できます。
レコード長が1,000byteを超える場合には、RPGをご変更ください。

例) TIPS2505ライブラリのTIPS0102Oファイルを確認する場合

DSPFFD FILE(TIPS2505/TIPS0102O) 

RPGⅢの変更

WORKING BUFFERの変更

展開されたRPGⅢプログラムのWORKING BUFFERの箇所を書き換えます。
以下のようにSPBUFFは1,000byteのサイズです。

0059.00       * WORKING BUFFER                                      
0060.00      ISPBUFF      DS                                        
0061.00      I                                        1 250 SPBUF1  
0062.00      I                                      251 500 SPBUF2  
0063.00      I                                      501 750 SPBUF3  
0064.00      I                                      7511000 SPBUF4  

DSの一つ目のサイズを調整します。
最大9,999byteに設定可能です。

0060.00      ISPBUFF      DS                                        
0061.00      I                                        19999 SPBUFT 
0062.00      I*                                      251 500 SPBUF2  
0063.00      I*                                      501 750 SPBUF3  
0064.00      I*                                      7511000 SPBUF4 

DSの「繰返し」数の変更

レコードサイズが大きい場合、RPGⅢコンパイル時にCPF6563「作成するプログラムが大きすぎる」のエラーが発生します。
プログラムサイズ制限のためです。
その場合、9999ある繰返し要素の数値を減らした後にコンパイルをしてください。

0033.00      ISOOF02    E DSTIPS0102O              9999 
0034.00      ISOIF02    E DSTIPS0102I              9999 

例) 9999から999に変更

0033.00      ISOOF02    E DSTIPS0102O               999     
0034.00      ISOIF02    E DSTIPS0102I               999