End Sub

Первая группа операторов - это программа Program2, вторая - описание подпрограммы Hypotenuse, рассчитывающей длину гипотенузы прямоугольного треугольника. В программе Program2 имеется три оператора обращения к подпрограмме Hypotenuse, причем два из них содержат ключевое слово Call, а одно не содержит.

Формальные параметры А и В (в описании подпрограммы) являются входными. Это - длины катетов. Ключевое слово ByVal перед А и В в первой строке подпрограммы означает, что эти параметры вызываются по значению (value - значение). В этом случае при обращении к подпрограмме ей передаются значения А и В. Это - соответственно З и 4 при всех трех обращениях к подпрограмме Hypotenuse.

Формальный параметр С является выходным. Это - длина гипотенузы. Ключевое слово ByRef перед С в первой строке подпрограммы означает, что параметр С вызывается по ссылке (reference - ссылка). В этом случае при обращении к подпрограмме ей передается адрес ячейки оперативной памяти, соответствующей переменной cc1 (при первом обращении к подпрограмме Hypotenuse, сс2 (при втором обращении) или ccЗ (при третьем обращении).

Ключевое слово ByRef можно опускать.

Если параметрами подпрограммы являются массивы, то все они (и входные, и выходные) вызываются по ссылке.

Dim N1 As Integer

Sub Program3 ()

Dim хх(50) As Double, уу(50) As Double

Dim i As Integer

N1 = 3

For i = N1 То 30

xx(i) = 0.1 * i

Next i

Call ХSINХ(30, хх, уу) 'обращение к подпрограмме

End Sub

Sub XSINX(ByVal N2, ByRef Х() As Double, ByRef F() As Double)

Dim j As Integer

For j = Nl То N2

F(j) = X(j) * Sin(X(j))

Next j