Группа операторов вызова процедур и процедур-функций объединяет операторы следующего назначения:
• объявления 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, то аргументы передаются смещением.