Для корректировки форм печати самим пользователем в системе «АМБа» используется описанный далее макроязык. В языке поддерживается абстракция переменной. Смысл ее в том, что некоторое ЗНАЧЕНИЕ (например, фамилия Петров) получило конкретное ИМЯ (например, FAMIL). При создании формы печати в программе на макроязыке указываетсся имя переменной, а на печать выводится ее значение. Пример:
#FAMIL(C,25,0)=R_Face(f); // вычисление фамилии сотрудника @FAMIL
Эта программа вычисляет фамилию лица, для которого передается выходная форма, и печатает ее. Символ решетки # (диез) в первой строке означает, что эту строку не нужно выводить на печать, а она служит для задания имен переменных. Создается переменная с именем FAMIL. В круглых скобках указываются параметры переменной: тип («С» – символьный, «N» – числовой), длина и число разрядов после запятой (для числовых типов). Далее ставится знак равенства и указывается способ вычисления переменной (в данном случае – функция R_face, возвращающая значение заданного далее в скобках поля кадровой части.
Символ «@» означает, что далее идет имя переменной, и следует заменить этот символ и следующее за ним имя значением переменной (в данном случае – фамилией). Будет заменено столько символов, какова указанная выше длина переменной. То есть, если указать длину переменной 3 и выполнить приведенную программу печати для Астрова, то будет напечатана строка:
АстMIL
Здесь Аст – это кусок фамилии, для которого хватало места в значении переменной (ведь ее длина равна трем), MIL –кусок имени, который остался после замены имени переменной ее значением. Практично создавать переменные, у которых значение имеет большую или равную длину, чем имя.
Имя переменной должно состоять только из букв и цифр и начинаться с буквы. В то же время приведенный пример с короткой (размером 3 символа) переменной показывает, что длинное имя может затруднить печать значения в выходной форме.
Оператор комментария (две наклонные черты вправо //) позволяет вписать некоторый текст, который не будет влиять на выполнение программы. Интерпретатор печати пропустит весь текст от оператора комментария до конца строки.
В системе поддерживается обширный набор функций для задания значений переменным. Библиотека функций языка выходных форм позволяет извлекать данные из кадровой части, табеля, справочников, производить выборки выданных сумм за различные месяцы и вычислять суммы, необходимые для проверки правильности удержания налогов.