Жуйк, а ты знал, что в VBScript можно получать указатели на функции?
Простой пример.

Option Explicit

Function AddNumbers(One, Two)
	AddNumbers = One + Two
End Function

Dim objFunctionPointer
Set objFunctionPointer = GetRef("AddNumbers")

WScript.Echo objFunctionPointer(3, 5)

Оказалось, что даже при использовании WSF файлов модульность получается условной. На деле во время выполнения весь код как бы сливается в один большой скрипт, и для простых функций Private и Public теряют смысл. То же самое касается переменных и констант на верхнем уровне. Похоже, единственный способ заизолировать код – пихать всё в классы. Тоесть один файл – один класс. Плюс там же в файле «модуля» объявлять переменную и тут же присваивать ей объект этого класса. Объекты все создадутся при старте скрипта нормально, но, разумеется, придётся указывать переменную при вызове функций. Пичалька.

' Функции для работы с utf8
' эти функции я стащил с habrahabr.ru/post/138173/
' Преобразует строку в utf8
Function EncodeUTF8(s)
    Dim i, c, utfc, b1, b2, b3
    
    For i=1 to Len(s)
        c = ToLong(AscW(Mid(s,i,1)))
 
        If c < 128 Then
            utfc = chr( c)
        ElseIf c < 2048 Then
            b1 = c Mod &h40
            b2 = (c - b1) / &h40
            utfc = chr(&hC0 + b2) & chr(&h80 + b1)
        ElseIf c < 65536 And (c < 55296 Or c > 57343) Then
            b1 = c Mod &h40
            b2 = ((c - b1) / &h40) Mod &h40
            b3 = (c - b1 - (&h40 * b2)) / &h1000
            utfc = chr(&hE0 + b3) & chr(&h80 + b2) & chr(&h80 + b1)
        Else
            ' Младший или старший суррогат UTF-16
            utfc = Chr(&hEF) & Chr(&hBF) & Chr(&hBD)
        End If
		
        EncodeUTF8 = EncodeUTF8 + utfc
    Next
End Function

Function ToLong(intVal)
    If intVal < 0 Then
        ToLong = CLng(intVal) + &H10000
    Else
        ToLong = CLng(intVal)
    End If
End Function

' преобразуем из utf8 в строку
Function DecodeUTF8(s)
    Dim i, c, n, b1, b2, b3
	
    i = 1
    Do While i <= len(s)
        c = asc(mid(s,i,1))
        If (c and &hC0) = &hC0 Then
            n = 1
            Do While i + n <= len(s)
                If (asc(mid(s,i+n,1)) and &hC0) <> &h80 Then
                    Exit Do
                End If
                n = n + 1
            Loop
            If n = 2 and ((c and &hE0) = &hC0) Then
                b1 = asc(mid(s,i+1,1)) and &h3F
                b2 = c and &h1F
                c = b1 + b2 * &h40
            Elseif n = 3 and ((c and &hF0) = &hE0) Then
                b1 = asc(mid(s,i+2,1)) and &h3F
                b2 = asc(mid(s,i+1,1)) and &h3F
                b3 = c and &h0F
                c = b3 * &H1000 + b2 * &H40 + b1
            Else
                ' Символ больше U+FFFF или неправильная последовательность
                c = &hFFFD
            End if
            s = left(s,i-1) + chrw( c) + mid(s,i+n)
        Elseif (c and &hC0) = &h80 then
            ' Неожидаемый продолжающий байт
            s = left(s,i-1) + chrw(&hFFFD) + mid(s,i+1)
        End If
        i = i + 1
    Loop
    DecodeUTF8 = s 
End Function

' Вызывает метод веб-службы по протоколу SOAP 1.2
' Параметры:
' strURL 				— адрес сайта службы
' strWebServiceName	— имя службы
' strMethod			— имя вызываемой функции
' astrParameters		— массив параметров функции
' astrValues			— массив значений функции
'
' Необходимо также включить заголовки SOAP
' Имя заголовка + пространство имён, параметры заголовка, значения параметров
' strHeaderName		— название заголовка (в коде это имя класса)
' astrHeaderParameters— массив параметров заголовка
' astrHeaderValues	— массив значений заголовка
Function InvokeWebService12(strURL, strWebServiceName, strMethod, astrParameters, astrValues, strHeaderName, astrHeaderParameters, astrHeaderValues)
	' Переменные
	Dim xmlhttp, strRequest, i
	' Создаём объект XMLHttpRequest
    Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
	' Формируем запрос
	' Это SOAP 1.2
	' Заголовок xml
	strRequest = "<?xml version=""1.0"" encoding=""utf-8""?>"
	' Корневой элемент SOAP
    strRequest = strRequest & "<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">"
	' Заголовки SOAP
	strRequest = strRequest & "<soap12:Header>"
    strRequest = strRequest & "<" & strHeaderName & " xmlns=""" & strWebServiceName & """>"
    '<AuthUserName>string</AuthUserName>
    '<AuthPassword>string</AuthPassword>
	For i = 0 To UBound(astrHeaderParameters)
		' Добавляем параметры и значения
		strRequest = strRequest & "<" & astrHeaderParameters(i) & ">" & astrHeaderValues(i) & "</" & astrHeaderParameters(i) & ">"
	Next
    strRequest = strRequest & "</" & strHeaderName & ">"
	strRequest = strRequest & "</soap12:Header>"
	' Тело запроса
	strRequest = strRequest & "<soap12:Body>"
	' Метод и пространство имён
	strRequest = strRequest & "<" & strMethod & " xmlns=""" & strWebServiceName & """>"
	' Параметры должны быть в виде строк
    '  <BoardName>string</BoardName>
	For i = 0 To UBound(astrParameters)
		' Добавляем параметры и значения
		strRequest = strRequest & "<" & astrParameters(i) & ">" & astrValues(i) & "</" & astrParameters(i) & ">"
	Next
	'strRequest = strRequest & astrParameters
	' конец метода и документа
	strRequest = strRequest & "</" & strMethod & ">"
	strRequest = strRequest & "</soap12:Body></soap12:Envelope>"
	
	WScript.Echo "Отправляемый службе запрос"
	WScript.Echo strRequest
	WScript.Echo 
	
    ' Используем метод POST синхронно
	' то есть ожидаем ответа от сервера
	' open(strMethod, URL, async)
    xmlhttp.open "POST", strURL, False
    xmlhttp.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8"
	' Длина содержимого документа
	' Нужно как-то её правильно вычислить,
	' либо это должна делать сама библиотека
    xmlhttp.setRequestHeader "Content-Length", Len(strRequest)
	' Закрываем соединение
    xmlhttp.setRequestHeader "Connection:", "close"
	' Заголовок для SOAP 1.1
    'xmlhttp.setRequestHeader "SOAPAction", strMethod
	
    ' Отправляем запрос
    xmlhttp.send strRequest
	
	' Печатаем все заголовки ответа сервера
	WScript.Echo xmlhttp.getAllResponseHeaders
	' Печатаем код состояния
	WScript.Echo xmlhttp.status
	
    ' 200 == OK
    If xmlhttp.status = 200 Then
		' Всё хорошо, возвращаем ответ от службы
		InvokeWebService12 = xmlhttp.responseText
		REM Dim xmldoc
        REM Set xmldoc = xmlhttp.responseXML
        REM xmldoc.setProperty "SelectionLanguage", "XPath"
        REM xmldoc.setProperty "SelectionNamespaces", "xmlns:tns=""" & strWebServiceNameSpace & """"
        REM Set InvokeNavWS = xmldoc.selectNodes("//tns:"+returnTag)
    Else
		' Нехорошо, возвращаем строку с ошибкой
        InvokeWebService12 = xmlhttp.statusText
    End If
	
End Function

Может кто шарит в ВБСкрипте :) Не бейте я пилю чужой сайт по работе. Так правильно?:
for i = 0 to 9
shevQuery = "SELECT INFO AS I FROM SIGLAS WHERE SHORTNAME=" & Full(i)
dbrs.Open shevQuery, dbconn
if(dbrs("I")) then
Full(i) = dbrs("I")
end if
next