Compartir a través de


DIMENSION (Comando)

Crea una matriz de variables de una o dos dimensiones.

DIMENSION ArrayName1(nRows1 [, nColumns1])
   [, ArrayName2(nRows2 [, nColumns2])] ...

Parámetros

  • ArrayName1
    Especifica el nombre de la matriz. Pueden crearse múltiples matrices con un único comando DIMENSION al incluir nombres adicionales de matrices (ArrayName2, ArrayName3, etc.).

  • nRows1 [, nColumns1]
    Especifica el tamaño de la matriz que se va a crear. Si incluye solamente nRows1, se creará una matriz de una sola dimensión. Las matrices de una dimensión tienen una columna y nRows1 filas. Por ejemplo, el comando siguiente crea una matriz de una dimensión llamada gaArrayOne que contiene una columna y diez filas.

    DIMENSION gaArrayOne(10)
    

    Para crear una matriz de dos dimensiones, incluya nRows1 y nColumns1. nRows1 especifica el número de filas de la matriz y nColumns1 indica el número de columnas. El ejemplo siguiente crea una matriz de dos dimensiones llamada gaArrayTwo que contiene dos filas y cuatro columnas:

    DIMENSION gaArrayTwo(2,4)
    

    Debe especificar un tamaño para cada matriz creada con DIMENSION. En el ejemplo siguiente se crean tres matrices: gaArrayOne y gaArrayTwo de los ejemplos anteriores, y una tercera matriz llamada gaArrayThree:

    DIMENSION gaArrayOne(10), gaArrayTwo(2,4), gaArrayThree(3,3)
    

    Para enmarcar las expresiones en DIMENSION o DECLARE puede utilizar tanto paréntesis como corchetes. Por ejemplo, los dos comandos siguientes crean matrices idénticas:

    DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3)
    DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3]
    

Observaciones

DIMENSION es idéntica en cuanto a funcionamiento y sintaxis a DECLARE.

Elementos de la matriz…   El tamaño de una matriz determina cuántos elementos podrá contener. Cada elemento de la matriz puede almacenar un único fragmento de información. Para determinar cuántos elementos contiene una matriz y cuánta información puede almacenar, multiplique el número de filas (nRows1) por el número de columnas (nColumns1) de la matriz.

Los elementos de la matriz pueden contener cualquier tipo de datos y se inicializan con falso (.F.) cuando se crea la matriz por primera vez. Puede inicializar todos los elementos de una matriz al mismo valor con STORE si SET COMPATIBLE es FOXPLUS u OFF (la configuración predeterminada). Por ejemplo:

DIMENSION gaArray(10,3)
STORE 'initial' TO gaArray

Subíndices de la matriz…   Los elementos de una matriz se referencian mediante sus subíndices. Cada elemento de la matriz tiene un subíndice numérico único que lo identifica. Si la matriz es de una dimensión, el subíndice de un elemento será igual que su número de fila. Por ejemplo, el subíndice del elemento de la tercera fila de una matriz de una dimensión es 3.

La referencia a los elementos de matrices bidimensionales se realiza por medio de dos subíndices. El primer subíndice indica la ubicación de fila del elemento y el segundo la ubicación de columna. Por ejemplo, los subíndices del elemento que está en la tercera fila y en la cuarta columna de una matriz de dos dimensiones son 3,4. Si desea obtener más información acerca de los índices de los elementos de una matriz, vea ASUBSCRIPT( ).

El subíndice o los subíndices del primer elemento de una matriz empiezan siempre con 1. Si una matriz es de dos dimensiones, podrá referenciarse también con un solo subíndice. Utilice AELEMENT( ) para devolver el subíndice único de la pareja de subíndices de fila y columna de la matriz. Utilice ASUBSCRIPT( ) para devolver los subíndices de fila y columna de un único subíndice.

Redimensionamiento de matrices…   Puede cambiar el tamaño y las dimensiones de una matriz al utilizar de nuevo DIMENSION. El tamaño de la matriz puede aumentarse o disminuirse; las matrices de una dimensión pueden convertirse en matrices de dos dimensiones y las matrices de dos dimensiones pueden reducirse a una dimensión.

Si se aumenta el número de elementos de una matriz, se copiará el contenido de todos los elementos de la matriz original a la matriz que se acaba de redimensionar. El resto de los elementos de la matriz se inicializarán con el valor falso (.F.).

Cuando se aumenta o se reduce el tamaño de una matriz y SET COMPATIBLE está establecido en ON o DB4, el valor de cada elemento de la matriz se reinicializa a .F.

Ejemplo

El ejemplo 1 demuestra el resultado de aumentar el tamaño de una matriz de una dimensión. (Si escribe estos comandos en la ventana Comandos, la matriz será PUBLIC, pero será PRIVATE si los copia a un programa y lo ejecuta.)

Si se reduce el número de elementos de una matriz, se eliminarán los elementos y cualquier dato que contengan. Cuando se aplican dos dimensiones a una matriz de una dimensión, el contenido de la matriz original se copiará a la nueva matriz, en un orden de elemento por fila.

En el ejemplo 2, una matriz de una dimensión se convierte en matriz de dos dimensiones. El contenido de los elementos de la matriz de una dimensión se copia a la primera fila de la nueva matriz, seguido de la segunda fila, etc. Los elementos adicionales se inicializan con falso (.F.).

Cuando una matriz de dos dimensiones se convierte a matriz de una dimensión, el contenido de la matriz original se copia a la nueva matriz en un orden de fila por elemento. El primer elemento de la primera fila se convierte en el primer elemento de la matriz de una dimensión, el segundo elemento de la primera fila se convierte en el segundo elemento, etc.

Utilice ADEL( ) o AINS( ) para eliminar o insertar elementos de matriz, filas y columnas. Utilice APPEND FROM ARRAY, COPY TO ARRAY SCATTER y GATHER para transferir datos entre registros de tabla y matrices.

En el ejemplo 3 se crea y carga con datos una matriz de dos dimensiones. Se muestran los elementos de matriz y los datos que contienen.

* Example 1
DIMENSION marray(2)
STORE 'A' TO marray(1)
STORE 'B' TO marray(2)
CLEAR
DISPLAY MEMORY LIKE marray
DIMENSION marray(4)
DISPLAY MEMORY LIKE marray
WAIT WINDOW

* Example 2
DIMENSION marrayone(4)
STORE 'E' TO marrayone(1)
STORE 'F' TO marrayone(2)
STORE 'G' TO marrayone(3)
STORE 'H' TO marrayone(4)
CLEAR
DISPLAY MEMORY LIKE marrayone
DIMENSION marrayone(2,3)
DISPLAY MEMORY LIKE marrayone
WAIT WINDOW

* Example 3
DIMENSION sample(2,3)
STORE 'Goodbye' TO sample(1,2)
STORE 'Hello' TO sample(2,2)
STORE 99 TO sample(6)
STORE .T. TO sample(1)
CLEAR
DISPLAY MEMORY LIKE sample

Vea también

ACOPY( ) | ADEL( ) | ADIR( ) | AELEMENT( ) | AFIELDS( ) | AFONT( ) | AINS( ) | ALEN( ) | APPEND FROM ARRAY | ASCAN( ) | ASORT( ) | ASUBSCRIPT( ) | COPY TO ARRAY | DECLARE | EXTERNAL | GATHER | PRIVATE | PUBLIC | SCATTER | SET COMPATIBLE | STORE