Fortran-файли типу Unformatted frundWiki
Файли типу Unformatted створюються програмами та програмними модулями, написаними мовою Fortran. Ці файли є бінарними (двійковими) і при цьому мають особливу внутрішню структуру, яка не дозволяє зчитувати та записувати файли такого типу безпосередньо (без урахування цієї структури) із програм, написаних іншими мовами (наприклад, C++).
У розрахунковому ядрі та бібліотеках пре- та постпроцессингу системи ФРУНД, написаних мовою Fortran, використовується ряд файлів типу Unformatted:
Структура файлів типу Unformatted
Файли типу Unformatted відрізняються від звичайних бінарних файлів наявністю певної внутрішньої структури. Вміст таких файлів поділено на низку послідовних блоків. Один блок - це набір даних, що утворюється в Unformatted-файлі при виклик чергової функції запису. При читанні вміст Unformatted-файла також зчитується цілими блоками (навіть якщо функція читання намагається вважати менший обсяг даних, ніж той, що міститься в блоці, що зчитується).
Структура Unformatted файлів GNU Fortran (GFortran)
У таблиці наведено структуру Unformatted-файлу формату GFortran.
| Список блоків | Блок 1 | Початковий символ блоку | Відкриваючий символ блоку | Число | 4 | ![]() | ![]() |
| Вміст блоку | Дані, що зберігаються в блоці | Масив байт | ![]() | - | |||
| Кінцевий символ блоку | Завершальний символ блоку | Число | 4 | ![]() | |||
| Блок 2 | Початковий символ блоку | … | … | 4 | ![]() | ![]() | |
| Вміст блоку | … | … | ![]() | - | |||
| Кінцевий символ блоку | … | … | 4 | ![]() | |||
| … | … | … | … | … | |||
Блок![]() | Початковий символ блоку | … | … | 4 | ![]() | ![]() | |
| Вміст блоку | … | … | ![]() | - | |||
| Кінцевий символ блоку | … | … | 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.
| Початковий символ | Відкриваючий символ файлу | Символ | 1 | K (код 2) 4B ) | |||||
| Список блоків | Блок 1 | Повна частина 1 | Початковий символ повної частини | Відкриваючий символ повної частини | Символ | 1 | ![]() | ![]() | код 81 |
| Вміст повної частини | Дані, що зберігаються у повній частині | Масив байт | 128 | - | |||||
| Кінцевий символ повної частини | Завершальний символ повної частини | Символ | 1 | код 81 | |||||
| Повна частина 2 | … | … | … | … | 130 | … | |||
| … | … | … | … | … | … | ||||
Повна частина![]() | … | … | … | … | 130 | … | |||
| Неповна частина (заключна) | Початковий символ неповної частини | Відкриваючий символ неповної частини | Число | 1 | ![]() | ![]() | |||
| Вміст неповної частини | Дані, що зберігаються в неповній частині | Масив байт | ![]() | - | |||||
| Кінцевий символ неповної частини | Завершальний символ неповної частини | Число | 1 | ![]() | |||||
| Блок 2 | Повна частина 1 | … | … | … | … | 130 | ![]() | … | |
| Повна частина 2 | … | … | … | … | 130 | … | |||
| … | … | … | … | … | … | ||||
Повна частина![]() | … | … | … | … | 130 | … | |||
| Неповна частина (заключна) | … | … | … | … | ![]() | … | |||
| … | … | … | … | … | |||||
Блок![]() | Повна частина 1 | … | … | … | … | 130 | ![]() | … | |
| Повна частина 2 | … | … | … | … | 130 | … | |||
| … | … | … | … | … | … | ||||
Повна частина![]() | … | … | … | … | 130 | … | |||
| Неповна частина (заключна) | … | … | … | … | ![]() | … | |||
| Кінцевий символ | Символ файлу, що закриває | Символ | 1 | , (код 82 ) |
Таким чином, довжина Unformatted-файлу формату PowerStation дорівнює:

Робота з файлами типу Unformatted у мові Fortran
З погляду програміста, що пише програмний код мовою Fortran, робота з файлами типу Unformatted практично нічим не відрізняється від роботи з іншими типами файлів (наприклад, текстовими).
Функції роботи з файлами мови Fortran забезпечують підтримку блокової структури Unformatted-файлів. Коректна обробка особливостей, пов'язаних з блоками, у програмах, написаних мовами, відмінними від мови Fortran (наприклад, мовою C++), лягає на плечі програміста.
Відкриття та закриття
Відкриття Unformatted-файлу здійснюється за допомогою функції OPEN :
Примітка.
При відкритті для запису в Unformatted файл формату PowerStation записується відкриваючий символ.
Закриття Unformatted-файлу здійснюється за допомогою функції CLOSE:
Примітка.
При закритті формату PowerStation, що записується Unformatted-файлу, в нього записується закриває символ.
Запис та читання
Запис чергової порції даних файл типу Unformatted проводиться за допомогою функції WRITE :
Примітки.
Читання даних зUnformatted-файла виконується за допомогою функції READ :
Примітки.
Допоміжні процедури навігації
При читанні файлу типу Unformatted можна використовувати низку функцій, що полегшують навігацію такого файлу. Вони забезпечують рух позиції курсора читання з урахуванням блокової структури файлу типу Unformatted.
Повернутися до початку файлу
Повернення до початку файлу здійснюється за допомогою функції REWIND :
Примітка.
При поверненні на початок файла курсор читання встановлюється початку першого блока.
Повернення до початку попереднього блоку
Повернення до початку попереднього блоку (тобто переміщення курсору читання до початку попереднього блоку) здійснюється за допомогою функції BACKSPACE :



















