I've got some legacy code I'm trying to compile, and my available compilers are choking. Here are the lines causing the problems:
line 5:
DIMENSION MMO(12)/31,28,31,30,31,30,31,31,30,31,30,31/
lines 7, 8:
DEFINE FILE 4(ANSI,FB,140,3360,0)
DEFINE FILE 7(SDF, ,42,42)
line 119:
1905 FORMAT(J2,J4,J2,29I5)
Lahey-Fujistu 95 says:
1116-S: "fz32.f", line 5, column 24: Comma expected.
1110-S: "fz32.f", line 5, column 28: Missing name.
1336-S: "fz32.f", line 7, column 7: DEFINE FILE statement not supported.
1336-S: "fz32.f", line 8, column 7: DEFINE FILE statement not supported.
1511-S: "fz32.f", line 119: Invalid character string 'J' found in format specification.
1515-S: "fz32.f", line 119: Edit descriptor must be specified after the repeat specification in a format specification.
...and more missing name errors
gfortran 77 says:
fz32.f:5:
DIMENSION MMO(12)/31,28,31,30,31,30,31,31,30,31,30,31/
^
Invalid form for DIMENSION statement at (^)
fz32.f:7:
DEFINE FILE 4(ANSI,FB,140,3360,0)
1 2
Unrecognized statement name at (1) and invalid form for assignment or statement-function definition at (2)
fz32.f:8:
DEFINE FILE 7(SDF, ,42,42)
1 2
Unrecognized statement name at (1) and invalid form for assignment or statement-function definition at (2)
fz32.f:119:
1905 FORMAT(J2,J4,J2,29I5)
^
Unrecognized FORMAT specifier at (^)
fz32.f:119:
1905 FORMAT(J2,J4,J2,29I5)
^
Unrecognized FORMAT specifier at (^)
fz32.f:119:
1905 FORMAT(J2,J4,J2,29I5)
^
Unrecognized FORMAT specifier at (^)
gcc fails with similar errors.
So does anyone know what compiler could have been used to build this code?
Also, on lines 7 and 8, ANSI and SDF are not defined earlier in the code. How do these lines work? I expect them to be formatting flags, but I don't see that documented anywhere.
This one:
DIMENSION MMO(12)/31,28,31,30,31,30,31,31,30,31,30,31/
is just a non-standard version of a data statement. In F77 you could do
DIMENSION MMO(12)
DATA MMO /31,28,31,30,31,30,31,31,30,31,30,31/
or in modern fortran you could do
integer, dimension(12) :: mmo = [31,28,31,30,31,30,31,31,30,31,30,31 ]
The define stuff is a little more obscure (and probably identifies the compiler as a DEC compiler or related -- oof, that's old). It looks like you're going to want to convert
DEFINE FILE 4(ANSI,FB,140,3360,0)
DEFINE FILE 7(SDF, ,42,42)
Into something like
OPEN(unit=4, access='direct', reclen=FB)
OPEN(unit=7, access='direct')
and see how that goes.
The J specifier I can't find anywhere (and googling for J is about as helpful as you'd think). So maybe I'm wrong about DEC. Can you give us an example as to how format 1905 is used?