COBOL - Instrução de divisão
A instrução DIVIDE divide um item de dados numérico em outros ou por outros e define os valores dos itens de dados iguais ao quociente e ao restante.
A instrução DIVIDE é usada para dividir itens numéricos. Ambos os formatos funcionam de forma ligeiramente diferente e cada um é descrito abaixo,
Formato 1: Instrução DIVIDE
O primeiro formato é usado para dividir um campo(s) ou valor(es) por outro campo ou valor. O campo ou valor listado entre DIVIDE e INTO é dividido no valor do(s) campo(s) após o INTO. A resposta é armazenada se o campo individual.
Syntax:
DIVIDE {indentifier-1 or literal-1}...INTO {identifier-2 [ROUNDED]}...
[ON SIZE ERROR imperative-statement-1]
[NOT ON SIZE ERROR imperative-statement-2]
[END-DIVIDE] |
O valor do identificador-1 ou literal-1 é dividido no valor do identificador-2, e o quociente é então armazenado no identificador-2. Para cada ocorrência sucessiva do identificador-2, a divisão ocorre na ordem da esquerda para a direita na qual o identificador-2 é especificado.
Example 1:
- O valor em A é dividido pelo valor em B e o resultado é armazenado em B. O valor em A permanece inalterado.
Example 2:
- O valor em C é dividido pelo valor em D, armazenando a resposta em D; o valor de C também é dividido em E, armazenando o valor em E. O valor em C permanece inalterado.
Format 2: Instrução DIVIDE com frases INTO e GIVINGr>
O segundo formato é usado para dividir campos ou valores entre si, armazenando a resposta em um campo diferente. Os campos ou valores listados entre DIVIDE e GIVING são divididos e armazenados no campo após o(s) campo(s) após o GIVING.
Syntax:
DIVIDE {indentifier-1 or literal-1}...INTO {identifier-2 or literal-2} GIVING {identifier-3 [ROUNDED]}...
[ON SIZE ERROR imperative-statement-1]
[NOT ON SIZE ERROR imperative-statement-2]
[END-DIVIDE] |
O valor do identificador-1 ou literal-1 é dividido no valor do identificador-2 ou literal-2. O valor do quociente é armazenado em cada item de dados referenciado pelo identificador-3.
Exemplo:
- - O valor em A é dividido pelo valor em B e o resultado é armazenado em C. Os valores em A e B permanecem inalterados.
Formato 3: Instrução DIVIDE com frases BY e GIVING
O terceiro formato também é usado para dividir campos ou valores entre si, armazenando a resposta em um campo diferente. Os campos ou valores listados entre DIVIDE e GIVING são divididos e armazenados no campo após o(s) campo(s) após o GIVING.
DIVIDE {indentifier-1 or literal-1} BY {identifier-2 or literal-2} GIVING {identifier-3 [ROUNDED]}...
[ON SIZE ERROR imperative-statement-1]
[NOT ON SIZE ERROR imperative-statement-2]
[END-DIVIDE] |
O valor do identificador-1 ou literal-1 é dividido pelo valor do identificador-2 ou literal-2. O valor do quociente é armazenado em cada item de dados referenciado pelo identificador-3.
Exemplo:
- - O valor em A é dividido pelo valor em B e o resultado é armazenado em C. Os valores em A e B permanecem inalterados.
Formato 4: Instrução DIVIDE com frases INTO e REMAINDER
O quarto formato é usado para dividir campos ou valores entre si, armazenando a resposta em um campo diferente. Os campos ou valores listados entre DIVIDE e GIVING são divididos e armazenados no campo após o(s) campo(s) após o GIVING.
Syntax:
DIVIDE {indentifier-1 or literal-1} INTO {identifier-2 or literal-2} GIVING identifier-3 [ROUNDED] REMAINDER identifier-4
[ON SIZE ERROR imperative-statement-1]
[NOT ON SIZE ERROR imperative-statement-2]
[END-DIVIDE] |
O valor do identificador-1 ou literal-1 é dividido em identificador-2 ou literal-2. O valor do quociente é armazenado no identificador-3 e o valor do restante é armazenado no identificador-4.
Exemplo:
DIVIDA A EM B DANDO C RESTANTE D
- O valor em A é dividido no valor em B e os resultados armazenados em C com o restante sendo armazenado em D. Os valores em A e B permanecem inalterados.
Formato 5: Instrução DIVIDE com frases BY e REMAINDER
O quinto formato também é usado para dividir campo(s) ou valor(es) entre si, armazenando a resposta em um campo diferente. Os campos ou valores listados entre DIVIDE e GIVING são divididos e armazenados no campo após o(s) campo(s) após o GIVING.
Syntax:
DIVIDE {indentifier-1 or literal-1} BY {identifier-2 or literal-2} GIVING identifier-3 [ROUNDED] REMAINDER identifier-4
[ON SIZE ERROR imperative-statement-1]
[NOT ON SIZE ERROR imperative-statement-2]
[END-DIVIDE] |
O valor do identificador-1 ou literal-1 é dividido pelo identificador-2 ou literal-2. O valor do quociente é armazenado no identificador-3 e o valor do restante é armazenado no identificador-4.
Exemplo:
DIVIDE A BY B GIVING C REMAINDER D |
- The value in A is divided by the value in B and the result is stored in C with the remainder being stored in D. The values in A and B are unchanged.
Syntax : Explanation
identifier-1, identifier-2 Deve nomear um item de dados numérico elementar. identificador-1 e identificador-2 não podem ser campos de data.
identifier-3, identifier-4 Deve nomear um item numérico elementar ou numérico editado.
Se identificador-3 ou identificador-4 for um campo de data, consulte Armazenando resultados aritméticos que envolvem campos de data para obter detalhes sobre como o quociente ou resto é armazenado no identificador-3.
literal-1, literal-2
Deve ser um literal numérico.
Nos formatos 1, 2 e 3, itens de dados de ponto flutuante e literais podem ser usados em qualquer lugar em que um item de dados numérico ou literal possa ser especificado.
Nos formatos 4 e 5, itens de dados de ponto flutuante ou literais não podem ser usados.
Frases opcionais na operação DIVIDE:
ROUNDED phrase
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 phrases
Se esta for codificada com qualquer operação que terminou com SIZE error não será executada, mas a instrução que segue ON SIZE ERROR será executada.
NOT ON SIZE ERROR phrases
Isto é o oposto de 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 phrase
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.
END-DIVIDE phrase
Este terminador de escopo explícito serve para delimitar o escopo da instrução DIVIDE.
END-DIVIDE transforma uma instrução condicional DIVIDE em uma instrução imperativa que pode ser aninhada em outra instrução condicional. END-DIVIDE também pode ser usado com uma instrução DIVIDE imperativa
Tipos:
- Os campos a serem divididos 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 todos 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 do resultado da resposta, o campo de resposta é arredondado em vez de truncado. O arredondamento é sempre feito na parte menos significativa da resposta