B.2 Управление файлами— io.awk

Предыдущая  Содержание  Следующая V*D*V

Этот модуль ответственен за доступ ко всем файлам. Он хранит FileStack[] с именами и номерами строк всех открытых файлов. openFile(fnm) вталкивает FILENAME и FNR в этот стек и использует system(), чтобы узнать, может ли файл fnm быть считан. Затем полное имя присваивается FILENAME, а FNR сбрасывается. Функция get() читает из FILENAME и возвращает входную строку целиком без комментариев и продолжений или специального значения EOF в конце файла. Это значение начинает с %, чтобы упростить некоторые циклы. closeFile() закрывает FILENAME и выталкивает стек.

openFile() использует для всех файлов путь поиска OOCPATH. Таким образом, отчёты, описания классов и реализаций могут быть сохранены для установки или проекта централизованно.

io.awk содержит ещё две функции: error() для вывода сообщения об ошибке и fatal() для вывода сообщения и завершения выполнения с кодом 1. error() также устанавливает код выхода 1 в виде значения глобальной переменной статуса. Отладка модулей в конечном счёте вернёт статус с помощью блока END.

Если бы main.awk содержала блок END, то awk ожидал бы ввода после обработки всех блоков BEGIN. Поэтому мы устанавливаем из командного скрипта ooc переменную awk debug, чтобы указывать, загрузили ли мы модули отладки блоками шаблонов. Если debug не установлена, блок BEGIN в main.awk завершается выполнением exit и передачей status.

 

Предыдущая  Содержание  Следующая