Enterprise COBOL for z/OS, V4.2, Language Reference
A instrução MOVE transfere dados de uma área de armazenamento para uma ou mais outras áreas.
CORR é uma abreviação para, e é equivalente a, CORRESPONDING.
- identifier-1 , literal-1
- A área de envio.
- identifier-2
- As áreas de recebimento.
O identifier-2 não deve fazer referência a uma função intrínseca.
Quando o formato 1 é especificado:
- Todos os identificadores podem fazer referência a itens de grupos alfanuméricos, itens de grupos nacionais ou itens elementares.
- Quando um dos identifier-1 ou identifier-2 identifica um item de grupo nacional e o outro operando faz referência a um item de grupo alfanumérico, o grupo
nacional é processado como um item de grupo; em todos os outros casos, o item do grupo nacional é processado como um item de dados elementar da categoria
nacional.
- Os dados na área de envio são movidos para o item de dados referenciado por cada identifier-2 na ordem em que os itens de dados do identifier-2 são especificados
na instrução MOVE.
Consulte Movimentos elementares e movimentos de grupo abaixo.
Quando o formato 2 é especificado:
- Ambos os identificadores devem ser itens de grupo.
- Um item de grupo nacional é processado como um item de grupo (e não como um item de dados elementar da categoria nacional).
- Os itens selecionados no identifier-1 são movidos para o identifier-2 de acordo com as regras da frase
CORRESPONDING.
Os resultados são os mesmos que se cada par de identificadores CORRESPONDING fosse referenciado em uma instrução MOVE separada.
Os itens de dados descritos com os seguintes tipos de uso não podem ser especificados em uma instrução MOVE:
- INDEX
- POINTER
- FUNCTION-POINTER
- PROCEDURE-POINTER
- OBJECT REFERENCE
Um item de dados definido com o uso de INDEX, POINTER, FUNCTION-POINTER, PROCEDURE-POINTER ou OBJECT REFERENCE pode fazer parte de um item de grupo alfanumérico
referenciado em uma instrução MOVE CORRESPONDING; no entanto, nenhum movimento de dados desses itens de dados ocorre.
A avaliação do comprimento da área de envio ou recebimento pode ser afetada pela frase DEPENDING ON da cláusula OCCURS
(consulte a OCCURS clause).
Se o campo de envio (identifier-1) for modificado ou subscrito por referência, ou for um identificador alfanumérico ou nacional de função, o modificador de
referência, subscrito ou função será avaliado apenas uma vez, imediatamente antes de os dados serem movidos para o primeiro operandos receptores.
Qualquer avaliação de comprimento, assinatura ou modificação de referência associada a um campo de recebimento (identifier-2) é avaliada imediatamente antes dos
dados serem movidos para esse campo de recebimento.
Por exemplo, o resultado da instrução:
MOVE A(B) TO B, C(B).
é equivalente a:
MOVE A(B) TO TEMP.
MOVE TEMP TO B.
MOVE TEMP TO C(B).
Onde TEMP é definido como um item de resultado intermediário.
O subscrito B mudou de valor entre o momento em que o primeiro movimento ocorreu e o tempo em que o movimento final para C (B) é executado.
Para obter mais informações sobre resultados intermediários, consulte
Intermediate results and arithmetic precision.
Após a execução de uma instrução MOVE, os campos de envio contêm os mesmos dados que antes da execução.
Nota de uso: Operandos sobrepostos em uma instrução MOVE podem causar resultados imprevisíveis.
Elementary moves - Movimentos elementares
Um movimento elementar é aquele em que o item de recebimento é um item de dados elementares e o item de envio é um item de dados elementares ou um literal.
Operandos válidos pertencem a uma das seguintes categorias:
- Alphabetic: inclui itens de dados da categoria alfabética e a constante figurativa SPACE
- Alphanumeric: inclui o seguinte:
- Itens de dados da categoria alfanuméricos
- Funções alfanuméricas
- Literais alfanuméricos
- A constante figurativa ALL literal alfanumérico e todas as outras constantes figurativas (exceto NULL) quando usada em um contexto que requer um item de envio
alfanumérico
- Alphanumeric-edited: inclui itens de dados da categoria edição alfanumérica
- DBCS: inclui itens de dados da categoria DBCS, literais DBCS e a constante figurativa ALL literal DBCS.
- External floating-point: inclui itens de dados da categoria ponto flutuante externo (descrito em USAGE DISPLAY ou USAGE NATIONAL) e literais de ponto
flutuante.
- Internal floating-point: inclui itens de dados da categoria ponto flutuante interno (definido como USAGE COMP-1 ou USAGE COMP-2)
- National: inclui o seguinte:
- Itens de grupo nacional (tratados como item elementar da categoria nacional)
- Itens de dados da categoria nacional
- Literais nacionais
- Funções nacionais
- Constantes figurativas ZERO, SPACE, QUOTE e ALL literal-nacional quando usadas em um contexto que requer um item de envio nacional
- National-edited: inclui itens de dados da categoria edição nacional
- Numeric: inclui o seguinte:
- Itens de dados da categoria numérica
- Literais numéricos
- A constante figurativa ZERO (quando ZERO é movido para um item numérico ou editado numérico).
- Numeric-edited: inclui itens de dados da categoria edição numérica.
Regras elementares de movimentação
Qualquer conversão necessária de dados de uma forma de representação interna para outra ocorre durante a movimentação, juntamente com qualquer edição especificada
ou desimposta implícita no item de recebimento.
A página de código usada para a conversão de ou para caracteres alfanuméricos é a que está em vigor na opção do compilador CODEPAGE quando o código-fonte foi
compilado.
As regras a seguir descrevem a execução de movimentos elementares válidos.
Quando o campo de recebimento é:
Alphabetic:
- O alinhamento e qualquer preenchimento ou truncamento de espaço necessário ocorrem conforme descrito em
Alignment rules - Regras de alinhamento.
- Se o tamanho do item de envio for maior que o tamanho do item de recebimento, caracteres em excesso à direita serão truncados após o preenchimento do item de
recebimento.
Alphanumeric ou alphanumeric-edited:
- Se o item de envio for um item inteiro decimal nacional, os dados de envio serão convertidos para DISPLAY de uso e tratados como se fossem movidos para um item
de dados temporário da categoria alfanumérica com o mesmo número de posições de caracteres do item de envio.
O item de dados alfanuméricos resultante é tratado como o item de envio.
- O alinhamento e qualquer preenchimento ou truncamento de espaço necessário ocorrem, conforme descrito em
Alignment rules.
- Se o tamanho do item de envio for maior que o tamanho do item de recebimento, caracteres em excesso à direita serão truncados após o preenchimento do item de
recebimento.
- Se o item de envio inicial tiver um sinal operacional, o valor não assinado será usado.
Se o sinal operacional ocupar um caractere separado, esse caractere não será movido e o tamanho do item de envio será considerado um caractere a menos do que o
tamanho real.
DBCS:
- Se os itens de envio e recebimento não tiverem o mesmo tamanho, os dados de envio serão truncados à direita ou preenchidos com espaços DBCS à direita.
External floating-point:
- Para um item de envio de ponto flutuante, o valor do ponto flutuante é convertido para o uso do item de ponto flutuante externo de recebimento (se diferente da
representação do item de envio).
- Para outros itens de envio, o valor numérico é tratado como se esse valor fosse convertido em ponto flutuante interno e depois convertido para o uso do item de
ponto flutuante externo de recebimento.
Internal floating-point:
- Quando a categoria do operando de envio não é ponto flutuante interno, o valor numérico do item de envio é convertido para o formato interno de ponto flutuante.
National or national-edited:
- Se a representação do item de envio não tiver caracteres nacionais, os dados de envio serão convertidos em caracteres nacionais e tratados como se fossem movidos
para um item de dados temporário da categoria nacional de comprimento que não cause truncamento ou preenchimento.
O item de dados nacional da categoria resultante é tratado como o item de dados de envio.
- Se a representação do item de envio tiver caracteres nacionais, os dados de envio serão usados ??sem conversão.
- O alinhamento e qualquer preenchimento ou truncamento de espaço necessário ocorrem conforme descrito nas
Alignment rules.
O programador é responsável por garantir que várias unidades de codificação que juntas formam um caractere gráfico não sejam divididas por truncamento.
- Se o item de envio tiver um sinal operacional, o valor não assinado será usado.
Se o sinal operacional ocupar um caractere separado, esse caractere não será movido e o tamanho do item de envio será considerado um caractere a menos do
que o tamanho real.
Numeric or numeric-edited:
- Exceto quando zeros são substituídos devido a requisitos de edição, o alinhamento por ponto decimal e qualquer preenchimento zero necessário ocorrem, conforme
descrito em Alignment rules.
- Se o item de recebimento for assinado, o sinal do item de envio será colocado no item de recebimento, com qualquer conversão de sinal necessária.
Se o item de envio não estiver assinado, um sinal operacional positivo será gerado para o item de recebimento.
- Se o item de recebimento não estiver assinado, nenhum sinal operacional será gerado para o item de recebimento e o valor absoluto do item de envio será usado
na movimentação.
- Quando a categoria do item de envio é alfanumérica, editada alfanumérica, nacional ou nacional, os dados são movidos como se o item de envio fosse descrito como
um número inteiro não assinado.
- Quando o item de envio é de ponto flutuante, os dados são primeiro convertidos em uma representação decimal binária ou decimal e depois são movidos.
- Quando o item de recebimento é editado numérico, a edição ocorre conforme definido pela sequência de caracteres da imagem ou pela cláusula BLANK WHEN ZERO
associada ao item de recebimento.
- Quando o item de envio é editado numérico, o compilador edita os dados de envio para estabelecer o valor não editado do item editado numérico (esse valor pode
ser assinado).
O valor numérico não editado é usado na mudança para o item de dados numérico recebido ou editado numérico.
Usage notes:
- Se o item de recebimento for da categoria alfanumérica, editada alfanumérica, editada numérica, nacional ou nacionalmente e o campo de envio for numérico,
qualquer posição de dígito descrita com o símbolo de imagem P no item de envio será considerada com o valor zero.
Cada P é contado no tamanho do item de envio.
- Se o item de recebimento for numérico e o campo de envio for um literal alfanumérico, um literal nacional ou um literal ALL, todos os caracteres do literal
deverão ser caracteres numéricos.
Movimentos elementares válidos e inválidos
A tabela a seguir mostra movimentos elementares válidos e inválidos para cada categoria.
Na tabela:
- YES = Mover é válido.
- NO = Mover é inválido.
- Os títulos das colunas indicam as categorias de itens recebidos; títulos de linha indicam o envio de categorias de itens.
Tabela 1. Movimentos elementares válidos e inválidos
| |
Alphabetic |
Alpha-numeric |
Alpha-numeric edited |
Numeric |
Numeric-edited |
External floating- point |
Internal floating- point |
DBCS1 |
National, national- edited |
| Alphabetic and SPACE sending item |
Yes |
Yes |
Yes |
No |
No |
No |
No |
No |
Yes |
| Alphanumeric sending item2 |
Yes |
Yes |
Yes |
Yes3 |
Yes3 |
Yes8 |
Yes8 |
No |
Yes |
| Alphanumeric-edited sending item |
Yes |
Yes |
Yes |
No |
No |
No |
No |
No |
Yes |
| Numeric integer and ZERO sending item4 |
No |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Yes |
| Numeric noninteger sending item5 |
No |
No |
No |
Yes |
Yes |
Yes |
Yes |
No |
No |
| Numeric-edited sending item |
No |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Yes |
| Floating-point sending item6 |
No |
No |
No |
Yes |
Yes |
Yes |
Yes |
No |
No |
| DBCS sending item7 |
No |
No |
No |
No |
No |
No |
No |
Yes |
Yes |
| National sending item9 |
No |
No |
No |
Yes |
Yes |
Yes |
Yes |
No |
Yes |
| National-edited sending item |
No |
No |
No |
No |
No |
No |
No |
No |
Yes |
- Inclui itens de dados DBCS.
- Inclui literais alfanuméricos.
- As constantes figurativas e literais alfanuméricos devem consistir apenas de caracteres numéricos e serão tratados como campos inteiros numéricos.
- Inclui literais numéricos inteiros.
- Inclui literais numéricos não íntegros.
- Inclui literais de ponto flutuante, itens de dados externos de ponto flutuante (USAGE DISPLAY ou USAGE NATIONAL) e itens de dados internos de ponto flutuante
(USAGE COMP-1 ou USAGE COMP-2).
- Inclui itens de dados DBCS, literais DBCS e constante figurativa SPACE.
- As constantes figurativas e literais alfanuméricos devem consistir apenas de caracteres numéricos e serão tratados como campos inteiros numéricos.
O literal ALL não pode ser usado como um item de envio.
- Inclui itens de dados nacionais, literais nacionais, funções nacionais e constantes figurativas ZERO, SPACE, QUOTE e ALL literal nacional.
|
Movimentos envolvendo campos de data
Se o item de envio for especificado como um campo de data do último ano, todos os campos de recebimento também deverão ser campos de data do último ano com o
mesmo formato de data que o item de envio.
Se um campo de data do último ano for especificado como um item de recebimento, o item de envio deverá ser um campo de data sem data ou de último ano com o mesmo
formato de data que o item de recebimento. Nos dois casos, a movimentação é executada como se todos os itens não fossem datas.
A Tabela 2 descreve o comportamento de movimentos que envolvem campos da data do último ano.
Se o item de envio for um campo de data, o item de recebimento deverá ser um campo de data compatível.
Se os itens de envio e recebimento forem ambos campos de data, eles deverão ser compatíveis; isto é, eles devem ter o mesmo formato de data, exceto a parte do ano,
que pode ser exibida em janela ou expandida.
Esta tabela usa os seguintes termos para descrever os movimentos:
- Normal
- A movimentação é realizada sem comportamento sensível à data, como se os itens de envio e recebimento fossem ambos sem data.
- Expanded
- O item de envio do campo de data em janela é tratado como se tivesse sido primeiro convertido em formulário expandido, conforme descrito em
Semantics of windowed date fields.
- Invalid
- A mudança não é permitida.
Tabela 2. Movimentos envolvendo campos de data
|
Item de recebimento não datado |
Item de recebimento do campo de data de janela |
Item de recebimento de campo de data expandida |
| Item de envio não datado |
Normal |
Normal |
Normal |
| Item de envio do campo de data de janela |
Invalid |
Normal |
Expanded |
| Item de envio do campo de data expandida |
Invalid |
Normal1 |
Normal |
- Uma movimentação de um campo de data expandida para um campo de data em janela é, na verdade, uma movimentação "em janela", porque trunca o componente do século
do campo de data expandida.
Se a movimentação for alfanumérica, ele tratará o campo de data da janela de recebimento como se sua descrição de dados tivesse especificado JUSTIFIED RIGHT.
Isso ocorre mesmo se o campo de data da janela de recebimento for um item de grupo, para o qual a cláusula JUSTIFIED não pode ser especificada.
|
Movimentos envolvendo áreas de registro de arquivo
A execução bem-sucedida de uma instrução OPEN para um determinado arquivo disponibiliza a área de registro para esse arquivo.
Você pode mover dados para ou a partir das entradas de descrição do registro associadas a um arquivo apenas quando o arquivo estiver no status aberto.
A execução de uma instrução CLOSE implícita ou explícita remove um arquivo do status aberto e torna a área de registro indisponível.
Movimentos de grupo
Uma movimentação de grupo é qualquer movimentação na qual um item de grupo alfanumérico é um item de envio ou um item de recebimento, ou ambos.
A seguir, são movimentos de grupo:
- Uma mudança para um item de grupo alfanumérico de uma das seguintes opções:
- qualquer item de dados elementar válido como item de envio na instrução MOVE
- um item de grupo nacional
- um literal
- uma constante figurativa
- Uma mudança de um item de grupo alfanumérico para o seguinte:
- qualquer item de dados elementar válido como item de recebimento na instrução MOVE
- um item de grupo nacional
- um item de grupo alfanumérico
Uma movimentação de grupo é tratada como se fosse uma movimentação elementar alfanumérica para alfanumérica, exceto que não há conversão de dados de uma forma de
representação interna para outra.
Em uma mudança de grupo, a área de recebimento é preenchida sem consideração pelos itens elementares individuais contidos na área de envio ou na área de recebimento,
exceto conforme indicado na cláusula OCCURS.
(Veja a OCCURS clause.)
© Copyright IBM Corp.