COBOL言語の関数「FACTORIAL」について理解しよう!
COBOL(コボル)言語の予約語FACTORIALを使った階乗の求め方とは
COBOL(コボル)言語のFACTORIAL関数とは?
COBOL(コボル)の組込み関数であるFACTORIAL関数は、英語からも想像が付く通り階乗を求めたい場合に使用します。階乗とは、自然数nに対して1からnまでの自然数の積になり、n!で表します。!はエクスクラメーションマークと言います。例えば自然数5の階乗(5!)は、5 × 4 × 3 × 2 × 1 (5 ・ 4 ・ 3 ・ 2 ・ 1)= 120になります。なお、0の階乗だけは1と決められています。階乗は主に順列や組み合わせを求める際に利用されます。例えば数字の書かれたカードを3枚並べた場合に何通りの並べ方ができるかを求める事ができます。では早速COBOL言語での使い方について見ていきましょう。
書き方(FACTORIAL関数):
FUNCTION FACTORIAL(引数1)
・関数の型:整数
・引数1:階乗を求める数字を指定します。0以上20未満の整数が指定できます。
・戻り値:引数1の階乗の整数値です。
使用例:
実行結果:
FACTORIAL関数のCOBOL(コボル)言語における基本事項やルールについて
1.「FACTORIAL」の間の空白や改行は、自由に設定できます。
2.組込み関数の前には予約語「FUNCTION」を指定する必要があります。
3.引数1は0以上20未満の数値である必要があります。
COBOL(コボル)言語のFACTORIAL関数を扱う上での注意点
COBOL言語のFACTORIAL関数(階乗)は、高校の数学で学ぶ順列、組み合わせを求める際に活用できます。順列は、異なるn個のものの中から異なるr個を取り出して1列に並べる場合の数を求める事を指し、nPr=n!/ (n-r)!というような公式があります。組み合わせは、異なるn個のものの中から異なるr個を取り出す場合の数を求める事を指し、nCr=nPr/r!というような公式があります。順列と組み合わせの違いは、並び順を考慮するかしないかになります。この違いを理解して活用できるようになりましょう。
また、引数として指定する数字が負数の場合は実行時にエラーとなってしまいますし、引数に20以上の値を設定した場合は桁溢れを起こしてしまいますので、関数実行前には数字の値の範囲をチェックするようにしましょう。
FACTORIAL関数を使ったCOBOL(コボル)プログラムの活用法
FACTORIAL関数は、先ほどご紹介した通り階乗を求める関数でした。ここでは活用法として、実際に順列を求めるプログラムを作成してみましょう。画面上から異なる数値の数(n)と、そこから取り出す数値の数(r)を入力してもらい、結果値を画面に表示するようにしてみましょう。それができれば今度は入力される値をチェックする処理などをご自身で追加してみましょう。同じように組み合わせのプログラムも作成すると理解が深まるでしょう。
サンプルプログラム(FACTORIAL2):
- IDENTIFICATION DIVISION.
- PROGRAM-ID. FACTORIAL_SAMPLE2.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- 01 INPUT-RECORD.
- 03 IN-DATA-NUM-N PIC 9(02).
- 03 IN-DATA-NUM-R PIC 9(02).
- 03 OUT-DATA-NUM PIC 9(18).
- PROCEDURE DIVISION.
- DISPLAY "異なる数値の数を入力してください。>> " WITH NO ADVANCING.
- ACCEPT IN-DATA-NUM-N FROM CONSOLE.
- DISPLAY "取り出す数値の数を入力してください。>> " WITH NO ADVANCING.
- ACCEPT IN-DATA-NUM-R FROM CONSOLE.
- COMPUTE OUT-DATA-NUM = FUNCTION FACTORIAL(IN-DATA-NUM-N) /
- FUNCTION FACTORIAL(IN-DATA-NUM-N - IN-DATA-NUM-R).
- DISPLAY IN-DATA-NUM-N "P" IN-DATA-NUM-R " = " OUT-DATA-NUM.
- STOP RUN.
実行結果(FACTORIAL2):
今回ご紹介したFACTORIALのサンプルプログラムは、ある整数値の階乗を求める関数でした。階乗は高校数学でも習うものになりますので馴染みのある方もいらっしゃるのではないかと思います。ここで学んだ順列や組み合わせについては、確率の計算を行う場合などにも応用されますので、是非この機会に一度サンプルプログラムを作成して機能の理解を深めていただくとともに、実際のプログラミングに応用していっていただければと思います。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典