Win32プログラミング講座 〜 Step3. プロシージャ呼び出し、プロシージャ作成 〜


「プロシージャ」は、時より、「関数」とか「サブルーチン」などと呼ばれます。ここでは、「プロシージャ」という呼び名に統一しますが、その正体は複数のコマンドを組み合わせてある、1つのコマンドのようなものです。言葉では少し説明し辛いので、サンプルプログラムを通して、プロシージャ機能の役割についての解説をします。

プロシージャの定義には、Function定義、Sub定義の2通りの方法がありますが、それぞれ、戻り値があるかないかの違いだけで、その他の機能は全く同一です。

Function プロシージャ名 (変数1 As 型, 変数2 As 型 ,...) As 戻り値の型
    関数内のコード...
    プロシージャ名=戻り値
End Function

Sub プロシージャ名 (変数1 As 型, 変数2 As 型 ,...)
    関数内のコード...
End Sub
"変数1 As 型…" のことを、一般的に「パラメータ」や「引数」などといい、任意の個数だけ指定することができます(省略も可)。
手始めに、指定された税抜き価格を元に、消費税を上乗せした税込価格を計算するプロシージャを作成し、呼び出してみましょう。

Dim value1 As Long
Dim value2 As Long
Dim buffer As String

Function GetPrice(a As Long) As Long
	GetPrice=a+a*0.05
End Function

value1=100
value2=GetPrice(value1)
buffer="定価\"+Str$(value1)+"、税込み価格\"+Str$(value2)
MessageBox(0,buffer,"税金の計算",MB_OK)

GetPriceというプロシージャをFunction命令で定義しています。変数aというパラメータを持ち、税込み価格が戻り値にセットされているのがわかります。
コンパイル、実行を行うと、定価100円に、消費税が加算され、税込み価格105円が表示されます。"value1=100" の代入値を任意の価格に設定することであらゆる定価に対する税込み価格を計算することができます。

ところで、MessageBox関数をいちいち書くのって、面倒だと思いませんか?一回だけならまだしも、プログラム内で何回もとなると…。どうせタイトル部やMB_OKっていうのは変わらないんだったら、省略したくなるものです。
この問題、プロシージャ機能を使って解決しましょう。H○Pチックに、プロシージャの名前は "mes" にでもしておきます。

Sub mes(buffer As String)
    MessageBox(0,buffer,"プチノベル",MB_OK)
End Sub

mes("僕は意を決して階段に足をやり、一歩ずつすすんだ。肩が小刻みに震えているのがわかる。")
mes("あの物音は、まるで僕の息遣いに反応しているかのように、やまずにいる。")
mes("階段の先は、どうやら廊下が続いているようだ。正面に続く長い廊下のおくには、小さな窓が1つ。")
mes("弱々しい光が廊下を照らし、僕の足を誘う。")
mes("どうやら、この部屋の中に答えがあるようだ。")
mes("もう後戻りはできないと思い、おそるおそるドアをあける…。")

前へ戻る - 次へ進む
トップへ戻る


©2005 Discoversoft