Инициализация: открытие исходного файла, создание пустых таблиц, признак "обработка макроопределения" устанавливается в FALSE.
Чтение следующей строки исходного файла с проверкой конца файла.
Если при чтении строки найден конец файла, выводится сообщение об ошибке, закрываются файлы, освобождается память...
... и Макропроцессор завершается с признаком ошибки.
Если конец файла не достигнут, выполняется лексический разбор прочитанной строки с выделением имени и мнемоники операции.
Алгоритм Макропроцессора разветвляется в зависимости от мнемоники операции
Если мнемоника операции MACRO - заголовок макроопределения, то в таблицу имен макроопределений заносится имя, находящееся в этом операторе и начальный адрес свободной области в таблице макроопределений. (При занесении имени в таблицу имен макроопределений проверяется, нет ли уже в таблице такого имени, если есть - ошибка)
Оператор MACRO записывается в таблицу макроопределений.
Признак "обработка макроопределения" устанавливается в TRUE.
Если мнемоника операции MEND - конец макроопределения, то оператор записывается в таблицу макроопределений...
... и признак "обработка макроопределения" устанавливается в FALSE.
Если мнемоника операции END - конец программы, то проверяется установка признака "обработка макроопределения".
Если этот признак установлен в TRUE, т.е., конец программы встретился до окончания макроопределения, то выводится сообщение об ошибке, закрываются файлы, освобождается память...
... и Макропроцессор завершается с признаком ошибки.
Если этот признак установлен в FALSE, то выполняются завершающие операции ...
... и заканчивается 1-й проход Макропроцессора.
При любой другой мнемонике оператора проверяется установка признака "обработка макроопределения".
Если этот признак установлен в TRUE, то оператор записывается в таблицу макроопределений, если признак установлен в FALSE, то оператор игнорируется Макропроцессором.