UWSCの関数で配列を返す

最近、UWSCでネイティブコードを実行するといういかれたことをしている。
しかし、むつい。
どうも、UWSCのスレッドとネイティブスレッドの仲が良くない。
、、、いや、待ち合わせが良くないのかもしれない。
ネイティブコードだけなら動作するロジックが、UWSC込みだと途端に落ちる。
うーむ。


ということで、別の検討。
UWSCの関数で配列を返せないかな〜、と思ったのでやってみた。
比較的新しいSPLIT関数のおかげで楽チン。

追記 2013/10/19
SAFEARRAY関数で配列をRESULTに入れるのが正解。
ゼロ配列は、SAFEARRAY(0, -1)にする。(RESIZEも可能)
これにあわせて、以下書き換えました。


例えば、以下のような関数

PROCEDURE func(a, var b[])
	...
	b[i] = ...
	...
FEND

これを以下のようにする

FUNCTION func(a)
	...
	RESULT = SAFEARRAY(0, num-1)	// 確保する要素数は関数内で決める
	...
	RESULT[i] = ...
	...
FEND

素数が不明な場合、関数内で決定できるのが利点です。