Система программирования Фортран 77 для ЕС ЭВМ и перспективы ее развития
Г. Д. Смирнов, канд. техн. наук (СССР),
В. И. Цагельский, канд. физ.-мат. наук (СССР),
Э. В. Ковалевич, инженер (СССР),
3. С. Брич, инженер (СССР)
Ни один язык программирования не имеет такой долгой жизни, как Фортран. 30 лет назад он появился как инструмент для решения задач инженеров и научных работников, и до сих пор эта категория пользователей ему не изменяет. С годами Фортран проник и в другие области, например в обработку текстов, работу с файлами. Живучесть этого языка объясняется тем, что он полностью удовлетворяет тех пользователей, для которых он предназначен, а также его относительной простотой и высокой эффективностью создаваемых трансляторами программ. За свою длительную историю развития язык Фортран дважды подвергался стандартизации. Первый стандарт имеет обозначение ИСО 1539– 1966, его теперь называют Фортран 66, второй – ИСО 1539–1980, или Фортран 77 [1].
В Фортране 77 по сравнению с Фортраном 66 существенно увеличены возможности структурирования программы, введены средства обработки текста, расширены свойства ряда операторов (в частности, операторов ввода-вывода, оператора цикла), введены другие усовершенствования.
Фортран ЕС ЭВМ. В системе программных средств ЕС ЭВМ имеются трансляторы, базирующиеся как на Фортране 66, так и на Фортране 77.
На основе Фортрана 66 разработаны трансляторы Фортран ST, SE, CC, OP, OE [2]. В этих трансляторах реализована расширенная версия языка Фортран 66. Часть расширений содержит элементы Фортрана 77, часть – учитывает архитектуру ЕС ЭВМ. Наличие такого количества трансляторов с Фортрана 66 объясняется их этапным развитием. Трансляторы Фортран ST и ОР составляли неотъемлемую часть операционной системы ОС 6.1. Трансляторы Фортран CC, SE и ОЕ являются их дальнейшим развитием в части диалоговых и отладочных средств, заменяют их и представляют собой самостоятельный программный продукт по отношению к операционным системам ЕС ЭВМ (ОС 6.1 и ОС 7.1).
Переход от Фортрана 66 к Фортрану 77 в ЕС ЭВМ. На основе языка Фортран 77 создана соответствующая система программирования [3]. В ней стандарт языка Фортран 77 реализован в полном объеме, причем возможности стандарта усилены полезными свойствами, более полно учитывающими особенности предыдущих версий Фортрана в ЕС ЭВМ. К существенным расширениям Фортрана 77 для ЕС ЭВМ относятся:
- операторы и стандартные функции из предыдущих версий фортрана ЕС ЭВМ, отсутствующие в стандарте Фортрана 77. Это упрощает проблему совместимости со всеми трансляторами предыдущих версий с Фортрана ЕС ЭВМ на уровне входного языка;
- оператор, позволяющий во время трансляции подключать ранее разработанные фрагменты исходной программы;
- средства для обработки данных повышенной точности;
- использование выражений с операндами смешанных типов в операторах, не оговоренных стандартом;
- средства для работы с данными в шестнадцатиричной системе счисления;
- сочетание текстовых и арифметических данных в операторах.
Для пользователей ЕС ЭВМ, которые после применения Фортрана 66 переходят к Фортрану 77, новые свойства Фортрана 77 условно можно разделить на две группы.
К первой группе относятся возможности, расширяющие язык:
- наличие данных текстового типа и операций для их обработки;
- новые операторы (блочные операторы IF, ELSE IF, ELSE, END IF, оператор объявления типа CHARACTER, вспомогательные операторы ввода-вывода OPEN, CLOSE, INQUIRE, оператор объявления стандартных функций INTRINSIC, оператор объявления имени константы PARAMETER, оператор объявления имени главной программы PROGRAM, оператор включения фрагмента программы INCLUDE, оператор сохранения значений объектов из подпрограмм SAVE);
- отрицательные и нулевые значения нижней границы измерения массива;
- задание границы измерения массива в виде выражения целого типа в объявлении массива;
- выражение в списке вывода;
- ввод-вывод во внутренние файлы;
- именованный модуль BLOCK DATA;
- введение обобщенных имен для стандартных функций;
- введение логических операций .EQV и .NEQV.;
- применение операций отношения .EQ и .NE. к данным комплексного типа;
- использование элементов массива в определении внутренней функции.
Вторую группу составляют новые свойства, расширяющие возможности имеющихся операторов и обеспечивающие:
- задание параметров цикла DO в виде выражений целого или вещественного типа;
- введение параметров UNIT, FMT, REG, ERR и IOSTAT для операторов ввода-вывода;
- введение новых видов преобразования данных в операторе COMMON;
- использование в операторе COMMON списка с циклом;
- задание идентификатора формата в операторах ввода-вывода в виде текстовой константы;
- упрощение синтаксиса некоторых операторов (например, запятую в операторе COMMON перед именем общего блока можно опускать).
Тем не менее между версиями Фортрана 66 и Фортрана 77, реализованными в ЕС ЭВМ, как и в соответствующих стандартах, имеются противоречия. Некоторые противоречия характерны только для Фортрана ЕС ЭВМ и заключаются в различии формы записи операторов ввода-вывода прямого доступа. Другие несовместимости определены требованиями стандарта Фортрана 77. Например, в Фортране 77 в отличие от Фортрана 66 тело цикла может не выполняться, список вывода не должен заключаться в скобки, цикл не должен иметь расширенную область.
Несмотря на указанные противоречия, система программирования Фортран 77 поддерживает совместимость с предыдущими версиями Фортрана ЕС ЭВМ. Концепция совместимости обеспечивается по двум направлениям. Во-первых, введен специальный режим трансляции, по которому выполняется обработка программ на Фортране 66. Во-вторых, объектные модули, полученные трансляторами предыдущих версий Фортрана, допускается объединить при редактировании с объектными модулями, полученными транслятором системы программирования Фортран 77, в один загрузочный модуль. Такой подход дает возможность пользователям принять без переделок исходные и объектные модули, созданные на Фортране 66, в системе программирования Фортран 77.
Кроме того, система программирования (СП) Фортран 77 обеспечивает совместимость с транслятором FORTRAN VS снизу вверх на уровне исходных и объектных модулей. Это означает, что модули, подготовленные для обработки СП Фортран 77, могут без изменений быть обработаны транслятором FORTRAN VS, а объектные модули, полученные транслятором Фортран 77, можно соединять при редактировании с объектными модулями, полученными транслятором FORTRAN VS, в один объектный модуль.
Характеристика системы программирования Фортран 77. Эта система выдержала два издания: первое содержало транслятор и библиотеки для работы в пакетном режиме, второе представляет собой совокупность программных компонентов. Они обеспечивают трансляцию и отладку исходных программ на Фортране 77 как в пакетном, так и диалоговом режиме (ПДО СВМ и СРВ ОС 6 и ОС 7). Особенно развитыми являются средства отладки в диалоговом режиме, которые обеспечиваются диалоговым отладчиком.
Транслятор функционирует в пакетном и диалоговом режимах, вызов транслятора в диалоговом режиме производится с помощью команд, которые являются посредниками ПДО и СРВ. Транслятор осуществляет ввод исходной программы и ее преобразование в объектную программу. Транслятор написан на языке системного программирования и состоит из 4 фаз: анализа, распределения памяти, генерации объектного кода и вывода. Анализ базируется на методе рекурсивного спуска и объединяет в себе лексический и синтаксический контроль исходной программы. Анализ программы сопровождается построением промежуточного текста в форме обратной польской записи. Проверка контекстных условий выполняется на фазах анализа и распределения памяти. При генерации объектного кода учитываются условия, допускающие локальную оптимизацию объектного кода. Режимы трансляции позволяют управлять выводом результатов трансляции. Результатами вывода могут быть объектная программа, распечатки исходной и объектной программы, таблица распределения памяти элементов исходной программы, таблица перекрестных ссылок, сообщения об ошибках в программе. Информация об ошибке достаточно полно характеризует суть нарушений правил языка, допущенных пользователем.
Библиотека программ обеспечивает реализацию элементов входного языка, относящихся к операциям ввода-вывода, стандартных функций языка, а также диагностику и обработку ошибочных ситуаций, возникающих во время выполнения рабочей программы. Каждое сообщение об ошибке содержит информацию, достаточную для определения местоположения ошибки в исходной программе. Библиотека включает развитые средства обработки ошибок, которые позволяют:
- вводить в программах пользователя обработку новых ошибочных ситуаций, не обнаруживаемых программами библиотеки;
- управлять выводом сообщений об ошибках и выводом списка вызываемых подпрограмм, получивших управление к моменту возникновения ошибки, а также выполнением рабочей программы после обнаружения ошибки;
- управлять корректирующими действиями после возникновения ошибки. Различаются два типа корректирующих действий: стандартное, автоматически обеспечиваемое библиотекой Фортрана, и нестандартное, которое пользователь планирует при кодировании исходной программы.
Подключение программ библиотеки к объектным программам производится на этапе редактирования средствами операционной системы.
Диалоговый отладчик позволяет выполнять отладку программ на уровне и в терминах входного языка. Для задания отладочных действий используется язык отладки в виде подкоманд специальной команды ПДО или СРВ. Широкий набор подкоманд дает возможность задавать разнообразные действия, позволяющие осуществлять динамический контроль за выполнением рабочей программы на уровне объектов исходной программы. В зависимости от получаемых результатов пользователь может изменять последовательность выполнения операторов исходной программы, распечатывать и модифицировать данные, а также запрашивать выполнение различных сервисных функций, упрощающих проведение отладки. Отладочные действия задаются в определенных абонентом точках прерывания и распространяются на такие объекты исходной программы, как переменные, массивы и операторы. Для указания некоторых отладочных действий могут использоваться арифметические, логические и текстовые выражения. Программы, предназначенные для диалоговой отладки, должны быть протранслированы с указанием специального режима, при котором в объектном модуле для каждого оператора устанавливается связь с диалоговым отладчиком, а также строятся дополнительные таблицы (таблица символических имен и таблица операторов), позволяющие в процессе отладки программы обращаться к переменным и массивам по их именам, а к операторам – по их меткам или номерам строк.
Развитие системы программирования Фортран 77 продолжается. Система будет наращиваться компонентами, которые предоставят пользователям возможность получать высокоэффективные оптимизированные программы, а также реентерабельные программы для экономии памяти. Для этой цели в трансляторе предусматриваются 3 уровня оптимизации. Первый уровень обеспечивает наилучшее использование ограниченного количества регистров и более быстрых команд перехода. Второй и третий уровни оптимизации, кроме возможностей первого уровня, включают оптимизацию текста программы. Причем в отличие от третьего уровня на втором уровне оптимизации исключаются те перемещения текста программы, которые могут привести к сбойным ситуациям. Для получения рабочих реентерабельных программ обеспечивается соответствующая поддержка в трансляторе, библиотеке и включается в систему дополнительный компонент – программа разделения. Расширяются возможности ввода-вывода на уровне языка для использования средств виртуального метода доступа, который обеспечивает высокую эффективность обработки данных. Все последующие издания СП Фортран 77 будут также обеспечивать полную совместимость с транслятором FORTRAN VS на уровне исходных и объектных модулей.
Планируется, чтобы система Фортран 77 стала единственной и универсальной системой для пользователей Фортрана в базовых, программных средствах ЕС ЭВМ.
Литература
- Колдербэнк В. Дж. Программирование на Фортране. Фортран 66 и Фортран 77 : Пер. с англ. – М.: Радио и связь, 1986. – 176 с.
- Брич 3. С. и др. Фортран ЕС ЭВМ // 3. С. Брич, Д. В. Капилевич, С. Ю. Котик, В. И. Цагельский. – 2-е изд. – М.: Финансы и статистика, 1985. – 264 с.
- Брич 3. С. и др. Основные принципы системы программирования Фортран 77 ЕС ЭВМ // Вопросы радиоэлектроники. – Сер. ЭВТ. – Вып. 15. – 1984. – с. 12–14.
Статья опубликована в сборнике "Вычислительная техника социалистических стран", вып. 24, Москва, "Финансы и статистика", 1988 г., стр. 134.