Класс используется как базовый класс для реализации методов. При его использовании можно не реализовывать часть методов интерфейса ImaMethodDef: Init и те из методов CalcDef и CalcCellDef, которые не используются и должны возвращать MA_ERR_NOTIMPLEMENTED. Он также содержит ряд функций и переменных, которые класс-потомок может использовать.
Переменные

    Param: TmaList;
    Input: TmaReadList;
    Output: TmaReadList;
Функции интерфейса ImaMethodDef

function Init(const aparam: ImaList; const ainput: ImaReadList; const
             aoutput: ImaReadList): HResult;virtual; 
Функция создает классы-оболочки Param,Input и Output для входных параметров. При необходимости ее можно переопределить.

function CalcDef: HResult; virtual; 
function CalcCellDef(argno: integer; index: maIndex; out Cell: ImaCell):
      HResult; virtual; 

Функции возвращают MA_ERR_NOTIMPLEMENTED.


procedure LogError(ecode: HResult; message: WideString);
procedure LogMessage(message: WideString);
procedure Log(const message: WideString);
Функции вызывают соответствующие методы ядра с параметром Sender, равным nil.

function Progress(percent: Double; message: WideString): boolean;
Функция вызывает обработчик сообщений ядра, установленный функцией TmaKernel.SetProgressHandler и возвращает false, если вызыавющий может продолжать работу и true, если пользователь просит отменить операцию.

procedure ProgressExc(percent: Double; message: WideString);
Функция вызывает обработчик сообщений ядра, установленный функцией TmaKernel.SetProgressHandler и возбуждает исключение EUserInterrupt, если пользователь просит отменить операцию.

EUserInterrupt = class(EAbort)
end;
Это исключение вызывается предыдущей функцией. Оно является потомком EAbort, и не порождает сообщения об ощибке приложения.