RPG

56. API を使用しているRPGで将来のリリース・アップにも備えるには?

RPG や他の言語でも API を使用している場合はOS/400のリリース・アップによって

予告無く APIのパラメータの長さなどが拡張されてしまう。

これに気づかずにそのまま使用しようとするとたちまち実行エラーで停止してしまう。

かと言ってリリース・アップの都度、すべての機能を毎度、毎度確認するのも大変で

ある程度、拡張に備えておく方法はないものだろうか?

下記のRPGソースの一部を見て欲しい。

0033.00      I* リストデータ・セクション ... フィールドAPI
0034.00      IRCVAR1      DS                                      
0035.00      I                                        1  10 FLDNAM
0036.00      I                                       11  11 FLDTYP
0037.00      I                                       12  12 FLDUSG
0038.00      I                                    B  13  160FLDOUT
0039.00      I                                    B  17  200FLDINP
0040.00      I                                    B  21  240FLDBYT
0041.00      I                                    B  25  280FLDKTA
0042.00      I                                    B  29  320FLDDEC
0043.00      I                                       33  82 FLDTXT
0044.00      I                                       83  84 FLDHNS
0045.00      I                                    B  85  880FLDHNL
0046.00      I                                       89 152 FLDHNG
0047.00      I                                      153 172 FLDCH1
0048.00      I                                      173 192 FLDCH2
0049.00      I                                      193 212 FLDCH3
0050.00      I                                      213 312 RLSWRK
0051.00 V4.4 I                                      313 448 RLSWR2

この最後の RLSWRK と RLSWR2 は将来への予備である。

iSeries400 のAPI の多くは C言語で書かれていてパラメータはポインターで記述されている。

それゆえ API の解説書などに定義されているパラメータより長いパラメータを指定しても

実行エラーにはならない。

このことを利用してあらかじめ余分の長さをバラメータの後ろに追加しておけば、

将来のリリース・アップによってパラメータが拡張されても実行エラーにはならない。

製品としてのソフトウェアを配布する場合はユーザーがいつリリース・アップするかを

把握できないのでこのような配慮は必須となる。