COBOL言語の関数「MOD」について理解しよう!|用語辞典

COBOL(コボル)言語の予約語MODを使ったモジュロの算出とは

辞典・辞書-MOD-イメージ

COBOL(コボル)言語のMOD関数とは?

COBOL(コボル)の組込み関数であるMOD関数は、ある数値を別の数値で割る事によって割りきれないで残った数、モジュロ値を求めたい場合に使用します。似た関数にREM関数があり、この関数でも同じような結果値を得ることができますが、REM関数とMOD関数では、剰余の正負の符号決定のされ方が異なっており、REM関数では被除数、MOD関数では除数と同じ符号となるように計算がされます。では早速COBOL言語での使い方について見ていきましょう。

書き方(MOD関数):

FUNCTION MOD(引数1 引数2)

・関数の型:数字型

・引数1:割られる数値を指定します。

・引数2:割る数値を指定します。割る数値は0以外の整数を指定します。

・戻り値:引数1を引数2で割った時のモジュロ値です。

使用例:

辞典・辞書-MOD-使用例

実行結果:

辞典・辞書-MOD-実行結果

MOD関数のCOBOL(コボル)言語における基本事項やルールについて

1.「MOD」の間の空白や改行は、自由に設定できます。

2.組込み関数の前には予約語「FUNCTION」を指定する必要があります。

3.引数2で割る数値は0以外の整数を指定する必要があります。

COBOL(コボル)言語のMOD関数を扱う上での注意点

COBOL言語のMOD関数は、以下の演算式で定義する事ができます。

引数1 - (引数2 * FUNCTION INTEGER (引数1 / 引数2))」

式の中で使用している予約語「INTEGER」は、引数値を超えない最大の整数を求めたい場合に使用します。負数の場合に注意が必要で、例えば-12/5=-2.4の場合、-3が結果値として返ってきます。似た予約語にINTEGER-PARTがありますが、こちらは小数点以下を切り捨てた整数値が結果値として返ってきますので、使用する際は注意しましょう。

MOD関数を使ったCOBOL(コボル)プログラムの活用法

MOD関数は、先ほどご紹介した通りある数値を別の数値で除算し、その余りを取得したい場合に使用する関数でした。ここでは活用法として、MOD関数とMOD関数を求める演算式を用いた場合の2種類のプログラミングを記述して、結果値及びMOD関数の動きについて理解を深めてみましょう。例では、割られる数として、0、正の数値、負の数値、割る数としても、正の数値、負の数値の組み合わせ、結果を確認してみましょう。

サンプルプログラム(MOD2):

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. MOD_SAMPLE2.
  3. ENVIRONMENT DIVISION.
  4. INPUT-OUTPUT SECTION.
  5. DATA DIVISION.
  6. WORKING-STORAGE SECTION.
  7. 01 WK-SUJI.
  8. 03 WK-SUJI-0 PIC S99 VALUE ZERO.
  9. 03 WK-SUJI-SEI PIC S99 VALUE 12.
  10. 03 WK-SUJI-FU PIC S99 VALUE -12.
  11. 01 WK-RESULT.
  12. 03 WK-R1 PIC S99.
  13. 03 WK-R2 PIC S99.
  14. 03 WK-R3 PIC S99.
  15. PROCEDURE DIVISION.
  16. DISPLAY "割られる数値:0、割る数値:5".
  17. COMPUTE WK-R1 = FUNCTION MOD(WK-SUJI-0 5).
  18. DISPLAY WK-R1.
  19. COMPUTE WK-R1 = WK-SUJI-0 - (5 * FUNCTION INTEGER (WK-SUJI-0/5)).
  20. DISPLAY WK-R1.
  21.  
  22. DISPLAY "割られる数値:0、割る数値:-5".
  23. COMPUTE WK-R1 = FUNCTION MOD(WK-SUJI-0 -5).
  24. DISPLAY WK-R1.
  25. COMPUTE WK-R1 = WK-SUJI-0 - (-5 * FUNCTION INTEGER (WK-SUJI-0/-5)).
  26. DISPLAY WK-R1.
  27.  
  28. DISPLAY "割られる数値:12、割る数値:5".
  29. COMPUTE WK-R2 = FUNCTION MOD(WK-SUJI-SEI 5).
  30. DISPLAY WK-R2.
  31. COMPUTE WK-R2 = WK-SUJI-SEI - (5 * FUNCTION INTEGER (WK-SUJI-SEI/5)).
  32. DISPLAY WK-R2.
  33.  
  34. DISPLAY "割られる数値:12、割る数値:-5".
  35. COMPUTE WK-R2 = FUNCTION MOD(WK-SUJI-SEI -5).
  36. DISPLAY WK-R2.
  37. COMPUTE WK-R2 = WK-SUJI-SEI - (-5 * FUNCTION INTEGER (WK-SUJI-SEI/-5)).
  38. DISPLAY WK-R2.
  39.  
  40. DISPLAY "割られる数値:-12、割る数値:5".
  41. COMPUTE WK-R3 = FUNCTION MOD(WK-SUJI-FU 5).
  42. DISPLAY WK-R3.
  43. COMPUTE WK-R3 = WK-SUJI-FU - (5 * FUNCTION INTEGER (WK-SUJI-FU/5)).
  44. DISPLAY WK-R3.
  45.  
  46. DISPLAY "割られる数値:-12、割る数値:-5".
  47. COMPUTE WK-R3 = FUNCTION MOD(WK-SUJI-FU -5).
  48. DISPLAY WK-R3.
  49. COMPUTE WK-R3 = WK-SUJI-FU - (-5 * FUNCTION INTEGER (WK-SUJI-FU/-5)).
  50. DISPLAY WK-R3.
  51. STOP RUN.

実行結果(MOD2):

辞典・辞書-MOD-実行結果

今回ご紹介したMODのサンプルプログラムは、ある数値を別の数値で除算し、その余りを取得したい場合に使用する関数でした。余りは、情報通信で使用されている暗号や,通信路の誤りを訂正する技術分野で活用されていますので、是非この機会に一度サンプルプログラムを作成して機能の理解を深め、実際のプログラミングに活用いただければと思います。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門