例
以下の例は、定数 e を返します。
SELECT {fn EXP(1)} AS e_constant
これは、2.718281828... を返します。
以下の埋め込み SQL の例は、整数 0 から 10 までの指数値を返します。
SET a=0
WHILE a<11 {
&sql(SELECT {fn EXP(:a)} INTO :b)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE
QUIT }
ELSE {
WRITE !,"Exponential of ",a," = ",b
SET a=a+1 }
}
以下の埋め込み SQL の例は、EXP が LOG の逆関数であることを示しています。
SET x=7
&sql(SELECT {fn EXP(:x)} AS Exp,
{fn LOG(:x)} AS Log,
{fn EXP({fn LOG(:x)})} AS ExpOfLog
INTO :a,:b,:c)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE
QUIT }
ELSE {
WRITE "Exponential of ",x," = ",a,!
WRITE "Natural log of ",x," = ",b,!
WRITE "Exp of Log of ",x," = ",c
}
3 番目の関数呼び出しで、入力された数値と計算された返り値との間に小さな差異があることに注意してください。以下の例は、この計算上の誤差を処理する方法を示します。
以下の埋め込み SQL の例は、整数 1 から 10 までに対する LOG 関数と EXP 関数の関係を示します。
SET a=1
WHILE a<11 {
&sql(SELECT {fn LOG(:a)} INTO :b)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE
QUIT }
ELSE {
WRITE !,"Logarithm of ",a," = ",b }
&sql(SELECT ROUND({fn EXP(:b)},12) INTO :c)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"Exponential of log ",b," = ",c
SET a=a+1 }
}
ここでは、システムの計算制限によって生じる非常に小さな差異を修正する ROUND 関数が必要なことに注意してください。上記の例では、この目的で ROUND がとりあえず小数点以下 12 桁に設定されています。