Я пытаюсь понять Fortran код, содержащийся в: http://heath.cs.illinois.edu/courses/cs598mh/george_liu.pdfМассивы в подпрограммах, Fortran 77
В частности, переменные массива деклараций в подпрограммах. Вот пример:
SUBROUTINE ROOTLS (ROOT, XADJ, ADJNCY, MASK, NLVL, XLS, LS)
C
INTEGER ADJNCY(1), LS(1), MASK(1), XLS(1)
INTEGER XADJ(1), I, J, JSTOP, JSTRT, LBEGIN
Я смущен (1)
после имени массива, например ADJNCY(1)
и XADJ(1)
. Эти массивы определенно больше одного. Что делает (1)
в этих объявлениях?
Wow! Огромное спасибо!!! Я понятия не имел, что код еще старше. :-) – Khubunku
только потому, что кто-то использовал старое соглашение, это не значит, что код старый. Я удивлен заявлением в этой ссылке, в котором говорится, что современные компиляторы запрещают это. intel принимает это. Очевидно, вы не должны продолжать использовать это для нового кода, но нет причин переходить на старый код старой библиотеки, чтобы исправить его. – agentp
@agentp Компилятор принимает его, * если он не проверяет аргументы * (например, с помощью внешних библиотек)! Как только вы предоставите интерфейс функции/подпрограммы (например, использование в модуле), компилятор, безусловно, не примет его. –