Menu

COBOL - statement Subtrair


A instrução SUBTRACT subtrai um item numérico ou a soma de dois ou mais itens numéricos de um ou mais itens numéricos e armazena o resultado.

A instrução SUBTRACT é usada para subtrair itens numéricos. Existem três formatos que funcionam de forma ligeiramente diferente e são descritos abaixo,


Formato 1: declaração SUBTRAIR

O primeiro formato é usado para subtrair campo(s) ou valor(es) de outro campo. O(s) campo(s) ou valor(es) listados entre SUBTRACT e FROM são somados e subtraídos do valor do(s) campo(s) após o FROM. A resposta é armazenada no campo individual.

Sintaxe:

SUBTRACT {indentifier-1  or literal-1}...FROM {indentifier-2 [ROUNDED]}...
   [ON SIZE ERROR imperative-statement-1]
   [NOT ON SIZE ERROR imperative-statement-2]
[END-SUBTRACT]

identificador deve nomear um item de dados numérico elementar.

literal Deve ser um literal numérico. Itens de dados de ponto flutuante e literais podem ser usados ​​em qualquer lugar que itens de dados numéricos e literais possam ser especificados.

Exemplo 1:

SUBTRACT A FROM B

- O valor em A é subtraído do valor em B e o resultado é armazenado em B. O valor em A permanece inalterado.

Exemplo 2:

SUBTRACT C D FROM E F

- A soma dos valores em C e D é subtraída ao valor em E, armazenando a resposta em E e a soma de C e D também é subtraída de F, armazenando o valor em F. Os valores em C e D permanecem inalterados.
Formato 2: Instrução SUBTRACT com a frase GIVING

O segundo formato é usado para subtrair campo(s) ou valor(es) um do outro, armazenando a resposta em um campo diferente. Os campos ou valores listados entre SUBTRACT e GIVING são adicionados e armazenados no campo após o(s) campo(s) após o GIVING.

Sintaxe:

SUBTRACT {indentifier-1  or literal-1}...FROM {indentifier-2 or literal-2} GIVING identifier-3 [ROUNDED]
   [ON SIZE ERROR imperative-statement-1]
   [NOT ON SIZE ERROR imperative-statement-2]
[END-SUBTRACT]

identificador deve nomear um item de dados numérico elementar, a menos que o identificador siga a palavra GIVING. Cada identificador após a palavra GIVING deve nomear um item de dados elementar numérico ou editado em números.

literal Deve ser um literal numérico. Itens de dados de ponto flutuante e literais podem ser usados ​​em qualquer lugar que itens de dados numéricos e literais possam ser especificados.

Exemplo:

SUBTRACT A FROM B GIVING C

-O valor em A é subtraído do valor em B e o resultado é armazenado em C. Os valores em A e B permanecem inalterados.
Formato 3: Instrução SUBTRACT com frase CORRESPONDING

O terceiro formato é usado para subtrair o(s) campo(s) subordinado(s) de um grupo do(s) campo(s) subordinado(s) de outro, armazenando a resposta nesses campos.

Esses campos subordinados do identificador de item de grupo-1 são subtraídos e armazenados naqueles com exatamente o mesmo nome no identificador de item de grupo-2. Os nomes dos itens subordinados devem ser escritos exatamente da mesma maneira em ambos os grupos para se qualificar para participar da subtração.

Sintaxe:

SUBTRACT {CORRESPONDING or CORR} indentifier-1 FROM indentifier-2 [ROUNDED]
   [ON SIZE ERROR imperative-statement-1]
   [NOT ON SIZE ERROR imperative-statement-2]
[END-SUBTRACT]

identificadordeve nomear um item de grupo alfanumérico ou um item de grupo nacional.

literal Deve ser um literal numérico. Itens de dados de ponto flutuante e literais podem ser usados ​​em qualquer lugar que itens de dados numéricos e literais possam ser especificados.
Frases opcionais na operação MULTIPLY:

Frase ARREDONDADA:

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.

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

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

Frase END-SUBTRACT:

Esse terminador de escopo explícito serve para delimitar o escopo da instrução SUBTRACT.

END-SUBTRACT permite que uma instrução SUBTRACT condicional seja aninhada em outra instrução condicional. END-SUBTRACT também pode ser usado com uma instrução SUBTRACT imperativa.


Pontas:

  • Os campos a serem subtraídos devem ter figuras numéricas, ou seja, podem ter apenas 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. Roundig é sempre feito na parte menos significativa da resposta.