作業用の内部配列を十分と思われる要素数を用意しておいても時には予想できない
配列の要素数のオーバーが発生することがある。
CPFエラーでは配列の指標のエラーと報告されるだけで、どの配列がオーバーしたのかを
ユーザーから開発者に知らせることはできない。
ここでは %ELEM を使って配列指標がオーバーしそうになったときにDSPLY命令によって、
ユーザーに通知する方法を紹介する。
作業用の配列を多数使用しているRPG では、非常に役に立つ手法である。
配列 FDR は次のように512項目の要素を持つ配列として定義されているとする。
D FDR S 10 DIM(512)
D AR S 1 DIM(112)
D MSR S 80 DIM(1) CTDATA PERRCD(1)
:
次の演算では配列指標の増分の妥当性を %ELEM によって検査してオーバーするようで
あれば、エラー・メッセージを表示してPGMを直ちに終了する。%ELEM によって検査して
いるので配列の要素数を変更しても演算命令を変更する必要はない。
C* フィールド情報を保管
CSR HMFMT IFEQ '1'
CSR ADD 1 FD
C IF FD > %ELEM(FDR)
C MOVE FD ARYSU 4
C MOVEL 'FDR ' ARYNAME 6
C EXSR OVRARY
C END
:
2747.00 C******************************************************
2748.00 C OVRARY BEGSR
2749.00 C******************************************************
2750.00 C MOVEL MSR(1) ERRMSG
2751.00 C MOVEA ERRMSG AR
2752.00 C 'YYYYYY' SCAN ERRMSG:1 N 50
2753.00 C 50 MOVEA ARYNAME AR(N)
2754.00 C 'XXXX' SCAN ERRMSG:1 N 50
2755.00 C 50 MOVEA ARYSU AR(N)
2756.00 C MOVEA AR ERRMSG
2757.00 C MOVEL ERRMSG DSP50 50
2758.00 C DSP50 DSPLY ANS 1
2759.00 C SETON LR
2760.00 C RETURN
2761.00 CSR ENDSR
:
** MSR -- 以下は配列 -- 変換用の配列 YYYYYY の数 XXXX がオーバーです。