COBOL - A Instrução Multiply
A instrução MULTIPLY multiplica os itens numéricos e define os valores dos itens de dados iguais aos resultados.
A instrução MULTIPLY é usada para multiplicar itens numéricos. Ambos os formatos funcionam de forma ligeiramente diferente e cada um é descrito na área numerada correspondente.
Formato 1: A Instrução MULTIPLY
O primeiro formato é usado para multiplicar um campo ou valor por outro campo ou valor. O produto do(s) campo(s) ou valor(es) listado(s) entre MULTIPLY e BY é calculado e multiplicado pelo valor do(s) campo(s) após o BY. A resposta é armazenada no campo individual.
Sintaxe:
MULTIPLY {indentifier-1 or literal-1}...BY {indentifier-2 [ROUNDED]}...
[ON SIZE ERROR imperative-statement-1]
[NOT ON SIZE ERROR imperative-statement-2]
[END-MULTIPLY]
|
identifier-1, identifier-2 Deve nomear um item numérico elementar. identifier-1 e identifier-2 não podem ser campos de data.
literal-1, literal-2 Deve ser um literal numérico.
Explicação: O valor do identificador-1 ou literal-1 é multiplicado pelo valor do identificador-2; o produto é então colocado no identificador-2. Para cada ocorrência sucessiva do identificador-2, a multiplicação ocorre na ordem da esquerda para a direita na qual o identificador-2 é especificado..
Vejamos um exemplo
Exemplo 1:
- O valor em A é multiplicado pelo valor em B e o resultado é armazenado em B. O valor em A é inalterado.
Exemplo 2:
- O valor em C é multiplicado pelo valor em D, armazenando a resposta em D e o valor de C também é multiplicado por E, armazenando o valor em F. O valor em C permanece inalterado.
Formato 2: Instrução MULTIPLY com frase GIVING
O segundo formato é usado para multiplicar campo(s) ou valor(es) por um outro campo ou valor, armazenando a resposta em um campo diferente. Os campos ou valores listados entre MULTIPLY e GIVING são multiplicados e armazenados no(s) campo(s) após o GIVING.
Sintaxe:
MULTIPLY {indentifier-1 or literal-1}...BY {indentifier-2 or literal-2} GIVING {identifier-3 [ROUNDED]}...
[ON SIZE ERROR imperative-statement-1]
[NOT ON SIZE ERROR imperative-statement-2]
[END-MULTIPLY]
|
identifier-1, identifier-2 Deve nomear um item numérico elementar. identificador-1 e identificador-2 não podem ser campos de data.
literal-1, literal-2 Deve ser um literal numérico.
identifier-3 Deve nomear um item numérico elementar ou numérico editado. identificador-3, o identificador de frase GIVING, é o único identificador na instrução MULTIPLY que pode ser um campo de data.
Explicação: O valor do identificador-1 ou literal-1 é multiplicado pelo valor do identificador-2 ou literal-2. O produto é então armazenado nos itens de dados referenciados pelo identificador-3.
Exemplo:
- O valor em A é multiplicado pelo valor em B e o resultado é armazenado em C. Os valores em A e B permanecem inalterados.
Frases opcionais na operação MULTIPLY:
ROUNDED:
Com a opção ROUNDED, o computador sempre arredondará o resultado para a especificação da cláusula PICTURE do campo receptor. Geralmente é codificado após o campo a ser arredondado.
SIZE ERROR:
Se isso for codificado com qualquer operação que terminou com erro SIZE não será executada, mas a instrução a seguir ON SIZE ERROR será executada.
NOT ON SIZE ERROR:
Isso é oposto a SIZE ERROR. Se isso for codificado com qualquer operação que não tenha terminado com erro SIZE, a instrução a seguir ON SIZE ERROR será executada.
END-MULTIPLY:
Esse terminador de escopo explícito serve para delimitar o escopo da instrução MULTIPLY. END-MULTIPLY permite que uma instrução MULTIPLY condicional seja aninhada em outra instrução condicional. END-MULTIPLY também pode ser usado com uma instrução MULTIPLY imperativa.
Pontos de observação:
- Os campos a serem multiplicados devem ter figuras numéricas, ou seja, só podem ter os caracteres 9, S e V em suas cláusulas PIC.
- Os campos de recebimento podem ser campos numéricos ou editados numéricos.
- Use a cláusula SIZE ERROR para detectar estouro de campo no campo de recebimento.
- Em ambos os formatos, os resultados matematicamente corretos são calculados, mas se o campo receptor for muito curto na parte inteira ou decimal, o resultado será truncado, o inteiro à esquerda e o decimal à direita.
Incluir a frase ROUNDED fará com que o campo de resposta seja arredondado em vez de truncado. O arredondamento é sempre feito na parte menos significativa da resposta.