Cada comando de declaración de array puede crear o redimensionar arrays de una o dos dimensiones. Ejemplo:
  ARRAY TEXT(atTemas;100;50) 
Los arrays de dos dimensiones son esencialmente objetos del lenguaje; no es posible visualizarlos o imprimirlos.
 En el ejemplo anterior:
 - atTemas es un array de dos dimensiones
- atTemas{8}{5} es el elemento 5 (columna 5...) de la fila 8
- atTemas{20} es la fila 20 y un array de una dimensión
- Size of Array(atTemas) devuelve 100, que es el número de filas
- Size of Array(atTemas{17}) devuelve 50, que es el número de columnas de la fila 17
En el siguiente ejemplo, un puntero a cada campo de cada tabla en la base se almacena en un array de dos dimensiones:
  C_LONGINT($vlUltimaTabla;$vlUltimoCampo)
 C_LONGINT($vlNumeroCampo)
  
 $vlUltimaTabla:=Get last table number
 ARRAY POINTER(<>apCampos;$vlUltimaTabla;0) 
  
 For($vlTabla;1;$vlUltimaTabla)
    If(Is table number valid($vlTabla))
       $vlUltimoCampo:=Get last field number($vlTabla)
  
       $vlNumeroColumna:=0
       For($vlCampo;1;$vlUltimoCampo)
          If(Is field number valid($vlTabla;$vlCampo))
             $vlNumeroColumna:=$vlNumeroColumna+1
  
             INSERT IN ARRAY(<>apCampos{$vlTabla};$vlNumeroColumna;1)
  
             <>apCampos{$vlTabla}{$vlNumeroColumna}:=Field($vlTabla;$vlCampo)
          End if
       End for
    End if
 End for
En la medida en que este array de dos dimensiones haya sido inicializado, puede obtener los punteros a los campos para una tabla particular de la siguiente forma:
   
 COPY ARRAY(<>apCampos{Table(Current form table)};$apCamposActuales)
  
 For($vlElemento;1;Size of array($apCamposActuales))
    Case of
       :(Type($apCamposActuales{$vlElemento}->)=Is date)
          $apCamposActuales{$vlElemento}->:=Current date
       :(Type($apCamposActuales{$vlElemento}->)=Is Boolean)
          $apCamposActuales{$vlElemento}->:=True
    End case
 End forNota: como lo sugiere este ejemplo, las filas de un array de dos dimensiones pueden tener o no el mismo tamaño.