A instrução MULTIPLY
no COBOL realiza multiplicações entre valores numéricos e armazena o resultado no próprio operando ou em outro especificado pela cláusula GIVING
. Pode ser usada para operações simples ou compostas.
📌 Para que serve
-
Multiplicar valores numéricos diretamente dentro do programa.
-
Armazenar o resultado da multiplicação em uma ou mais variáveis.
-
Lidar com arredondamentos (
ROUNDED
) e situações de estouro (SIZE ERROR
).
🧾 Sintaxe básica
📍 Formato 1 – Multiplica e armazena no próprio campo
MULTIPLY fator1 BY fator2.
📍 Formato 2 – Multiplica e armazena em outro campo com GIVING
MULTIPLY fator1 BY fator2 GIVING resultado.
✅ Exemplo prático
01 VALOR1 PIC 9(4) VALUE 12.
01 VALOR2 PIC 9(4) VALUE 3.
01 RESULTADO PIC 9(5).
MULTIPLY VALOR1 BY VALOR2 GIVING RESULTADO.
DISPLAY "Resultado: " RESULTADO.
Resultado: Resultado: 0036
⚙️ Comportamento interno
-
A multiplicação ocorre da esquerda para a direita.
-
O COBOL aceita tanto literals quanto variáveis como fatores.
-
No formato 1, o resultado sobrescreve o
identifier-2
. -
No formato 2, o resultado vai para
identifier-3
.
⚠️ Regras importantes
-
Todos os operandos devem ser numéricos e elementares.
-
Não é permitido usar campos de data como operandos.
-
ROUNDED
pode ser usado para arredondar o resultado final. -
SIZE ERROR
permite tratar casos em que o resultado excede a capacidade do campo destino. -
Pode ser encerrado com
END-MULTIPLY
quando aninhado ou usado em instruções compostas.
🔄 Formatos disponíveis
Formato | Ação | Resultado |
---|---|---|
MULTIPLY A BY B |
Multiplica e armazena em B | B recebe o resultado |
MULTIPLY A BY B GIVING C |
Multiplica e armazena em C | C recebe o resultado |
🧠 Dicas práticas
-
Sempre use
GIVING
se quiser preservar os valores originais dos operandos. -
Use
ROUNDED
com campos decimais para evitar perda de precisão.
MULTIPLY X BY Y GIVING Z ROUNDED.
- Use
ON SIZE ERROR
para tratar estouros:
MULTIPLY A BY B GIVING C
ON SIZE ERROR
DISPLAY "Erro: resultado excedeu o tamanho".
✅ Conclusão
A instrução MULTIPLY
facilita operações matemáticas diretas no COBOL, sendo especialmente útil quando há necessidade de controle de precisão e tratamento de exceções. Seu uso é simples, mas poderoso, especialmente quando combinado com GIVING
, ROUNDED
e SIZE ERROR
.