Dim
dim returns the dimensions of a variable.
Syntax
dim(VARIABLE_NAME)
dim(VARIABLE_NAME,INTEGER_EXPR)
VARIABLE_NAMEis the name of a variable that can include a class description.INTEGER_EXPRESSIONis an expression that returns an integer value.
Examples
# Checks if a column exists
Local File MY_TABLE [MYT]
If dim([MYT]CREDATTIM)>0
[MYT]CREDATTIM=gdatetime$
Endif
# Let's declare a multi-dimensional array of strings
Local Char STRING_ARRAYS(8) (5..16,3,1..4)
Local Integer I, NBDIM,DIMENSIONS(1..3),FIRST_INDEX(1..3)
NBDIM=dim(STRING_ARRAYS,0) : # Returns 3
For I=1 to NBDIM
DIMENSIONS(I)=dim(STRING_ARRAYS,I)
FIRST_INDEX(I)=dim(STRING_ARRAYS,-I)
Next I
# DIMENSIONS will have the following values: 12, 3, 4
# FIRST_INDEX will have the following values: 5, 0, 1
Description
If only a parameter is given, dim returns the first dimension of a variable (for example, the number of elements of a single array, or the number of rows in a double dimension array).
If the variable does not exist, dim returns -1.
If a second parameter INTEGER_EXPR is given, the result depends on the value given:
* If 0, it returns the number of dimensions.
* If N positive (N between 1 and 4), dim returns the number of elements of the Nth dimension of the variable.
* If N is negative N between -4 and -1), dim returns the value of the first index for the given dimension.
The type of the result is Integer.
Comments
If the variable corresponds to an unlimited array, the value returned is always 32767. It is therefore better to use maxtab to limit the index values on such an array.
See the following example: Local Instance MY_ORDER With C_SALESORDER
...
# Assign the quantity to 1 for all the lines of the sales order
For I=1 to maxtab(MY_ORDER.LINES)
If MYORDER.LINES(I)<>null
MYORDER.LINES(I).QTY=1
Endif
Next IAssociated errors
| Error code | Description |
|---|---|
| 10 | The second argument is not numeric. |
| 50 | The first argument is not a variable name, or the second argument is not in the range [-4,4]. |