In the latest gempak 6.10 release, dcmsfc fails to complete and write
gempak output files. I've tracked the issue down to a change in the
gemprm.h file that was not made in the GEMPRM.PRM file.
In gemprm.h, the defined constant LLMXTM was changed to 25000 from 2000.
This same change was not made in GEMPRM.PRM where the value of LLMXTM is
still set to 2000. This is causing the following IF statement in dmcret.f
to trigger:
IF ( ( nrow .lt. 1 ) .or. ( ncol .lt. 1 ) .or.
+ ( (nrow + ncol) .gt. MMHDRS ) .or.
+ ( nprt .lt. 1 ) .or. ( nprt .gt. MMPRT ) .or.
+ ( MAXPRM .gt. MMPARM ) .or. ( nfhdrs .gt. MMFHDR ) .or.
+ ( nrkeys .gt. MMKEY ) .or. ( nckeys .gt. MMKEY ) )
+ THEN
iret = -5
RETURN
END IF
(nrow + ncol) always ends up being > MMHDRS
ncol is set from maxrpt via maxtim in dcgopt.c via MMHDRS from gemprm.h
MMHDRS = LLMXTM + LLSTFL, or 55000 = 25000+30000
and ncol = 54999
The MMHDRS set in dmcret.f using GEMPRM.PRM is
MMHDRS = LLMXTM + LLSTFL, or 32000 = 2000+30000
Since ncol is set in a c source code file, it ends up always being larger
then the MMHDRS reference in the fortran code.
Changing the value of LLMXTM in GEMPRM.PRM fixes this issue though I am not
sure if that is the correct solution to this issue.
Gene