PARM 命令の使用
PARM 命令はプロシージャーで受け渡しが行われるパラメーターを識別するため に使用されます。 各パラメーターは別々の PARM 命令で 定義されます。 結果のフィールドにパラメーターの名前を指定します。すなわち、この名前は 呼び出す / 呼び出されるプロシージャーにおける名前と同じである必要はありません。
演算項目 1 および演算項目 2 は任意指定で、変数またはリテラルを指 示します。これらの値は、これらの項目が呼び出すプログラム/プロシージャーか、あるいは 呼び出されるプログラム/プロシージャーにあるか によって、結果フィールドに渡されたり、あるいは結果フィールドから受け取られます。 表 1 は、演算項目 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 命令コードの使用時に適用される制約事項があります。これらの制約事項の詳細な説明については、「IBM® Rational® Development Studio for i: ILE RPG 解説書」を参照してください。