Menu

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:

MULTIPLY A BY B

- O valor em A é multiplicado pelo valor em B e o resultado é armazenado em B. O valor em A é inalterado.

Exemplo 2:

MULTIPLY C BY D E

- 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:

MULTIPLY A BY B GIVING C

- 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.