Gauche プログラムに JScript プログラムを埋込む

OLE オートメーションに対応しているコンポーネントにどんなものがあるのか確認していて、スクリプトエンジンもあるということを発見しました。 つまり、 Gauche-OLE を使ってそれらに接続すれば Gauche プログラムから JScriptVBScriptスクリプトエンジンにプログラムやデータを流し込んだり、スクリプトを処理した結果を受取ることが出来るということです。

例えばこのようなことが出来ます。

#!/usr/bin/env gauche
; -*- mode: gauche -*-
(use win.ole)

(define scriptControl (make-ole "ScriptControl"))
(ole-set! scriptControl 'Language "JScript")
(scriptControl 'AddCode
 "function now() {
   var date = new Date();
   return date.toUTCString();
  }")
(display (scriptControl 'Run "now"))
(ole-release!)

この例は JScript の関数を定義して、それを Gauche から呼んでいます。 あえて JScript のコードと混ぜ書きしたいという場合はそんなに多くはないと思いますが、もしあなたが自分のシステムに ActiveScriptRuby や ActivePerl をインストールしているならそれらも同様に利用できるので、 RubyPerl のライブラリが全て Gauche で使えるようなものです。 莫大なライブラリが Gauche から利用できるようになるのです。

ちなみに、 JScript 側で定義した関数を呼出すときに注意しなければならない点として数値の型があります。 JavaScript の世界では数値は全て倍精度浮動小数点です。 Gauche における <real> 型に対応します。 Gauche におけるその他の数値型の値を渡してもエラーになるようなので必要であれば変換するようにしてください。

Document ID: 69284884debf6c7df7e4e00c7393a802