Fortran-файли типу Unformatted frundWiki

Файли типу Unformatted створюються програмами та програмними модулями, написаними мовою Fortran. Ці файли є бінарними (двійковими) і при цьому мають особливу внутрішню структуру, яка не дозволяє зчитувати та записувати файли такого типу безпосередньо (без урахування цієї структури) із програм, написаних іншими мовами (наприклад, C++).

У розрахунковому ядрі та бібліотеках пре- та постпроцессингу системи ФРУНД, написаних мовою Fortran, використовується ряд файлів типу Unformatted:

Структура файлів типу Unformatted

Файли типу Unformatted відрізняються від звичайних бінарних файлів наявністю певної внутрішньої структури. Вміст таких файлів поділено на низку послідовних блоків. Один блок - це набір даних, що утворюється в Unformatted-файлі при виклик чергової функції запису. При читанні вміст Unformatted-файла також зчитується цілими блоками (навіть якщо функція читання намагається вважати менший обсяг даних, ніж той, що міститься в блоці, що зчитується).

Структура Unformatted файлів GNU Fortran (GFortran)

У таблиці наведено структуру Unformatted-файлу формату GFortran.

Розділ Опис Тип Довжина, байт Значення
Список блоківБлок 1Початковий символ блокуВідкриваючий символ блокуЧисло4
блоку
unformatted
1)
Вміст блокуДані, що зберігаються в блоціМасив байт
блоку
-
Кінцевий символ блокуЗавершальний символ блокуЧисло4
unformatted
Блок 2Початковий символ блоку4
типу
frundwiki
Вміст блоку
fortran-файли
-
Кінцевий символ блоку4
типу
Блок
frundwiki
Початковий символ блоку4
fortran-файли
frundwiki
Вміст блоку
типу
-
Кінцевий символ блоку4
типу

Таким чином, довжина Unformatted-файлу формату GFortran дорівнює:

типу
, де

Структура Unformatted файлів Intel Fortran / Fortran PowerStation

Unformatted-файли, створювані програмами або програмними модулями, скомпільованими за допомогою компіляторів Microsoft Fortran PowerStation або Intel Fortran (з опцією Use PowerStation I/O Format, виставленої в Yes; відповідний ключ компілятора - /fpscomp:ioformat), відрізняються трохи складнішою структурою. У таких файлах вміст кожного блоку розбивається ряд елементів. Кожна частина містить трохи більше 128 байт даних.

У таблиці наведено структуру Unformatted-файлу формату PowerStation.

Розділ Опис Тип Довжина, байт Значення
Початковий символВідкриваючий символ файлуСимвол1K (код 2) 4B )
Список блоківБлок 1Повна частина 1Початковий символ повної частиниВідкриваючий символ повної частиниСимвол1
frundwiki
unformatted
код 81
Вміст повної частиниДані, що зберігаються у повній частиніМасив байт128-
Кінцевий символ повної частиниЗавершальний символ повної частиниСимвол1код 81
Повна частина 2130
Повна частина
типу
130
Неповна частина (заключна)Початковий символ неповної частиниВідкриваючий символ неповної частиниЧисло1
блоку
unformatted
Вміст неповної частиниДані, що зберігаються в неповній частиніМасив байт
unformatted
-
Кінцевий символ неповної частиниЗавершальний символ неповної частиниЧисло1
типу
Блок 2Повна частина 1130
frundwiki
Повна частина 2130
Повна частина
fortran-файли
130
Неповна частина (заключна)
типу
Блок
unformatted
Повна частина 1130
типу
Повна частина 2130
Повна частина
блоку
130
Неповна частина (заключна)
frundwiki
Кінцевий символСимвол файлу, що закриваєСимвол1, (код 82 )

Таким чином, довжина Unformatted-файлу формату PowerStation дорівнює:

fortran-файли
, де

Робота з файлами типу Unformatted у мові Fortran

З погляду програміста, що пише програмний код мовою Fortran, робота з файлами типу Unformatted практично нічим не відрізняється від роботи з іншими типами файлів (наприклад, текстовими).

Функції роботи з файлами мови Fortran забезпечують підтримку блокової структури Unformatted-файлів. Коректна обробка особливостей, пов'язаних з блоками, у програмах, написаних мовами, відмінними від мови Fortran (наприклад, мовою C++), лягає на плечі програміста.

Відкриття та закриття

Відкриття Unformatted-файлу здійснюється за допомогою функції OPEN :

Примітка.

При відкритті для запису в Unformatted файл формату PowerStation записується відкриваючий символ.

Закриття Unformatted-файлу здійснюється за допомогою функції CLOSE:

Примітка.

При закритті формату PowerStation, що записується Unformatted-файлу, в нього записується закриває символ.

Запис та читання

Запис чергової порції даних файл типу Unformatted проводиться за допомогою функції WRITE :

Примітки.

Читання даних зUnformatted-файла виконується за допомогою функції READ :

Примітки.

Допоміжні процедури навігації

При читанні файлу типу Unformatted можна використовувати низку функцій, що полегшують навігацію такого файлу. Вони забезпечують рух позиції курсора читання з урахуванням блокової структури файлу типу Unformatted.

Повернутися до початку файлу

Повернення до початку файлу здійснюється за допомогою функції REWIND :

Примітка.

При поверненні на початок файла курсор читання встановлюється початку першого блока.

Повернення до початку попереднього блоку

Повернення до початку попереднього блоку (тобто переміщення курсору читання до початку попереднього блоку) здійснюється за допомогою функції BACKSPACE :