Fortran файлове като Unformatted frundWiki
Неформатираните файлове се създават от програми и програмни модули, написани на езика Fortran. Тези файлове са двоични (двоични) и в същото време имат специална вътрешна структура, която не позволява директно четене и писане на файлове от този тип (пренебрегвайки тази структура) от програми, написани на други езици (например C ++).
В изчислителното ядро и библиотеките за предварителна и последваща обработка на системата FRUND, написани на езика Fortran, се използват редица файлове от неформатиран тип:
Структурата на неформатираните файлове
Неформатираните файлове се различават от обикновените двоични файлове по това, че имат определена вътрешна структура. Съдържанието на такива файлове е разделено на няколко последователни блока. Един блок е набор от данни, които се формират в неформатиран файл, когато се извика следващата функция за запис. При четене съдържанието на неформатиран файл също се чете на цели блокове (дори ако функцията за четене се опитва да прочете по-малко данни, отколкото се съдържат в четения блок).
Структура на GNU Fortran (GFortran) неформатирани файлове
Следната таблица показва структурата на GFortran неформатиран файл.
Избройте блокове | Блок 1 | Символ за начало на блок | Символ за отваряне на блок | Номер | 4 | 1) | |
Блок съдържание | Данни, съхранявани в блок | Масив байта | — | ||||
Краен знак блок | Блок терминатор | Номер | 4 | ||||
Блок 2 | Символ за начало на блок | … | … | 4 | |||
Блок съдържание | … | … | — | ||||
Краен знак блок | … | … | 4 | ||||
… | … | … | … | … | |||
Блок | Символ за начало на блок | … | … | 4 | |||
Блок съдържание | … | … | — | ||||
Краен знак блок | … | … | 4 |
Така дължината на неформатиран GFortran файл е:
, къдетоСтруктура на неформатирани файлове на Intel Fortran / Fortran PowerStation
Неформатирани файлове, създадени от програми или добавки, компилирани с компилаторите Microsoft Fortran PowerStation или Intel Fortran (с опцията Use PowerStation I/O Format, зададена на Yes; съответният ключ на компилатора е /fpscomp:ioformat) имат малко по-сложна структура. В такива файлове съдържанието на всеки блок е разделено на няколко части. Всяка част съдържа не повече от 128 байта данни.
Следващата таблица показва структурата на неформатиран файл във формат 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 ) |
Така дължината на неформатиран PowerStation файл е:
, къдетоРабота с неформатирани файлове във Fortran
От гледна точка на програмист на Fortran, работата с файлове от тип Unformatted практически не се различава от работата с други типове файлове (например текстови файлове).
Файловите функции на Fortran осигуряват поддръжка за блокова структура на неформатирани файлове. Програмистът зависи правилно да обработва функциите, свързани с блокове, в програми, написани на езици, различни от Fortran (като C++).
Отваряне и затваряне
Отварянето на неформатиран файл се извършва с помощта на функцията OPEN:
Забележка.
Когато се отвори за писане, начален знак се записва в неформатиран файл във формат PowerStation.
Затварянето на неформатиран файл се извършва с помощта на функцията CLOSE:
Забележка.
Когато затворите записваем неформатиран файл във формат PowerStation, в него се записва затварящ знак.
Писане и четене
Следващата част от данните се записва в неформатиран файл с помощта на функцията WRITE:
Бележки.
Четене на данни отСъздава се неформатиран файл с помощта на функцията READ:
Бележки.
Спомагателни навигационни процедури
Когато четете неформатиран файл, можете да използвате редица функции, за да улесните навигацията във файла. Те осигуряват движение на позицията на курсора за четене, като се вземе предвид блоковата структура на файла от тип неформатиран.
Върнете се в началото на файла
Връщането в началото на файла става с помощта на функцията REWIND:
Забележка.
При връщане към началото на файла, курсорът за четене се позиционира в началото на първия блок.
Върнете се в началото на предишния блок
Връщането в началото на предишния блок (т.е. преместване на курсора за четене в началото на предишния блок) се извършва с помощта на функцията BACKSPACE: