十進BASICでJavaScriptのeval関数を呼び出してみた

 十進BASICでJavaScriptのeval()関数を呼び出してみました。(^_^;
 VBScriptのように、あまりいろんなことはできませんが、eval()関数内で代入ができます。(^_^;
 それから、「Math.」を付けるのが面倒なので、付けなくてもいいように工夫しました。

● JsEval1.BAS

DECLARE EXTERNAL FUNCTION Js.Eval$, Js.Eval

LET dummy = Eval("cosDeg=function(x){return cos(x/180*PI);}") ! 関数定義

LET f$ = "cosDeg(x)"
FOR x=0 TO 180 STEP 30
   PRINT x, Eval("x="& STR$(x) &"; "& f$)
NEXT x

END

MODULE Js
OLE CREATEOBJECT "ScriptControl"
EXTERNAL SUB setLanguage(s$)
   OLE PropertyPut "language"
END SUB
CALL setLanguage("Jscript")
PUBLIC FUNCTION Eval$, Eval
EXTERNAL FUNCTION Eval$(s$)
   OLE METHOD "eval"
END FUNCTION

! 実数を返すEval
EXTERNAL FUNCTION Eval(s$)
   LET s$ = "with(Math){" & s$ & "}"   ! 「Math.」を省略するため
   WHEN EXCEPTION IN
      LET r$ = Eval$(s$)
      SELECT CASE r$
      CASE "INF" 
         LET result = MAXNUM
      CASE "-INF"
         LET result =-MAXNUM
      CASE ELSE
         LET result = VAL(r$)
      END SELECT
   USE
   !   PRINT r$
      LET result = -EPS(0) ! エラーのときは負のEPS(0)を返す
   END WHEN
   LET Eval= result
END FUNCTION

END MODULE

●実行結果

 0                       1 
 30                      .866025403784439 
 60                      .5 
 90                      6.12303176911189E-17 
 120                    -.5 
 150                    -.866025403784439 
 180                    -1 

※参考URL
十進BASIC−OCXの利用
十進BASICでVBScriptのeval関数を呼び出してみた - rscのブログ
十進BASICでVBScriptのeval関数を呼び出してみた。(2) - rscのブログ