FORTRAN был моим первым языком программирования в 1970-х годах, но я не могу определить, действителен ли следующий код FORTRAN. У меня нет возможности скомпилировать или запустить код.

    SUBROUTINE ABC(PARM1, PARM2)
    CHARACTER*40 projName 
    DATA projName /'...values...'/

C Lots of comments...

C VARIABLE DECLARATIONS BEGIN HERE (the exact wording)

    IMPLICIT REAL*8(A-H,O-Z)
    (the rest of the declarations)
    . . .

Все ссылки говорят, что оператор IMPLICIT должен стоять перед любыми объявлениями; однако этот код, по-видимому, работает. Я думаю, что либо (1) оператор IMPLICIT игнорируется, либо (2) этот код действителен в некотором варианте FORTRAN. Если IMPLICIT игнорируется, флаги компиляции могли использоваться для той же цели.

Мне нужно определить действительный / недействительный и кратко обосновать свой ответ. Любые идеи очень приветствуются.

Спасибо лак

3
user12027078 28 Окт 2019 в 23:23

1 ответ

Лучший ответ

Тип CHARACTER был введен в Fortran 77. В разделе 3.5 Fortran 77 «Порядок операторов и строк» ​​говорится: «В операторах спецификации программного модуля операторы IMPLICIT должны предшествовать всем другим операторам спецификации, кроме операторов PARAMETER».

Подобные ограничения существуют и в более поздних стандартах.

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

(Fortran 77 не требовал, чтобы процессоры Fortran диагностировали даже самые простые правила языка. Компилятор мог принять другой порядок операторов как расширение или случайно.)

2
IanH 28 Окт 2019 в 20:37