第11章 組み込み関数機能
11.1 関数の全般規則
関数は、いくつかのデータを引数として特定の処理を呼び出すことにより、その処理の結果の値(関数値)を一時的なデータ項目に格納してプログラムに返却する機能である。
11.1.1 関数の呼び出し形式
関数名は、以下の形式で書く。この形式の記述を、「関数一意名」という。
関数名は、関数の名前である。関数名は、COBOLの語の1つである。
引数は、関数値を求めるための値である。引数には、関数によって範囲などの制限を設けることがある。引数の個数、引数の指定順序および引数の値は、関数によって異なる。
関数一意名は、手続き部にだけ書くことができる。
書き方
FUNCTION 関数名-1 [ ( { 引数-1 } … )] [ 部分参照子 ]
11.1.2 引数の型
引数には、一意名、算術式または定数を指定することができる。引数に指定できるデータは、引数の型によって決められている。
引数の型には、英字、英数字、数字、整数および日本語の5種類がある。引数は、以下の規則に従って指定しなければならない。
- 引数の型が英字の場合、引数として、字類が英字項目または英字だけを含む文字定数を指定しなければならない。関数値を求めるために、引数の大きさが用いられることがある。
- 引数の型が英数字の場合、引数として、英字項目、英数字項目、英数字編集項目、数字編集項目または文字定数を指定しなければならない。関数値を求めるために、引数の大きさが用いられることがある。
- 引数の型が数字の場合、引数として算術式を指定しなければならない。関数値を求めるために、算術式の値(符号を含む)が用いられる。
- 引数の型が整数の場合、引数として、その値が常に整数値となる算術式を指定しなければならない。関数値を求めるために、算術式の値(符号を含む)が用いられる。
- 引数の型が日本語の場合、字類が日本語の基本データ項目を指定しなければならない。関数値を求めるために、引数の大きさが用いられることがある。
関数によっては、上記の5種類以外のデータ項目または定数を指定できるところがある。
引数の値の範囲は、関数ごとに決まっている。定められた範囲を超える値を引数に設定した場合、その関数値は規定されない。
11.1.3
引数に表を指定する場合の規則
引数の繰り返しに、ある次元のすべての表要素を書く場合、添字付きのデータ名を1つずつ書くかわりに、添字にALLを指定したデータ名を書くことができる。添字にALLを書くと、その次元のすべての表要素を、出現順に従って左から右へ指定したかのように扱われる。
例えば、表を以下のように定義した場合、aとb、cとdはそれぞれ等価である。
000000 01 TBL.
000000 02 A OCCURS 3.
000000 03 B OCCURS 4.
000000 04 C PIC X.
a. FUNCTION MAX (A(1) A(2) A(3))
b. FUNCTION MAX (A(ALL))
c. FUNCTION MAX (C(1 1) C(1 2) C(1 3) C(1 4))
d. FUNCTION MAX (C(1 ALL))
添字のALLがDEPENDING
ON指定付きのOCCURS句に関連する場合、添字のALLの上限はDEPENDING
ON指定のデータ名の値に従う。(*1)
添字のALLの評価の結果、1つ以上の表要素を参照することにならなければ、関数値は規定されない。
(*1) SIT COBOLは、OCCURS句の最大値をとる。(制限事項)
11.1.4 関数の型
関数値が格納される一時的なデータ項目の型を、関数の型という。関数一意名が書ける場所は、関数の型によって決められている。
関数の型には、英数字、数字、整数、および日本語の5種類がある。関数の型が英数字、数字、整数日本語である関数を、それぞれ「英数字関数」、「数字関数」、「整数関数」、「日本語関数」という。
英数字関数
英数字関数の一時的なデータ項目の項類と字類は英数字である。そのデータ項目の用途は表示用である。
英数字関数の関数一意名は、手続き部で英数字項目が書けるところにだけ書くことができる。
ただし、受取り側項目に書くことはできない。
英数字関数の関数値の文字位置の個数は、関数の種類によって決められている。
数字関数
数字関数の一時的なデータ項目の項類と字類は数字である。そのデータ項目は符号付きである。
数字関数の関数一意名は、算術式の中にだけ書くことができる。ただし、整数を指定しなければならないところに書くことはできない。
数字関数の関数値の属性と精度は、関数の種類によって決められている。
整数関数
整数関数の一時的なデータ項目の項類と字類は数字である。そのデータ項目は符号付きである。
整数関数の関数一意名は、算術式の中で整数を指定しなければならないところにだけ書くことができる。
整数関数の関数値の属性と精度は、関数の種類によって決められている。
日本語関数
日本語関数の字類および項類は、日本語である。
日本語関数の関数一意名は、手続き部で日本語項目が書けるところにだけ書くことができる。
ただし、受取り側項目に書くことはできない。
日本語関数の関数値の文字位置の個数は、関数の種類によって決められている。
11.2 関数
この節では、各関数について説明する。
それぞれの関数のサンプルについては、下記を参照のこと。
(サンプルプログラム名: 関数.cob)
11.2.1 ACOS関数
引数-1の逆余弦を返す。
書き方
FUNCTION ACOS (引数-1)
引数
- 引数-1の型は、数字でなければならない。
- 引数-1の値は、以下の範囲でなければならない。
-1 ≦引数-1 ≦ +1
関数値
- 関数値は、引数-1の逆余弦の近似値である。関数値の単位はラジアンである。
- 関数値の範囲は、以下のとおりである。
0 ≦ 関数値 ≦ π
関数の型
関数の型は、数字である。
11.2.2 ANNUITY関数
引数-1を利率、引数-2を均等払いの期間、元金を1として、毎期の均等払い額を返す。
書き方
FUNCTION ANNUITY (引数-1 引数-2)
引数
- 引数-1の型は、数字でなければならない。
- 引数-1の値は、ゼロ以上でなければならない。
- 引数-2の型は、整数でなければならない。
- 引数-2の値は、正の整数でなければならない。
関数値
関数値は、以下のとおりである。
- 引数-1が0の場合、関数値は以下の式の近似値である。
1 / 引数-2
- 引数-1が0でない場合、関数値は以下の式の近似値である。
引数-1 / (1 - (1 + 引数-1) ** (- 引数-2))
関数の型
関数の型は、数字である。
11.2.3 ASIN関数
引数-1の逆正弦を返す。
書き方
FUNCTION ASIN (引数-1)
引数
- 引数-1の型は、数字でなければならない。
- 引数-1の値は、以下の範囲でなければならない。
-1 ≦引数-1 ≦ +1
関数値
- 関数値は、引数-1の逆正弦の近似値である。関数値の単位はラジアンである。
- 関数値の範囲は、以下のとおりである。
-π / 2 ≦関数値≦ +π / 2
関数の型
関数の型は、数字である。
11.2.4 ATAN関数
引数-1の逆正接を返す。
書き方
FUNCTION ATAN (引数-1)
引数
引数-1の型は、数字でなければならない。
関数値
- 関数値は、引数-1の逆正接の近似値である。関数値の単位はラジアンである。
- 関数値の範囲は、以下のとおりである。
-π / 2 < 関数値 < +π / 2
関数の型
関数の型は、数字である。
11.2.5 CHAR関数
文字の大小順序における、引数-1の順序位置にある1文字を返す。
書き方
FUNCTION CHAR (引数-1)
引数
- 引数-1の型は、整数でなければならない。
- 文字の大小順序における最大の順序位置をnとすると、引数-1の値は、1~nでなければならない。
関数値
- 関数値は、文字の大小順序における、引数-1の順序位置にある1文字である。文字の大小順序とは、特殊名段落のALPHABET句で定義したものである。ALPHABET句を省略した場合は、計算機文字集合における文字の大小順序に従って、関数値が求められる。
- 文字の大小順序において、引数-1の順序位置に2つ以上の文字がある場合は、ALPHABET句でその順序位置に指定した先頭の定数の文字が、関数値として返される。
関数の型
関数の型は、英数字である。
11.2.6 COS関数
引数-1の余弦を返す。
書き方
FUNCTION COS (引数-1)
引数
- 引数-1の型は、数字でなければならない。
- 引数-1の値は、単位をラジアンとして設定する。
関数値
- 関数値は、引数-1の正弦の近似値である。
- 関数値の範囲は、以下のとおりである。
-1 ≦ 関数値 ≦ +1
関数の型
関数の型は、数字である。
11.2.7 CURRENT-DATE関数
現在の日付と時刻を返す。
書き方
FUNCTION CURRENT-DATE
関数値
関数値は、この関数を実行したときの日付、時刻、およびグリニッジ標準時との時差を表す、21文字の英数字である。関数値の各文字位置には、下表に示す値が設定される。
文字位置
|
値
|
1-4
|
西暦の年を表す4桁の数字。
|
5-6
|
月を表す2桁の数字。値の範囲は01~12。
|
7-8
|
日を表す2桁の数字。値の範囲は01~31。
|
9-10
|
時を表す2桁の数字。値の範囲は00~23。
|
11-12
|
分を表す2桁の数字。値の範囲は00~59。
|
13-14
|
秒を表す2桁の数字。値の範囲は00~59。
|
15-16
|
1/100 秒を表す2桁の数字。値の範囲は00~99。 (*1)
|
17
|
地方時間(文字位置1~16で表される時間)が、グリニッジ標準時から遅れているか進んでいるかを表す符号。地方時間がグリニッジ標準時よりも遅れている場合は“-”、地方時間がグリニッジ標準時よりも進んでいる場合は“+”が設定される。
(*2)
|
18-19
|
グリニッジ標準時からの時間単位の遅れまたは進みを表す2桁の数字。文字位置17が“-”の場合、値の範囲は00~12。文字位置17が“+”の場合、値の範囲は00~13。
(*2)
|
20-21
|
グリニッジ標準時からの分単位の遅れまたは進みを表す2桁の数字。値の範囲は00~59。
(*2)
|
(*1):
秒の小数部を得る機能がシステムにない場合、文字位置15-16には、00が設定される。
(*2):
地方時間のグリニッジ標準時との時差を得る機能がシステムにない場合、文字位置17-21には、00000
が設定される。
関数の型
関数の型は、英数字である。
11.2.8 DATE-OF-INTEGER関数
引数-1(通日)を標準形式の日付に変換して返す。
書き方
FUNCTION DATE-OF-INTEGER(引数-1)
引数
- 引数-1の型は、整数でなければならない。
- 引数-1の値は、西暦1601年1月1日を第1日とする、通日を表す正の整数でなければならない。
関数値
- 関数値は、引数-1に指定した通日に等価な、標準形式の日付である。
- 関数値は、yyyymmddの形式で設定される。yyyyは西暦の年、mmは月、ddは日を表す。
関数の型
関数の型は、整数である。
11.2.9 DAY-OF-INTEGER関数
引数-1(通日)を年日形式の日付に変換して返す。
書き方
FUNCTION DAY-OF-INTEGER(引数-1)
引数
- 引数-1の型は、整数でなければならない。
- 引数-1の値は、西暦1601年1月1日を第1日とする、通日を表す正の整数でなければならない。
関数値
- 関数値は、引数-1に指定した通日に等価な、年日形式の日付である。
- 関数値は、yyyydddの形式で設定される。yyyyは西暦の年、dddはその年の通日を表す。
関数の型
関数の型は、整数である。
11.2.10 FACTORIAL関数
引数-1の階乗を返す。
書き方
FUNCTION FACTORIAL(引数-1)
引数
- 引数-1の型は、整数でなければならない。
- 引数-1の値は、0以上の整数でなければならない。
関数値
関数値は、以下のとおりである。
- 引数-1の値が0の場合、関数値は1である。
- 引数-1の値が正の数の場合、関数値は引数-1の階乗である。
関数の型
関数の型は、整数である。
11.2.11 INTEGER関数
引数-1以下の最大の整数を返す。
書き方
FUNCTION INTEGER(引数-1)
引数
- 引数-1の型は、数字でなければならない。
関数値
関数値は、引数-1以下の最大の整数である。例えば、引数-1の値が+1.5の場合、+1である。引数-1の値が-1.5の場合、-2である。
関数の型
関数の型は、整数である。
11.2.12 INTEGER-OF-DATE関数
引数-1(標準形式の日付)を通日に変換して返す。
書き方
FUNCTION INTEGER-OF-DATE(引数-1)
引数
- 引数-1の型は、整数でなけれはならない。
- 引数-1の値は、yyyymmddの形式の8桁の整数でなけれはならない。
- 引数-1には、以下の式に従って、標準形式の日付を設定する。
( yyyy * 10000 ) + ( mm * 100 ) + dd
yyyy、mmおよびddの規則は、以下のとおりである。
- yyyyは、西暦の年を表す数である。yyyyの値は、1600より大きくなけれはならない。
- mmは、月を表す数である。mmの値の範囲は、1~12でなけれはならない。
- ddは、日を表す数である。ddの値の範囲は、1~31でなけれはならない。
- yyyy、mmおよびddを組み合わせた値は、正しい年月日を表す値でなければならない。
関数値
関数値は、引数-1(標準形式の日付)に等価な、通日を表す整数である。通日は、西暦1601年1月1日を第1日とする。
関数の型
関数の型は、整数である。
11.2.13 INTEGER-OF-DAY関数
引数-1(年日形式の日付)を通日に変換して返す。
書き方
FUNCTION INTEGER-OF-DAY(引数-1)
引数
- 引数-1の型は、整数でなければならない。
- 引数-1の値は、yyyydddの形式の7桁の整数でなければならない。
- 引数-1には、以下の式に従って、年日形式の日付を設定する。
( yyyy * 1000 ) + ddd
yyyyおよびdddの規則は、以下のとおりである。
- yyyyは、西暦の年を表す数である。yyyyの値は、1600より大きくなければならない。
- dddは、その年の通日である。dddの値の範囲は、1~366でなければならない。
- yyyyとdddを組み合わせた値は、正しい年日を表す値でなければならない。
関数値
関数値は、引数-1(年日形式の日付)に等価な、通日を表す整数である。通日は、西暦1601年1月1日を第1日とする。
関数の型
関数の型は、整数である。
11.2.14 INTEGER-PART関数
引数-1の整数部分を返す。
書き方
FUNCTION INTEGER-PART(引数-1)
引数
- 引数-1の型は、数字でなければならない。
- 引数に浮動小数点は指定できない。
関数値
関数値は、以下のとおりである。
- 引数-1の値が0の場合、関数値は0である。
- 引数-1の値が正の数の場合、関数値は引数-1の値以下の最大の整数である。例えば、引数-1が+1.5の場合、+1である。
- 引数-1の値が負の数の場合、関数値は引数-1の値以上の最小の整数である。例えば、引数-1が-1.5の場合、-1である。
関数の型
関数の型は、整数である。
11.2.15 LENGTH関数
引数-1の長さ(文字位置または日本語文字位置の個数)を返す。
書き方
FUNCTION LENGTH(引数-1)
引数
- 引数-1は、文字定数、16進文字定数、日本語定数、または任意のデータ項目でなければならない。
- 引数-1に従属するデータ項目にDEPENDING
ON指定付きのOCCURS句を指定した場合、LENGTH関数が評価されるときのDEPENDING
ON指定のデータ名の値を使って、関数値が決定される。
関数値
- 関数値は、下表のとおりである。
引数-1
|
関数値
|
文字定数または16進文字定数
|
引数-1の文字位置の個数(バイト数)
|
日本語定数
|
引数-1の日本語文字位置の個数(日本語文字の個数)
|
英字項目、英数字項目、英数字編集項目または数字編集項目
|
引数-1の文字位置の個数(バイト数)
|
数字項目、集団項目、指標データ項目またはポインタデータ項目
|
引数-1が占める記憶領域のバイト数
|
日本語項目または日本語編集項目
|
引数-1の日本語文字位置の個数(日本語文字の個数)
|
- 引数-1が可変反復データ項目を含む集団項目の場合、関数値は、可変反復データ項目のOCCURS句のDEPENDING
ON指定のデータ名の値を評価して決定される。この評価は、送出し側のデータ項目にOCCURS句を指定したときの規則に従う。(*1)
- 暗黙のFILLER項目が存在する場合、関数値はその文字数を含む。
(*1) SIT
COBOLは、OCCURS句で指定された最大値を値を使う。(制限事項)
関数の型
関数の型は、整数である。
11.2.16 LOG関数
底をeとする引数-1の対数を返す。
書き方
FUNCTION LOG(引数-1)
引数
- 引数-1の型は、数字でなければならない。
- 引数-1の値は、正でなければならない。
関数値
関数値は、底をeとする引数-1の対数(自然対数)の近似値である。
関数の型
関数の型は、数字である。
11.2.17 LOG10関数
底を10とする引数-1の対数を返す。
書き方
FUNCTION LOG10(引数-1)
引数
- 引数-1の型は、数字でなければならない。
- 引数-1の値は、正でなければならない。
関数値
関数値は、底を10とする引数-1の対数(常用対数)の近似値である。
関数の型
関数の型は、数字である。
11.2.18 LOWER-CASE関数
引数-1の中の英大文字と等価な英小文字を返す。
書き方
FUNCTION LOWER-CASE(引数-1)
引数
- 引数-1の型は、英字または英数字でなければならない。
- 引数-1の長さは、1文字以上でなければならない。
関数値
- 関数値は、引数-1の中の英大文字を英小文字に置き換えた文字列である。すなわち、引数-1の中の英大文字が置き換えられることを除いて、引数-1と同じ文字列である。
- 関数値の長さは、引数-1の長さと同じである。
関数の型
関数の型は、英数字である。
11.2.19 MAX関数
引数の最大値を返す。
書き方
FUNCTION MAX( {引数-1} … )
引数
- 引数-1の型は、任意である。
- 引数-1の組み合わせは、“関数の型”で示す表のいずれかでなければならない。
関数値
- 関数値は、引数-1の並びの中で、最大値を持つ引数-1の内容である。
- 2つ以上の引数-1が同じ最大値を持つ場合、それらの中で最も左側に書いたものが関数値になる。
- 最大値を求めるための比較の方法は、比較条件の規則に従う。
- 関数の型が英数字の場合、関数値の長さは、最大値を持つ引数-1の長さと同じである。
関数の型
関数の型を下表に示す。
引数-1の型
|
関数値の型
|
すべて英字 またはすべて英数字
|
英数字
|
すべて整数
|
整数
|
すべて数字 または数字と整数の混在
|
数字
|
11.2.20 MEAN関数
引数の算術平均値を返す。
書き方
FUNCTION MEAN( {引数-1} … )
引数
引数-1の型は、数字でなければならない。
関数値
関数値は、引数-1の並びの算術平均値である。すなわち、引数-1の並びの合計を、引数-1の個数で割ったものである。
関数の型
関数の型は、数字である。
引数の中央値を返す。
書き方
FUNCTION MEDIAN( {引数-1} … )
引数
引数-1の型は、数字でなければならない。
関数値
- 関数値は、引数-1の並びを数値の大小順序によって並べ替えたときの中央値である。中央値とは、以下の値である。
- 引数-1の個数が奇数の場合、並べ替えの結果、中央に位置する値である。
- 引数-1の個数が偶数の場合、並べ替えの結果、中央に位置する2つの値の算術平均値である。
- 引数を並べ替えるための比較の方法は、比較条件の規則に従う。
関数の型
関数の型は、数字である。
11.2.22 MIDRANGE関数
引数の最小値と最大値の算術平均値を返す。
書き方
FUNCTION MIDRANGE( {引数-1} … )
引数
引数-1の型は、数字でなければならない。
関数値
関数値は、引数-1の並びの中の最大値と最小値の算術平均値である。すなわち、関数値は、引数-1の並びの中の最大値と最小値の合計を、2で割ったものである。最大値と最小値を求めるための比較の方法は、比較条件の規則に従う。
関数の型
関数の型は、数字である。
11.2.23 MIN関数
引数の最小値を返す。
書き方
FUNCTION MIN( {引数-1} … )
引数
- 引数-1の型は、任意である。
- 引数-1の組み合わせは、“関数の型”で示す表のいずれかでなければならない。
関数値
- 関数値は、引数-1の並びの中で、最小値を持つ引数-1の内容である。
- 2つ以上の引数-1が同じ最小値を持つ場合、それらの中で最も左側に書いたものが関数値になる。
- 最小値を求めるための比較の方法は、比較条件の規則に従う。
- 関数の型が英数字の場合、関数値の長さは、最小値を持つ引数-1の長さと同じである。
関数の型
関数の型を下表に示す。
引数-1の型
|
関数値の型
|
すべて英字 またはすべて英数字
|
英数字
|
すべて整数
|
整数
|
すべて数字 または数字と整数の混在
|
数字
|
11.2.24 MOD関数
引数-2を法とする引数-1の整数値を返す。
書き方
FUNCTION MOD(引数-1 引数-2)
引数
- 引数-1および引数-2の型は、整数でなければならない。
- 引数-2の値は、ゼロ以外の整数である。
関数値
- 関数値は、引数-2を法とする引数-1の整数値である。関数値は、以下の式に従って求められる。
引数-1 - (引数-2 * FUNCTION INTEGER (引数-1 / 引数-2) )
- 関数値の例を、下表に示す。
引数-1
|
引数-2
|
関数値
|
11
|
5
|
1
|
-11
|
5
|
4
|
11
|
-5
|
-4
|
-11
|
-5
|
-1
|
関数の型
関数の型は、整数である。
11.2.25 NUMVAL関数
引数-1(数字定数の形式の文字列)を数値に変換して返す。
書き方
FUNCTION NUMVAL(引数-1)
引数
- 引数-1は、文字定数または英数字項目でなければならない。引数-1の内容は、以下のいずれかの形式で表現しなければならない。以下で、空白列は1つ以上の空白の並びを表し、数字列は1つ以上の数字の並びを表す。
- [ 空白列] [ + | - ] [ 空白列 ] { 数字列 [. [ 数字列 ]] | . 数字列 }
[ 空白列 ]
- [ 空白列 ] { 数字列 [. [ 数字列 ]] | . 数字列 } [ 空白列 ] [ + | - |
CR | DB ] [ 空白列 ]
- 引数-1の数字の桁数の合計、すなわち数字列の数字の個数の合計は、18以下でなければならない。
- 特殊名段落にDECIMAL-POINT IS
COMMA句を書いた場合、引数-1の中の小数点の機能とコンマの機能が入れ替わる。このとき、小数点を表す終止符“.”の代わりにコンマを使わなければならない。(*1)
(*1) SIT COBOLは、DECIMAL-POINT IS
COMMA句は未サポートである。(サポート予定あり)
関数値
関数値は、引数-1が表す数値である。
関数の型
関数の型は、数字である。
11.2.26 NUMVAL-C関数
引数-2(通貨記号)またはコンマを含む引数-1の文字列を数値に変換して返す。
書き方
FUNCTION NUMVAL-C(引数-1 引数-2)
引数
- 引数-1は、文字定数または英数字項目でなければならない。引数-1の内容は、以下のいずれかの形式で表現しなければならない。以下で、空白列は1つ以上の空白の並びを表し、数字列は1つ以上の数字の並びを表し、通貨記号は引数-2の文字列と同じ文字列(1文字以上)を表す。
- [ 空白列] [ + | - ] [ 空白列 ][ 通貨記号 ][ 空白列 ]{ 数字列 [
, 数字列] … [. [ 数字列 ]] | . 数字列 }
- [ 空白列 ] [通貨記号 ] [ 空白列 ] { 数字列 [ , 数字列] … [. [ 数字列
] ] | . 数字列 }
[ 空白列 ] [ + | - | CR | DB ]
- 引数-1の数字の桁数の合計、すなわち数字列の数字の個数の合計は、18以下でなければならない。
- 特殊名段落にDECIMAL-POINT IS
COMMA句を書いた場合、引数-1の中の小数点の機能とコンマの機能が入れ替わる。このとき、小数点を表す終止符“.”の代わりにコンマを使用し、コンマ“,”の代わりに終止符を使わなければならない。(*1)
- 引数-2は、文字定数または英数字項目でなければならない。
- 引数-2には、通貨記号を設定する。引数-2を省略した場合、引数-2に、特殊名段落のCURRENCY
SIGN句で指定した通貨記号を書いたものとみなされる。CURRENCY
SIGN句を省略した場合は、COBOL文字集合の通貨記号が使われる。
(*1) SIT COBOLは、DECIMAL-POINT IS
COMMA句は未サポートである。(サポート予定あり)
関数値
関数値は、引数-1が表す数値である。
関数の型
関数の型は、数字である。
11.2.27 ORD関数
文字の大小順序における、引数-1の順序位置を返す。
書き方
FUNCTION ORD(引数-1)
引数
- 引数-1の型は、英字または英数字でなければならない。
- 引数-1の長さは、1文字でなければならない。
関数値
関数値は、文字の大小順序における、引数-1の順序位置である。文字の大小順序とは、特殊名段落のALPHABET句で定義したものである。ALPHABET句を省略した場合は、計算機文字集合における文字の大小順序に従って、関数値が求められる。
関数値の型
関数の型は、整数である。
11.2.28 ORD-MAX関数
最大値を持つ引数の位置を返す。
書き方
FUNCTION ORD-MAX( {引数-1} … )
引数
- 引数-1の型は、任意である。
- 引数-1の型の組み合わせは、以下のいずれかでなければならない。
- すべて英字
- すべて英数字
- すべて整数
- すべて数字
- 数字と整数の混在
関数値
- 関数値は、引数-1の並びの中で、最大値を持つ引数-1の位置である。例えば、左から2番目に指定した引数-1の値が、引数-1の並びの中の最大値である場合、関数値には2が設定される。
- 2つ以上の引数-1が同じ最大値を持つ場合、それらの中で最も左側に書いたものが最大値になる。したがって、関数値は、その位置を示す値になる。
- 最大値を求めるための比較の方法は、比較条件の規則に従う。
関数の型
関数の型は、整数である。
11.2.29 ORD-MIN関数
最小値を持つ引数の位置を返す。
FUNCTION ORD-MIN( {引数-1} …)
引数
- 引数-1の型は、任意である。
- 引数-1の型の組み合わせは、以下のいずれかでなければならばならない。
- すべて英字
- すべて英数字
- すべて整数
- すべて数字
- 数字と整数の混在
関数値
- 関数値は、引数-1の並びの中で、最小値を持つ引数-1の位置である。例えば、左から2番目に指定した引数-1の値が、引数-1の並びの中の最小値である場合、関数値には2が設定される。
- 2つ以上の引数-1が同じ最小値を持つ場合、それらの中で最も左側に書いたものが最小値になる。したがって、関数値は、その位置を示す値になる。
- 最小値を求めるための比較の方法は、比較条件の規則に従う。
関数の型
関数の型は、整数である。
11.2.30 PRESENT-VALUE関数
引数-1を減価率として、各期末の現在価値を引数-2の並びに設定して返す。
書き方
FUNCTION PRESENT-VALUE (引数-1 {引数-2} … )
引数
- 引数-1および引数-2の型は、数字でなければならない。
- 引数-1は、-1より大きい値でなければならない。
関数値
関数値は、次の項からなる数列の和の近似値である。引数-2の各値に1つの項が対応する。指数nは、各項ごとに1から始めて1ずつ加算される。
引数-2 / ( 1 + 引数-1 ) ** n
関数の型
関数の型は、数字である。
11.2.31 RANDOM関数
一様分布からの擬似乱数の数値を返す。
書き方
FUNCTION RANDOM [ (引数-1) ]
引数
- 引数-1の型は、整数でなければならない。
- 引数-1の値は、ゼロまたは正の整数でなければならない。この値は、擬似乱数列を生成するための種子となる値として用いられる。
- 引数-1を指定したRANDOM関数を実行すると、引数-1を種子とする擬似乱数列が生成される。
- 実行単位で最初に実行するRANDOM関数で引数-1を省略した場合、0を種子とする擬似乱数列が生成される。
- RANDOM関数を実行した後、同じ擬似乱数列から乱数を求める場合、引数-1を省略することができる。引数-1の値は、次に引数-1を書いたRANDOM関数を実行するまで有効である。
関数値
- 関数値は、現在の擬似乱数列の中の任意の値である。
- 関数値の範囲は、以下のとおりである。
0 ≦ 関数値 < 1
- 引数-1の値(種子となる値)が同じ場合、同じ擬似乱数列が使われる。
関数の型
関数の型は、数字である。
11.2.32 RANGE関数
引数の最大値から最小値を引いた値を返す。
書き方
FUNCTION RANGE( {引数-1} … )
引数
引数-1の型は、数字または整数でなければならない。
関数値
- 関数値は、引数-1の並びの中の最大値から最小値を引いた値である。
- 最大値と最小値を求めるための比較の方法は、比較条件の規則に従う。
関数の型
関数の型を下表に示す。
引数-1の型
|
関数の型
|
すべて整数
|
整数
|
すべての数字 または数字と整数の混在
|
数字
|
11.2.33 REM関数
引数-1を引数-2で割ったときの余りを返す。
書き方
FUNCTION REM(引数-1 引数-2)
引数
- 引数-1および引数-2の型は、数字でなければならない。
- 引数-2の値は、ゼロ以外の整数である。
関数値
関数値は、引数-1を引数-2で割ったときの余りである。関数値は、以下の式で求められる。
引数-1 - ( 引数-2 * FUNCTION INTEGER-PART (引数-1 / 引数-2) )
関数の型
関数の型は、数字である。
11.2.34 REVERSE関数
引数-1の文字列を逆順にした文字列を返す。
書き方
FUNCTION REVERSE(引数-1)
引数
- 引数-1の型は、英字または英数字でなければならない。
- 引数-1の長さは、1文字以上でなければならない。
関数値
- 関数値は、引数-1の文字列を逆順にした文字列である。関数値の長さは、引数-1の長さと同じである。
- 引数-1の文字列の長さをnとすると、引数-1のj(1≦j≦n)番目の文字が、関数値のn-j+1番目の文字として設定される。
関数の型
関数の型は、英数字である。
11.2.35 SIN関数
引数-1の正弦を返す。
書き方
FUNCTION SIN(引数-1)
引数
- 引数-1の型は、数字でなければならない。
- 引数-1の値は、単位をラジアンとして指定する。
関数値
- 関数値は、引数-1の正弦の近似値である。
- 関数値の範囲は、以下のとおりである。
-1 ≦ 関数値 ≦ +1
関数の型
関数の型は、数字である。
11.2.36 SQRT関数
引数-1の平方根を返す。
書き方
FUNCTION SQRT(引数-1)
引数
- 引数-1の型は、数字でなければならない。
- 引数-1の値は、ゼロ以上でなければならない。
関数値
関数値は、引数-1の平方根の近似値の絶対値である。
関数の型
関数の型は、数字である。
11.2.37 STANDARD-DEVIATION関数
引数の標準偏差の近似値を返す。
書き方
FUNCTION STANDARD-DEVIATION ( {引数-1} … )
引数
引数-1の型は、数字でなければならない。
関数値
- 関数値は、引数-1の並びの標準偏差の近似値である。
- 関数値は、以下の手順で求められる。
- 引数-1の平均とそれぞれの引数-1の差を求め、2乗する。
- a.で求めた値を、すべて加算する。この値を引数-1の個数で割る。
- b.で求めた商の平方根を求める。関数値は、この値の絶対値である。
- 引数-1の並びがすべて同じ値の場合、関数値はゼロである。
関数の型
関数の型は、数字である。
11.2.38 SUM関数
引数の合計を返す。
書き方
FUNCTION SUM ( {引数-1} … )
引数
引数-1の型は、数字または整数でなければならない。
関数値
関数値は、引数-1の並びの合計である。
関数の型
関数の型を下表に示す。
引数-1の型
|
関数の型
|
すべて整数
|
整数
|
すべての数字 または数字と整数の混在
|
数字
|
11.2.39 TAN関数
引数-1の正接を返す。
書き方
FUNCTION TAN(引数-1)
引数
- 引数-1の型は、数字でなければならない。
- 引数-1の値は、単位をラジアンとして設定する。
関数値
関数値は、引数-1の正接の近似値である。
関数の型
関数の型は、数字である。
11.2.40 TRIM関数
引数の文字列から先頭や末尾の空白を削除した文字列を返す。
書き方
FUNCTION TRIM ( 引数-1 [ LEADING |
TRAILING ] )
引数
引数-1には、英字、英数字、日本語が指定できる。
(*)
SITCOBOLは、引数-1に数字も指定できる。数字が指定されたとき、不要な0は省かれる。例えば、00123.45000
が指定されたときは、123.45が返却値となる。LEADING、TRAILINGは無視される。
関数値
- LEADING
指定がある場合、引数-1の空白でない最左端文字位置から、最右端文字位置までの文字からなる文字列が、返却値となる。
- TRAILING
指定がある場合、引数-1の最左端文字位置から,空白でない最右端文字位置までの文字からなる文字列が、返却値となる。
- LEADING 指定も TRAILING
指定もない場合、引数-1の空白でない最左端文字位置から、空白でない最右端文字位置までの文字からなる文字列が、返却値となる。
関数の型
引数の型に対する関数の型は以下の通りである。
引数-1の型
|
関数の型
|
英字
|
英数字
|
英数字
|
英数字
|
日本語
|
日本語
|
11.2.41 UPPER-CASE関数
引数-1の中の英小文字と等価な英大文字を返す。
書き方
FUNCTION UPPER-CASE(引数-1)
引数
- 引数-1の型は、英字または英数字でなければならない。
- 引数-1の長さは、1文字以上でなければならない。
関数値
- 関数値は、引数-1の中の英小文字を英大文字に置き換えた文字列である。すなわち、引数-1の中の英小文字が置き換えられることを除いて、引数-1と同じ文字列である。
- 関数値の長さは、引数-1の長さと同じである。
関数の型
関数の型は、英数字である。
11.2.42 VARIANCE関数
引数の分散の近似値を返す。
書き方
FUNCTION VARIANCE( {引数-1} … )
引数
引数-1の型は、数字でなければならない。
関数値
- 関数値は、引数-1の並びの分散の近似値である。すなわち、引数-1の並びの標準偏差の2乗である。標準偏差については、“STANDARD-DEVIATION関数”を参照のこと。
- 引数-1の並びがすべて同じ値の場合、関数値はゼロである。
関数の型
関数の型は、数字である。
11.2.43 WHEN-COMPILED関数
プログラムを翻訳したときの日付と時刻を返す。
書き方
FUNCTION WHEN-COMPILED
関数値
- 関数値は、プログラムを翻訳したときの日付、時刻、およびグリニッジ標準時との時差を表す、21文字の英数字である。(*1)
(*1) SIT
COBOLは、インタプリタであり、翻訳日付や時刻は存在しない。“CURRENT-DATE関数”と同じ値を返す。