SUBTRACT ステートメントは、1 つまたは複数の数値項目から、 1 つの数値項目または 2 つ以上の数値項目の和を減算して、その結果を保管します。
フォーマット 1: SUBTRACT ステートメント .----------------. .-------------------. V | V | >>-SUBTRACT----+-ID-1-------+-+--FROM----ID-2--+---------+-+----> '-リテラル-1-' '-ROUNDED-' >--+----------------------------------------+-----------------> '-+----+--SIZE ERROR--命令ステートメント-1-' '-ON-' >--+---------------------------------------------+------------> '-NOT--+----+--SIZE ERROR--命令ステートメント-2-' '-ON-' >--+--------------+-------------------------------------------->< '-END-SUBTRACT-'
キーワード FROM の前にあるすべての ID またはリテラルは互いに加算され、 それらの和が ID-2 から減算され、ID-2 に直接保管されます。この処理は、ID-2 が連続する場合、それぞれの ID-2 ごとに、ID-2 が指定されている順序で左から右へと繰り返されます。
フォーマット 2: GIVING 句を含む SUBTRACT ステートメント .----------------. V | >>-SUBTRACT----+-ID-1-------+-+--FROM--+-ID-2-------+-----------> '-リテラル-1--' '-リテラル-2--' .-------------------. V | >--GIVING----ID-3--+---------+-+--------------------------------> '-ROUNDED-' >--+----------------------------------------+-----------------> '-+----+--SIZE ERROR--命令ステートメント-1-' '-ON-' >--+---------------------------------------------+------------> '-NOT--+----+--SIZE ERROR--命令ステートメント-2-' '-ON-' >--+--------------+-------------------------------------------->< '-END-SUBTRACT-'
キーワード FROM の前にあるすべての ID またはリテラルが加算され、 これらの和が ID-2 またはリテラル-2 から減算されます。 減算の結果は、ID-3 によって参照されるデータ項目それぞれの新しい値として保管されます。
フォーマット 3: CORRESPONDING 句を含む SUBTRACT ステートメント >>-SUBTRACT--+-CORRESPONDING-+--ID-1--FROM--ID-2--+---------+---> '-CORR----------' '-ROUNDED-' >--+----------------------------------------+-----------------> '-+----+--SIZE ERROR--命令ステートメント-1-' '-ON-' >--+---------------------------------------------+------------> '-NOT--+----+--SIZE ERROR--命令ステートメント-2-' '-ON-' >--+--------------+-------------------------------------------->< '-END-SUBTRACT-'
ID-1 内の基本データ項目は ID-2 の該当する基本データ項目から減算され、 その結果が、その ID-2 内の該当する基本データ項目に保管されます。
ARITH(COMPAT) コンパイラー・オプションが有効な場合は、オペランドの合成が最大 30 桁になります。 ARITH(EXTEND) コンパイラー・オプションが有効な場合は、オペランドの合成が最大 31 桁になります。 算術計算の中間結果の詳細につい ては、「Enterprise COBOL プログラミング・ガイド」を参照してください。
すべてのフォーマット全部に関して次のことが言えます。
フォーマット 2 では、ID がキーワード GIVING の後にある場合を除き、 基本数字データ項目の名前でなければなりません。 キーワード GIVING の後に置かれた ID はそれぞれ、 数字基本項目または数字編集基本データ項目の名前でなければなりません。
フォーマット 3 では、英数字グループ項目または国別グループ項目を指定する必要があります。
以下の制約事項は、日付フィールドに適用されます。
1 つ以上の日付フィールドに関連する SUBTRACT ステートメントの結果を判別するには、次の 2 つのステップがあります。
数字データ項目とリテラルを指定できる個所に、浮動小数点データ項目およびリテラルを使用することができます。
この明示的範囲終了符号は、SUBTRACT ステートメントの範囲を区切るために使用されます。END-SUBTRACT 句を使用することによって、 条件 SUBTRACT ステートメントを他の条件ステートメントの中にネストすることができます。 END-SUBTRACT 句は、命令 SUBTRACT ステートメントと共に使用することもできます。
詳しくは、範囲区切りステートメントを参照してください。