Информационные системы ускорителей

ВВЕДЕНИЕ В ФОРТРАН

Как пользоваться этим руководством.

Концепция данных Фортрана.

Типы и буквальные константы.

Имена (идентификаторы).

Переменные и константы.

Скаляры и массивы.

Именование данных.

Печать текста и чисел на экран.

Hello World!

Печать целых чисел.

Печать вещественных чисел.

Печать текста.

Когда format предпочтительней.

Арифметические и текстовые выражения.

Арифметические операторы и правила.

Вещественная арифметика.

Целая арифметика.

Смешанная арифметика.

Текстовые выражения.

Инициализация переменных и констант.

Оператор присваивания.

Инициализация скалярных констант.

Инициализация массивов констант.

Ввод данных с клавиатуры.

DATA-инициализация скалярных переменных.

DATA-инициализация массивов переменных.

Условные опреаторы.

Логические выражения.

Оператор IF.

Конструкция IF.

Конструкция CASE.

Циклы.

Цикл с фиксированным числом повторений.

Цикл с выходом по условию.

Пресловутый GOTO.

Неявные циклы.

Процедуры и функции.

Подпрограммы-процедуры.

Подпрограммы-функции.

Комплексный пример: сортировка массива.

Встроенные функции Фортрана.

Работа с внешними файлами.

Файловый ввод/вывод.

Открытие/закрытие файла.

Позиционирование файла.

ПОЗИЦИОНИРОВАНИЕ ФАЙЛА.

При работе с файлами необходимы переходы между записями файла. Каждый такой переход называется изменением позиции файла.

      program SEQPOS
      integer UNIT
      parameter (UNIT = 1, NBACK = 2)
      character*80 STRING
      open(UNIT, file='indat.txt')

c     Определение числа записей NREC в файле
      NREC = 0
      do 
        read(UNIT, *, iostat = IOS) STRING
        if(IOS .ne. 0) exit ! попытка чтения за "концом файла"
        NREC = NREC + 1
      enddo

c     Печать запись с номером NBACK, считая от конца файла 
      do i = 1, NBACK+1 ! "конец файла" это тоже запись, поэтому +1
        backspace UNIT
      enddo
      read(UNIT,*) STRING
      print*, STRING

c     Установить смвол конца файла в текущей позиции файла
      endfile UNIT

c     Пепечать первую запись файла 
      rewind UNIT
      read(UNIT,*) STRING
      print*, STRING

      close(UNIT)
      end

Позиция не пустого файла - это или начало записи, которую в данный момент можно считать, или конец файла (после которого уже нет записей этого файла). Если при вводе данных из файла текущая запись прочитана не до конца, то файл позиционирован внутри этой записи.

Начало файла совпадает с началом его первой записи. При открытии (или создании) позиция установится в начало файла.

Файлы прямого доступа позиционируются через указание номера записи (спецификатор REC в опрераторах ввода/вывода).

Для файлов последовательного доступа переход к следующей записи происходит после чтения текущей записи, переход к предыдущей (только что прочитанной) осуществляется оператором BACKSPACE, которому, в качестве параметра указывается номер устройства, связанного с файлом.

Если файл позиционирован в начало, то оператор BACKSPACE не вызовет ни каких изменений. Если файл позиционирован внутри текущей записи, то BACKSPACE позиционирует его в начало текущей записи.

Из любой позиции можно осуществить переход в начало первой записи, используя оператор REWIND, которому, в качестве параметра указывается номер устройства, связанного с файлом. Если позиция файла уже установлена в начало, то REWIND не повлечет ни каких изменений.

Позиционируясь в любой точке файла можно записать строку "конец файла", используя опрератор ENDFILE, которому в качестве параметра указывается номер устройства, связанного с файлом. При этом все последующие строки файла будут утеряны.