Value
Value
is a keyword used after a Subprog or a Func declaration, to define the type of arguments transmitted to the called code.
The declaration of the arguments is not mandatory. This allows to transmit parameters with a variable type to subprograms. If they are present, the declarations must be placed just after the Subprog or Func declaration.
Value
arguments as copied in the local variable class are associated with the call level nesting. Any modification done on the arguments is not transmitted to the variable transmitted in the call.
Syntax
Value DECLARATION1 NAME(DIMENSIONS)
Value DECLARATION2 NAME(SIZE)(DIMENSIONS)
Value Instance NAME Using CLASS
Value Instance NAME(DIMENSIONS) Using CLASS
DECLARATION1
can be one of the following keywords: Tinyint, Libelle, Date, Float, Double, Decimal, Datetime, or Uuident.DECLARATION2
can be one of the following keywords: Char, Schar, Clbfile, or Blbfile.NAME
is the name of the variable declared.LENGTH
is an integer value between 0 and 20.DIMENSIONS
can be:- A single numeric value DIM, meaning that you have an array with an index range from 0 to DIM-1.
- A range of numeric values INDEX1..INDEX2, where the index varies between INDEX1 and INDEX2.
- Several indexes or index ranges separated by a comma. For multiple dimension arrays, up to four dimensions are possible.
CLASS
is a class code , which refers to the class or representation dictionary.
The dimensions and the index ranges can be omitted wherever the parenthesis is present. The dimension and index ranges are defined by the calling program. Also, the first range of an index can only be given. The total number of values is defined by the calling program.
Examples
Subprog STORE_VALUES(KEYS,VALUES,IDENTIFIER,GLOBAL_STATUS)
Value Char KEYS(20)(1..) : # Array of 20 characters starting at index 1
Value Decimal VALUES(,) : # 2 dimensions matrix of decimals
Value Char IDENTIFIER()
Value Integer GLOBAL_STATUS : # Integer
Comments
Transmitting large variables declared with Value can be harmful in terms of performance. If the values transmitted must be protected from modifications, it is also possible to use Const for the declarations. The variables transmitted will then be in read-only mode.
See also
Global, Local, Variable, Const, Tinyint, Libelle, Date, Shortint, Integer, Float, Double, Decimal, Char, Schar, Clbfile, Blbfile, Uuident, Datetime, Instance.