Конвертер с языка Фортран на язык Паскаль был задуман в рамках проекта по реализации и развитию Библиотеки программ по численному анализу НИВЦ МГУ [ ], для которой потребовалось создание версии на языке Паскаль (в добавление к версиям на Фортране и Си). Его реализация была осуществлена с помощью и на базе ранее созданного в НИВЦ МГУ многопрофильного контекстно-управляемого редактора TeConv[ ].
TeConv, реализованный с помощью системы Delphi [ ], может выполнять преобразования текстов в соответствии с заданными на специальном языке сценариями. Для Конвертера FORPAS был разработан специальный сценарий, позволяющий преобразовывать программы на Фортране в программы на языке Паскаль (подмножестве Object Pascal - в версиях Delphi-4 и выше).
Описание подмножества языка Фортран-77, программы на котором являются исходным текстом для Конвертера, можно посмотреть здесь.
Подробное описание правил преобразования Конвертером конструкций Фортрана-77 в аналогичные конструкции языка Паскаль приводится в готовящейся к печате статье. Здесь мы перечислим лишь некоторые из наиболее важных правил преобразования.
Так, многомерные фортранные массивы любой размерности отображаются в одномерные массивы Паскаля с начальным индексом, равным 0. При этом для указания элементов массивов используются индексные выражения с "пересчетом" индексов.
Операторы вывода и FORMAT Фортрана-77 отображаются на Паскаль с помощью использования специальной функции Паскаля Format() и предопределенной переменной Result.
Для стандартных функций Фортрана-77, не имеющих аналогов среди функций Паскаля, реализованы, аналогичные фортранным, новые функции, обращение к которым вставляется в преобразованный текст.
Действия с комплексными типами данных реализуются с помощью обьявления на Паскале нового типа данных Complex, который представляет собой запись из двух вещественных элементов, задающих значения вещественной и мнимой части комплексной переменной, соответственно.
Стандартные функции и операции Фортрана, работающие с комплексными данными, преобразуются в аналогичные новые стандартные функции Паскаля.
Для отображения оператора COMMON в программе на Паскале создается новый тип, который является записью, элементами которой объявляются объекты, входящие в общий блок и имеющие соответствующие типы. При этом на Паскале им присваиваются новые ("стандартные") имена вида elm1, elm2, ..., elmi.
Метки, представленные на Фортране целыми числами, преобразуются в метки на Паскале, изображаемые теми же числами с добавлением впереди символа "_" (подчерк). После такой метки ставится символ ":" (по правилам Паскаля).
Завершим на этом очень краткий обзор принятых правил преобразования конструкций языка Фортран.
В результате конвертирования фортранной подпрограммы (или функции) будут построены две программных единицы: просто процедура (или функция) на Паскале, а также так называемый модуль Unit на Паскале, содержащий раздел uses объявления вызываемых данным модулем других модулей, входящих в общую программу.
© Научно - исследовательский
Вычислительный Центр
Московский Государственный Университет им. М.В.Ломоносова