COBOL算術命令「DIVIDE」の基本と使い方

2025年4月9日水曜日

COBOL

COBOLで割り算をしたいときに登場する命令、それがDIVIDE。ただ、構文がいろいろあって「どれを使えば?」と混乱していませんか?

この記事では、COBOLのDIVIDE命令について、初学者にもわかるように基礎から順を追って解説していきます。INTOBY GIVINGの違い、割り算の余りの出し方、構文ごとの使い分けなど、スッキリ理解できる内容で紹介します。

「DIVIDE命令って、なんだか割り切れない関係かも…」なんて思っていたあなたも、読み終わるころには仲良くなってるかもしれません。

この記事で学べること

  • DIVIDE命令の基本構文と意味

  • INTOBY GIVINGの使い方と違い

  • REMAINDER句を使った余りの計算方法

  • 割り算でよくあるミスとその対処法

  • 初心者でも迷わない使い分けのコツ

COBOL算術命令DIVIDEとは?割り算の基本を理解しよう

COBOLには、数字を計算するための命令がいくつかあります。

割り算を担当するのが「DIVIDE」命令です。名前のまんま「割る」という意味なので、見た目通りですね。

プログラムで「100を4で割って、結果を別の変数に入れたい」といったときに活躍するのがDIVIDE命令です。ふつうの電卓では当たり前のようにやっている割り算も、COBOLではちゃんとルールに従って命令を書く必要があります。

似たような仲間には、足し算の「ADD」、引き算の「SUBTRACT」、かけ算の「MULTIPLY」があります。これらと並んで、DIVIDEは四則演算のひとつを担う存在です。

ただし、割り算には「余り」が出る場合や、結果をどの変数に入れるかで少し書き方が変わってきます。次の章では、まず基本の書き方を見ていきましょう。

COBOL算術命令DIVIDEの基本的な書き方(構文)

DIVIDE命令の基本形はとてもシンプルです。まずは深く考えず、次のような構文を覚えてしまいましょう。

DIVIDE 割る数 INTO 割られる数.

例えば「4を100に割る」なら、こんな感じになります。

DIVIDE 4 INTO A.

この命令は「A ÷ 4」の結果をAに入れるという意味です。つまり、元の値が上書きされてしまうので注意が必要です。

構文のポイントをざっくりまとめると、こんな感じです。

  • DIVIDEは「割り算」をする命令
  • INTOは「どこに割るのか」を示すキーワード
  • 計算結果は、割られる変数に上書きされる

構文にはバリエーションもありますが、最初はこの「INTO」パターンをしっかり覚えるのがおすすめです。続くセクションで、他のパターンも紹介していきます。

結果を割れる数に入れる!DIVIDE INTO構文

DIVIDE INTO構文は、割った結果(商)を「割られる側」の変数に直接上書きしてしまうタイプの書き方です。計算結果がすぐに変数に反映されるのは便利ですが、もともとの値が消えてしまうので注意が必要です。

使い方はとてもシンプル。たとえば、AをBに割って、その結果をBに入れるなら、次のように書きます。

DIVIDE A INTO B.

この命令は「B ÷ A」の結果をBに格納するという意味です。直感とちょっと逆に感じるかもしれませんが、COBOLのルールなので素直に受け入れたほうがラクです。

構文のポイント

  • 「DIVIDE 割る数 INTO 割られる数.」の形になる
  • 商は「割られる数」に上書きされる
  • 元の値がなくなるので、結果だけを使いたいときに向いている

DIVIDE INTOの書き方

以下は、DIVIDE INTO構文を使った簡単な書き方です。変数に初期値を入れておき、割り算を実行しています。

DATA DIVISION.
WORKING-STORAGE SECTION.
01 A     PIC 9(3) VALUE 4.
01 B     PIC 9(3) VALUE 20.

PROCEDURE DIVISION.
    DIVIDE A INTO B.

このコードを実行すると、Bの値は「20 ÷ 4 = 5」となり、Bに5が代入されます。つまり、Bの元の値20は消えます。もし後で20を使いたい場合は、先に別の変数にコピーしておく必要があります。

結果を別変数に入れる!COBOL算術命令DIVIDE BY GIVING構文

今度は、計算結果を別の変数に保存できるDIVIDE BY GIVING構文を紹介します。割り算の対象(割る数・割られる数)をそのまま残しつつ、結果だけを指定した変数に入れる方法です。

たとえば、AをBで割った結果をCに入れるなら、次のように書きます。

DIVIDE A BY B GIVING C.

この場合、AやBの値は変わらず、計算結果だけがCに代入されます。元の数を保存しておきたい場合や、結果だけ取り出したいときにとても便利です。

INTO構文とのちがい

  • INTOは結果を「割られる数」に上書きする
  • BY GIVINGは結果を「別の変数」に入れる
  • 元の値を壊したくないなら、BY GIVINGを選ぶのが安心

DIVIDE BY GIVINGの書き方

以下は、DIVIDE BY GIVINGを使ったサンプルコードです。

DATA DIVISION.
WORKING-STORAGE SECTION.
01 A     PIC 9(3) VALUE 20.
01 B     PIC 9(3) VALUE 4.
01 C     PIC 9(3) VALUE 0.

PROCEDURE DIVISION.
    DIVIDE A BY B GIVING C.

実行結果は、Cに「20 ÷ 4 = 5」が格納されます。AとBの値はそのまま残るので、あとでまた別の計算に使いたいときにとても便利です。

INTOとBY GIVING、どちらを使うかは目的次第です。値を上書きしたいか、残したいかで使い分けましょう。

割り算の余りも計算!COBOL算術命令DIVIDEとREMAINDER句

割り算の結果って、商だけじゃ物足りない場面もありますよね。たとえば「偶数か奇数かを判定したい」「5で割った余りを使って処理を変えたい」など、余りが必要になるケースは意外と多いです。

そんなときに使えるのが、REMAINDER句です。DIVIDE INTOやDIVIDE BY GIVINGと組み合わせて使うと、商と余りをいっぺんに求められます。

構文の形は、次のようになります。

DIVIDE A INTO B GIVING C REMAINDER D.

この命令は「B ÷ A」の商をCに、余りをDに入れるという意味です。BY GIVINGパターンでも同じように書けます。

DIVIDE A BY B GIVING C REMAINDER D.

どちらを使っても、REMAINDER句を付けることで、商と余りの両方を手に入れることができます。

REMAINDER句が役立つ場面

  • 偶数・奇数の判定(2で割って余りが0なら偶数)
  • 特定の周期処理(例:5件ごとに処理を変える)
  • 割り切れないケースのチェック

余りを扱うなら、REMAINDER句はぜひ覚えておきたい相棒です。

COBOL算術命令DIVIDEを使う上での重要注意点

DIVIDE命令は便利ですが、使い方を間違えるとエラーの原因になります。予期せぬ計算ミスやプログラムの停止を防ぐために、以下の点はしっかり意識しておきましょう。

  • ゼロで割らないこと(ゼロ除算エラー)
  • PICTURE句の桁数や型のミスマッチ
  • 小数点以下の扱い(暗黙の切り捨て)
  • 必要に応じてROUNDED句で丸め処理を追加

次のセクションでは、ゼロ除算エラーの対処方法を詳しく見ていきます。

ゼロ除算エラーを防ぐには?

0で割るというのは、人間が見れば「やっちゃダメ」とわかりますが、プログラムは指示されたとおりにしか動きません。COBOLでも、0で割る命令があるとプログラムが異常終了してしまいます。

そんなときに活躍するのが、ON SIZE ERROR句です。割り算に失敗したとき、エラー処理を行うための保険のようなものです。

DIVIDE A BY B GIVING C
    ON SIZE ERROR
        DISPLAY 'ゼロ除算エラー発生!'.

このように書いておけば、Bが0でもプログラムは止まらず、エラーメッセージが表示されます。

もうひとつの方法として、事前にIF文でチェックするのも有効です。

IF B NOT = 0
    DIVIDE A BY B GIVING C
ELSE
    DISPLAY 'ゼロでは割れません!'.

理想は、両方を組み合わせることです。事前に防いで、それでも不意にゼロが来たときはON SIZE ERRORでフォローする。これが一番安心です。

COBOL算術命令DIVIDEのサンプルプログラム

ここまで学んできたDIVIDE命令を一気に活用する、実践的なサンプルプログラムを紹介します。

INTO、BY GIVING、REMAINDER、ON SIZE ERROR、ROUNDEDなどを組み合わせて、実行結果を見ながら学べるように構成しています。

実際に動かしながら理解を深めていきましょう。

IDENTIFICATION DIVISION.
PROGRAM-ID. DIVIDE-DEMO.

ENVIRONMENT DIVISION.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 A               PIC 9(3) VALUE 25.
01 B               PIC 9(3) VALUE 4.
01 C               PIC 9(3) VALUE 0.
01 D               PIC 9(3) VALUE 0.
01 E               PIC 9(3) VALUE 0.
01 F               PIC 9(3) VALUE 0.
01 G               PIC 9(3) VALUE 0.
01 H               PIC 9(3) VALUE 0.
01 I               PIC 9(3)V9 VALUE 10.5.
01 J               PIC 9(3)V9 VALUE 3.
01 K               PIC 9(3)V9 VALUE 0.

PROCEDURE DIVISION.
    DISPLAY "----- DIVIDE INTO -----"
    DIVIDE B INTO A GIVING C REMAINDER D
        ON SIZE ERROR DISPLAY "ゼロ除算エラー".

    DISPLAY "商(C): " C.
    DISPLAY "余り(D): " D.

    DISPLAY "----- DIVIDE BY GIVING -----"
    DIVIDE A BY B GIVING E REMAINDER F
        ON SIZE ERROR DISPLAY "ゼロ除算エラー".

    DISPLAY "商(E): " E.
    DISPLAY "余り(F): " F.

    DISPLAY "----- ROUNDED -----"
    DIVIDE I BY J GIVING K ROUNDED
        ON SIZE ERROR DISPLAY "ゼロ除算エラー".

    DISPLAY "小数を四捨五入した結果(K): " K.

    STOP RUN.

実行結果(環境によって多少異なる場合があります)

----- DIVIDE INTO -----
商(C): 006
余り(D): 001
----- DIVIDE BY GIVING -----
商(E): 006
余り(F): 001
----- ROUNDED -----
小数を四捨五入した結果(K): 4

サンプルプログラムの解説

まず、変数定義(DATA DIVISION)から見ていきます。AとBは整数の割り算に使う変数、C〜Fは商と余りの格納先です。I、J、Kは小数を扱う場面で使用しています。

  • A(25)÷ B(4)= 6余り1
  • I(10.5)÷ J(3)= 3.5(ROUNDEDにより4へ)

DIVIDE B INTO A GIVING C REMAINDER D は、「A ÷ B」の商をCに、余りをDに格納します。INTO構文ですが、GIVINGとREMAINDERを加えることでより柔軟に使えます。

DIVIDE A BY B GIVING E REMAINDER F は、BY GIVING構文。割り算の結果を別の変数EとFに入れ、AやBの元の値はそのまま残ります。

DIVIDE I BY J GIVING K ROUNDED は、小数同士の割り算です。ROUNDED句を使うことで、3.5を「4」に丸めてKに格納しています。ROUNDEDがないと切り捨てになります。

ON SIZE ERROR句は、ゼロ除算が発生したときの保険です。たとえばBやJが0だった場合、プログラムを止めずに処理を変えることができます。

全体の流れとしては、基本的な構文をベースにしながら、エラー対策と余りの処理を追加していくイメージです。初学者でも動かしながら学べる内容になっています。

まとめ

DIVIDE命令をマスターするには、構文の違いと使い分けを押さえるのがコツです。ここまで学んだポイントを簡単に整理します。

  • DIVIDE INTO:結果を割られる変数に入れる。元の値は上書きされる。
  • DIVIDE BY GIVING:結果を別の変数に入れる。元の値はそのまま。
  • REMAINDER句:余りを別の変数に格納できる。
  • ON SIZE ERROR句:ゼロ除算などのエラーを防ぐために使う。
  • ROUNDED句:小数の計算結果を四捨五入して扱える。

割り算が苦手だった人も、COBOLのDIVIDE命令を使えばスッキリ処理できます。次はMULTIPLYやSUBTRACTなど、他の算術命令も触ってみると理解が深まりますよ。

【関連記事】

>> 今さら聞けない「COBOLとは?」

このブログを検索

  • ()

自己紹介

自分の写真
リモートワークでエンジニア兼Webディレクターとして活動しています。プログラミングやAIなど、日々の業務や学びの中で得た知識や気づきをわかりやすく発信し、これからITスキルを身につけたい人にも役立つ情報をお届けします。 note → https://note.com/yurufuri X → https://x.com/mnao111

QooQ