• 締切済み

vbs subプロシージャーにするべきなの?し

vbs subプロシージャーにするべきなの?しないべきなの? call a sub a() msgbox "b" end sub vbsでこのコードを実行すると問題なく動くのですが、 call a をsubとend subで囲わなくていいのでしょうか?

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

vbsは、subとend subで囲われたところがサブプロシージャーになる(当たり前)。 では、subとend subで「囲われていないところ」は何になるかというと、ここがメインプロシージャーとでもいうようなものになるわけだ。 より具体的に言うと、 A sub hoge() B end sub C sub fuga() D end sub E などというvbsのスクリプトがあった場合、Windows Scripting HostはAを実行し、hogeをサブプロシージャーとして覚えておき、Cを実行し、fugaをサブプロシージャーとして覚えておき、Eを実行して終了する。まぁ普通はこんな変態的なスクリプトを書く人はいないと思うが、原理としてはsubでないエリアを上から順番に実行していく。これをCに書き直すと以下のようなイメージになる。 #include <stdio.h> void hoge() { B; } void fuga() { D; } int main(int argc, char** argv) { A; C; E; return 0; } このイメージからわかる通り、subで囲われていない箇所をつなぎ合わせたものを一つのプロシージャーとして実行している感じだな。質問者のスクリプトではcall aがAの部分に相当する。そこがメインプロシージャーとなっている訳だ。ここをsubで囲ってしまうと、サブプロシージャーが2つあり、メインプロシージャーにあたるものが何もないスクリプトになってしまう。 ぼんやりとした解説だがイメージをつかんでもらえただろうか。

回答No.1

>をsubとend subで囲わなくていいのでしょうか あなたは、なぜそう思ったのでしょう

関連するQ&A