PARM および PLIST を使用したパラメーターの受け渡し
固定形式呼び出しを使用してパラメーターを渡す場合には、
PARM および PLIST 命令を使用してパラメーターを渡さなければなりません。 すべてパラメーターは参照によって渡されます。操作記述子の受け渡しを指定することができ、
またパラメーターの省略も指示できます。
PARM 命令の使用
PARM 命令はプロシージャーで受け渡しが行われるパラメーターを識別するため
に使用されます。 各パラメーターは別々の PARM 命令で
定義されます。 結果のフィールドにパラメーターの名前を指定します。すなわち、この名前は
呼び出す / 呼び出されるプロシージャーにおける名前と同じである必要はありません。
演算項目 1 および演算項目 2 は任意指定で、変数またはリテラルを指
示します。これらの値は、これらの項目が呼び出すプログラム/プロシージャーか、あるいは
呼び出されるプログラム/プロシージャーにあるか
によって、結果フィールドに渡されたり、あるいは結果フィールドから受け取られます。 表 29
は、演算項目 1 と演算項目 2 が使われる方法を示します。
表 29. PARM 命令の演算項目 1 および演算項目 2 の意味
状況 |
演算項目 1 |
演算項目 2 |
呼び出し元
プロシージャー
|
戻り時に結果フィールドから転送される値。 |
呼び出し時に結果フィールドに入れられる値。 |
呼び出される
プロシージャー
|
呼び出し時に結果フィールドから転送される値。 |
戻り時に結果フィールドに入れられる値。 |
注:
演算項目 1 または結果フィールドへの転送が行われるのは、
呼び出されたプロシージャーが正常に呼び出し元に戻った時だけです。データを転送しようとした時にエラーが起こった場合
には、転送は完了しません。
プロシージャーの呼び出し時に十分なパラメーターが指定されていない場合
には、未解決のパラメーターが呼び出されたプロシージャーによって使用され
た時にエラーが起こります。 エラーを避けるためには次のどちらかを
行うことができます。
- 渡されたパラメーターの数を調べるために %PARMS を検査する。%PARMS の
使用例については、渡されるパラメーターの数の検査を参照してください。
- 渡されないパラメーターの PARM 命令の結果フィールドに *OMIT を指定し
てください。 呼び出されたプロシージャーは、%ADDR (パラメーター) = *NULL
を使用して、パラメーターが値 *NULL
をもっているかどうかを調べることによってパラメーターが省略されたかどうかを調べることができます。詳細については、パラメーターの省略を参照してください。
PARM 命令を指定する時には、次の点に留意してください。
- 1 つまたは複数の PARM 命令を PLIST 命令の直後に指定しなければなりません。
- 1 つまたは複数の PARM 命令を CALL または CALLB 命令の直後に指定することが
できます。
- PARM 命令の結果フィールドに複数回繰り返しデータ構造が指定された時には
、そのデータ構造のすべての繰り返しが単一のフィールドとして渡されます。
- PARM 命令の演算項目 1 と結果フィールドには、リテラル、先読みフィールド、
名前付き固定情報、またはユーザー日付予約語を入れることはできません。
- 次の規則が非プロトタイプ・パラメーターの *OMIT に適用されます。
- *OMIT は、CALLB 命令の直後にある PARM 命令か、CALLB で使
用される PLIST の中でしか使用することができない。
- *OMIT が指定された場合には、PARM 命令の演算項目 1 および演算項目 2
はブランクでなければならない。
- *ENTRY PLIST の一部である PARM 命令に *OMIT を使用することはできな
い。
- 上記のほかにも PARM 命令コードの使用時に適用される制約事項があります。これらの制約事項の
詳しい説明は、「WebSphere Development Studio: ILE RPG 言語解説書」を参照してください。
PARM 命令の例については、次の図を参照してください。
PLIST 命令の使用
PLIST 命令は、次のことを行います。
- 名前を定義する。この名前によって、パラメーターのリストを参照するこ
とができます。 このパラメーターのリストは、PLIST 命令の直後に置く PARM 命令によって指
定されます。
- 入力パラメーター・リスト (*ENTRY PLIST) を定義する。
PLIST 命令の演算項目 1 には PLIST 名が入っていなければなりません。 この名前は 1 つ以上の呼び出し命令の結果フィールドで指定することができます。 パラメーター・リストが呼び出されたプロシージャーの
入り口パラメーター・リストの場合には、演算項目 1 に *ENTRY が
入っていなければなりません。
プロシージャーに複数の PLIST を指定することができます。
しかし、*ENTRY PLIST は 1 つだけで、
メイン・プロシージャーにだけ指定することができます。
PLIST 命令の例については、図 47 と 図 137 を
参照してください。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.