Операторы вызова процедур и процедур-функций
Группа операторов вызова процедур и процедур-функций объединяет операторы следующего назначения:
• объявления BASIC-процедур;
_™0• объявления процедур на языках С, Pascal, FORTRAN, Assembler;
• задания процедур и процедур-функций;
• вызова BASIC-процедур;
• вызова разноязыковых модулей на языках семейства Microsoft (С, PaScai, FORTRAN, Assembler);
• вызова программ на машинном языке;
• выполнения команд MS DOS.
Оператор объявления BASIC-процедур - DECLARE (BASIC)
Назначение: Объявляет ссылки к BASIC-процедурам и вызывает проверку типов аргументов.
Синтаксис:
DECLARE (FUNCTION | SUB]<имя> [([ <список параметров> ])]
Аргумент Описание
<имя> Имя процедуры; оно ограничено 40 символами. Имя процедуры-функции FUNCTION может сопровождаться маркером типа (%, &, !, #, $) для возвращаемой величины
<список параметров> Список параметров используется при вызове процедуры, определяет только количество и тип аргументов
Оператор объявления процедур на языках семейства
Microsoft - DECLARE
Назначение: Объявляет вызываемые последовательности внешних процедур, написанных на других языках программирования семейства Microsoft.
Синтаксис 1:
DECLARE FUNCTION<имя> [CDECL] [ALIAS < альтернативное имя>"]
[([ <список параметров> ])]
Синтаксис 2
DECLARE SUB<имя> [CDECL] [ALIAS "<альтернативное имя>"]
[([ <список параметров> ])]
Элемент Описание
FUNCTION Указывает, что внешняя процедура возвращает значение; может использоваться в составе арифметических выражений
SUB Указывает, что внешняя процедура вызывается аналогично BASIC-процедуре
<имя> Имя, используемое в BASIC-программе для вызова процедуры; длина до 40 символов; имя процедуры-функции может включать маркер типа (%, &, !, #, $) для .возвращаемой величины.
CDECL Указывает, что процедура использует порядок размещения аргументов, свойственный языку С; ключевое слово CDECL указывает на передачу аргументов справа налево, а не слева направо, как принято в среде языка BASIC
ALIAS Указывает, что процедура имеет другое имя в .OBJ-файле или библиотеке; если отсутствует ключ ALIAS, то имя процедуры отображается строчными буквами, маркер типа удаляется, а в начале имени добавляется символ подчеркивания, и именно это имя используется при поиске библиотек и внешних файлов; если за ключомCDECL следует ключ ALIAS, то используется указанное альтернативное имя.
Синтаксис аргумента <список параметров>
[[BYVAL SEG]] <переменная> [AS <тип>] (, [[BYVAL SEGl] <переменная> [AS <тип>] ] ...
Элемент Описание
BYVAL Указывает, что параметр передается значением, а не ссылкой; передача ссылкой принята по умолчанию; ключ можно применять только для числовых параметров типа INTEGER, LONG, SINGLE, DOUBLE; при использовании BYVAL текущий аргумент преобразуется к типу, указанному в операторе DECLARE, непосредственно перед передачей параметра
SEG Указывает, что параметр передается адресом сегмента
<переменная> Имя, допустимое для переменных языка BASIC;
существенным является тип переменной; если переменная - массив, то в скобках можно указать его размерность (в частности, чтобы обеспечить совместимость с прежними версиями языка)
AS <тип> Указывает тип переменной: INTEGER, LONG, SINGLE, DOUBLE, STRING, ANY - или имя структуры; можно указывать также и маркер типа (%, &, !, #, $) или принимать его по умолчанию;
при объявлении внешних процедур, написанных на других языках, можно указать тип ANY, и это приведет к тому, что проверка типа не выполняется; нельзя использовать тип ANY для аргумента, передаваемого значением
Если не используются ключи BYVAL и SEG, то аргументы передаются смещением.