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