- 締切済み
vbs subプロシージャーにするべきなの?し
vbs subプロシージャーにするべきなの?しないべきなの? call a sub a() msgbox "b" end sub vbsでこのコードを実行すると問題なく動くのですが、 call a をsubとend subで囲わなくていいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- anmochi
- ベストアンサー率65% (1332/2045)
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つあり、メインプロシージャーにあたるものが何もないスクリプトになってしまう。 ぼんやりとした解説だがイメージをつかんでもらえただろうか。
- lupin-333333
- ベストアンサー率31% (294/933)
>をsubとend subで囲わなくていいのでしょうか あなたは、なぜそう思ったのでしょう