%PARMS (パラメーター数の戻り)
%PARMS は、%PARMS が使用されたプロシージャーに渡されているパラメーターの 数を戻します。 サイクル・メイン・プロシージャーの %PARMS は、プログラム状況データ構造の *PARMS と同じです。
バインド呼び出しによって呼び出されたプロシージャーで %PARMS が使用される場合、 呼び出し側のプログラムまたはプロシージャーが最小操作記述子を渡さないと、%PARMS によって戻される値は使用可能になりません。 ILE RPG コンパイラーは常に 1 つを渡しますが、他の言語は渡しません。 したがって、呼び出し元が別の ILE 言語で作成されていた場合には、呼び出し時に操 作記述子を渡すことが必要になります。 操作記述子が渡されない場合、%PARMS によって戻された値は信頼できません。 操作記述子が渡されなかったとシステムによって判断された場合、%PARMS によって戻される値は -1 になります。しかし、場合によっては、システムがそれを検知できず、%PARMS によって戻される値が正しくない値 (0 以上) になることがあります。
%PARMS で戻される値には、RTNPARM キーワードが指定されたときに戻り値の処理に使用される追加の最初のパラメーターが含まれます。 詳しくは、 RTNPARMを参照してください。
詳しくは、 操作の呼び出し または 組み込み関数を参照してください。
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++
*----------------------------------------------------------------
* MaxInt - return the maximum value of the passed parameters
*----------------------------------------------------------------
P MaxInt B
D MaxInt PI 10I 0
D p1 10I 0 VALUE
D p2 10I 0 VALUE
D p3 10I 0 VALUE OPTIONS(*NOPASS)
D p4 10I 0 VALUE OPTIONS(*NOPASS)
D p5 10I 0 VALUE OPTIONS(*NOPASS)
D Max S 10I 0 INZ(*LOVAL)
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..
CL0N01Factor1+++++++Opcode(E)+Extended-factor2+++++++++++++++++++++++++++
* Branch to the point in the calculations where we will never
* access unpassed parameters.
C SELECT
C WHEN %PARMS = 2
C GOTO PARMS2
C WHEN %PARMS = 3
C GOTO PARMS3
C WHEN %PARMS = 4
C GOTO PARMS4
C WHEN %PARMS = 5
C GOTO PARMS5
C ENDSL
* Determine the maximum value. Max was initialized to *LOVAL.
C PARMS5 TAG
C IF p5 > Max
C EVAL Max = p5
C ENDIF
*
C PARMS4 TAG
C IF p4 > Max
C EVAL Max = p4
C ENDIF
*
C PARMS3 TAG
C IF p3 > Max
C EVAL Max = p3
C ENDIF
*
C PARMS2 TAG
C IF p2 > Max
C EVAL Max = p2
C ENDIF
C IF p1 > Max
C EVAL Max = p1
C ENDIF
C RETURN Max
P MaxInt E