プロシージャーが関数プロシージャーである場合には、 プロシージャー・ステートメントに RETURNS オプションを 指定しなければなりません。 さらに、呼び出しプロシージャーまたはパッケージで、 RETURNS 属性のついた入り口としてプロシージャーを宣言しなければなりません。 RETURNS オプションおよび RETURNS 属性は、 戻される値の属性を指定するために使用されます。 RETURNS オプションの属性は、RETURNS 属性の属性と 一致しなければなりません。
サブルーチンである (そのため、CALL ステートメントを使用して 呼び出された) プロシージャーは、 プロシージャー・ステートメントに RETURNS オプションを 持ってはならず、その入り口宣言は RETURNS 属性を持ってはなりません。
|
複数の属性を指定する場合は、属性をブランクで区切る 必要があります (括弧で囲まれる精度などの属性以外の場合)。
属性は、それが宣言ステートメント内にあるのと同じ方法で指定されます。 デフォルトは通常の方法で適用されます。
指定される属性は、(表 8 に示されている) スカラー変数の データ属性や位置合わせ属性になります。 ENTRY 変数は、LIMITED 属性を持たなければなりません。 また、TYPE 属性を指定して、ユーザー定義タイプ、序数、 およびタイプ付き構造体および共用体を指定することができます。
ストリングの長さおよび区域サイズは、定数で指定されなければなりません。 戻り値は、指定される長さまたはサイズを持ちます。
また、BYADDR と BYVALUE も RETURNS の属性のリストに指定することができます。 プロシージャーにいずれかの ENTRY ステートメントが含まれており、な おかつ、そのプロシージャーまたは 2 次エントリー・ポイントのどれかが、次のいずれかの値を戻 す場合、BYADDR 属性が有効でなくてはなりません。
z/OS では、BYADDR が RETURNS のデフォルトです。 C 関数を呼び出す場合、RETURNS の属性リスト内に BYVALUE が指定されていなければなりません。 これらの属性については、BYVALUE および BYADDR の使用を参照してください。