The
MyParameters keyword is used to handle the parameters passed to a WLanguage procedure. It allows you to access the advanced information about the parameters of the current WLanguage procedure.
You have the ability to handle all the parameters or a single parameter.
This keyword can be used in the standard WLanguage procedures and in the WLanguage procedures with a variable number of parameters.
// Procedure used to shift controls
PROCÉDURE ShiftControl(*)
// This code is using a loop such as FOR ... _TO_
// to avoid recalculating the number of parameters at each iteration
// Indeed, this number of parameters is fixed.
FOR I = 1 _TO_ MyParameters..Count
MyParameters[I]..X += 10
END
Remarks
General properties on the parameters of a procedure
Two properties can be used on all the parameters of a WLanguage procedure:
| |
Property name | Effect |
---|
NbReceived | Returns the number of parameters actually received by the current WLanguage procedure. |
Occurrence | Returns the number of parameters that can be used in the current WLanguage procedure. |
Example: PROCEDURE Proc(p1, po2= "Y", po3 = "Z")
| | | |
Call | Proc("A") | Proc("A", "B") | Proc("A","B", "C") |
MyParameters..NbReceived | 1 | 2 | 3 |
MyParameters..Count | 3 | 3 | 3 |
The special parameter "*" (that is used to keep the default value) is counted as a received parameter.
Handling the parameters of a procedure
The standard WLanguage operations are available on each one of the procedure parameters via the following notation MyParameters[N] where N is the number of the parameter to use.
For example:
- MyParameters[N]: Retrieves the value of the Nth parameter of the procedure.
- MyParameters[N] =: Assigns the value of the Nth parameter of the procedure.
- MyParameters[N]++, MyParameters[N]+=, ...: Combined arithmetic operations.
- MyParameters[N]..<Property Name>: Access to a property of the element.
- MyParameters[N][...]: Access to the subscripted sub-elements of parameter value.
- MyParameters[N].<Sub-element>: Access to a sub-element of parameter value.
- MyParameters[N]:<Member>: Access to a member of parameter value
- MyParameters[N]>>xxx: Automation syntax.
Specific properties that can be used on each parameter of a procedure
The following properties can be used on the parameters received by a procedure:
| |
Property name | Effect |
---|
Default | Used to find out whether the value of the parameter is the one passed by default or if it was explicitly specified. |
ByAddress / ByReference | Used to find out whether the parameter was passed by default or by address. |
MyParameters is used to easily re-stack the parameters of a WLanguage procedure: the parameters (or some of the parameters) of the current procedure can be passed to another procedure or to a WLanguage function.
The possible syntaxes are:
- MyParameters: re-stacks all the parameters of the procedure.
- MyParameters[2 TO]: re-stacks all the parameters of the procedure from the second one.
- MyParameters[TO 3]: re-stacks all the parameters of the procedure up to the third one (inclusive).
- MyParameters[2 TO 4]: re-stacks all the parameters of the procedure from the second one to the fourth one (inclusive).
- MyParameters[2 ON 3]: re-stacks three parameters of the procedure from the second one.
- MyParameters[*]: re-stacks the additional parameters.
Remark: No WLanguage error occurs if the requested parameters do not exist: the missing parameters are ignored.
Example: Overriding Open used to write into a trace file:
PROCÉDURE Open(WinName, *)
Trace(WinName)
WL.Open(WinName, MyParameters[2 TO ])