一歩先を行くCOBOL言語のユーザ定義関数について | 応用ガイド
COBOL(コボル)言語のユーザ定義関数を使った関数の記述方法とは
COBOL(コボル)言語におけるユーザ定義関数
COBOLでは組み込み関数を使用して、演算処理や表操作などを行うことができますが、COBOL2002で実装されたユーザ定義関数(利用者定義関数)ではユーザーが関数を定義して利用することが可能になりました。
ユーザ定義関数を使用するには関数名段落(FUNCTION-ID)を指定し、ユーザーが任意に関数を作成することができます。ユーザ定義関数を使用すれば、プログラムにおいて引数を指定して関数を呼出して、定められた処理を実行して結果を返す関数を繰り返し利用することができます。
以下はユーザ定義関数の使用イメージです。
ユーザ定義関数の詳細については次項で解説いたします。
ユーザ定義関数の定義と使い方
ユーザ定義関数は以下のように定義します。
■ユーザ定義関数の書式
IDENTIFICATION DIVISION.
FUNCTION-ID ユーザ定義関数名1 [ AS 定数 ].
[ オプション段落 ]
[ 環境部 ]
[ データ部 ]
[ 手続き部 ]
END FUNCTION ユーザ定義関数名1
ユーザ定義関数の定義はプログラムの定義と似ていますが、PROGRAM-IDの記述がFUNCTION-IDになります。
また、手続き部(PROCEDURE DIVISION )には関数の実行結果を返すための「RETURNING」を指定する必要があります。
PROCEDURE DIVISION [ USING BY VALUE又はREFERENCE] データ名-1 RETURNING データ名-2
関数終了時の「END FUNCTION」は省略できません。
■ユーザ定義関数の宣言
IDENTIFICATION DIVISION.
…
CONFIGURATION SECTION.
REPOSITORY.
FUNCTION ユーザ定義関数名1 [AS 定数].
ユーザ定義関数を使用するためには、リポジトリ段落(REPOSITORY)で指定したユーザ定義関数名を指定する必要があります。
■ユーザ定義関数の呼出し
ユーザ定義関数はRETURNINGで結果を返すため、以下のように計算式として使用することができます。
1)計算式で使用
また、返り値の結果をそのまま条件式として使用することも可能です。
2)条件式で使用
■ユーザ定義関数の記述例
ご紹介する記述例ではユーザ定義関数に渡された引数の値を条件式で精査し、値が0だったら1を返却し、それ以外の値だったら0を返却しています。
1)ユーザ定義関数の宣言
- IDENTIFICATION DIVISION.
- PROGRAM-ID. FUNCTION_SAMPLE01.
- ENVIRONMENT DIVISION.
- CONFIGURATION SECTION.
- *>----------------------------------------------------
- *> 使用する関数の宣言
- *>----------------------------------------------------
- REPOSITORY.
- FUNCTION FUNC.
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- *>----------------------------------------------------
- *> データ項目の定義
- *>----------------------------------------------------
- 01 NUM PIC 9.
- 01 SUM PIC 9.
- PROCEDURE DIVISION.
- MOVE 10 TO NUM.
- *>----------------------------------------------------
- *> 関数の呼出し
- *>----------------------------------------------------
- COMPUTE SUM = FUNCTION FUNC (NUM).
- ...省略...
- END PROGRAM FUNCTION_SAMPLE01.
2)ユーザ定義関数の定義
- IDENTIFICATION DIVISION.
- FUNCTION-ID. FUNC.
- DATA DIVISION.
- LINKAGE SECTION.
- *>----------------------------------------------------
- *> データ項目の定義
- *>----------------------------------------------------
- 01 NUM PIC 9.
- 01 RET PIC 9.
- *>----------------------------------------------------
- *> 関数の処理
- *>----------------------------------------------------
- PROCEDURE DIVISION
- USING BY VALUE NUM
- RETURNING RET.
- IF NUM = 0 THEN
- COMPUTE RET = 1
- ELSE
- COMPUTE RET = 0
- END-IF.
- EXIT FUNCTION.
- END FUNCTION FUNC.
この記述例ではユーザ定義関数FUNCに値を設定したデータ項目を引数に関数を呼出しています。ユーザ定義関数の定義側では関数定義で指定された仮引数のBY VALUEに従って引数が受け渡されます。
受け渡される引数については、呼び出し側のプログラムの引数の型やサイズを合わせておく必要があります。前述したように関数終了時は「END FUNCTION ユーザ定義関数」を必ず指定します。
また、関数呼出し側のプログラムではユーザ定義関数は何度でも呼び出すことが可能です。そのため、入力された値ごとに関数を呼出し、関数内で入力内容を精査したり演算するといった使い方もできます。
ユーザ定義関数の確認問題
ここでは、練習問題にチャレンジしてみましょう。
問1)
ユーザ定義関数を使用するためにはリポジトリ段落(REPOSITORY)以下にどのように宣言するか。
答え)
FUNCTION ユーザ定義関数名1 [AS 定数].
問2)
ユーザ定義関数を定義するときに関数名段落にはどのように記述するか。
答え)
FUNCTION-ID ユーザ定義関数名1
関数の概念や操作方法はCOBOL言語に限らず、CやJavaなどさまざまなプログラミング言語でも必要となる知識です。ユーザ定義関数は計算式の中で記述できたりIF文などの条件式でも記述することができますので、処理内容をわかりやすくまとめることが可能です。
ユーザ定義関数は利用者が自由に処理を定義することができますので、ぜひ活用してください。
この記事を読んだ人は、こちらの記事も読んでいます
あなたの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句」は便利?使用方法を学びましょう|用語辞典