Каково значение аргументов в аргументах этой программы Фортрана до 1977 года? - PullRequest
3 голосов
/ 30 апреля 2019

Следующий фрагмент представляет собой первые несколько строк программы драйвера для TOMS 494, опубликованной примерно в 1975 году. Хотя второй аргумент, возможно, относится к ленточному накопителю, было бы интересно узнать, что означают эти аргументы. Строка, кажется, дает ошибку в gfortran 4.x

  PROGRAM BURGER(PDEOUT, TAPE3=PDEOUT)
  COMMON /MESH/ X(201)
  COMMON /COORD/ ICORD
  COMMON /SIZES/ NPDE,NPTS
  DIMENSION U(201)

вывод компиляции:

   PROGRAM BURGER(PDEOUT, TAPE3=PDEOUT)
         1

Ошибка: неверная форма оператора PROGRAM в (1)

1 Ответ

2 голосов
/ 30 апреля 2019

Это можно найти в этом руководстве FORTRAN EXTENDED VERSION 4 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ от CDC (ОРГАНИЗАЦИЯ КОНТРОЛЬНЫХ ДАННЫХ)

Это был способ передать имена файлов, к которым нужно подключиться при вызове / запуске программы. См. Стр. 7-3 (pdf 91).

Пример 1

PROGRAM statement:
PROGRAM  FOIST  (INPUT,  OUTPUT,  TAPE3)

Название выписки:

LGO(FIRST, SECOND)

Фактически используемые имена файлов:

FIRST
SECOND
TAPE3

оператор LGO(file1, file2) принадлежит загрузчику, как объяснено на предыдущих страницах, а LGO - это имя программы по умолчанию (как сегодня a.out).

name(p1,p2,...  ,pn) 

Логическое имя файла для загрузки файла и выполняется, или название основной программы быть загруженным и выполненным. Альтернативные имена файлов для времени выполнения файла замена имени.

...

Вызов имени файла является наиболее распространенным вызовом и обычно используется для простого случая, в котором объектный код записывается по умолчанию в файл LGO.

Файлы INPUT и OUTPUT - это то, что мы сегодня называем стандартным вводом и выводом, и к ним обращались READ *,, PRINT *, и т.п. TAPE3 был подключен к блоку 3, а TAPE5 - к блоку пять, как в примере на странице 1-3 (pdf 13).

PROGRAM NEWTON (INPUT, OUTPUT, TAPE5=OUTPUT)
...
READ *, XO, EPS, ITMAX
...
WRITE (5,20) ITMAX

То, что на самом деле эти ленты представляли физически, контролировалось за пределами Фортрана и также объясняется в руководстве.


Таким образом, в наше время вы либо предварительно подключаете файлы к этим устройствам с помощью других системных средств, либо используете оператор OPEN() для подключения внешнего файла к номеру устройства Fortran. У нас нет остальной части вашего кода, поэтому я не могу рекомендовать более подробно.

...