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:
- O valor em A é subtraído do valor em B e o resultado é armazenado em B. O valor em A permanece inalterado.
Exemplo 2:
- 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.