次の算術関数は、算術処理ステートメント(ADD
、COMPUTE
、DIVIDE
、MULTIPLY
、SUBTRACT
)および論理条件基準でサポートされています。
関数 | フォーマット/長さ | 説明 |
---|---|---|
ABS(field) | field と同じ | field の絶対値。 |
ATN(field) | F8(*) | field のアークタンジェント。 |
COS(field) | F8(*) |
field のコサイン。 |
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(*) |
field のサイン(正弦)。 |
SQRT(field) | (*) |
field の平方根。 負の値の引数フィールドは正の値として扱われます。 |
TAN(field) | F8(*) |
field のタンジェント。 |
VAL(field) | ターゲットフィールドと同じ |
英数字 field から数値を抽出します。 field の内容は、数値の英数字(コードページまたは Unicode)文字表現にする必要があります。 field の先頭または末尾の空白は無視されます。小数点や先行符号文字は処理されます。 ターゲットフィールドの長さが不足している場合、小数は切り捨てられます(『プログラミングガイド』の「演算割り当てのルール」セクションの「フィールドの切り捨てと切り上げ」も参照)。 |
* これらの関数は次のように評価されます。
引数は、フォーマット/長さが F8 に変換された後、計算のためにオペレーティングシステムに渡されます。
オペレーティングシステムによって返される結果のフォーマット/長さは F8 で、その後ターゲットフォーマットに変換されます。
算術関数(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