Класс используется как базовый класс для реализации методов. При его использовании можно не реализовывать часть методов интерфейса 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, и не порождает сообщения об ощибке приложения.