Чтобы вызвать подпрограмму из вашего сценария, используйте следующий синтаксис:

call ProcedureName(arguments)

ProcedureName - это имя подпрограммы, которую вы вызываете; arguments - значения, передающиеся в процедуру. Как было сказано ранее, подпрограммы используются, когда требуется обработать какое-то событие, например:

<SCRIPT> 
... 
sub MyObject_Click() 
alert "This is a subroutine which is called _ 
when the Click event happens for the MyObject object." 
end sub 
... 
</SCRIPT>

В нашем случае это Click, т. е. пользователь должен щелкнуть мышкой на этом объекте. Это не будет работать для функции, потому что функция - это процедура, возвращающая значение. Что касается функций, то они сами могут быть возвращены как значение, например:

<SCRIPT> 
... 
y = 2 
x = GiveValue(y) 
alert x 
... 
function GiveValue(a) 
GiveValue = a + 4 
end function 
... 
</SCRIPT>

Следующий пример иллюстрирует вызовы подпрограммы и функции из сценария:

<HTML> 
<HEAD> 
<TITLE>Документ HTML, использующий элементы 
управления ActiveX и процедуры </TITLE> 
</HEAD> 
<BODY BGCOLOR="mistyrose"> 
<OBJECT ID="IeLabel1" WIDTH=170 HEIGHT=93 
CLASSID="CLSID:99B42120-6EC7-11CF-A6C7-00AA00A47DD2"> 
<PARAM NAME="_ExtentX" VALUE="3625"> 
<PARAM NAME="_ExtentY" VALUE="2461"> 
<PARAM NAME="Caption" VALUE="Click Me"> 
<PARAM NAME="Angle" VALUE="0"> 
<PARAM NAME="Alignment" VALUE="4"> 
<PARAM NAME="Mode" VALUE="1"> 
<PARAM NAME="FillStyle" VALUE="0"> 
<PARAM NAME="FillStyle" VALUE="1"> 
<PARAM NAME="ForeColor" VALUE="#FF0000"> 
<PARAM NAME="BackColor" VALUE="#373737"> 
<PARAM NAME="BackStyle" VALUE="1"> 
<PARAM NAME="FontName" VALUE="Courier"> 
<PARAM NAME="FontSize" VALUE="24"> 
<PARAM NAME="FontItalic" VALUE="0"> 
<PARAM NAME="FontBold" VALUE="0"> 
<PARAM NAME="FontUnderline" VALUE="0"> 
<PARAM NAME="FontStrikeout" VALUE="0"> 
<PARAM NAME="TopPoints" VALUE="0"> 
<PARAM NAME="BotPoints" VALUE="0"> 
</OBJECT><BR CLEAR="ALL"> 
<INPUT TYPE="button" NAME="button1" VALUE="Get Value"> 
Enter Angle: 
<INPUT TYPE="text" NAME="AngleInpt" VALUE="0"
 SIZE="10"
MAXLENGTH="10"> 
The Sine is: 
<INPUT TYPE="text" NAME="SineInpt" VALUE="0"
 SIZE="10" MAXLENGTH="10">
<SCRIPT LANGUAGE="VBScript"> 
dim pi 
pi = 4 * atn(1.0) 
sub button1_OnClick 
dim angle, sinangle 
angle = AngleInpt.value 
sinangle = getsin(angle) 
SineInpt.value = sinangle 
end sub 
function getsin(angle) 
getsin = sin((pi * angle)/180) 
end function 
sub ieLabel1_Click 
call ieLabel1.AboutBox 
end sub 
</SCRIPT> 
</BODY> 
</HTML>

Когда пользователь щелкает мышью по метке Label, то вызывается метод About Box. Поля ввода используются для вычисления синуса заданного угла (в градусах). Если ввести некоторое значение в первое поле ввода, помеченное текстом "Enter Angle", и щелкнуть на кнопке мышью, то введенный аргумент будет переведен в радианы и затем вычислен синус, результат чего будет отображен. Первая процедура вызывается по нажатию мышью на единственный объект на странице - кнопку, называемую button1. Когда это событие обрабатывается, то вызывается сразу несколько методов. Сначала обновляются все переменные, которые вы собираетесь использовать для вашей программы. Затем отыскивается значение, называемое AngleInpt, которое пользователь набрал в поле ввода. Далее вызывается функция, в которую заносится введенный параметр из поля AngleInpt. Она преобразует угловые градусы в радианы, затем вычисляет его синус (радианы являются основной мерой измерения углов для тригонометрических функций в VBScript). Значение связывается с именем функции (getsin), которая возвращает его для определенной нами ранее переменной. В итоге это значение отображается в текстовом поле, называемом SineInpt.

В данном примере задействовано два метода: подпрограмма button1_OnClick, которая, если вы помните, вызывается, когда пользователь щелкает мышью по кнопке, и функция getsin(angle), где angle - параметр, используемый для преобразования градусов в радианы. У элемента ActiveX Label используются два включаемых метода (методами называются собственные подпрограммы и функции объекта): тот, который вызывается, когда по метке щелкнули мышкой (ieLabel1_Click), и метод отображения диалоговой панели ieLabel.AboutBox(). Когда обращаются к методам объектов, обычно используют следующий синтаксис:

call ObjectName.MethodName()

Ключевое слово call применяется для вызова определенного метода. ObjectName - это имя объекта, для которого вы хотели бы вызвать метод, а MethodName() - это имя метода, который будет использовать сам объект. Имя объекта и вызываемый метод отделяются точкой. Также для вызова метода не требуется никаких скобок, потому что у него нет никаких параметров.