バージョン 4.2.5
 —  ステートメント  —

ADD

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

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

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


機能

ADD ステートメントを使用して、複数のオペランドを追加します。

注意:

  1. ADD ステートメント実行時、算術演算に使用される各オペランドは、有効な値を持っている必要があります。
  2. 配列を含む加算については、「配列の算術演算」を参照してください。
  3. オペランドのフォーマットについては、「フォーマット混合式のパフォーマンスについて」を参照してください。

Top of page

構文説明

このステートメントには、2 つの異なる構造が可能です。

構文図で使用されている記号については、「構文記号」を参照してください。

構文 1

ADD[ROUNDED] operand1../graphics/dot3.gif TO operand2

オペランド定義テーブル(構文 1):

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

構文要素の説明:

operand1 operand1 は加数です。
ROUNDED キーワード ROUNDED を使用すると、結果が四捨五入されます。 四捨五入のルールについては、「演算割り当てのルール」を参照してください。
TO operand2 operand2 は加算に含められ、演算結果を受け取ります。

例:

ステートメント

ADD #A(*) TO #B(*)  is equivalent to  COMPUTE #B(*) := #A(*) + #B(*)
ADD #S    TO #R     is equivalent to  COMPUTE #R    := #S + #R 
ADD #S #T TO #R     is equivalent to  COMPUTE #R    := #S + #T + #R
ADD #A(*) TO #R     is equivalent to  COMPUTE #R    := #A(*) + #R

構文 2

ADD[ROUNDED] operand1../graphics/dot3.gif GIVING operand2

オペランド定義テーブル(構文 2):

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

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

構文要素の説明:

operand1 operand1 は加数です。
ROUNDED キーワード ROUNDED を使用すると、結果が四捨五入されます。 四捨五入のルールについては、「演算割り当てのルール」を参照してください。
GIVING operand2 operand2 は演算結果を受け取るのみで、加算の対象にはなりません。

operand2 を英数字フィーマットで定義した場合、結果は英数字フォーマットに変換されます。

注意:
構文 2 を使用する場合、次のことが適用されます。キーワード GIVING の左側の (operand1) フィールドのみが加算の項であり、キーワード GIVING (operand2) の右側のフィールドは結果値を受け取るために使用されるだけです。 単一の (operand1) フィールドのみが指定されている場合、ADD 演算は割り当てに変わります。

例:

ステートメント

ADD #S       GIVING #R  is equivalent to  COMPUTE #R := #S
ADD #S #T    GIVING #R  is equivalent to  COMPUTE #R := #S + #T
ADD #A(*) 0  GIVING #R  is equivalent to  COMPUTE #R := #A(*) + 0 
	 which is a legal operation, due to the rules defined in  Arithmetic Operations with Arrays
ADD #A(*)    GIVING #R  is equivalent to  COMPUTE #R := #A(*)  
	 which is an illegal operation, due to the rules defined in  Assignment Operations with Arrays

Top of page

** Example 'ADDEX1': ADD                                                
************************************************************************
DEFINE DATA LOCAL                                                       
1 #A      (P2)                                                          
1 #B      (P1.1)                                                        
1 #C      (P1)                                                          
1 #DATE   (D)                                                           
1 #ARRAY1 (P5/1:4,1:4) INIT (2,*) <5>                                   
1 #ARRAY2 (P5/1:4,1:4) INIT (4,*) <10>                                  
END-DEFINE                                                              
*                                                                       
ADD +5 -2 -1 GIVING #A
WRITE NOTITLE 'ADD +5 -2 -1 GIVING #A' 15X '=' #A                       
*                                                                       
ADD .231 3.6 GIVING #B
WRITE       / 'ADD .231 3.6 GIVING #B' 15X '=' #B                       
*                                                                       
ADD ROUNDED 2.9 3.8 GIVING #C
WRITE       / 'ADD ROUNDED 2.9 3.8 GIVING #C' 8X '=' #C 
*                                                  
MOVE *DATX TO #DATE                                
ADD 7 TO #DATE
WRITE       / 'CURRENT DATE:'     *DATX (DF=L) 13X 
              'CURRENT DATE + 7:' #DATE (DF=L)     
*                                                  
WRITE       / '#ARRAY1 AND #ARRAY2 BEFORE ADDITION'
            / '=' #ARRAY1 (2,*) '=' #ARRAY2 (4,*)  
ADD #ARRAY1 (2,*) TO #ARRAY2 (4,*)
WRITE       / '#ARRAY1 AND #ARRAY2 AFTER ADDITION' 
            / '=' #ARRAY1 (2,*) '=' #ARRAY2 (4,*)  
*                                                  
END

プログラム ADDEX1 の出力:

ADD +5 -2 -1 GIVING #A               #A:   2                             
                                                                         
ADD .231 3.6 GIVING #B               #B:  3.8                            
                                                                         
ADD ROUNDED 2.9 3.8 GIVING #C        #C:  7                              
                                                                         
CURRENT DATE: 2005-01-10             CURRENT DATE + 7: 2005-01-17        
                                                                         
#ARRAY1 AND #ARRAY2 BEFORE ADDITION                                      
#ARRAY1:      5      5      5      5 #ARRAY2:     10     10     10     10
                                                                         
#ARRAY1 AND #ARRAY2 AFTER ADDITION                                       
#ARRAY1:      5      5      5      5 #ARRAY2:     15     15     15     15

Top of page