Я работаю с устаревшей подпрограммой кода Fortran 77, где типы параметров не объявлены в верхней части блока кода.
Вот фрагмент, показывающий самый верх подпрограммы.
SUBROUTINE BPASS(F1,F2,F3,F4,SI,N,A,IERR)
REAL * 4 A( N ),FV( 4 )
Исходя из вышесказанного, я думаю, что A
это массив длины N
с типом REAL *4
, эквивалентный по размеру C float
, С другой стороны, FV(4)
это массив длины 4
с типом REAL *4
,
Тем не менее, какие типы F1,F2,F3,F4,SI,N,IERR
, если типы не указаны? Похоже, что N
должен быть integer
,
Мне нужно знать типы, чтобы я мог вызывать подпрограмму из кода C ++. Существует ли соглашение Фортрана для типов, которые не объявлены?
По умолчанию Фортран назначит тип integer
переменным, имена которых начинаются с букв I,J,K,L,M,N
и введите real
для всех других необъявленных переменных.
Я согласен с вашим разбором определений A
а также FV
,
Современный Фортран обеспечивает выражение implicit none
для гарантии того, что правила по умолчанию не применяются, но при работе со старыми кодами иногда невозможно избежать знакомства со старыми темными способами.
В FORTRAN77
по умолчанию переменные, начинающиеся с I, J, K, L, M или N, INTEGER
иначе они REAL
, FORTRAN90
и некоторые варианты FORTRAN77
предоставить механизм для отключения этого с помощью IMPLICIT NONE
,