Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИиП_3.doc
Скачиваний:
3
Добавлен:
21.04.2019
Размер:
303.1 Кб
Скачать

Interface

subroutine suba(a) ! при использовании перенимающего форму

real a(:,:) ! массива необходимо явное описание интерфейса

end subroutine suba

end interface

.......

call suba(x) ! вызов процедуры

.....

end

subroutine suba(a) ! описание процедуры, использующей массив

! в качестве формального параметра

real a(:,:) ! нижняя граница в описании массива отсутствует,

.... ! при вызове процедуры массив определяется как а(4,7)

end subroutine suba

Массивы, перенимающие размер

Пример синтаксиса перенимающих размер массивов.

program main

real x(3,6,5), y(4,10,5)

call asub(x,y) ! вызов процедуры

.....

end

subroutine asub(a,b) ! описание процедуры, содержащей массивы,

! перенимающие размер

real a(3,6,*), b(0:*) ! массивы y и b неодинаковы по рангу

.......

end subroutine asub

3.9. Файлы Фортрана

3.9.1. Основные понятия

Запись

Запись конца файла – это специальная запись, выполненная с помощью оператора END FILE.

Файл

Внешний файл

Внутренний файл

Устройство

Методы доступа

3.9.2. Операции над внешними файлами

3.9.3.Операторы передачи данных

Оператор READ:

READ(<UNIT=>u<,<<FMT=>f>|<NML=>nml> &

<,ADVANCE=adv><,IOSTAT=s><,REC=rec><,EOR=eor> &

<,SIZE=size><,END=eof><,ERR=err>) <список>

Оператор WRITE:

WRITE(<UNIT=>u <,<<FMT=>f> | <NML=>nml> &

<, ADVANCE=adv><, IOSTAT=s><, REC=rec><, ERR=err>) <список>

Оператор ENDFILE:

Endfile u

или

ENDFILE (<UNIT=> u <, ERR=err><,IOSTAT=s>)

3.9.4. Порядок выполнения передачи данных

Выполнение операторов READ, WRITE и PRINT состоит из 7 шагов:

  1. Определение направления передачи данных.

  2. Идентификация устройства осуществляется по его спецификации в операторе ввода-вывода.

  3. Определение формата.

  4. Установка позиции файла перед началом выполнения оператора.

  5. Передача данных между файлом и отдельными объектами.

  6. Установка позиции файла после выполнения оператора.

  7. Определение переменной состояния.

3.9.5. Операторы подсоединения устройств к файлам

Оператор OPEN:

OPEN (<UNIT=>u <, FILE=file> <,STATUS=status><, ACCESS=access> &

<, ACTION=act><, BLANK=blank><, CARRIAGECONTROL=carr> &

<, DELIM=delim><, FORM=form><, IOFОCUS=iof><, IOSTAT=s> &

<, PAD=pad> <, POSITION=pos><, RECL=recl><, SHARE=share> &

<, MODE=mode><, BLOCSIZE=bls><,ERR=err>)

Пример: записи оператора открытия файла.

OPEN (10, FILE='TED', STATUS=NEW, ACCESS='SEQUENTIAL', &

FORM='FORMATTED', IOSTAT=VAR, MODE='WRITE', &

RECL=80, BLOCSIZE=1536)

WRITE (10,4) EIF

Оператор СLOSE:

CLOSE (<UNIT=> u <, STATUS=status> <, IOSTAT=s> <, ERR=err>)

Пример ввода именованного списка из файла.

program ff1

integer k, arr(5) ! описание

logical fl ! переменных

real r4

character c10*10, c4*4

namelist /mes/ k,fl,r4,c10,c4,arr ! объявление именованного списка mes

open (10, file=‘c:\users\tiv\a.txt’) ! открытие файла, находящегося на

! устройстве с номером 10, и содержащего информацию:

! &Mes K = 100, FL = T, C10 = ‘qwertyuiop’,

! r4 =24.0, arr = 1,2,3,4,5, c4 = ‘sub

! /

read (10,mes) ! ввод информации в элементы списка mes из файла

write (*,*) k, arr, fl ! вывод

write (*,*) r4,’ ‘, c10,’ ‘, c4 ! результатов

end program ff1

Результат:

100 1 2 3 4 5 T