COBOL言語の関数「MAX、MIN」ついて理解しよう! | 用語辞典
COBOL(コボル)言語の予約語MAX、MINを使った最大値、最小値の求め方とは
COBOL(コボル)言語のMAX,MINとは?
COBOL(コボル)の組み込み関数であるMAX関数、MIN関数は2つ以上の項目や値から最大値、最小値を求める場合に使用します。MAX関数は指定された複数の引数から最大値が含まれる引数の値を返し、MIN関数は指定された複数の引数から最小値が含まれる値を返します。
書き方(MAX関数):
FUNCTION MAX(引数-1、引数-2、・・・)
書き方(MIN関数):
FUNCTION MIN(引数-1、引数-2、・・・)
たとえば、プログラムで定義された以下の項目から最大値、最小値を求めたい場合があるとします。
- 03 NUM-A PIC 9(3) VALUE 200.
- 03 NUM-B PIC 9(3) VALUE 300.
- 03 NUM-C PIC 9(3) VALUE 100.
以下のように引数を指定するとMAX関数、MIN関数は最大値、最小値を含む引数の値が返されます。この例ではMAX関数は最大値300を返し、MIN関数は最小値100を返します。
- FUNCTION MAX(NUM-A NUM-B NUM-C).
- FUNCTION MIN(NUM-A NUM-B NUM-C).
使用例:
実行結果:
MAX、MIN関数のCOBOL(コボル)言語における基本事項やルールについて
- 「FUNCTION MAX」の間の空白や改行は、自由に設定できます。
- MAX関数やMIN関数のような組み込み関数は、関数名の前に予約後「FUNCTION」を指定する必要があります。
- 引数には最大値・最小値を求める値を複数指定する必要があります。
- MAX、MIN関数の引数は数字のほか、英字・英数字・国別を指定することもできます。
- 戻り値は引数の項目が持っている値の内容が返されます。最大値、最小値を求める比較は単純条件の規則に従います。
- 比較する項目で2つ以上の同じ値の最大値、最小値がある場合は、左側にある引数-1の内容が返されます。
COBOL(コボル)言語のMAX関数、MIN関数を扱う上での注意点
MAX関数、MIN関数で引数に指定する値は、同じ型(数字・英字・英数字・国別)である必要があります。ただし、英字と英数字の引数の組み合わせは可能です。
MAX、MIN関数を使ったCOBOL(コボル)プログラムの活用法
MAX、MIN関数はCOBOL(コボル)言語で複数の項目から最大値、最小値を求めるときに非常に便利です。ここでは、活用法としてACCEPT文で入力した値から最大値、最小値を求める簡単なプログラムを紹介します。
サンプルプログラム1:
- IDENTIFICATION DIVISION.
- PROGRAM-ID. MAXMIN_SAMPLE01.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- 01 SAMPLE-DATA.
- 03 NUM-A PIC 9(3).
- 03 NUM-B PIC 9(3).
- 03 NUM-C PIC 9(3).
- 01 NUM-MAX PIC 9(3).
- 01 NUM-MIN PIC 9(3).
- PROCEDURE DIVISION.
- *>----------------------------------------------------
- *> コンソールに入力
- *>----------------------------------------------------
- DISPLAY "数字を入力してください(1/3)。>> " WITH NO ADVANCING.
- ACCEPT NUM-A FROM CONSOLE.
- DISPLAY "数字を入力してください(2/3)。>> " WITH NO ADVANCING.
- ACCEPT NUM-B FROM CONSOLE.
- DISPLAY "数字を入力してください(3/3)。>> " WITH NO ADVANCING.
- ACCEPT NUM-C FROM CONSOLE.
- *>----------------------------------------------------
- *> 最大値/最小値を求める
- *>----------------------------------------------------
- COMPUTE NUM-MAX = FUNCTION MAX(NUM-A NUM-B NUM-C).
- COMPUTE NUM-MIN = FUNCTION MIN(NUM-A NUM-B NUM-C).
- DISPLAY "最大値は:"NUM-MAX.
- DISPLAY "最小値は:"NUM-MIN.
実行結果:
先述したようにMAX関数、MIN関数は英字などの文字列を比較するときにも使用できます。以下のサンプルでは入力した英字の文字列から最大値、最小値を求めます。なお、文字列の場合アルファベット順に最大値、最小値が精査されます。
サンプルプログラム2:
- IDENTIFICATION DIVISION.
- PROGRAM-ID. MAXMIN_SAMPLE02.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- 01 FRUITS-DATA.
- 03 STR-A PIC X(10).
- 03 STR-B PIC X(10).
- 03 STR-C PIC X(10).
- 01 STR-MAX PIC X(10).
- 01 STR-MIN PIC X(10).
- PROCEDURE DIVISION.
- *>----------------------------------------------------
- *> コンソールに入力
- *>----------------------------------------------------
- DISPLAY "文字列を入力してください(1/3)。>> " WITH NO ADVANCING.
- ACCEPT STR-A FROM CONSOLE.
- DISPLAY "文字列を入力してください(2/3)。>> " WITH NO ADVANCING.
- ACCEPT STR-B FROM CONSOLE.
- DISPLAY "文字列を入力してください(3/3)。>> " WITH NO ADVANCING.
- ACCEPT STR-C FROM CONSOLE.
- *>----------------------------------------------------
- *> 最大値/最小値を求める
- *>----------------------------------------------------
- MOVE FUNCTION MAX(STR-A STR-B STR-C) TO STR-MAX.
- MOVE FUNCTION MIN(STR-A STR-B STR-C) TO STR-MIN.
- DISPLAY "最大値は:"STR-MAX.
- DISPLAY "最小値は:"STR-MIN.
実行結果:
ここで紹介した2つのプログラムではACCEPT文で入力した3つの値をMAX関数、MIN関数の引数に指定してそれぞれ最大値、最小値を求めています。MAX関数、MIN関数を使用すれば、IF文やEVALUATE文などの条件分岐処理を使わずに簡単に最大値、最小値を求められることがわかります。
実際のプログラムでもデータの中から最大値や最小値を求めるような処理はよく使われますので、ここで紹介したMAX関数とMIN関数の使い方はよく理解しておきましょう。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
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句」は便利?使用方法を学びましょう|用語辞典