Fortran - оператор IF с двумя ветвями из старого (1972) кода - PullRequest
2 голосов
/ 22 января 2011

Привет.Кто-нибудь знает, что делает этот оператор Fortran IF?

IF(IJJ-2) ,409,411

Я не думаю, что это опечатка, потому что есть несколько других в той же программе.Я предположил, что это стандартная арифметическая IF, которая просто по умолчанию установила ветвь «меньше 0» для следующего оператора exectutbale, но я не уверен в этом.Я думаю, что этот код был размещен на CDC 6600 в 1970-1972 годах.Я просмотрел стандарт подмножества FORTRAN 77, но он указывает, что должны быть предоставлены все три ярлыка с заявлениями.Любой совет ценится.

Ответы [ 3 ]

5 голосов
/ 26 января 2011

Это называется арифметическим оператором IF и устарело в Fortran 90 и 95. Однако я знаю, что Intel Fortran Compiler все еще поддерживает его.Если выражение в скобках меньше нуля, выполнение переходит к первой метке.Если он равен нулю, то вторая метка и, наконец, если больше нуля, он переносится на третью метку.Я не уверен, что происходит в случае отсутствия ярлыка - я предполагаю, что он просто проваливается.

Таким образом, ваше утверждение IF переведет в современный Фортран как:

IF (IJJ == 2) THEN
    GOTO 409
ELSEIF (IJJ > 2) THEN
    GOTO 411
ENDIF
1 голос
/ 22 января 2011

Я думаю, что номера строк назначения были меньше, равны и больше нуля. Это не похоже на стандартный фортран, но, думаю, пропущенные номера строк перейти к следующему утверждению.

0 голосов
/ 25 октября 2012

Это определенно нестандартный фортран. Я проверил, и компиляторы Intel и GFortran не примут это. Многие компиляторы Фортрана еще до F90 имели нестандартные расширения. Я помню, что у DEC-компилятора было много расширений. И это использовало точку продажи! Это также помогло обеспечить лояльность клиентов, поскольку код, использующий эти расширения, не мог быть перенесен на другие компиляторы. Лучше всего, если вы найдете руководство, поставляемое с компилятором, оно должно это документировать. Удачи!

Как историческая справка, я помню, как мне говорили, что некоторые из компаний в то время так завидовали своей привлекательности и тому преимуществу, которое давали им их нестандартные расширения, что они намеренно препятствовали процессу стандартизации откладывать следующий версия Фортрана (которая в итоге получила название F90). Это позволило другим языкам получить господство и ускорило падение Фортрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...