COBOL言語の関数について理解して使いこなそう!|基礎ガイド

COBOL(コボル)言語における組み込み関数とは

基礎-関数について-イメージ

組み込み関数とは?

ソフトウェアの世界における関数とは、パラメータとして変数を与えられると、その変数によって一定の演算を行い、演算結果を関数値として返却する機能です。

関数にはあらかじめ言語が用意している関数とユーザが作成する関数があり、あらかじめ用意されている関数を組み込み関数、ユーザが作成する関数をユーザ定義関数といいます。

例えば、平方根を計算したり、正弦を計算したりするロジックをコーディングするのは大変ですよね。人によっては数学の教科書を引っ張り出して、1から勉強する必要があるかもしれません。そのような手間を解決してくれるのが、あらかじめ用意されている組み込み関数です。

COBOL 言語で用意されている主な組み込み関数

基礎-関数について-イメージ

COBOL 言語にはさまざまな組み込み関数が用意されています。

よく使う例としては、現在日付と時刻を返却する「CURRENT-DATE」、パラメータで指定された文字列の長さを返却する「LENGTH」、パラメータ指定された数値の総和を返却する「SUM」などがあります。

では、COBOL 言語で用意されている主な組み込み関数を一覧でご紹介します。

組み込み関数名

機能概要

ACOS

逆余弦(アークコサイン)を求める

ANNUITY

元金、利率、期間から均等払い額を求める

ASIN

逆正弦(アークサイン)を求める

ATAN

逆正接(アークタンジェント)を求める

CHAR

文字の大小順でパラメータで指定された順位の文字を求める

COS

余弦(コサイン)を求める

CURRENT-DATE

現在日付と時刻、およびグリニッジ標準時との時差を求める

DATE-OF-INTEGER

グレゴリオ通日に対応する年月日を求める

DAY-OF-INTEGER

グレゴリオ通日に対応する年日を求める

FACTORIAL

階乗を求める

INTEGER

パラメータの値を超えない最大の整数を求める

INTEGER-OF-DATE

年月日に対応するグレゴリオ通日を求める

INTEGER-OF-DAY

年日に対応するグレゴリオ通日を求める

INTEGER-PART

パラメータの整数部を求める

LENGTH

パラメータの長さを求める

LOG

パラメータの自然対数を求める

LOG10

10 を底とするパラメータの自然対数を求める

LOWER-CASE

パラメータの中の大文字を全て小文字にする

MAX

パラメータの中から最大値を求める

MEAN

算術平均値を求める

MEDIAN

中央値を求める

MIDRANGE

最大値と最小値の中央値を求める

MIN

パラメータの中から最小値を求める

MOD

法(モジュロ―)を求める

ORD

文字の大小順序での順序位置を求める

ORD-MAX

文字の大小順序で、パラメータの中の最大の順序位置を求める

ORD-MIN

文字の大小順序で、パラメータの中の最小の順序位置を求める

PRESENT-VALUE

原価率と将来の時系列値から現在価値を求める

RANDOM

乱数を求める

RANGE

最大値を最小値の差を求める

REM

除算結果の余りを求める

REVERSE

文字順序を逆転する

SIN

正弦(サイン)を求める

SQRT

平方根を求める

STANDARD-DEVIATION

標準偏差を求める

SUM

パラメータの総和を求める

TAN

正接(タンジェント)を求める

UPPER-CASE

パラメータの中の小文字を全て大文字にする

WHEN-COMPILED

プログラムが翻訳(コンパイル)された日時を求める

COBOL 言語での組み込み関数の使い方

COBOL 言語で組み込み関数を使用する場合、PROCEDURE DIVISION でFUNCTION 句を使用します。

■呼び出し形式

FUNCTION 組み込み関数名(パラメータ1、…)

■プログラム例

ご紹介するサンプルプログラムは、組み込み関数「CURRENT-DATE」を使用して、システムから現在時刻を取得し表示するプログラムです。

CURRENT-DATE が返却する現在時刻は、プログラムを実行するコンピュータのローカルタイムで、年(4 桁)、月(2 桁)、日(2 桁)、時(2 桁)、分(2 桁)、秒(2 桁)、ミリ秒(2 桁)、グリニッジ標準時との時差の有無(1 桁)、グリニッジ標準時との時差(時)(2 桁)、グリニッジ標準時との時差(分)(2 桁)の合計21 桁です。

  1. ******************************************************************
  2. * Author:
  3. * Date:
  4. * Purpose:
  5. * Tectonics: cobc
  6. ******************************************************************
  7. IDENTIFICATION DIVISION.
  8. PROGRAM-ID. KUMIKOMI-SAMPLE1.
  9. DATA DIVISION.
  10. FILE SECTION.
  11. WORKING-STORAGE SECTION.
  12. 01 WORKING-AREA.
  13. * 現在日時
  14. 03 GENZAI-DATE.
  15. 05 YY PIC X(4).
  16. 05 MM PIC X(2).
  17. 05 DD PIC X(2).
  18. 05 HH PIC X(2).
  19. 05 MI PIC X(2).
  20. 05 SS PIC X(2).
  21. 05 ETC PIC X(7).
  22. * 表示エリア
  23. 03 DSP_BUF PIC X(128).
  24. *-------------------------------------------
  25. * 主手続
  26. *-------------------------------------------
  27. PROCEDURE DIVISION.
  28. MAIN-PROCEDURE.
  29. * 現在時刻の取得
  30. MOVE FUNCTION CURRENT-DATE TO GENZAI-DATE.
  31. * 現在時刻の表示
  32. STRING "現在時刻: " YY "年" MM "月" DD "日" HH "時" MI "分"
  33. DELIMITED BY SPACE
  34. INTO DSP_BUF.
  35. DISPLAY DSP_BUF.
  36. END-PROC.
  37. STOP RUN.
  38. END PROGRAM KUMIKOMI-SAMPLE1.

■実行結果

基礎-関数について-実行結果
ローカルタイムの現在時刻が表示されました。

COBOL 言語の組み込み関数の確認問題

問)
組み込み関数を呼び出すには、何句を使用するか?

答え)
FUNCTION 句

組み込み関数は、多くの言語に用意されている便利な機能です。標準的な数学計算や文字列操作を行う組み込み関数を使いこなすことは、プログラミングの効率化につながりますので、ぜひ積極的に用意されている組み込み関数を活用しましょう。

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

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

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

COBOL入門のカテゴリー

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