Sunday 22 December 2024

A declaração ADD somas dois ou mais operandos numéricos e armazena o resultado.

 

Formato 1: Declaração ADD

>>-ADD----+-identifier-1-+-+--TO-------------------------------->
          '-literal-1----'         

   .---------------------------.   
   V                           |   
>----identifier-2--+---------+-+-------------------------------->
                   '-ROUNDED-'     

>--+--------------------------------------------+--------------->
   '-+----+--SIZE ERROR--imperative-statement-1-'   
     '-ON-'                                         

>--+-------------------------------------------------+---------->
   '-NOT--+----+--SIZE ERROR--imperative-statement-2-'   
          '-ON-'                                         

>--+---------+-------------------------------------------------><
   '-END-ADD-'   

Todos os identificadores ou literais que precedem a palavra-chave para são somados, e esta soma é adicionada e armazenada no identificador-2 . Este processo é repetido para cada ocorrência sucessiva de identificador-2 na ordem da esquerda para a direita em que identificador-2 é especificada.

 

Formato 2: Declaração ADD com frase GIVING

        .------------------.                             
        V                  |                             
>>-ADD----+-identifier-1-+-+--+----+--+-identifier-2-+---------->
          '-literal-1----'    '-TO-'  '-literal-2----'   

           .---------------------------.   
           V                           |   
>--GIVING----identifier-3--+---------+-+------------------------>
                           '-ROUNDED-'     

>--+--------------------------------------------+--------------->
   '-+----+--SIZE ERROR--imperative-statement-1-'   
     '-ON-'                                         

>--+-------------------------------------------------+---------->
   '-NOT--+----+--SIZE ERROR--imperative-statement-2-'   
          '-ON-'                                         

>--+---------+-------------------------------------------------><
   '-END-ADD-' 

Os valores dos operandos que precedem a palavra DAR são adicionadas em conjunto, e a soma é armazenado como o novo valor de cada item de dados referenciado pelo identificador-3 .

 

Formato 3: Declaração ADD com frase CORRESPONDING

>>-ADD--+-CORRESPONDING-+--identifier-1--TO--identifier-2------->
        '-CORR----------'                                   

>--+---------+-------------------------------------------------->
   '-ROUNDED-'   

>--+--------------------------------------------+--------------->
   '-+----+--SIZE ERROR--imperative-statement-1-'   
     '-ON-'                                         

>--+-------------------------------------------------+---------->
   '-NOT--+----+--SIZE ERROR--imperative-statement-2-'   
          '-ON-'                                         

>--+---------+-------------------------------------------------><
   '-END-ADD-'

Itens de dados elementares dentro identificador-1 são adicionados a e armazenada nos artigos elementares correspondentes no interior identificador-2 .

 

Para todos os formatos:

identificador-1, identificador-2

No formato 1, deve nomear um item numérico elementar.

No formato 2, deve nomear um item numérico elementar, exceto ao seguir a palavra GIVING. Cada identificador que segue a palavra GIVING deve nomear um item numérico ou numérico-editado elementar.

No formato 3, deve nomear um item de grupo alfanumérico ou um item de grupo nacional.

As seguintes restrições se aplicam aos campos de data:

  • No formato 1, identifier-2 pode especificar um ou mais campos de data. identifier-1 não deve especificar um campo de data.
  • No formato de 2, cada identificador-1 ou identificador-2 (mas não ambos) pode especificar, no máximo, um campo de data. Se identificador-1 ou identificador-2 especifica um campo de data, então cada instância do identificador-3 deve especificar um campo de data que é compatível com o campo de data especificado pelo identificador-1 ou identificador-2 . Ou seja, eles devem ter o mesmo formato de data, exceto para a parte do ano, que pode ser windowed ou expandido.

Se nenhum identificador-1 nem identificador-2 especifica um campo de data, identificador-3 pode especificar um ou mais campos de data sem qualquer restrição sobre os formatos de data.

  • No formato 3, apenas correspondendo itens elementares dentro identificador-2 pode ser campos de data. Não há nenhuma restrição no formato desses campos de data.
  • Um campo de data no último ano é permitido em uma instrução ADD apenas como identificador-1 e quando o resultado da adição é um nondate.

Há duas etapas para determinar o resultado de uma declaração ADD que envolve um ou mais campos de data:

  1. Adição: determinar o resultado da operação de adição, tal como descrito em adição que envolve campos de data .
  2. Armazenamento: determina como o resultado é armazenado no campo de recebimento. (Em formatos de 1 e 3, o campo de recepção é identificador-2 ; no formato 3, o campo de recepção é a doação identificador-3 ). Para mais detalhes, consulte Armazenando resultados aritméticos que envolvem os campos de data .

 

Literal

Deve ser um literal numérico.

Itens de dados de ponto flutuante e literais podem ser usados ​​em qualquer lugar que um item de dados numérico ou literal pode ser especificado.

Quando a opção de compilador ARITH (COMPAT) está em vigor, a composição de operandos pode conter um máximo de 30 dígitos. Quando a opção de compilador ARITH (EXTEND) está em vigor, a composição de operandos pode conter um máximo de 31 dígitos. Para mais informações, consulte operandos da instrução aritméticos e os detalhes sobre aritméticas resultados intermediários em o COBOL para AIX Programming Guide .

 

ROUNDED

Indica ao comando que os valores decimais devem ser arredondados, caso esta palavra reservada não seja indicada o compilador irá truncar estes valores, ou seja, um valor 10.25 truncado ficará como 10.2.

 

SIZE ERROR

Ocorrerá sempre que o Indentifier-2 ou Indentifier-3 não comportarem o valor especificado e NOT ON SIZE ERROR ocorrerá na situação de normalidade do processo.

 

CORRESPONDING

é utilizado para somar uma TABELA inteira, ou seja, podemos construir tabelas nas definições das variáveis e com este recurso do comando somar a tabela de uma única vez, sem a necessidade da construção de laços para somar item a item. END-ADD é opcional.

ANS85 indica que esta é uma convenção nova e OSVS é uma convenção antiga utilizada no MainFrame

 

END-ADD 

Este terminador de escopo explícito serve para delimitar o escopo da instrução ADD. END-ADD permite que uma instrução ADD condicional seja aninhada em outra instrução condicional. END-ADD também pode ser usado com uma instrução ADD imperativa.