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 の解説書などに定義されているパラメータより長いパラメータを指定しても
実行エラーにはならない。
このことを利用してあらかじめ余分の長さをバラメータの後ろに追加しておけば、
将来のリリース・アップによってパラメータが拡張されても実行エラーにはならない。
製品としてのソフトウェアを配布する場合はユーザーがいつリリース・アップするかを
把握できないのでこのような配慮は必須となる。