一歩先を行く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言語で計算処理をするなら「COMPUTE文」|入門用語辞典
- COBOL言語の「ACCEPT文」の使い方を分かり易く解説|入門用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|入門用語辞典
- 徹底解説!一歩先を行くCOBOL言語のCOPY文活用法|応用ガイド
- 一歩先を行くCOBOL言語の表操作!逐次検索と二分検索|応用ガイド
- COBOL言語の加算処理の基本を伝授! 命令文「ADD」とは?|入門用語辞典
- 徹底解説!一歩先を行くCOBOL言語のファイル併合処理|応用ガイド
- COBOL言語でファイルの開閉命令はOPEN文とCLOSE文!|入門用語辞典
- 徹底解説!一歩先を行くCOBOL言語のデータ共有|応用ガイド
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- COBOL言語の歴史とこれまでの進化を知る!廃止・追加機能|基礎ガイド
- COBOL言語のオブジェクト指向について理解しよう!|基礎ガイド
- COBOL言語のディスプレイ出力とコンソール入力について|基礎ガイド
- COBOL言語が得意とする計算処理を体験してみよう!|基礎ガイド
- 一歩先を行くCOBOL言語のユーザ定義関数について|応用ガイド
- 初心者から中級者でも安心!理解できるCOBOL言語の勉強法|学習講座
- 初心者必見!COBOL言語を効率よくマスターする勉強法とは|学習講座
- COBOL初心者が犯しやすいミスとその対策について|学習講座
- COBOL初心者がやってはいけない勉強方法とは?|学習講座
- 一歩先へ行くCOBOLプログラマの知っておくべき4つのヒント|学習講座