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