「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@691) [中] [解決]
@691■ (#2189) ファイルメーカープラグインでNACO_EVALの結果が正しく返らない - okbtso (2013-06-28 14:56) /中 未処理
【症状】ファイルメーカープラグインでNACO_EVALの結果が正しく返らない
【再現方法】
ソース1
------------------------------------
num=3
もし、(剰余(num , 2)=0)ならば
 FM結果=「偶数」
 FM結果で戻る
違えば
 FM結果=「奇数」
 FM結果で戻る
------------------------------------
FMに「奇数」が戻る

ソース2
------------------------------------
num=3
オンの間
 もし、(剰余(num , 2)=0)ならば
  FM結果=「偶数」
  FM結果で戻る
 違えば
  FM結果=「奇数」
  FM結果で戻る
-------------------------------------
FMに値が戻らない
【要望】ソース2 でも「奇数」が戻るべき
【バージョン】1.5151で発生 1.536 2013/6/28 DL した最新版でも再現
【その他】NACO_EXEC ならソース2でも結果は正しいです

(#2193) EVAL/EXECでの「戻る」は未定義? - うぇいく (2013-07-22 15:27) /中 未処理
FileMakerをもっていないため、確認はできませんが・・・

 evalから返される値は、仕様を確認すると直前に計算された結果となっており、「戻る」に渡している値とは関係しないようです(また、nako_excecも戻るとは関係していないようです)
(「戻る」は関数やイベント内で有効です。evalでの使用は動作自体が定義されてないかもしれません。evalやexecでは「戻る」を使用しないことをお勧めします。)

任意の値を戻すには、nako_execにてFM結果を設定するか、nako_evalにて直前の計算結果が最後に実行されるようにすることです。

うまく動かない理由ですが、ソース2の場合、最後に評価が終わる命令は、「オンの間」です。そのため、「オンの間」の計算結果が返されることになり、これは(値として意味がないから?)空欄になります。「もし」は値を伝搬する(「もし」の中の最後の計算結果を「もし」自身の計算結果にする)のですが、ほかの制御命令の多くは伝搬しないようです(ソース1がうまく動くのは、「もし」が値を伝搬しているためです)

もし以外の制御命令での値の伝搬については検討してみます。



(#2207) ありがとうございます - okbtso (2013-08-22 15:20) /中 解決
うぇいくさま
 ありがとうございます。
 1.今後、FileMakerプラグインでは「戻る」は使用しないようにします。
 2.繰返しの途中で、「終了」せず、繰返しを抜けてから値を返すように
   します。

(#2189)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能