%PARMS は、%PARMS が使用されたプロシージャーに渡されているパラメーターの 数を戻します。 メイン・プロシージャーの場合には、%PARMS は *PARMS と同じです。
%PARMS を呼び出したプログラムまたはプロシージャーが最小操作記述子を渡して いない場合には、%PARMS によって戻された値を使用することはできません。 他の言語とは異なり、ILE RPG コンパイラーは常に 1 つの操作記述子を渡します。したがって、呼び出し元が別の ILE 言語で作成されていた場合には、呼び出し時に操 作記述子を渡すことが必要になります。 操作記述子が渡されない 場合、%PARMS によって戻された値は信頼できません。
詳細については、呼び出し命令または 組み込み関数を参照してください。
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++ * Prototype for procedure MaxInt which calculates the maximum * value of its parameters (at least 2 parameters must be passed) D MaxInt PR 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 Fld1 S 10A DIM(40) D Fld2 S 20A D Fld3 S 100A CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.. CL0N01Factor1+++++++Opcode(E)+Extended-factor2+++++++++++++++++++++++++++ C *ENTRY PLIST C PARM MaxSize 10 0 * Make sure the main procedure was passed a parameter C IF %PARMS < 1 C 'No parms' DSPLY C RETURN C ENDIF * Determine the maximum size of Fld1, Fld2 and Fld3 C EVAL MaxSize = MaxInt(%size(Fld1:*ALL) : C %size(Fld2) : C %size(Fld3)) C 'MaxSize is' DSPLY MaxSize C RETURN
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
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.