DEFINE FUNCTION
function-name
|
[return-data-definition] |
[function-data-definition] |
statement... |
END-FUNCTION
|
This document covers the following topics:
For an explanation of the symbols used in the syntax diagram, see Syntax Symbols.
Related Statement: DEFINE
PROTOTYPE
The DEFINE FUNCTION
statement is used to define a
function which is stored as a Natural object of the type function. A function
object may contain only one DEFINE FUNCTION
statement.
The DEFINE FUNCTION
statement defines the function
name, the parameters, the local and application-independent variables, the
function result and the statements forming the operation logic. These
statements are executed when the function is called.
For further information, see the following sections in the Programming Guide:
Natural object type Function
Syntax Element | Description |
---|---|
function-name
|
Function Name:
You may not use the same function name twice in one library. |
return-data-definition
|
Return Data Definition Clause:
For details on this clause, see Return Data Definition. |
function-data-definition
|
Function Data Definition Clause:
For details on this clause, see Function Data Definition. |
statement... |
Statement(s) to be Executed:
Defines the operation section which is executed when the function is called. It forms the function logic. |
END-FUNCTION
|
End of DEFINE FUNCTION Statement:
The Natural reserved word |
RETURNS
[variable-name]
|
(format-length[/array-definition]) | [BY VALUE ]
|
|||||||
[(array-definition)] HANDLE OF
OBJECT |
|||||||||
( |
A |
[/array-definition]) |
DYNAMIC |
||||||
U |
|||||||||
B |
The return-data-definition
clause defines the
format/length and, if applicable, the array structure of the result value returned by
the function.
Syntax Element Description:
Syntax Element | Description |
---|---|
variable-name
|
Return Value Name:
Optionally, you may specify a name which is used to access the return field within the function coding. If no such name is specified, the function name is used instead. |
format-length
|
Format/Length Definition:
The format and length of the result field. For information on format/length definition of user-defined variables, see Format and Length of User-Defined Variables in the Programming Guide. |
array-definition |
Array Dimension Definition:
With For further information, see |
HANDLE OF
OBJECT |
Handle of Object:
Used in conjunction with NaturalX. For further information, see NaturalX in the Programming Guide. |
A , U or B |
Data Type:
Alphanumeric (A), Unicode (U) or binary (B) for a dynamic result. |
DYNAMIC |
Dynamic Variable:
The function result may be defined as For information on processing dynamic variables, see Introduction to Dynamic Variables and Fields in the Programming Guide. |
BY
VALUE |
BY VALUE Option:
If The format/length of the "receiving" field is either
For data transfer compatibility the rules outlined in Rules for Arithmetic Assignment and Data Transfer in the Programming Guide apply. If |
DEFINE DATA
|
||||||||||
PARAMETER
|
||||||||||
LOCAL
|
USING
|
|||||||||
local-data-definition | ||||||||||
[INDEPENDENT aiv-data-definition
]
|
||||||||||
END-DEFINE
|
The function-data-definition
clause defines the
parameters which are to be provided when the function is called, and the data fields
used by the function, such as local and application-independent variables. A global data
area (GDA) cannot be referenced inside the function definition.
Syntax Element Description:
Syntax Element | Description |
---|---|
PARAMETER USING
parameter-data-area |
PDA Name:
Specify the name of the parameter data area (PDA) that contains data elements which are used as parameters in a function call. See also Defining Parameter
Data in the |
PARAMETER
parameter-data-definition |
Parameter Data Definition:
Instead of defining a parameter data area, parameter data can also be defined directly within a function call. See also Parameter
Data Definition in the |
LOCAL USING
local-data-area |
LDA Name:
Specify the name of the local data area (LDA) to be referenced. See also Defining Local
Data in the |
LOCAL USING
parameter-data-area |
PDA Name:
Specify the name of a parameter data area (PDA). Note: See also Defining Local
Data in the |
LOCAL
local-data-definition |
Local Data Definition:
For information on how to define elements or fields within the statement
itself, that is, without using an LDA or PDA, see the section Local Data
Definition in the |
INDEPENDENT
aiv-data-definition |
AIV Data Definition:
Can be used to define a single or multiple application-independent variables (AIVs). See Defining
Application-Independent Variables in the |
END-DEFINE |
End of Clause:
The Natural reserved word |
** Example 'DFUEX1': DEFINE FUNCTION ************************************************************************ DEFINE FUNCTION F#FIRST-CHAR RETURNS #RESULT (A1) DEFINE DATA PARAMETER 1 #PARM (A10) END-DEFINE /* #RESULT := #PARM /* First character as return value. END-FUNCTION * END
The function F#FIRST-CHAR
is used in the example program
DPTEX2
in library SYSEXSYN
. See Examples in the
DEFINE PROTOTYPE
statement description.
** Example 'DFUEX2': DEFINE FUNCTION ************************************************************************ DEFINE FUNCTION F#FACTOR RETURNS (I2/1:3) DEFINE DATA PARAMETER 1 #VALUE (I2) END-DEFINE /* F#FACTOR(1) := #VALUE * 1 F#FACTOR(2) := #VALUE * 2 F#FACTOR(3) := #VALUE * 3 /* END-FUNCTION * END
The function F#FACTOR
is used in the example program DPTEX1
in library SYSEXSYN
. See Examples in the DEFINE PROTOTYPE
statement description.