- byName
- Cuando especifica byName, se transcriben los datos de cada campo del
origen a un campo con el mismo nombre del destino. La operación se produce en el orden de los
campos en el origen.
A continuación se proporcionan ejemplos de origen y destino:
- origen
- Uno de los siguientes:
- Una matriz dinámica de registros fijos, pero la matriz solo es válida si el destino no es un
registro
- Un registro
- Un registro fijo
- Un campo de estructura con una subestructura
- Una matriz de campo de estructura con una subestructura, pero esta matriz solo es válida si el
destino no es un registro
- Una dataTable
- Un formulario
Un campo de estructura fija cuyo nombres sea un asterisco (*) no está disponible como campo
origen, pero sí están disponibles los campos con nombre de una subestructura de ese campo.
- destino
- Uno de los siguientes:
- Una matriz dinámica de registros fijos, pero esta matriz solo es válida si el origen no es un
registro
- Un registro
- Un registro fijo
- Un campo de estructura con una subestructura
- Una matriz de campo de estructura con una subestructura, pero esta matriz solo es válida si el
origen no es un registro
- Una dataTable
- Un formulario
Una sentencia de ejemplo es la siguiente:
move myRecord01 to myRecord02 byName;
La operación no es válida en cualquiera de estos casos:
- Hay dos o más campos en el origen con el mismo nombre
- Hay dos o más campos en el destino con el mismo nombre
- El campo origen es una matriz de campo de estructura multidimensional o una matriz de campo de
estructura unidimensional cuyo contenedor es una matriz
- El campo destino es una matriz de campo de estructura multidimensional o una matriz de campo de
estructura unidimensional cuyo contenedor es una matriz
La operación funciona de la manera siguiente:
- En un caso simple, el origen es una estructura fija pero no es un elemento de matriz y lo mismo
vale para el destino. Se aplican las reglas siguientes:
- Si no hay matrices implicadas, el valor de cada campo subordinado en la estructura de origen se
copia en el campo del mismo nombre de la estructura destino.
- Si una matriz de campos de estructura se copia en una matriz de campos de estructura, la
operación se trata como una operación move for all:
- Los elementos del campo origen se copian en elementos sucesivos del campo destino
- Si la matriz origen tiene menos elementos que la matriz destino, el proceso se detiene cuando
se copia el último elemento de la matriz origen
- En otro caso, el origen o el destino es un registro. Los campos del origen se asigna a los
campos del mismo nombre del destino.
- La mejor manera de presentar un caso menos simples es mediante un ejemplo. El origen es una
matriz de 10 registros fijos, cada una de la cuál incluye estos campos de estructura:
10 empnum CHAR(3);
10 empname CHAR(20);
El destino es una estructura fija que incluye estos campos de estructura:
10 empnum CHAR(3)[10];
10 empname CHAR(20)[10];
La operación copia el valor del campo empnum del primer registro fijo en el
primer elemento de la matriz de campo de estructura empnum, copia el valor del campo empname del
primer registro fijo en el primer elemento de la matriz de campo de estructura empname y realiza
una operación similar para cada registro fijo de la matriz origen.
La operación equivalente
ocurre si el origen es un solo registro fijo que tiene una subestructura como esta:
10 mySubStructure[10]
15 empnum CHAR(3);
15 empname CHAR(20);
- Finalmente, observe el caso en el que el origen es un registro fijo que incluye estos campos de
estructura:
10 empnum CHAR(3);
10 empname CHAR(20)[10];
El destino es un formulario, un registro fijo o un campo de estructura que tiene la
subestructura siguiente:
10 empnum char(3)[10];
10 empname char(20);
El valor del campo empnum se copia del origen al primer elemento de empnum en el
destino y el valor del primer elemento de de empname se copia del origen al campo empname en el
destino.
- byPosition
- El propósito de byPosition es copiar datos de cada campo en una
estructura en el campo de la posición equivalente en otra.
A continuación se proporcionan ejemplos de origen y destino:
- origen
- Uno de los siguientes:
- Una matriz dinámica de registros fijos, pero la matriz solo es válida si el destino no es un
registro
- Un registro
- Un registro fijo
- Un campo de estructura con una subestructura
- Una matriz de campo de estructura con una subestructura, pero esta matriz solo es válida si el
destino no es un registro
- Una dataTable
- Un formulario
- destino
- Uno de los siguientes:
- Una matriz dinámica de registros fijos, pero esta matriz solo es válida si el origen no es un
registro
- Un registro
- Un registro fijo
- Un campo de estructura con una subestructura
- Una matriz de campo de estructura con una subestructura, pero esta matriz solo es válida si el
origen no es un registro
- Una dataTable
- Un formulario
Cuando mueve datos entre un registro y una estructura fija, solo se tienen en
cuenta los campos de nivel superior de la estructura fija. Cuando mueve los datos entre dos
estructuras fijas, solo se tienen en cuenta los campos de nivel inferior (hoja) de cada estructura.
La operación no es válida si el campo origen o destino es una matriz de campo de estructura
multidimensional o una matriz de campo de estructura unidimensional cuyo contenedor sea una matriz.
La operación funciona de la manera siguiente:
- En un caso simple, el origen es una estructura fija pero no es un elemento de matriz y lo mismo
vale para el destino. Se aplican las reglas siguientes:
- Si no hay matrices implicadas, el valor de cada campo de hoja de la estructura origen se copia
en el campo de hoja de la estructura destino en la posición correspondiente.
- Si una matriz de campos de estructura se copia en una matriz de campos de estructura, la
operación se trata como una operación move for all:
- Los elementos del campo origen se copian en elementos sucesivos del campo destino
- Si la matriz origen tiene menos elementos que la matriz destino, el proceso se detiene cuando
se copia el último elemento de la matriz origen
- En otro caso, el origen o el destino es un registro. Los campos de nivel superior o campos de
hoja del origen (dependiendo del tipo de origen) se asignan a los campos de nivel superior o campos
de hoja del destino (dependiendo del tipo de destino).
- La mejor manera de presentar un caso menos simples es mediante un ejemplo. El origen es una
matriz de 10 registros fijos, cada una de la cuál incluye estos campos de estructura:
10 empnum CHAR(3);
10 empname CHAR(20);
El destino es una estructura fija que incluye estos campos de estructura:
10 empnum CHAR(3)[10];
10 empname CHAR(20)[10];
La operación copia el valor del campo empnum del primer registro fijo en el
primer elemento de la matriz de campo de estructura empnum, copia el valor del campo empname del
primer registro fijo en el primer elemento de la matriz de campo de estructura empname y realiza
una operación similar para cada registro fijo de la matriz origen.
La operación equivalente
ocurre si el origen es un solo registro fijo que tiene una subestructura como esta:
10 mySubStructure[10]
15 empnum CHAR(3);
15 empname CHAR(20);
- Finalmente, observe el caso en el que el origen es un registro fijo que incluye estos campos de
estructura:
10 empnum CHAR(3);
10 empname CHAR(20)[10];
El destino es un formulario, un registro fijo o un campo de estructura que tiene la
subestructura siguiente:
10 empnum char(3)[10];
10 empname char(20);
El valor del campo empnum se copia del origen al primer elemento de empnum en el
destino y el valor del primer elemento de de empname se copia del origen al campo empname en el
destino.
- for all
- El propósito de for all es asignar valores a todos los elementos de
una matriz destino.
A continuación se proporcionan ejemplos de origen y destino:
- origen
- Uno de los siguientes:
- Una matriz dinámica de registros, registros fijos o variables primitivas
- Un registro
- Un registro fijo
- Un campo de estructura con o sin subestructura
- Una matriz de campo de estructura con o sin subestructura
- Una variable primitiva
- Un literal o constante
- destino
- Uno de los siguientes:
- Una matriz dinámica de registros, registros fijos o variables primitivas
- Una matriz de campo de estructura con o sin subestructura
- Un elemento de una matriz dinámica o de campo de estructura
La sentencia move en este caso es equivalente a
varias sentencias assignment, una por elemento de matriz destino y se
produce un error si una asignación intentada no es válida. Para obtener detalles sobre la validez,
consulte la sección Asignaciones.
Si un elemento origen o destino tiene una estructura
fija, la sentencia move trata esa estructura como un campo de tipo CHAR a
menos que el nivel superior de la estructura especifique un tipo primitivo distinto. Cuando se esté
utilizando for all, la sentencia move no tiene
en cuenta la subestructura.
Si el origen es un elemento de una matriz, el origen se trata
como una matriz en la que el elemento especificado es el primer elemento y se ignoran los elementos
anteriores.
Si el origen es una matriz o un elemento de una matriz, cada elemento sucesivo
de la matriz origen se copia en el elemento siguiente según la secuencia de la matriz destino. La
matriz destino o la matriz origen pueden ser una mayor que la otra y la operación finaliza cuando
se copian datos del último elemento con un elemento coincidente en la otra matriz.
Si el
origen no es una matriz ni un elemento de una matriz, la operación utiliza el valor origen para
inicializar cada elemento de la matriz destino.
- for cuenta
- El propósito de for cuenta es asignar valores a un subconjunto
secuencial de elementos de una matriz destino. Ejemplos:
La operación funciona de la manera siguiente:
- Si el origen no es una matriz ni un elemento de una matriz, la operación utiliza el valor
origen para inicializar elementos de la matriz destino.
- Si el origen es una matriz, el primer elemento de esa matriz es el primero de un conjunto de
elementos a copiar. Si el origen es un elemento de una matriz, ese elemento es el primero de un
conjunto de elementos a copiar.
- Si el destino es una matriz, el primer elemento de esa matriz es el primero de un conjunto de
elementos en recibir datos. Si el destino es un elemento de una matriz, ese elemento es el primero
de un conjunto de elementos que recibe datos.
El valor
cuenta indica cuántos elementos destino deben recibir datos. El valor puede
ser cualquiera de estos:
- Un literal entero
- Una variable que se resuelve en un entero
- Un expresión numérica, pero no una invocación de función
La sentencia move es equivalente a varias sentencias
assignment, una por elemento de matriz destino y se produce un error si
una asignación intentada no es válida. Para obtener detalles sobre la validez,
consulte la sección Asignaciones.
Si un elemento origen o destino tiene una estructura
interna, la sentencia move trata esa estructura como un campo de tipo
CHAR a menos que el nivel superior de esa estructura especifique un tipo primitivo distinto. Cuando
se está utilizando for cuenta, la sentencia
move no tiene en cuenta la subestructura.
Cuando el origen y el
destino son matrices, la matriz destino o la matriz origen pueden ser una mayor que la otra y la
operación finaliza cuando tiene lugar el primero de dos sucesos:
- Se copian datos entre los últimos elementos para los que se ha solicitado la operación
- Se copian datos desde el último elemento con un elemento coincidente en la otra matriz.
Cuando el origen no es una matriz, la operación finaliza cuando tienen lugar el primero de dos sucesos:
- Se copian datos en el último elemento para el que se ha solicitado la operación
- Se copian datos en el último elemento de la matriz.
Si un registro es una matriz de registros (o un elemento de uno), el destino debe ser
una matriz de registros. Si el origen es una matriz de variable primitiva (o un elemento de una),
el destino debe ser una matriz de variable primitiva o una matriz de campo de estructura. Si el
origen es una matriz de campo de estructura (o un elemento de una), el destino debe ser una matriz
de variable primitiva o una matriz de campo de estructura.