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
要素数が不明な場合、関数内で決定できるのが利点です。