このドキュメントでは、次のトピックについて説明します。
関連ステートメント:ADD | COMPRESS | COMPUTE | EXAMINE | MOVE | MOVE ALL | MULTIPLY | RESET | SEPARATE | SUBTRACT
関連機能グループ:「算術演算とデータ移動操作」
DIVIDE
ステートメントは、2 つのオペランドを除算するために使用します。
注意:
ゼロによる除算に関する注意事項:"0" になっている除数(operand1)を使用しようとすると、エラーメッセージまたは結果として "0" が返されます。いずれが返されるかは、セッションパラメータ ZD
の設定によって決まります(詳細については、『パラメータリファレンス』ドキュメントを参照)。
このステートメントには異なる構造が可能です。
DIVIDE [ROUNDED ] operand1 INTO operand2
|
構文図で使用されている記号については、「構文記号」を参照してください。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | N | N | P | I | F | 可 | 不可 | |||||||||
operand2 | C | S | A | M | N | P | I | F | 可 | 不可 |
構文要素の説明:
operand1 INTO operand2 |
オペランド:
operand1 は除数で、operand2 は被除数です。 結果は operand2(結果フィールド)に格納されるため、ステートメントは次の式と同等になります。 <oper2> := <oper2> / <oper1> 結果フィールドとして使用できるのは、データベースフィールドまたはユーザー定義変数です。 operand2 が定数または変更不可の Natural システム変数の場合は、 |
---|---|
ROUNDED | キーワード ROUNDED を指定すると、結果は切り上げられます。
|
DIVIDE [ROUNDED ] operand1 INTO operand2 [GIVING operand3 ]
|
構文図で使用されている記号については、「構文記号」を参照してください。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | N | N | P | I | F | 可 | 不可 | ||||||||||
operand2 | C | S | A | N | N | P | I | F | 可 | 不可 | ||||||||||
operand3 | S | A | A | U | N | P | I | F | B* | 可 | 可 |
*operand3 のフォーマット B は、4 以下の長さでのみ使用できます。
構文要素の説明:
operand1 INTO operand2 GIVING operand3 |
オペランド:
operand1 は除数で、operand2 は被除数です。結果は operand3 に格納されるため、ステートメントは次の式と同等になります。 <oper3> := <oper2> / <oper1> 結果フィールドとしてデータベースフィールドを使用している場合は、除算の結果により更新されるのはプログラム内で使用されるフィールドの内部値のみです。 データベース内のフィールドの値は変更されないまま維持されます。 除算の結果の小数点位置は、結果フィールド(つまり、operand3)から計算されます。 結果の精度については、『プログラミングガイド』の「演算割り当てのルール」、「算術演算結果の精度」を参照してください。 |
---|---|
ROUNDED | キーワード ROUNDED を指定すると、結果は切り上げられます。
|
DIVIDE operand1 INTO operand2 [GIVING operand3 ] REMAINDER operand4
|
構文図で使用されている記号については、「構文記号」を参照してください。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | N | N | P | I | 可 | 不可 | |||||||||||
operand2 | C | S | A | N | N | P | I | 可 | 不可 | |||||||||||
operand3 | S | A | A | U | N | P | I | F | B* | 可 | 可 | |||||||||
operand4 | S | A | A | U | N | P | I | F | B* | T | 可 | 可 |
* operand3 および operand4 のフォーマット B は、4 以下の長さでのみ使用できます。
構文要素の説明:
operand1 |
除数:
operand1 は除数、つまり割り算の商を求めるために被除数を割る数値または量のことです。 |
---|---|
operand2 |
結果フィールド:
operand2 が定数または変更不可の Natural システム変数の場合は、 |
ROUNDED |
キーワード |
GIVING operand3 |
キーワード 結果フィールドとしてデータベースフィールドを使用している場合は、除算の結果により更新されるのはプログラム内で使用されるフィールドの内部値のみです。 データベース内のフィールドの値は変更されないまま維持されます。 除算結果の小数桁数は、結果フィールド(つまり 結果の精度については、『プログラミングガイド』の「演算割り当てのルール」、「算術演算結果の精度」を参照してください。 |
REMAINDER operand4 |
キーワード
余りは、内部的に次のように計算されます。
これらの各ステップにおいて、「算術演算結果の精度」(『プログラミングガイド』)で説明されている規則が適用されます。 |
** Example 'DIVEX1': DIVIDE ************************************************************************ DEFINE DATA LOCAL 1 #A (N7) INIT <20> 1 #B (N7) 1 #C (N3.2) 1 #D (N1) 1 #E (N1) INIT <3> 1 #F (N1) END-DEFINE * DIVIDE 5 INTO #A WRITE NOTITLE 'DIVIDE 5 INTO #A' 20X '=' #A * RESET INITIAL #A DIVIDE 5 INTO #A GIVING #B WRITE 'DIVIDE 5 INTO #A GIVING #B' 10X '=' #B * DIVIDE 3 INTO 3.10 GIVING #C WRITE 'DIVIDE 3 INTO 3.10 GIVING #C' 8X '=' #C * DIVIDE 3 INTO 3.1 GIVING #D WRITE 'DIVIDE 3 INTO 3.1 GIVING #D' 9X '=' #D * DIVIDE 2 INTO #E REMAINDER #F WRITE 'DIVIDE 2 INTO #E REMAINDER #F' 7X '=' #E '=' #F * END
DIVIDE 5 INTO #A #A: 4 DIVIDE 5 INTO #A GIVING #B #B: 4 DIVIDE 3 INTO 3.10 GIVING #C #C: 1.03 DIVIDE 3 INTO 3.1 GIVING #D #D: 1 DIVIDE 2 INTO #E REMAINDER #F #E: 1 #F: 1