Операторы вызова процедур и процедур-функций

Группа операторов вызова процедур и процедур-функций объединяет операторы следующего назначения:

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