ある機能単位をひとかたまりにして、その名前で呼び出しが行えるように
したプログラムをプロシージャといいます。
プロシージャは、同じ処理を何度も使う場合や、一度作成した複雑なプロ
グラムを再利用するのに便利です。例えば、組み込み関数にない関数を
プロシージャとして作り、組み込み関数と同じように使用することができま
す。また、一度プロシージャを作っておけば、別のプログラムにもほとんど
変更することなくコピーして使用することができます。
VBScript のプロシージャには、サブルーチンプロシージャと関数プロシー
ジャがあります。
9.2 サブルーチンプロシージャ [もくじへ] [トップページへ]
===================================================
プログラム例題14
次の5つのデータを小数第3位を四捨五入して、小数第2位に丸めて
表示せよ。
62.546, 62.533, 62.545, 62.548, 62.544
=========================================================
<HTML>
<HEAD>
<TITLE>例題14</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Marume( s )
dim d
d = int( s*100 + 0.5)/100
document.write "データ
= ", s, " 結果 = ", d, "<BR>"
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="VBScript">
<!--
dim a(5)
dim i
' 入力データ
a(1) = 62.546
a(2)
= 62.533
a(3)
= 62.545
a(4)
= 62.548
a(5)
= 62.544
' サブルーチンプロシージャの呼び出し
document.write
"<BR>"
For i = 1 to 5
Marume a(i)
Next
-->
</SCRIPT>
</BODY>
</HTML>
実行結果は、次のようになります。
データ = 62.546 結果 = 62.55
データ = 62.533 結果 = 62.53
データ = 62.545 結果 = 62.55
データ = 62.548 結果 = 62.55
VBScript はプログラムの先頭から読み込まれるため、プロシージャは
通常 <HEAD> </HEAD> 内に記述します。
Sub
Marume( s )
dim d
d = int(
s*100 + 0.5)/100
document.write
"データ
= ", s, " 結果 = ", d, "<BR>"
End Sub
Marume という名前のサブルーチンプロシージャです。( )内の変数 s は
仮引数(ひきすう)といわれるもので、呼び出し側で Marume x と書くと、 x
の値が s に渡されます。そして、丸めた値 d を表示して End Sub で呼び出
し側に戻ります。呼び出し側の引数を実引数といいます。
サブルーチンプロシージャは、このように引数を書く場合と、何も引数を書か
ない場合があります。
引数を書かない場合でも、プロシージャ側では Sub Test( ) のように、( )を
付けなければなりません。
For
i = 1 to 5
Marume
a(i)
Next
a(i) の値を5回ループさせながら、サブルーチンプロシージャ Marume を呼
び出して四捨五入します。
===================================================
プログラム例題15
次の5つのデータを配列変数 a に代入し、小数第3位を四捨五入して
から、ふたたび配列変数 a に求め表示せよ。
62.546, 62.533, 62.545, 62.548, 62.544
=========================================================
<HTML>
<HEAD>
<TITLE>例題15</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--
Function Marume( s )
dim d
d = int( s*100 + 0.5)/100
Marume = d
End Function
-->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="VBScript">
<!--
dim a(5)
dim i
' 入力データ
a(1) = 62.546
a(2)
= 62.533
a(3)
= 62.545
a(4)
= 62.548
a(5)
= 62.544
' 関数プロシージャの呼び出し
document.write
"<BR>"
For i = 1 to 5
'
' 四捨五入の前
document.write "データ
= ", a(i)
'
a(i) = Marume(a(i))
'
' 四捨五入の後
document.write " 結果
= ", a(i), "<BR>"
Next
-->
</SCRIPT>
</BODY>
</HTML>
実行結果は、次のようになります。
データ = 62.546 結果 = 62.55
データ = 62.533 結果 = 62.53
データ = 62.545 結果 = 62.55
データ = 62.548 結果 = 62.55
Function
Marume( s )
dim d
d = int(
s*100 + 0.5)/100
Marume =
d
End Function
Marume という名前の関数プロシージャです。( )内の仮引数 s に、呼び出
し側の引数の値が渡され、 Marume = d で計算結果が返されます。サブル
ーチンプロシージャと関数プロシージャの大きな違いはこの点です。計算結果
を返せるのが関数プロシージャ、返せないのがサブルーチンプロシージャと覚
えておけばいいでしょう。また、関数プロシージャの終わりは、End Function
です。
a(i) = Marume(a(i))
関数プロシージャで計算された結果は、Marume(a(i)) が持っています。その
値を再び a(i) に代入します。この文だけで、配列変数 a の値が、四捨五入
されるわけです。
ここで、サブルーチンプロシージャと関数プロシージャの使い方を復習してお
きます。