ADD
ステートメントを使用して、複数のオペランドを追加します。
このドキュメントでは、次のトピックについて説明します。
関連ステートメント:COMPRESS | COMPUTE | DIVIDE | EXAMINE | MOVE | MOVE ALL | MULTIPLY | RESET | SEPARATE | SUBTRACT
関連機能グループ:「算術演算とデータ移動操作」
ADD
ステートメントを使用して、複数のオペランドを追加します。
注意:
ADD
ステートメント実行時、算術演算に使用される各オペランドは、有効な値を持っている必要があります。
このステートメントには、2 つの異なる構造が可能です。
構文図で使用されている記号については、「構文記号」を参照してください。
ADD [ROUNDED ] operand1 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 [ROUNDED ] operand1 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 は結果フィールドですが、構文 1 とは異なり、結果の保存のみに使用されます。
operand2 を英数字フィーマットで定義した場合、結果は英数字フォーマットに変換されます。 データベースフィールドを結果フィールドとして使用しても、ADD 演算は、プログラム内で使用する内部値だけを更新します。 データベースのフィールド値は変わりません。 |
** 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
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