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:
- Adição: determinar o resultado da operação de adição, tal como descrito em adição que envolve campos de data .
- 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.