Описание макроязыка печатных форм системы

Оператор ЕСЛИ – ИНАЧЕ
Возможность печати списков
Регулярные структуры (списки констант)
Метаязыковые конструкции

Для корректировки форм печати самим пользователем в системе «АМБа» используется описанный далее макроязык. В языке поддерживается аб­страк­ция переменной. Смысл ее в том, что некоторое ЗНАЧЕНИЕ (например, фа­ми­лия Петров) получило конкретное ИМЯ (например, FAMIL). При создании фор­мы печати в программе на макроязыке указываетсся имя переменной, а на пе­чать выводится ее значение. Пример:

#FAMIL(C,25,0)=R­_Face(f); // вычисление фамилии сотрудника @FAMIL

Эта программа вычисляет фамилию лица, для которого передается вы­ход­ная форма, и печатает ее. Символ решетки # (диез) в первой строке оз­на­ча­ет, что эту строку не нужно выводить на печать, а она служит для задания имен пе­ременных. Создается переменная с именем FAMIL. В круглых скобках ука­зы­ва­ются параметры переменной: тип («С» – символьный, «N» – числовой), длина и чис­­ло разрядов после запятой (для числовых типов). Далее ставится знак ра­вен­ства и указывается способ вычисления переменной (в данном случае – функция R_face, возвращающая значение заданного далее в скобках поля кадровой час­ти.

Символ «@» означает, что далее идет имя переменной, и следует заменить этот символ и следующее за ним имя значением переменной (в данном случае – фа­милией). Будет заменено столько символов, какова указанная выше длина пе­ременной. То есть, если указать длину переменной 3 и выполнить при­ве­ден­ную программу печати для Астрова, то будет напечатана строка:

АстMIL

Здесь Аст – это кусок фамилии, для которого хватало места в значении пе­ременной (ведь ее длина равна трем), MIL –кусок имени, который остался пос­ле замены имени переменной ее значением. Практично создавать пе­ре­мен­ные, у которых значение имеет большую или равную длину, чем имя.

Имя переменной должно состоять только из букв и цифр и начинаться с бук­вы. В то же время приведенный пример с короткой (размером 3 символа) пе­ременной показывает, что длинное имя может затруднить печать значения в вы­ходной форме.

Оператор комментария (две наклонные черты вправо //) позволяет впи­сать некоторый текст, который не будет влиять на выполнение программы. Ин­тер­претатор печати пропустит весь текст от оператора комментария до конца стро­ки.

В системе поддерживается обширный набор функций для задания зна­че­ний переменным. Библиотека функций языка выходных форм позволяет из­вле­кать данные из кадровой части, табеля, справочников, производить выборки вы­данных сумм за различные месяцы и вычислять суммы, необходимые для про­верки правильности удержания налогов.