このドキュメントでは、次のトピックについて説明します。
関連ステートメント:ADD
| COMPRESS
| COMPUTE
| DIVIDE
| EXAMINE
| MOVE
| MOVE ALL
| RESET
| SEPARATE
| SUBTRACT
関連機能グループ:算術演算とデータ移動操作
MULTIPLY
ステートメントは、2 つのオペランドを乗算するために使用します。使用される構文に応じて、乗算結果は operand1
または operand3
に入ります。
データベースフィールドを結果フィールドとして使用するとき、MULTIPLY 演算は、プログラム内で使用したフィールドの内部値だけを更新します。データベース内のフィールドの値は変更されないまま維持されます。
配列を含む乗算については、『プログラミングガイド』の「算術演算の規則」、「配列での算術演算」も参照してください。
このステートメントには、2 つの異なる構造が可能です。
構文 1 が使用される場合、乗算の結果は operand1 に入ります。
MULTIPLY [ROUNDED ] operand1 BY |
構文図で使用されている記号については、「構文記号」を参照してください。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
S | A | M | N | P | I | F | ○ | × | ||||||||||
operand2 |
C | S | A | N | N | P | I | F | ○ | × |
構文要素の説明:
構文要素 | 説明 |
---|---|
arithmetic-expression |
COMPUTE ステートメントの「算術演算式」も参照してください。
|
operand1 BY
operand2 |
オペランド:
結果は operand1 := operand1 * operand2 |
ROUNDED |
ROUNDED オプション:
キーワード 四捨五入の詳細については、『プログラミングガイド』の「演算割り当てのルール」、および「フィールドの切り捨てと切り上げ」を参照してください。 |
構文 2 が使用される場合、乗算の結果は operand3
に入ります。
MULTIPLY [ROUNDED ] |
BY |
GIVING operand3 |
構文図で使用されている記号については、「構文記号」を参照してください。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
C | S | A | M | N | P | I | F | ○ | × | ||||||||||
operand2 |
C | S | A | N | N | P | I | F | ○ | × | ||||||||||
operand3 |
S | A | M | A | U | N | P | I | F | B * | T | ○ | ○ |
* operand3
のフォーマット B は、4 以下の長さでのみ使用できます。
構文要素の説明:
構文要素 | 説明 |
---|---|
arithmetic-expression |
COMPUTE ステートメントの「算術演算式」も参照してください。
|
operand1 BY
operand2 GIVING
operand3 |
オペランド:
operand3 := operand1 * operand2 |
ROUNDED |
ROUNDED オプション:
キーワード 四捨五入の詳細については、『プログラミングガイド』の「演算割り当てのルール」、および「フィールドの切り捨てと切り上げ」を参照してください。 |
** Example 'MULEX1': MULTIPLY ************************************************************************ DEFINE DATA LOCAL 1 #A (N3) INIT <20> 1 #B (N5) 1 #C (N3.1) 1 #D (N2) 1 #ARRAY1 (N5/1:4,1:4) INIT (2,*) <5> 1 #ARRAY2 (N5/1:4,1:4) INIT (4,*) <10> END-DEFINE * MULTIPLY #A BY 3 WRITE NOTITLE 'MULTIPLY #A BY 3' 25X '=' #A * MULTIPLY #A BY 3 GIVING #B WRITE 'MULTIPLY #A BY 3 GIVING #B' 15X '=' #B * MULTIPLY ROUNDED 3 BY 3.5 GIVING #C WRITE 'MULTIPLY ROUNDED 3 BY 3.5 GIVING #C' 6X '=' #C * MULTIPLY 3 BY -4 GIVING #D WRITE 'MULTIPLY 3 BY -4 GIVING #D' 14X '=' #D * MULTIPLY -3 BY -4 GIVING #D WRITE 'MULTIPLY -3 BY -4 GIVING #D' 14X '=' #D * MULTIPLY 3 BY 0 GIVING #D WRITE 'MULTIPLY 3 BY 0 GIVING #D' 14X '=' #D * WRITE / '=' #ARRAY1 (2,*) '=' #ARRAY2 (4,*) MULTIPLY #ARRAY1 (2,*) BY #ARRAY2 (4,*) WRITE / 'MULTIPLY #ARRAY1 (2,*) BY #ARRAY2 (4,*)' / '=' #ARRAY1 (2,*) '=' #ARRAY2 (4,*) * END
MULTIPLY #A BY 3 #A: 60 MULTIPLY #A BY 3 GIVING #B #B: 180 MULTIPLY ROUNDED 3 BY 3.5 GIVING #C #C: 10.5 MULTIPLY 3 BY -4 GIVING #D #D: -12 MULTIPLY -3 BY -4 GIVING #D #D: 12 MULTIPLY 3 BY 0 GIVING #D #D: 0 #ARRAY1: 5 5 5 5 #ARRAY2: 10 10 10 10 MULTIPLY #ARRAY1 (2,*) BY #ARRAY2 (4,*) #ARRAY1: 50 50 50 50 #ARRAY2: 10 10 10 10