Я не понимая важность СОДЕРЖИТ заявление в Fortran 90Содержит заявление
Например
PROGRAM BLABLA
IMPLICIT NONE
INTEGER :: i,j,k
i = 1; j = 1;k =1
PRINT *, i,j,k
CALL ABC(i,j,k)
PRINT *, i,j,k
CONTAINS
SUBROUTINE ABC(r,s,t)
IMPLICIT NONE
INTEGER, INTENT(IN) :: r,s
INTEGER, INTENT(OUT) :: t
t = r + s
END SUBROUTINE ABC
END PROGRAM BLABLA
и один, определив подпрограммы вне основной программы. Я понимаю для функций, нужно указать тип функции, но для подпрограмм это не требуется. Мне интересно узнать, есть ли какие-либо дополнительные оговорки?
PROGRAM BLABLA
IMPLICIT NONE
INTEGER :: i,j,k
i = 1; j = 1;k =1
PRINT *, i,j,k
CALL ABC(i,j,k)
PRINT *, i,j,k
END PROGRAM BLABLA
SUBROUTINE ABC(r,s,t)
IMPLICIT NONE
INTEGER, INTENT(IN) :: r,s
INTEGER, INTENT(OUT) :: t
t = r + s
END SUBROUTINE ABC
Когда у меня нет ** СОДЕРЖИТ **, он компилируется, но затем дает мне ошибочный ответ для j (произвольно большой). Когда у меня есть ** CONTAINS **, это не позволяет мне скомпилировать. Поэтому я предполагаю, что ** CONTAINS ** служит дополнительной проверкой аргументов. До сих пор я писал коды без ** CONTAINS **. Если тот же код компилируется с ** CONTAINS **, я могу быть уверен, что другой код верен, насколько аргументы идут. Точнее, если в любом из кодов нет аргументов, переданных (но сохраненных в MODULES как глобальные переменные), будут ли они одинаковыми? – Vaidyanathan