LotusNotesな日々IBM社のLotusNotesに関係する何かを日々語ってるようなきがしないでもないブログです。 

スポンサーサイト

   ↑  --/--/-- (--)  カテゴリー: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(記事編集) http://mesosune.blog123.fc2.com/?overture" target="_new

--/--/-- | Comment (-) | HOME | ↑ ページ先頭へ |

【Notes】【@式】@式は必ずしも上から順番に実行されない

   ↑  2009/11/11 (水)  カテゴリー: Notes(式)
懇談室のこの質問で意図的に答えなかった,
何故処理が飛ぶかを記載してみる。

※※※注意。※※※
曖昧な書き方はしたくないので言い切り口調でかいてます。
実際はこの通りとは限りません。
※※※※※※※※※

@式って単純な命令実行文なので、
確実に前の処理が終わってから次の行が実行されるわけではないんですよね。

なので@式はたまに
処理の実行順番がかわってしまったり
処理がすっ飛ぶ(処理が無かったことにされる)こともある。

(条件式は特に処理を一文で複雑に書きすぎると飛びやすいようです)

たとえば
@Command([FileSave]);
@Command([FileCloseWindow]);

とか。
安直に保存を実行したあとに閉じる処理なんだけど、
実際の裏での動きは保存の実行処理をコールしたら
すぐにフォームの表示を閉じる動きをコールしているわけ。
実際問題呼び出しているだけで実行されるか否かは関係なかったりするってのが@Commandの正体。

そんでもって
@PostCommandは
前の行の処理が終わるのをまっているわけではなく、
コールの終了、つまり処理の開始を待っているので、

@PostedCommand([FileSave]);
@PostedCommand([FileCloseWindow]);
@Command([ToolsRunMacro];"エージェント名")

とフォームボタンに記載した場合、
フォームが開いていないとエージェントは実行できないので、
そもそもエージェントが実行されてはおかしいのですが、
たまに保存処理と閉じる処理の開始が遅くなるので、
エージェントがコールされるのが中途半端になって
存在しないとエラーを出力されたり、
完全に実行されたりのです。
(フォームが閉じる前にエージェントが走ることがあるってことで)

@式の処理の実行順が勝手にかわってしまったり
すっ飛びする回避方法としては、

 1.戻り値を引数に持たせて処理を実行する(条件式に最適な対応方法)
 2.強制的に記述順に処理する@Doを利用する
 3.LotusScriptに置き換える

などを考えることができます。
スポンサーサイト

(記事編集) http://mesosune.blog123.fc2.com/blog-entry-233.html

2009/11/11 | Comment (2) | Trackback (0) | HOME | ↑ ページ先頭へ |

Comment


なんて例を・・・

@PostedCommandも@Command([ToolsRunMacro];"エージェント名")も、すべての @関数が実行された後に実行されるハズだから・・・なんて考えていたら、脳が茹って豆腐みたいになった気がしましたよ。
[式ステートメントの評価の順序]という記述がDesinerヘルプに有るのですが、それを読んだだけでは解らない内容で、ためになりました。

たち |  2009/11/12 (木) 00:46 [ 編集 ] No.102


たちさんお久しぶりですっ

わーベテランさんからためになるなんていわれちゃうとテレちゃいますよ(笑)
ありがとうございます

ページを閉じる命令の後に@PostedCommandとかいても@Commandとかいてもあまり意味が無いというか,同じ現象がおきます(笑)

@式は特にヘルプはたまに日本語訳がおかしかったり例文がおかしかったりするので,丸ごと頭から信じてはいけないというか1個1個,確認しつつが全てですよね(^^;

めそ凹すね丸(管理人) |  2009/11/12 (木) 19:51 [ 編集 ] No.103

コメントを投稿する 記事: 【Notes】【@式】@式は必ずしも上から順番に実行されない

お気軽にコメントをぞうぞ。
非公開 (管理人のみ閲覧可能なコメント) にしたい場合には、ロック にチェックを入れてください。

  任意 : 後から修正や削除ができます。
  非公開コメントとして投稿する。(管理人にのみ公開)
 

Trackback

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。