D3 Reference Manual

Index | Help

Поиск по страницам

Разделы / Коды обработки / call

call

Вызывает подпрограмму FlashBASIC

call {cataloged.subroutine}

Вызывает подпрограмму FlashBASIC из записи описания файла (FDI) или записи описания атрибута (ADI).

При вызове подпрограммы никакие параметры не указываются, но в любом случае параметр подпрограмме передается, поэтому один параметр должен быть задан в операторе "subroutine". При вызове подпрограммы из записи описания файла в подпрограмму передается вся запись. Если подпрограмма вызывается из записи описания атрибута, в качестве параметра ей передается значение вызывающего атрибута.

Подпрограммы могут быть вызваны из атрибутов корреляций (Correlatives), входных преобразований (Input Conversion) или выходных преобразований (Output Conversion) записей описания файла или записей описания атрибута.

При вызове подпрограммы из атрибута входных преобразований записи описания файла управление передается подпрограмме до того, как пользователь увидит запись на экране через процессор обновления (UP), т.е. после исполнения команды процессора обновления (:u filename), но до того, как пользователь получит доступ к записи.

При вызове подпрограммы из атрибута корреляций FDI управление передается подпрограмме непосредственно перед записью в файл.

Подпрограммы, вызванные атрибутом выходного преобразования ADI, исполняются при выводе после ввода значения для его перерисовки. Подпрограммы, вызванные из атрибута корреляций, выполняются до обработки. Подпрограммы, вызванные из атрибута входных преобразований, исполняются после ввода.

Данные могут запрашиваться и модифицироваться подпрограммой при помощи оператора "access".

Условия обработки ошибок могут быть заданы с помощью оператора "inputerr" в подпрограмме на FlashBASIC.

Примеры:

Запись описания атрибута содержит вызов подпрограммы "st.name":

subroutine st.name(st)
 states = "alaska,washington,oregon,california,idaho"
 codes = "al,wa,or,ca,id"
 convert "," to char(254) in codes
 locate(st,codes;x) then
  st = field(states,",",x)
 end else st = "unknown"
return

В этом примере значение передается из "Access" в переменную "st". Если соответствующая строка найдена, то в "st" загружается соответствующий "code", и управление возвращается в "Access".