DEFINE FUNCTION function-name
|
[return-data-definition] |
[function-data-definition] |
statement... |
END-FUNCTION
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連トピック:ユーザー定義関数
DEFINE FUNCTION
ステートメントでは、新規ユーザー定義関数(Natural ステートメントのオペランドの代わりに呼び出し可能)を作成します。 ファンクションは、オブジェクトタイプ FUNCTION の中だけで定義できます。このオブジェクトタイプの詳細については、『プログラミングガイド』の「ファンクション」を参照してください。
function-name |
function-name は、定義される Natural ファンクションの記号名です。 この名前は、ユーザー定義変数と同じ命名規則に適合している必要があります。詳細については、『Natural スタジオの使用』ドキュメントの「ユーザー定義変数の命名規則」を参照してください。 したがって、名前は最大 32 文字で構成され、先頭の文字は英字または "#" などの一部の特殊文字になります。 1 つのライブラリ(STEPLIB メカニズムのライブラリを含む)に同じファンクション名を 2 回使用することはできません。 ファンクションの多重定義は許可されていません。 したがって、すべてのファンクション定義の名前は一意である必要があります。 |
---|---|
return-data-definition | この節の詳細については、下記の「戻りデータ定義」を参照してください。 |
function-data-definition | この節の詳細については、下記の「ファンクションデータ定義」を参照してください。 |
END-FUNCTION | DEFINE FUNCTION ステートメントを終了するには、Natural 予約語 END-FUNCTION を使用する必要があります。
|
RETURNS [variable-name]
|
(format-length[/array-definition]) | [BY VALUE ]
|
|||||||
( | A | [/array-definition]) | DYNAMIC |
||||||
U | |||||||||
B |
構文要素の説明:
RETURNS | 各ファンクションには、戻り変数の定義を 1 つだけ含めることができます。つまり、RETURNS 節を 1 つだけ指定できます。
|
---|---|
variable-name |
戻り値は variable-name を使用して割り当てることができます。 定義内で明示的な変数名を指定していない場合、ファンクション名が戻り変数として使用されます。 戻り値を配列にすることはできません。 |
BY VALUE |
|
format-length | BY VALUE を使用しない場合、RETURNS 節の format-length は、実行時に評価されるファンクションによって返される format-length と一致している必要があります。
|
array-definition | array-definition では、配列定義の次元の下限と上限を定義します。 詳細については、DEFINE DATA ステートメントの説明および「配列の次元の定義」を参照してください。
|
DYNAMIC | パラメータは DYNAMIC として定義できます。 ダイナミック変数の処理については、「ラージ変数/フィールドとダイナミック変数/フィールド」を参照してください。
|
各ファンクションオブジェクトには、ファンクションデータ定義を 1 つだけ含めることができます。
DEFINE DATA
|
||||||||||
PARAMETER
|
USING parameter-data-area
|
|||||||||
parameter-data-definition | ||||||||||
LOCAL
|
USING
|
local-data-area | ||||||||
parameter-data-area | ||||||||||
data-definition | ||||||||||
[INDEPENDENT AIV-data-definition ]
|
||||||||||
END-DEFINE
|
ファンクションでは、グローバルデータエリアを使用する別の Natural オブジェクトを呼び出すときに、独自のグローバルデータエリア(GDA)を確立します。 したがって、呼び出し側オブジェクトの現在のグローバルデータエリアを変更することはできません。 また、GDA をファンクション内で定義することはできません。
ファンクション定義を含んでいるファンクションオブジェクト:
DEFINE FUNCTION GET-FIRST-BYTE RETURNS (A1) DEFINE DATA PARAMETER 1 #PARA (A10) END-DEFINE GET-FIRST-BYTE := #PARA /* return value is assigned END-FUNCTION END