ほとんどの COBOL 組み込み関数には、同じ結果を得るのに使用できる、対応する数学用の呼び出し可能サービスがあります。
デフォルト・オプション ARITH(COMPAT) を使用してコンパイルすると、COBOL 浮動小数点組み込み関数は長精度 (64 ビット) の結果を戻します。オプション ARITH(EXTEND) を使用してコンパイルすると、COBOL 浮動小数点組み込み関数 (RANDOM は例外) は拡張精度 (128 ビット) の結果を戻します。
例えば (以下の表の最初の行を考慮します)、ARITH(COMPAT) を使用してコンパイルした場合、CEESDACS は ACOS と同じ結果を戻します。 ARITH(EXTEND) を使用してコンパイルした場合は、CEESQACS が ACOS と同じ結果を戻します。
| COBOL 組み込み関数 | 対応する長精度言語環境プログラム呼び出し可能サービス | 対応する拡張精度言語環境プログラム呼び出し可能サービス | 組み込み関数と呼び出し可能サービスで結果が同じか |
|---|---|---|---|
| ACOS | CEESDACS | CEESQACS | はい |
| ASIN | CEESDASN | CEESQASN | はい |
| ATAN | CEESDATN | CEESQATN | はい |
| COS | CEESDCOS | CEESQCOS | はい |
| LOG | CEESDLOG | CEESQLOG | はい |
| LOG10 | CEESDLG1 | CEESQLG1 | はい |
| RANDOM1 | CEERAN0 | なし | いいえ |
| REM | CEESDMOD | CEESQMOD | はい |
| SIN | CEESDSIN | CEESQSIN | はい |
| SQRT | CEESDSQT | CEESQSQT | はい |
| TAN | CEESDTAN | CEESQTAN | はい |
|
|||
RANDOM 組み込み関数と CEERAN0 サービスはともに、0 から 1 の範囲の乱数を生成します。ただし、それぞれが独自のアルゴリズムを使用するため、RANDOM と CEERAN0 は同じシードから異なる乱数を生成します。
同じ結果をもたらす関数であっても、組み込み関数と言語環境プログラム呼び出し可能サービスの使用法は異なります。 組み込み関数の引数に要求されるデータ型に関する規則の方が、制限が緩くなっています。数字組み込み関数の場合には、任意の数値データ型の引数を使用することができます。しかし、CALL ステートメントを使用して言語環境プログラム呼び出し可能サービスを呼び出す場合は、パラメーターをそのサービスで必要な数値データ型 (通常は COMP-1 または COMP-2) と一致させなければなりません。
組み込み関数と言語環境プログラム呼び出し可能サービスのエラー処理は異なる場合があります。 言語環境プログラムの数学サービスを呼び出すときに明示的なフィードバック・トークンを渡す場合は、それぞれの呼び出しの後でそのフィードバック・コードを検査し、エラーを処理するための明示的なアクションを取らなければなりません。 しかし、フィードバック・トークンを使用して明示的に OMITTED を呼び出した場合は、トークンを検査する必要はありません。エラーがあれば、言語環境プログラムが自動的にエラーを通知します。
関連タスク
言語環境プログラム呼び出し可能サービスの使用
関連参照
ARITH