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

COBOL(コボル)言語の予約語RANDOMを使った乱数の求め方とは

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

COBOL(コボル)言語のRANDOMとは?

COBOL(コボル)の組み込み関数であるRANDOM関数は乱数を生成したい場合に使用します。乱数とは規則性の無い数値のことで、統計を取得するときにランダムでデータを抽出するときや暗号文を生成するときに乱数表を作成したり、サイコロやくじ引きなどで異なる数値を取得したい場合によく使用します。

乱数を取得する処理はプログラムで使用する機会が多く、CやJavaなど多くのプログラムで関数が用意されています。

COBOL(コボル)のRANDOM関数で乱数を取得する方法は大きく分けて3パターンあります。引数に整数を指定する場合と乗算する場合、RANDOM関数に乗算して乱数を求める方法などがあります。

書き方:

FUNCTION RANDOM [(引数-1)]

RANDOM関数の使い方は非常に簡単です。引数を指定しない場合、引数を指定する場合、RANDOM関数に引数を指定する場合はそれぞれ以下のように記述します。

使用例:

  1. COMPUTE 乱数1 = FUNCTION RANDOM.
  2. COMPUTE 乱数2 = FUNCTION RANDOM(5).
  3. COMPUTE 乱数3 = FUNCTION RANDOM * 1000.

1番目の引数を指定しない場合は0以上1未満の乱数を取得します。2番目の整数を引数に指定すると0以上1未満の乱数を取得します。3番目のRANDOM関数のように1000の値を乗算すると0以上1000未満の乱数を取得します。

実行結果:

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

なお、引数を指定しない場合や引数の整数値が同じ場合は、再度プログラムを実行しても返される値は常に同じになりますので、異なる乱数を取得したい場合は引数の値を変更しておく必要があります。

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

  1. 「FUNCTION RANDOM」の間の空白や改行は、自由に設定できます。
  2. RANDOM関数のような組み込み関数は、関数名の前に予約語「FUNCTION」を指定する必要があります。
  3. RANDOM関数で指定する引数は0又は正の整数を指定する必要があります。
  4. RANDOM関数で引数なし、及び引数を指定した場合に返される値は0以上1未満です。
  5. RANDOM関数に乗算することにより1以上の乱数を取得することも可能です。

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

  1. RANDOM関数で指定する引数に負数を使用することはできません。そのため、RANDOM関数の使用前に引数に使用する項目が負数でないことを確認する必要があります。
  2. RANDOM関数は他のプログラムで乱数を取得する関数のように、引数の値が同じ場合は実行するごとに異なる乱数を取得することはできません。続けてプログラムを実行しても、RANDOM関数で返される値は常に同じになります。

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

RANDOM関数はCOBOL(コボル)言語で乱数を取得したい場合に便利な組み込み関数です。ここでは、活用法としてさまざまなパターンで乱数を取得する簡単なプログラムを紹介します。

サンプルプログラム:

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. RANDOM_SAMPLE01.
  3. ENVIRONMENT DIVISION.
  4. INPUT-OUTPUT SECTION.
  5. DATA DIVISION.
  6. WORKING-STORAGE SECTION.
  7. 01 ITEM-RANSU.
  8. 03 RANSU-1 PIC 9V9(4).
  9. 03 RANSU-2 PIC 9(3).
  10. 03 RANSU-3 PIC 9V9(3).
  11. 03 RANSU-4 PIC 9(3)V9(3) VALUE 100.
  12.  
  13. PROCEDURE DIVISION.
  14.  
  15. *>----------------------------------------------------
  16. *> 乱数を取得
  17. *>----------------------------------------------------
  18. COMPUTE RANSU-1 = FUNCTION RANDOM. *> 引数の指定なし
  19. COMPUTE RANSU-2 = FUNCTION RANDOM * 1000. *> 乗算
  20. COMPUTE RANSU-3 = FUNCTION RANDOM(5). *> 引数あり
  21. COMPUTE RANSU-4 = FUNCTION RANDOM(RANSU-4). *> データ項目を指定
  22.  
  23. *>----------------------------------------------------
  24. *> 結果を出力
  25. *>----------------------------------------------------
  26. DISPLAY "引数なしの場合:"RANSU-1.
  27. DISPLAY "乗算した場合:"RANSU-2.
  28. DISPLAY "引数を指定した場合:"RANSU-3.
  29. DISPLAY "引数に項目を指定した場合:"RANSU-4.

実行結果:

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

このプログラムでは、RANDOM関数で引数の指定なし、RANDOM関数に乗算した場合、引数に整数を指定した場合、引数にデータ項目を指定した場合の取得した乱数の結果をそれぞれ出力しています。

引数を指定しなかった場合、引数を指定した場合、データ項目を指定した場合は0以上1未満の乱数値が返されます。RANDOM関数に乗算した場合は乗算する値によって1以上の乱数値が返されます。

また、注意点で解説したように、RANDOM関数は引数なし、又は引数の値が同じの場合は、再度プログラムを実行しても常に返される値は同じになります。

このようにCOBOL(コボル)のRANDOM関数は、他のプログラミング言語の乱数を取得する関数と異なる部分がありますので、使用する場合は仕組みをよく理解しておきましょう。

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

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

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

COBOL入門のカテゴリー

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