Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 言語解説書


SUBTRACT ステートメント

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 プログラミング・ガイド」を参照してください。

すべてのフォーマット全部に関して次のことが言えます。

ID
フォーマット 1 では、基本数字データ項目を指定しなければなりません。

フォーマット 2 では、ID がキーワード GIVING の後にある場合を除き、 基本数字データ項目の名前でなければなりません。 キーワード GIVING の後に置かれた ID はそれぞれ、 数字基本項目または数字編集基本データ項目の名前でなければなりません。

フォーマット 3 では、英数字グループ項目または国別グループ項目を指定する必要があります。

以下の制約事項は、日付フィールドに適用されます。

  • フォーマット 1 では、ID-1 は 1 つの日付フィールドしか指定できません。 ID-1 が日付フィールドを指定する場合は、ID-2 のすべてのインスタンスでは、ID-1 で指定された日付フィールドと互換性のある日付フィールドを指定しなければなりません。 ID-1 が日付フィールドを指定しない場合は、ID-2 で 1 つまたは複数の日付フィールドを指定することができ、DATE FORMAT 節への制約事項はありません。
  • フォーマット 2 では、ID-1ID-2 がそれぞれ 1 つの日付フィールドでしか指定できません。ID-1 が日付フィールドを指定する場合は、FROM ID-2 は、ID-1 で指定された日付フィールドと互換性のある日付フィールドでなければなりません。 ID-3 は 1 つ以上の日付フィールドを指定することができます。ID-2 が日付フィールドを指定し、ID-1 が日付フィールドを指定しない場合は、ID-3 のすべてのインスタンスでは、ID-2 で指定された日付フィールドと互換性のある日付フィールドを指定しなければなりません。
  • フォーマット 3 では、ID-1 内の項目が日付フィールドである場合は、ID-2 内の該当する項目が互換日付フィールドでなければなりません。
  • 年末尾型日付フィールドを SUBTRACT ステートメントに指定できるのは、ID-1 としてのみ、および減算の結果が非日付データである場合だけです。

1 つ以上の日付フィールドに関連する SUBTRACT ステートメントの結果を判別するには、次の 2 つのステップがあります。

  1. 減算: 日付フィールドが関係する減算で記述されたとおり、減算の結果を判別します。
  2. 保管: その結果が受け取りフィールドにどのように保管されるかを判別します。 (フォーマット 1 と 3 では、受け取りフィールドは ID-2 です。フォーマット 3 では、 受け取りフィールドは GIVING ID-3 です。)詳細については、日付フィールドに関連する算術演算結果の保管を参照してください。
リテラル
これは、数字リテラルでなければなりません。

数字データ項目とリテラルを指定できる個所に、浮動小数点データ項目およびリテラルを使用することができます。

ROUNDED 句

ROUNDED 句に関する詳細、およびオペランドに関する考慮事項については、ROUNDED 句を参照してください。

SIZE ERROR 句

SIZE ERROR 句に関する詳細、およびオペランドに関する考慮事項については、SIZE ERROR 句を参照してください。

CORRESPONDING 句 (フォーマット 3)

CORRESPONDING 句を参照してください。

END-SUBTRACT 句

この明示的範囲終了符号は、SUBTRACT ステートメントの範囲を区切るために使用されます。END-SUBTRACT 句を使用することによって、 条件 SUBTRACT ステートメントを他の条件ステートメントの中にネストすることができます。 END-SUBTRACT 句は、命令 SUBTRACT ステートメントと共に使用することもできます。

詳しくは、範囲区切りステートメントを参照してください。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)