# 第11章 組み込み関数機能

説明書の第11章に対応するサンプルです。

https://sit-cobol.sit11.com/manual

  関数.cob    SIT COBOL/Standard 版で動きます

FUNCTION で呼び出す組み込み関数を、1本のプログラムでまとめて確かめます。
数値の丸めや文字列の加工、日付の取得など、種類ごとに順に並んでいます。

  数値      MAX MIN MOD REM INTEGER INTEGER-PART FACTORIAL
            NUMVAL NUMVAL-C RANDOM RANGE
  統計      MEAN MEDIAN MIDRANGE VARIANCE STANDARD-DEVIATION
            ORD-MAX ORD-MIN
  文字列    LENGTH TRIM UPPER-CASE LOWER-CASE REVERSE CHAR ORD
  数学      SQRT LOG LOG10 SIN COS TAN ASIN ACOS ATAN
  財務      ANNUITY PRESENT-VALUE
  日付      CURRENT-DATE WHEN-COMPILED
            INTEGER-OF-DATE DATE-OF-INTEGER INTEGER-OF-DAY

# 出力の見かた

結果を IF文 で照合して OK / NG を表示します。

  正しく動くと OK だけが並びます。NG が出たらバグです。

関数名と期待している値がソースに並んでいるので、
「この関数はこう書くと何が返るのか」を一覧として読めます。

# 小数を返す関数の照合について

LOG や SQRT のように小数を返す関数は、戻り値の桁数が処理系や環境で
変わりえます。定数と一致するかで判定すると末尾の1桁で崩れるため、
このサンプルでは範囲で判定しています。

  if function log(2.0) > 0.6931471805 and < 0.6931471806

同じ理由で、CURRENT-DATE のように実行するたびに変わる値も、
年を直接書かずに範囲で判定しています。

# 実行のしかた

run.bat はありません。sitcobol.exe で .cob を開いて実行するか、
コマンドから次のように実行します。

  sitcobol_bat.exe "関数.cob" lang=ja

関数の一覧は案内サイトの早見表にもあります。

  https://sit-cobol.sit11.com/samples/cheatsheet

# うまく動かないとき

  https://sit-cobol.sit11.com/samples/troubleshooting

よくあるつまずきは、サンプル集の readme.txt にも書いてあります。
