Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Внешний файл - совокупность однотипных данных (записей) на внешних устройствах.
Фиксированной длины |
+-----+-----+-----+ |
|
Неопределенной длины |
----*--------* |
* признак конца записи |
Переменной длины |
о----о-------о |
о - описатель длины 4 байта |
Блокирование объединение записей в блоки (для эффективности выполнения операций ввода и вывода на физическом уровне).
Сегментирование разбиение слишком длинных записей на сегменты (по 128 байт).
По методам доступа файлы подразделяются на файлы пocлeдoвaтeльнoгo и пpямoгo дocтупa. Файлы прямого доступа могут быть созданы лишь на устройствах прямого доступа (винчестер). Файлы последовательного доступа могут быть созданы на любом устройстве.
Метод доступа задается параметром ACCESS:
ACCESS='SEQUENTIAL' (последовательный доступ значение по умолчанию)
ACCESS='DIRECT' (прямой доступ)
Записи файла прямого доступа нумеруются по порядку. Зaпиcи имeют oдинaкoвую длину, oпpeдeляeмую пpи oткpытии фaйлa
Для передачи данных |
|
READ |
ввод данных |
WRITE |
вывод данных |
|
вывод на системное печатающее устройство |
Для присоединения и отсоединения |
|
OPEN |
открыть |
CLOSE |
закрыть |
Для позиционирования |
|
BACKSPACE |
в начало предыдущей записи последовательного доступа |
ENDFILE |
устанавливает признак конца файла |
REWIND |
в начало файла последовательного доступа |
LOCKING |
к записи файла прямого доступа |
Остальные |
|
INQUIRE |
выдает информацию о свойствах устройства или файла |
FILE |
задает имя файла |
UNIT |
задает идентификатор устройства |
ACCESS |
определяет метод доступа |
FORM |
вид записи (форматные, бесформатные) |
ERR |
управление ошибкой записи |
END |
управление ситуацией "конец файла" |
BLOCKSIZE |
устанавливает размер блока |
FMT |
указывает способ передачи форматных записей |
IOSTAT |
управление ошибкой В/В |
MODE |
разрешение чтения, записи, чтения и записи (форма) |
STATUS |
состояние файла |
RECL |
длина записи |
REC |
номер записи |
SHARE |
задает форму обращения при совместной работе |
Явное (оператор OPEN)
Неявное (по обращению к операторам ввода и вывода)
Предварительное (по умолчанию)
Отмена присоединения - CLOSE
OPEN(<список ключевых параметров>)
UNIT= <номер канала> целое число 2 байта
FILE='имя файла'
ACCESS='SEQUENTIAL'/'DIRECT'
FORM='FORMATTED'/'UNFORMATTED'
RECL=<длина записи>
STATUS='NEW'/'OLD'/'KEEP'сохранить/'DELETE'удалить/SCRATCH' временный
ERR=<метка>
IOSTAT=<целочисленная переменная> код ошибки ввода и вывода
CLOSE(<список ключевых параметров>)
UNIT= <номер канала> целое число 2 байта
STATUS= 'KEEP' / 'DELETE'
ERR=<метка>
IOSTAT=<целочисленная переменная>
READ([UNIT=]U,
[FMT=] <метка формата, или список спецификаций, или имя списка спецификаций>
[,ERR=<метка>]
[,END=<метка>]
[,IOSTAT=<переменная>] - код ошибки ввода
[,REC=<номер записи>] - номер записи) <список элементов ввода>
Характерные наборы параметров для READ
а). Бесформатный ввод прямого доступа
READ([UNIT=]...,REC=...[,ERR=...][,IOSTAT=...])[<...>]
б). Бесформатный ввод последовательного доступа
READ([UNIT=]...[,ERR=...][,END=...][,IOSTAT=...])[<...>]
в). Форматный ввод прямого доступа
READ([UNIT=]...,[FMT=]...,REC=...[,ERR=...][,IOSTAT=...])[<...>]
г). Форматный ввод последовательного доступа
READ([UNIT=]...,[FMT=]...[,ERR=...][,END=...][,IOSTAT=...])[<...>]
Характерные наборы параметров для WRITE
а). Бесформатный вывод в файл прямого доступа
WRITE([UNIT=]...,REC=...[,ERR=...][,IOSTAT=...])[<...>]
б). Бесформатный вывод в файл последовательного доступа
WRITE([UNIT=]...[,ERR=...][,IOSTAT=...])[<...>]
в). Форматный вывод в файл прямого доступа
WRITE([UNIT=]...,[FMT=]...,REC=...[,ERR=...][,IOSTAT=...])[<...>]
г). Форматный вывод в файл последовательного доступа
WRITE([UNIT=]...,[FMT=]...[,ERR=...][,IOSTAT=...])[<...>]
BACKSPACE([UNIT=]...[,ERR=...][,IOSTAT=...]) на одну запись назад в файле последовательного доступа
REWIND([UNIT=]...[,ERR=...][,IOSTAT=...]) в начало файла последовательного доступа
ENDFILE([UNIT=]...[,ERR=...][,IOSTAT=...]) запись признака конца файла в текущую позицию файла последовательного доступа
LOCKING([UNIT=]...,REC=...[,ERR=...][,IOSTAT=...]) устанавливает текущую позицию на запись с номером, указанным в REC, в файле прямого доступа.
Пример
Распечатать файл на экране
character BUF(79),FNAME*12
1 CONTINUE
WRITE(*,*) ' Введите имя файла'
READ(*,997)FNAME
997 FORMAT(A12)
OPEN(UNIT=15,FILE=FNAME,STATUS='OLD',ERR=2,IOSTAT=IERR)
IF(IERR.EQ.0)GOTO 10
WRITE(*,*)'Ошибка при открытии файла',IERR
GOTO 1
2 CONTINUE
WRITE(*,*)' Нет такого файла',IERR
GOTO 1
10 CONTINUE
READ(15,999,END=19,ERR=18,IOSTAT=IERR)BUF
999 FORMAT(79A1)
WRITE(*,998)BUF
998 FORMAT(' ',79A1)
GOTO 10
18 CONTINUE
WRITE(*,*)'Ошибочка чтения',IERR
GOTO 10
19 CONTINUE
STOP
END