UFF2UFF Библиотека "JINRLIB" Автор: А.П.Сапожников Вы Язык: Паскаль/Delphi посетитель. ПРОГРАММА ПРЕОБРАЗОВАНИЯ ФАЙЛОВ БЕСФОРМАТНЫХ ДАННЫХ ДЛЯ РАЗНЫХ ФОРТРАННЫХ КОМПИЛЯТОРОВ Каждый пользователь Фортрана может столкнуться с проблемой несовместимости файлов бесформатных данных. Вот типичная жалоба: У меня есть 2 программы. Программа А записывает данные в файл бесформатными операторами WRITE(1)... Программа Б читает этот файл такими же операторами READ(1)... Вчера все работало, а сегодня я пересобрал программу Б, использовав другой компилятор, и все сломалось! Дело тут в том, что файл данных, открытый с параметром FORM=UNFORMATTED, на самом деле не такой уж бесформатный: логические записи снабжаются служебной информацией, и эта служебная информация различна у разных компиляторов, даже если они живут в одной и той же машине! Проблема может стать весьма серьезной, если текст программы А недоступен или утерян, а перейти на новый компилятор надо позарез. Вот для таких случаев Вам и может пригодиться преобразователь файлов бесформатных данных. Управление достаточно простое: Вы указываете имена исходного и целевого файлов, их типы, после чего жмете кнопку "Start". Немного о типах файлов. MicroSoft Fortran 5.xx квантует каждую логическую запись на куски длиной не более 128 байтов, предваряя каждый такой кусок одним служебным байтом. WatCom Fortran квантует каждую логическую запись на куски длиной не более 1024 байтов, обрамляя каждый такой кусок четырьмя служебными байтами. MicroSoft PowerStation Fortran, он же впоследствии Visual DEC Fortran, он же впоследствии Compaq Fortran, по-простому добавляет перед и после логической записи по 4 байта, содержащих ее длину. Lahey Fortran пытается здесь сэкономить служебные байты, если длина записи мала, используя довольно хитрый алгоритм. Автоматически распознать тип исходного файла удается не всегда, поэтому желательно все-таки знать, каким фортраном была компилирована программа, его записавшая. Что касается целевого файла, то здесь мы добавили возможность писать его как Binary, т.е. вообще безо всякой служебной информации. Архив программы с исходными текстами и .exe-файлом. |