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

 十進BASICでVBScriptのeval()関数を呼び出してみました。(^_^;
 VBScriptで、代入や関数定義は、Execute文を使いますが、長いので、SUB Exec(s$)としました。
 また、Eval()関数は、戻り値として、数値や文字列などを返しますが、ここでは、数値を返すときは、Function Eval(s$)、文字列を返すときは、Function Eval$(s$)としました。
 ということで、これらのEval()関数は、できれば、例外状態処理 WHEN EXCEPTION IN ~ USE ~ END WHEN 文の中で使った方が安全かと思います。(^_^;
 ちなみに、VBScriptのeval()関数では代入ができないので、代入関数fLet()を作ってみました。自身は0を返すので、「x=a:~」とするところを「fLet(x,a)+~」として使います。(^_^;

● VBsEval1.BAS

DECLARE EXTERNAL FUNCTION VBs.Eval$, VBs.Eval
DECLARE EXTERNAL SUB VBs.Exec

CALL Exec("PI=4*ATN(1):E=EXP(1)")   ! 定数PI、Eを設定
CALL Exec("Function fLet(x, a):x=a:fLet=0:End Function")        ! 関数定義
CALL Exec("Function CosD(x):CosD=Cos(x/180*PI):End Function")   ! 関数定義

LET f$ = "CosD(x)"
FOR x=0 TO 180 STEP 30
   WHEN EXCEPTION IN
      LET s$ = "fLet(x,"& STR$(x) &")+"& f$
      !PRINT s$,
      PRINT x, Eval(s$)
   USE
   END WHEN
NEXT x

END

MODULE VBs
OLE CREATEOBJECT "ScriptControl"
EXTERNAL SUB setLanguage(s$)
   OLE PropertyPut "language"
END SUB
CALL setLanguage("VBS")
PUBLIC FUNCTION Eval$, Eval
PUBLIC SUB Exec

EXTERNAL SUB Exec(s$)
   OLE METHOD "ExecuteStatement"
END SUB

EXTERNAL FUNCTION Eval$(s$)
   OLE METHOD "eval"
END FUNCTION

EXTERNAL FUNCTION Eval(s$)
   OLE METHOD "eval"
END FUNCTION

END MODULE

●実行結果

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

※参考URL
十進BASIC−OCXの利用
同じものを含む順列の問題を十進BASICで解いてみた。
辞書式配列の問題を十進BASICで解いてみた。
十進BASICでVBScriptのeval関数を呼び出してみた。(2) - rscのブログ
十進BASICでJavaScriptのeval関数を呼び出してみた - rscのブログ