SUBTRACT

このドキュメントでは、次のトピックについて説明します。

関連ステートメント:ADD | COMPRESS | COMPUTE | DIVIDE | EXAMINE | MOVE | MOVE ALL | MULTIPLY | RESET | SEPARATE

関連機能グループ:算術演算とデータ移動操作


関数

SUBTRACT ステートメントは、複数のオペランドの値を減算するために使用します。

構文 1 - SUBTRACT ステートメント(GIVING 節を含まない場合)

SUBTRACT [ROUNDED]

../graphics/cbo2.gif

(arithmetic-expression)
operand1

../graphics/cbc2.gif

../graphics/dot3.gif FROMoperand2

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1 C S A   N   N P I F   D T         ×
operand2   S A   M   N P I F   D T         ×

構文要素の説明:

構文要素 説明
arithmetic-expression COMPUTE ステートメントの「算術演算式」も参照してください。

operand1
FROM operand2

オペランド:

operand2 は被減数、operand1 は減数です。したがって、ステートメントは次と等しくなります。

operand2 := operand2 - operand1

オペランドのフォーマットについては、『プログラミングガイド』の「算術割り当てのルール」、「フォーマット混合式のパフォーマンスについて」も参照してください。

ROUNDED
ROUNDED オプション:

キーワード ROUNDED を指定すると、結果は四捨五入されます。

四捨五入の詳細については、『プログラミングガイド』の「演算割り当てのルール」、および「フィールドの切り捨てと切り上げ」を参照してください。

構文 2 - SUBTRACT ステートメント(GIVING 節を含む場合)

SUBTRACT [ROUNDED]

../graphics/cbo2.gif

(arithmetic-expression)
operand1

../graphics/cbc2.gif

../graphics/dot3.gif FROM

../graphics/cbo2.gif

(arithmetic-expression)
operand2

../graphics/cbc2.gif

GIVINGoperand3

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1 C S A   N     N P I F   D T         ×
operand2 C S A   N     N P I F   D T         ×
operand3   S A   M A U N P I F B * D T        

* operand3 のフォーマット B は、4 以下の長さでのみ使用できます。

構文要素の説明:

構文要素 説明
arithmetic-expression COMPUTE ステートメントの「算術演算式」も参照してください。
GIVING
GIVING 節:

GIVING 節を使用すると、operand2 は変更されずoperand3 に結果が入ります。

operand1
FROM operand2
GIVING operand3

オペランド:

operand2 は被減数、operand1 は減数、operand3 は結果フィールドです。したがって、ステートメントは次と等しくなります。

operand3 := operand2 - operand1

オペランドのフォーマットについては、『プログラミングガイド』の「フォーマット混合式のパフォーマンスについて」も参照してください。

ROUNDED
ROUNDED オプション:

キーワード ROUNDED を指定すると、結果は四捨五入されます。

四捨五入の詳細については、『プログラミングガイド』の「演算割り当てのルール」、および「フィールドの切り捨てと切り上げ」を参照してください。

** Example 'SUBEX1': SUBTRACT                                           
************************************************************************
DEFINE DATA LOCAL                                                       
1 #A (P2) INIT <50>                                                     
1 #B (P2)                                                               
1 #C (P1.1) INIT <2.4>                                                  
END-DEFINE                                                              
*                                                                       
SUBTRACT 6 FROM #A                                                   
WRITE NOTITLE 'SUBTRACT 6 FROM #A              '  10X '=' #A            
*                                                                       
SUBTRACT 6 FROM 11 GIVING #A                                         
WRITE         'SUBTRACT 6 FROM 11 GIVING #A    '  10X '=' #A            
*                                                                       
SUBTRACT 3 4 FROM #A GIVING #B                                        
WRITE         'SUBTRACT 3 4 FROM #A GIVING #B  '  10X '=' #A '=' #B     
*                                                                       
SUBTRACT -3 -4 FROM #A GIVING #B                                      
WRITE         'SUBTRACT -3 -4 FROM #A GIVING #B'  10X '=' #A '=' #B     
*                                                           
SUBTRACT ROUNDED 2.06 FROM #C                             
WRITE         'SUBTRACT ROUNDED 2.06 FROM #C   '  10X '=' #C
*                                                           
END

プログラム SUBEX1 の出力:

SUBTRACT 6 FROM #A                        #A:  44        
SUBTRACT 6 FROM 11 GIVING #A              #A:   5        
SUBTRACT 3 4 FROM #A GIVING #B            #A:   5 #B:  -2
SUBTRACT -3 -4 FROM #A GIVING #B          #A:   5 #B:  12
SUBTRACT ROUNDED 2.06 FROM #C             #C:  0.3