次の算術関数は、算術処理ステートメント(ADD
、COMPUTE
、DIVIDE
、MULTIPLY
、SUBTRACT
)および論理条件基準でサポートされています。
関数 | フォーマット/長さ | 説明 |
---|---|---|
ABS(field) |
field と同じ
|
field の絶対値。
|
ATN(field) |
F8 | field のアークタンジェント。
|
COS(field) |
F8 |
field のコサイン。 field の値が 1017 以上の場合、 |
EXP(field) |
F8 | 基数 e、指数 field による累乗(すなわち efield。e はオイラー数)。 |
FRAC(field) |
field と同じ
|
field の小数部分。
|
INT(field) |
field と同じ
|
field の整数部分。
|
LOG(field) |
F8 | field の自然対数。
|
SGN(field) |
field と同じ
|
field の符号(-1、0、+1)。
|
SIN(field) |
F8 |
|
SQRT(field) |
(*) |
負の値の引数フィールドは正の値として扱われます。 引数の小数点の前の桁数は最大 22 です。 |
TAN(field) |
F8 |
|
VAL(field)
|
ターゲットフィールドと同じ |
英数字 ターゲットフィールドの長さが不足している場合、小数は切り捨てられます(『プログラミングガイド』の「演算割り当てのルール」セクションの「フィールドの切り捨てと切り上げ」も参照)。 |
* これらの関数は次のように評価されます。
field
のフォーマット/長さが F4 の場合、SQRT(field)
のフォーマット/長さは F4 になります。
field
のフォーマット/長さが F8 または I の場合、SQRT(field)
のフォーマット/長さは F8 になります。
field
のフォーマットが N または P の場合、SQRT(field)
のフォーマット/長さはそれぞれ Nn
.7 または Pn.7 になります(n
は十分な大きさになるように自動的に計算されます)。
算術関数(VAL
を除く)で使用できる field
は、定数またはスカラーです。フォーマットは数値(N)、パック 10 進(P)、整数(I)、または浮動小数点(F)にする必要があります。
VAL
関数に使用できる field
は、定数、スカラー、または配列です。フォーマットは英数字にする必要があります。
** Example 'MATHEX': Mathematical functions ************************************************************************ DEFINE DATA LOCAL 1 #A (N2.1) INIT <10> 1 #B (N2.1) INIT <-6.3> 1 #C (N2.1) INIT <0> 1 #LOGA (N2.6) 1 #SQRTA (N2.6) 1 #TANA (N2.6) 1 #ABS (N2.1) 1 #FRAC (N2.1) 1 #INT (N2.1) 1 #SGN (N1) END-DEFINE * COMPUTE #LOGA = LOG(#A) WRITE NOTITLE '=' #A 5X 'LOG' 40T #LOGA * COMPUTE #SQRTA = SQRT(#A) WRITE '=' #A 5X 'SQUARE ROOT' 40T #SQRTA * COMPUTE #TANA = TAN(#A) WRITE '=' #A 5X 'TANGENT' 40T #TANA * COMPUTE #ABS = ABS(#B) WRITE // '=' #B 5X 'ABSOLUTE' 40T #ABS * COMPUTE #FRAC = FRAC(#B) WRITE '=' #B 5X 'FRACTIONAL' 40T #FRAC * COMPUTE #INT = INT(#B) WRITE '=' #B 5X 'INTEGER' 40T #INT * COMPUTE #SGN = SGN(#A) WRITE // '=' #A 5X 'SIGN' 40T #SGN * COMPUTE #SGN = SGN(#B) WRITE '=' #B 5X 'SIGN' 40T #SGN * COMPUTE #SGN = SGN(#C) WRITE '=' #C 5X 'SIGN' 40T #SGN * END
プログラム MATHEX
の出力:
#A: 10.0 LOG 2.302585 #A: 10.0 SQUARE ROOT 3.162277 #A: 10.0 TANGENT 0.648360 #B: -6.3 ABSOLUTE 6.3 #B: -6.3 FRACTIONAL -0.3 #B: -6.3 INTEGER -6.0 #A: 10.0 SIGN 1 #B: -6.3 SIGN -1 #C: 0.0 SIGN 0