Parameters
The parameters are a list of parameters for the method. A parameter declaration has the following syntax.
name[, name, name...] : type [usage];
The usage value can be constant, input, io (input-output), or output. If you do not specify a usage, a default of constant is assumed.
The parameter usages are as follows.
-
For constant and input parameters, the parameter value specified in the method call is passed to the corresponding parameter in the called method.
You cannot assign to an input parameter.
-
For output parameters, the value is passed in the reverse direction, from the parameter of the called method back to the corresponding parameter of the caller.
-
This copying back of the parameter value occurs when the called method returns, following any epilog that may be defined.
-
For output parameters of type Date, Time, TimeStamp, and TimeStampOffset, they are initialized to the current date, time, or date and time value when the called method begins execution.
-
-
For io parameters, the parameter value is passed in both directions, as follows.
-
From the caller to the called method when the method begins execution.
-
From the called method back to the caller when it returns, following any epilog that may be defined.
-
You can define parameters only for conditions that are not constraints, and the parameters must be constant parameters. (For more details, see "
For details about promoting a local variable to be a parameter of the current method, see "
As the name implies, constant parameters cannot be updated or modified in any way within the body of the method. Specifically, the following restrictions apply to constant parameters.
-
You cannot assign to the parameter.
-
You cannot assign to properties of the parameter object.
-
Updating methods cannot be invoked for the parameter.
-
Updating methods cannot be invoked for properties of the parameter object.
The following table lists the use of a primitive type parameter in a method.
Usage | Value Passed into Method | Parameter Value Can Be Updated in Method |
---|---|---|
constant | Yes | No |
input | Yes | Cannot be updated by assignment, but can be updated within an updating primitive type method by using the self system variable |
output | No | Yes |
io | Yes | Yes |
The following table lists the use of a parameter containing an object reference in a method.
Usage | Reference Passed into Method | Object Referenced By Parameter Can Be Updated | Parameter Can Be Assigned New Object Reference |
---|---|---|---|
constant | Yes | No | No |
input | Yes | Yes | No |
output | No | Not applicable | Yes |
io | Yes | Yes | Yes |
When a parameter is an object reference, the usage of a parameter also determines the type of reference that can be passed by using the parameter, as listed in the following table.
Usage | Types that Can Be Passed to Method | Reason |
---|---|---|
constant | Reference of the same type as the parameter or any of its subclasses | Equivalent to the calling method assigning a value to the parameter in the method being called |
input | Reference of the same type as the parameter or any of its subclasses | Equivalent to the calling method assigning a value to the parameter in the method being called |
output | Reference of the same type as the parameter or any of its superclasses | Equivalent to the method being called assigning a value to the variable in the calling method |
io | Reference passed must be of the same type as the parameter | Combination of input and output, so an exact match is required |
For details about pseudo types and passing variable parameters to methods, see "Pseudo Types" and "Passing Variable Parameters to Methods", respectively, later in this chapter.