Dim

dim returns the dimensions of a variable.

Syntax

   dim(VARIABLE_NAME)
   dim(VARIABLE_NAME,INTEGER_EXPR)
  • VARIABLE_NAME is the name of a variable that can include a class description.
  • INTEGER_EXPRESSION is 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 I

Associated errors

Error codeDescription
10The second argument is not numeric.
50The first argument is not a variable name, or the second argument is not in the range [-4,4].

See also

type, maxtab.