プロトタイプ・パラメーター

プロトタイプ呼び出しインターフェースはパラメーターの受け渡しと関係しているた め、パラメーターを PR の指定の直後に続けて定義しなければなりません。パラメーター定義仕様書では、そのタイプの定義に適用される次のキーワードを 使用することができます。

ASCEND
配列は昇順です。
DATFMT(形式)
日付パラメーターは (形式) と同じ形式を持ちます。
DIM(N)
パラメーターは、要素が N の配列またはデータ構造です。
LIKE(名前)
パラメーターは、キーワードによって指定された項目と同様に定義されます。
LIKEREC(名前{,タイプ})
パラメーターは、指定されているレコード様式名のフィールドと同じサブフィールドを持つデータ構造です。
LIKEDS(データ構造名)
パラメーターは、LIKEDS キーワードの中で識別されるサブフィールドと同じサブフィールドを持つデータ構造です。
PROCPTR
パラメーターはプロシージャー・ポインターです。
TIMFMT(形式)
時刻パラメーターは (形式) と同じ形式を持ちます。
VARYING
文字、図形、または UCS-2 パラメーターは可変長形式です。

これらのキーワードについては、定義仕様書のキーワードを参照してください。

パラメーター定義仕様書では、パラメーターを渡す方法を指定する次のキーワー ドも使用することができます。

CONST
パラメーターは、読み取り専用参照によって渡されます。 CONST によって定義されたパラメーターは、呼び出されたプログラムまたはプロ シージャーによって変更されてはなりません。 このパラメーター受け渡し方式によって、リテラルおよび式を渡すことができます。
NOOPT
パラメーターは、呼び出されたプログラムまたはプロシージャーで最適化さ れません。
OPTIONS(opt1 { : opt2 { : opt3 { : opt4 { : opt5 } } } })

ここで、opt1 ... opt5 には *NOPASS、*OMIT、*VARSIZE、*STRING、 *TRIM、または *RIGHTADJ を指定することができます。たとえば、OPTIONS(*VARSIZE : *NOPASS) のようになります。

次のパラメーター受け渡しオプションを指定します。

*NOPASS
パラメーターを渡す必要はありません。 1 つのパラメーターに OPTIONS(*NOPASS) を指定した場合には、それに続くすべ てのパラメーターにも OPTIONS(*NOPASS) を指定しなければなりません。
*OMIT
この参照パラメーターについて、特殊値 *OMIT が渡されることがあります。
*VARSIZE
パラメーターには、定義で指示されたより少ないデータしか含まれていない ことがあります。このキーワードが有効なのは、参照によって渡された文字パラメーター、図形パラメーター、UCS-2 パラメーターまたは配列の場合だけです。呼び出されるプログラムまたはプロシージャーには、渡されたパラメーターの長 さを判別するなんらかの手段がなければなりません。
注:
固定長フィールドの場合に、このキーワードを省略すると、パラメーターには、 定義で指示された量以上のデータが含まれることがあります。 可変長フィールドの場合、パラメーターは、定義で宣言された 最大長を持っていなければなりません。
*STRING
ヌル文字で終了するストリングとして文字値を渡します。 このキーワードが 有効なのは、値によってまたは読み取り専用参照によって渡された基底ポインター・パラメーターの場合だけです。
*TRIM
パラメーターは受け渡しの前にトリミングされます。 このオプションは、値によってまたは読み取り専用参照によって渡された、文字、UCS-2、 またはグラフィック・パラメーターの場合に有効です。 また、OPTIONS(*STRING) がコーディングされているポインター・パラメーターの場合にも有効です。
注:
ポインター・パラメーターで OPTIONS(*STRING : *TRIM) が指定されている場合には、 ポインターが直接渡される場合にも値がトリミングされます。 ポインターが指しているヌル終了ストリングは、 ブランクがトリミングされ、新しいヌル終止符が末尾に追加されて、一時ファイルにコピーされ、 その一時ファイルのアドレスが渡されます。
*RIGHTADJ
CONST パラメーターまたは VALUE パラメーター の場合、*RIGHTADJ は、図形パラメーター、UCS-2 パラメーター、また は文字パラメーターの値が右寄せされることを示します。
ヒント

オプション *NOPASS、*OMIT、および *VARSIZE を渡すパラメーターの場合、 そのプロシージャーのプログラマーは、これらのオプションが確実に処理されるようにする必要があります。 たとえば、OPTIONS(*NOPASS) がコーディングされていて、パラメーターを渡さないようにした場合、プロシージャーは、そのパラメーターにアクセスする前にそれが渡されていることをチェックする必要があります。コンパイラーは、これについては一切チェックしません。

VALUE
パラメーターは値によって渡されます。

上記のキーワードについては、定義仕様書のキーワードを参照してください。プロトタイプ・パラメーター の使用の詳細については、「WebSphere Development Studio: ILE RPG プログラマーの手引き」の プログラムおよびプロシージャーの呼び出しに関する章を参照してください。