instrução ADD é usada para somar valores numéricos em programas COBOL. Ela permite acumular resultados, somar diretamente a variáveis ou até operar sobre estruturas inteiras usando CORRESPONDING.

🧾 Sintaxes principais

📌 Formato 1 – Soma direta

ADD valor-1 TO valor-2 [ROUNDED] 
    [ON SIZE ERROR instrução] 
    [NOT ON SIZE ERROR instrução] 
END-ADD.

Soma valor-1 a valor-2 e armazena o resultado em valor-2.

📌 Formato 2 – Usando GIVING

ADD valor-1 TO valor-2 GIVING resultado [ROUNDED]
    [ON SIZE ERROR instrução] 
    [NOT ON SIZE ERROR instrução] 
END-ADD.

Soma valor-1 + valor-2 e armazena o resultado em resultado.

📌 Formato 3 – Usando CORRESPONDING

ADD CORRESPONDING grupo-1 TO grupo-2 [ROUNDED]
    [ON SIZE ERROR instrução] 
    [NOT ON SIZE ERROR instrução] 
END-ADD.

Soma os campos de mesmo nome dentro de dois grupos de dados.

📥 Exemplos práticos

✅ Soma simples

ADD WS-VLR1 TO WS-TOTAL.

✅ Soma com GIVING

ADD WS-VLR1 TO WS-VLR2 GIVING WS-RESULTADO.

✅ Com arredondamento

ADD WS-NUM1 TO WS-NUM2 GIVING WS-RES ROUNDED.

✅ Com controle de erro

ADD WS-NUM1 TO WS-NUM2 
    ON SIZE ERROR DISPLAY "ERRO: Valor excede o limite"
    NOT ON SIZE ERROR DISPLAY "Soma OK"
END-ADD.

🔎 Explicação dos elementos

Elemento Função
TO Define a variável que receberá o resultado da soma.
GIVING Armazena o resultado em uma nova variável (sem sobrescrever os termos).
ROUNDED Arredonda a parte decimal no resultado final.
SIZE ERROR Executa um bloco caso ocorra estouro de capacidade numérica.
CORRESPONDING Soma campos de mesmo nome entre dois grupos de variáveis.
END-ADD Finaliza explicitamente o bloco do comando ADD.

🧠 Dicas técnicas

  • Use GIVING quando não quiser modificar os operandos originais.

  • O uso de CORRESPONDING é ideal para tabelas ou estruturas de dados agrupadas.

  • Com ROUNDED, 10.26 pode se tornar 10.3; sem ele, pode ser truncado para 10.2.

  • O END-ADD é recomendado para comandos aninhados ou condicionais.

⚠️ Regras e restrições

  • Os operandos devem ser variáveis numéricas ou literais numéricos.

  • Campos de data podem ser usados, mas exigem formato compatível.

  • Em ambientes com opção de compilador ARITH(EXTEND), são permitidos até 31 dígitos.

 

✅ Conclusão

O comando ADD é versátil e indispensável para qualquer operação de soma em COBOL. Dominar suas variações (TO, GIVING, CORRESPONDING, ROUNDED) permite maior controle sobre cálculos e legibilidade do código.