Portland Fortran allows to use allocatable arrays in namelists, as in 2003 standard. But for some reason version 11.3 doesn’t allow to use nonconstant sized array like this:
Program p
COMMON/FLDPRM/KK1,KK2
NAMELIST/NFWAVE/EFORMU,EFORMB,EFORML,EFORMR
DIMENSION EFORMU(KK1),EFORMB(KK1),
. EFORML(KK2),EFORMR(KK2)
End
This produce following compiler messages:
PGF90-S-0108-Illegal variable, eformu, in NAMELIST group nfwave (test.for: 3)
PGF90-S-0108-Illegal variable, eformb, in NAMELIST group nfwave (test.for: 3)
PGF90-S-0108-Illegal variable, eforml, in NAMELIST group nfwave (test.for: 3)
PGF90-S-0108-Illegal variable, eformr, in NAMELIST group nfwave (test.for: 3)
PGF90-S-0000-Internal compiler error. sym_is_refd: bad sc
0 (test.for: 3)
PGF90-S-0000-Internal compiler error. sym_is_refd: bad sc
0 (test.for: 3)
PGF90-S-0000-Internal compiler error. sym_is_refd: bad sc
0 (test.for: 3)
PGF90-S-0000-Internal compiler error. sym_is_refd: bad sc
0 (test.for: 3)
0 inform, 0 warnings, 8 severes, 0 fatal for p
And everything compiles ok if I try
Program p
COMMON/FLDPRM/KK1,KK2
NAMELIST/NFWAVE/EFORMU,EFORMB,EFORML,EFORMR
Allocatable EFORMU(:),EFORMB(:),
. EFORML(:),EFORMR(:)
End
So it is not a problem for compiler to use dynamically sized arrays in namelist. Why it works only with one type of such arrays?