CALL(ProgramName: IDENT; ProgramMODE: SCAL[1000]); CALL(ProgramName.ProcedureName( { Param: ANYTYPE } )) [ : ANYTYPE ]; |
Оператор выполняет программу ProgramName. Существует в двух вариантах: модульном (первый) и процедурном (второй). Текст программы берется из файла с именем ProgramName и расширением DBS, если оператор вызван из DBS-программы, либо с расширением ASL в прочих случаях. В модульном варианте параметр ProgramMODE задает начальное значение переменной MODE для выполнения тела модуля. В процедурном варианте тело модуля ProgramName выполняется с MODE, равной 999, после чего вызывается процедура или функция ProgramName.ProcedureName с заданными параметрами. Если ProgramName.ProcedureName является функцией, оператор CALL возвращает результат функции.
До версии 14.170.090 все процедуры модуля были доступны для процедурного варианта оператора CALL, вне зависимости от модификаторов доступа PUBLIC и PRIVATE. Начиная с версии 14.170.110 модификаторы доступа учитываются при наличии в модуле атрибута DEFAULTACCESSFORPROCEDURE, для приватной процедуры будет предупреждение CallPrivateProc.