DIVIDE ステートメントは、1 つの数字データ項目と他の数字データ項目 (複数可) との間で 除算を行い、商と剰余をデータ項目に保管します。
フォーマット 1: DIVIDE ステートメント .-------------------. V | >>-DIVIDE--+-ID-1-------+--INTO----ID-2--+---------+-+----------> '-リテラル-1--' '-ROUNDED-' >--+-----------------------------------------+-----------------> '-+----+--SIZE ERROR--命令ステートメント-1--' '-ON-' >--+---------------------------------------------+------------> '-NOT--+----+--SIZE ERROR--命令ステートメント-2-' '-ON-' >--+------------+---------------------------------------------->< '-END-DIVIDE-'
フォーマット 1 では、ID-1 またはリテラル-1 の値を ID-2 の値 で割り、その商を ID-2 に保管します。ID-2 は複数指定可能で、左から右へ順に 除算が行われ、商はそれぞれの ID-2 に保管されます。
フォーマット 2: INTO および GIVING 句を含む DIVIDE ステートメント >>-DIVIDE--+-ID-1-------+--INTO--+-ID-2-------+-----------------> '-リテラル-1--' '-リテラル-2--' .-------------------. V | >--GIVING----ID-3--+---------+-+--------------------------------> '-ROUNDED-' >--+----------------------------------------+-----------------> '-+----+--SIZE ERROR--命令ステートメント-1-' '-ON-' >--+---------------------------------------------+------------> '-NOT--+----+--SIZE ERROR--命令ステートメント-2-' '-ON-' >--+------------+---------------------------------------------->< '-END-DIVIDE-'
フォーマット 2 では、ID-1 またはリテラル-1 の値を ID-2 または リテラル-2 の値で割り、その商の値は、ID-3 で参照される各データ項目に 保管されます。
フォーマット 3: BY および GIVING 句を含む DIVIDE ステートメント >>-DIVIDE--+-ID-1-------+--BY--+-ID-2-------+-------------------> '-リテラル-1--' '-リテラル-2--' .-------------------. V | >--GIVING----ID-3--+---------+-+--------------------------------> '-ROUNDED-' >--+----------------------------------------+-----------------> '-+----+--SIZE ERROR--命令ステートメント-1-' '-ON-' >--+---------------------------------------------+------------> '-NOT--+----+--SIZE ERROR--命令ステートメント-2-' '-ON-' >--+------------+---------------------------------------------->< '-END-DIVIDE-'
フォーマット 3 では、ID-1 またはリテラル-1 の値を ID-2 または リテラル-2 の値で割り、その商の値は、ID-3 で参照される各データ項目 に保管されます。
フォーマット 4: INTO および REMAINDER 句を含む DIVIDE ステートメント >>-DIVIDE--+-ID-1-------+--INTO--+-ID-2-------+-----------------> '-リテラル-1--' '-リテラル-2--' >--GIVING--ID-3--+---------+--REMAINDER--ID-4-------------------> '-ROUNDED-' >--+----------------------------------------+-----------------> '-+----+--SIZE ERROR--命令ステートメント-1-' '-ON-' >--+---------------------------------------------+------------> '-NOT--+----+--SIZE ERROR--命令ステートメント-2-' '-ON-' >--+------------+---------------------------------------------->< '-END-DIVIDE-'
フォーマット 4 では、ID-1 またはリテラル-1 の値を ID-2 または リテラル-2 の値で割ります。その商の値は ID-3 に保管され、剰余の値は ID-4 に保管されます。
フォーマット 5: BY および REMAINDER 句を含む DIVIDE ステートメント >>-DIVIDE--+-ID-1-------+--BY--+-ID-2-------+-------------------> '-リテラル-1--' '-リテラル-2--' >--GIVING--ID-3--+---------+--REMAINDER--ID-4-------------------> '-ROUNDED-' >--+----------------------------------------+-----------------> '-+----+--SIZE ERROR--命令ステートメント-1-' '-ON-' >--+---------------------------------------------+------------> '-NOT--+----+--SIZE ERROR--命令ステートメント-2-' '-ON-' >--+------------+---------------------------------------------->< '-END-DIVIDE-'
フォーマット 5 では、ID-1 またはリテラル-1 の値を ID-2 または リテラル-2 の値で割ります。その商の値は ID-3 に保管され、剰余の値は ID-4 に保管されます。
すべてのフォーマット全部に関して次のことが言えます。
ID-3 または ID-4 が日付フィールドである場合、商または剰余が ID-3 にどのように保管されるかについては、日付フィールドに関連する算術演算結果の保管を参照してください。
フォーマット 1、2、および 3 の場合、数字データ項目またはリテラルを指定できる場所であれば、 浮動小数点データ項目およびリテラルを使用することができます。
フォーマット 4 および 5 では、浮動小数点データ項目またはリテラルは使用できません。
フォーマット 1、2、および 3 については、ROUNDED 句を参照してください。
フォーマット 4 および 5 の場合は、剰余を計算するために使用される商は、 中間フィールドにあります。 中間フィールドの値は、丸めが行われるのではなく切り捨てが行われます。
商と除数の積を被除数から減じた結果が、ID-4 に保管されます。 ID-3 が、数字編集項目であれば、剰余を計算するために使用される商は、 編集されていない商を含む中間フィールドです。
REMAINDER 句は、受け取りフィールドまたはオペランドのいずれかが浮動小数点項目の場合は無効です。
REMAINDER 句の中で ID-4 に添え字が付いていると、その添え字は、 除算結果が GIVING 句の ID-3 に入れられた後で評価されます。
フォーマット 1、2、および 3 については、SIZE ERROR 句を参照してください。
フォーマット 4 および 5 の場合、商にサイズ・エラーが起こると、 剰余の計算は意味がありません。 したがって、商フィールド (ID-3) と剰余フィールド (ID-4) の内容は変わりません。
剰余にサイズ・エラーが起こると、剰余フィールド (ID-4) の内容は変わりません。
上記のいずれの場合も、実際にどの状態が起こったかを判別するために、 結果を分析する必要があります。
NOT ON SIZE ERROR 句の詳細については、SIZE ERROR 句を参照してください。
この明示的範囲終了符号は、DIVIDE ステートメントの範囲を区切るために使用されます。 END-DIVIDE では、 条件付き DIVIDE ステートメントを命令ステートメントにして、 別の条件ステートメントにネストすることができます。 END-DIVIDE は、命令 DIVIDE ステートメントと共に使用できます。
詳しくは、範囲区切りステートメントを参照してください。