Auxílios do VisualAge Generator

Instrução MOVEA

A instrução MOVEA desloca o conteúdo de uma matriz para outra ou inicializa os elementos de uma matriz.

>>-MOVEA--fonte----+-----+--destino----+-----------------+--;--><
                   '-TO--'             '-FOR ocorrência--'
 

Atributo Descrição
fonte Um literal, item de dados (pode ser subscrito, qualificado ou ambos), matriz ou palavra de função especial. O tipo de dados da fonte deve ser compatível com o tipo de dados do destino.
destino Uma matriz ou item de dados de uma matriz ou tabela.
ocorrência Qualquer literal numérico, item de dados (pode incluir um subscrito, ser qualificado ou ambos), ou palavra de função especial EZE que contenha um número inteiro maior que 0 e menor que 65536.

Usos

A instrução MOVEA simplifica a codificação de um programa por meio da substituição de um loop ou uma série de instruções MOVE nas seguintes ações:

Se a fonte for uma matriz (matriz de campo de variável de mapa, coluna de tabela ou item em um registro com múltiplas ocorrências), a MOVEA desloca a matriz da fonte para a matriz de destino. Se a fonte for um valor literal ou um escalar (item ou campo de valor único), a matriz de destino é inicializada com o escalar. Você pode atribuir uma posição inicial dentro de cada matriz e especificar o número de elementos que você deseja deslocar.

Subscritos

A fonte e o destino podem cada um incluir um subscrito. O subscrito especifica a posição inicial dentro dessa matriz para a operação de deslocamento da matriz. Se você não usar um subscrito, a MOVEA começa pelo primeiro elemento da matriz. O número de ocorrências da posição inicial especificada até o fim da matriz é denominado tamanho resultante. Por exemplo, se a matriz possui 10 elementos e o número 3 foi especificado como o subscrito, o tamanho será 8.

O EZETST contém o subscrito do último elemento alterado no destino.

Considerações sobre Definição para MOVEA

Para obter considerações sobre a definição do MOVEA, consulte o "Considerações sobre Definição para MOVE".

Ambientes de Destino para MOVEA

Suportado em todos os ambientes sem considerações de compatibilidade.

Exemplos de MOVEA

São exemplos da instrução MOVEA:

Escalar para Matriz com MOVEA

A fonte é um literal ou um item escalar (não uma matriz). O operando FOR especifica o número de elementos para os quais o valor da fonte é propagado. Se o operando FOR for omitido, o padrão será o tamanho resultante da matriz de destino.

MOVEA source TO target[x] FOR y;

Se y for menor ou igual ao tamanho resultante do destino, essa instrução deslocará o valor da fonte para elementos x através de (x + y - 1). Contudo, se y for maior que o tamanho resultante do destino, ou for omitido, a instrução MOVEA deslocará o valor da fonte para elementos x até o final da matriz. Essa função da instrução MOVEA é ideal para a inicialização de matrizes.

Matriz para Matriz com MOVEA

A fonte deve ser o elemento de uma matriz. O operando FOR especifica o número de itens a serem deslocados. Se o operando FOR for omitido, o padrão será o menor tamanho resultante da fonte ou do destino.

MOVEA source[x] TO target[y] FOR z;

Essa instrução desloca o conteúdo da fonte, começando com o elemento x, para o destino, começando com o elemento y, para o mínimo do tamanho resultante da fonte, do tamanho resultante do destino e z.

Por exemplo, suponha que a fonte tivesse 5 elementos, o destino tivesse 10 e a seguinte instrução fosse usada:

MOVEA source TO target [5] FOR 3;

Somente três elementos seriam deslocados, já que esse é o mínimo de 5, 6 e 3. Os três primeiros elementos da fonte são deslocados, por posição, para o quinto, sexto e sétimo elementos do destino.

Inicialização de uma Matriz Inteira com MOVEA
MOVE 0 to ARRAY2;
 
BEFORE   source = 0    ARRAY2 =  1  2  3  4
AFTER    source = 0    ARRAY2 =  0  0  0  0
 
EZETST = 4

Já que uma matriz inteira foi inicializada, o EZETST mantém o tamanho da matriz.

Inicializando a Parte de uma Matriz com MOVEA
MOVEA 'A' TO ARRAY2[2];
 
BEFORE   source = 'A'    ARRAY2 =  1  2  3  4
AFTER    source = 'A'    ARRAY2 =  1  A  A  A
 
EZETST = 4

Já que uma ocorrência foi omitida, o padrão é o tamanho resultante (4 - 2 + 1 = 3) da matriz de destino. O EZETST mantém o subscrito do último elemento alterado na matriz de destino.

Cadeia de Caractere para Matriz com MOVEA
MOVEA 'ABC' TO ARRAY2;
 
BEFORE   source = 'ABC'    ARRAY2 =  1     2     3    4
AFTER    source = 'ABC'    ARRAY2 =  ABC  ABC  ABC  ABC
 
EZETST = 4

Uma cadeia de caracteres foi deslocada para dentro de cada elemento da matriz.

Item de Dados para Matriz com MOVEA
MOVEA RESULT TO ARRAY2[2] FOR 3;
 
BEFORE   RESULT = 'ABC'    ARRAY2 =  1   2     3    4
AFTER    RESULT = 'ABC'    ARRAY2 =  1   ABC  ABC  ABC
 
EZETST = 4

Com o uso das opções FOR e subscrito, a fonte foi deslocada para o destino que começa com o segundo elemento no destino e que termina com o quarto elemento.

Alterando a Parte de uma Matriz com MOVEA
MOVEA ARRAY1[1] TO ARRAY2[2] FOR 2;
 
BEFORE   ARRAY1 =  A  B  C     ARRAY2 =  1  2  3  4
AFTER    ARRAY1 =  A  B  C     ARRAY2 =  1  A  B  4
 
EZETST = 3

Com o uso das opções FOR e subscrito, somente a parte de uma matriz foi alterada. Observe que o primeiro e o último elementos da ARRAY2 não mudaram.

Matriz de Destino Menor Que Matriz da Fonte com MOVEA
MOVEA ARRAY1 TO ARRAY2;
 
BEFORE   ARRAY1 =  A  B  C     ARRAY2 =  1  2
AFTER    ARRAY1 =  A  B  C     ARRAY2 =  A  B
 
EZETST = 2

Observe que o terceiro elemento da ARRAY1 não foi deslocado.

Matriz de Destino Maior Que Matriz da Fonte com MOVEA
MOVEA ARRAY1 TO ARRAY2;
 
BEFORE   ARRAY1 =  A  B  C     ARRAY2 =  1  2  3  4
AFTER    ARRAY1 =  A  B  C     ARRAY2 =  A  B  C  4
 
EZETST = 3

Observe que o quarto elemento da ARRAY2 não mudou.

Deslocar Matriz de Registro ou Tabela para Matriz de Mapa com MOVEA
MOVEA ARRAY1[START] TO ARRAY2;

Nesse exemplo, a instrução MOVEA é usada para deslocar uma matriz de uma estrutura de dados para uma matriz de mapa. A ARRAY1 possui 100 elementos e a ARRAY2, que se encontra em um mapa, possui somente 10.

A variável, START, pode então ser modificada para passar pela matriz. Se o mapa for convertido 10 vezes para exibir todas as informações na ARRAY1, START poderia ser definido para 1 na primeira conversão, 11 na segunda conversão, 21 na terceira conversão e assim por diante. A instrução acima move os dados em conjuntos.


[ Início da Página | Página Anterior | Próxima Página | Índice ]