パラメーターの受け渡しスタイルの選択
既存のプログラムまたはプロシージャーを呼び出す場合は、参照による
方法または値による方法のいずれかの、プロシージャーが予期する方法でパラメ
ーターを渡す必要があります。
パラメーターを参照により渡す必要があり、呼び出されたプロシージャー・プログラムまたはプロシージャーによって
パラメーターが変更されない場合は、読み取り専用の参照によって渡します (CONST キーワードを使用)。
値による受け渡しまたは読み取り専用参照による受け渡しを自由に選択できる場合、
大量のパラメーターがある場合は読み取り専用の参照によって渡します。
次の一般的なガイドラインに従ってください。
- パラメーターが数値またはポインターであり、配列ではない場合は、 読み取り専用の参照、または値により渡します。 これらのデータ・タイプを値により渡した場合、ごくわずかにパフォーマンスが向上します。
- それが不要の場合は、読み取り専用の参照により渡します。
図 1. VALUE パラメーターのプロシージャー DO_CALC のプロトタイプ
*-------------------------------------------------------------
* プロシージャーは 10 桁の整数値を戻します。
* 3 つのパラメーターはすべて、VALUE で渡された 5 桁の整数です。
*-------------------------------------------------------------
D MyFunc PR 10I 0 EXTPROC('DO_CALC')
D 5I 0 VALUE
D 5I 0 VALUE
D 5I 0 VALUE
....
図 2. DO_CALC プロシージャーのプロシージャー・インターフェース定義
P DO_CALC B EXPORT
*-------------------------------------------------------------
* このプロシージャーは、VALUE パラメーターとして渡された
* 3 つの数値で機能を実行し、また値を戻します。
*-------------------------------------------------------------
D DO_CALC PI 10I 0
D Term1 5I 0 VALUE
D Term2 5I 0 VALUE
D Term3 5I 0 VALUE
D Result S 10I 0
C EVAL Result = Term1 ** 2 * 17
C + Term2 * 7
C + Term3
C RETURN Result * 45 + 23
P E
図 3. CONST パラメーターの ILE CEE API CEETSTA のプロトタイプ
*------------------------------------------------------------------
* CEETSTA (省略引数のテスト) -- ILE CEE API
* 1. 存在フラグ 出力 2 進 (4)
* 2. 引数番号 入力 2 進 (4)
*------------------------------------------------------------------
D CEETSTA PR EXTPROC('CEETSTA')
D Present 10I 0
D ArgNum 10I 0 CONST
D Feedback 12A OPTIONS(*OMIT)
...
D HaveParm S 10I 0
...
C CALLP CEETSTA(HaveParm : 3 : *OMIT)
C IF HaveParm = 1
* 3 番目のパラメーターで何かを行なう
C ENDIF
CEETSTA に渡される 2 番目のパラメーターは数字フィールド、 リテラル、組み込み関数、または式とすることができます。