Atikur
Atikur

Reputation: 1

Fortran g77 compiler can't recognize o.f or comment "c"

I was using Fortran g77 and experienced this problem:

c this program calculates runoff and sediment
  1 2
 Unrecognized statement name at (1) and invalid form for assignment or statement-function definition at (2)

Also, the compiler can recognized only .for file extension, not .f.

Does anyone know, where is the problem? I downloaded it from http://www.cse.yorku.ca/~roumani/fortran/ftn.htm.

Upvotes: 0

Views: 2884

Answers (3)

user1220978
user1220978

Reputation:

I'll assume you want to stick with this compiler.

As noted above, the problems you have come from using the F2EXE batch file, which is not very useful: first it automatically adds ".for" to the file name, so you can't compile ".f" files, and it assumes free-form syntax, which is unusual when programming in Fortran 77 (and if you want Fortran 90, find another compiler, other answers give you links).


Now, suppose you have written a program myprogram.f, and you are in a Windows command line, in the same directory where the program resides (use "cd C:\mydirectory" for example, to change)

You will compile with

g77 myprogram.f

If you use SLATEC, you use

g77 myprogram.f -lslatec

If you want to specify a name for your .exe file (default is a.exe), you write

g77 myprogram.f -o myprogram.exe

There are other useful options

g77 -O2 myprogram.f     to optimize (within g77 2.95 limitations)
g77 -Wall myprogram.f   to enable all compiler warnings, very useful
                          to find errors in your code
g77 -c myprogram.f      to only compile (you get a .o file), this is
                          useful to compile functions and subroutines, to
                          later build a static library (.a file), like
                          libslatec.a which is given with the compiler

And to build a library, using ar.exe:

ar cru mylib.a myfunc1.o myfnuc2.o ...

Then you can use is with

g77 myprogram.f mylib.a

G77 runs in command line under Windows. You write programs in a text editor. Notepad++ is fairly good and its free. See http://notepad-plus-plus.org/

If you have problems with compilation, maybe it comes from environment variables, so here are some precisions. You have to tell Windows where to find the G77 compiler (g77.exe).

You can follow instructions on the site where you downloaded it to change Windows' environment variables PATH and LIBRARY_PATH. It needs you install the compiler in the C:\F directory : that is, you will have C:\F\G77\bin, etc.

Slight modification to the instructions on that page :

  • You should set PATH to C:\F\G77\bin
  • And LIBRARY_PATH to C:\F\G77\lib;C:\F\SLATEC\lib

This modification to LIBRARY_PATH allows you to compile with SLATEC simply with "-lslatec" as above.


A note about the compiler. It's G77, also know as GNU Fortran 77. An old compiler, integrated with the well known GCC suite until GCC 3.4.6 (we are at GCC 4.7.2 now). And the compiler you downloaded is for version GCC 2.95.

It's a good Fortran 77 compiler, but it's not very well optimized, and of course, you don't get any support for new processor features such as Intel SSE.

Modern Fortran compilers can still understand most if not all of Fortran 77, plus all the newer features of Fortran 90 and newer standards, which are extremely useful.

It may also be interesting to know there is another place to download the same compiler (eccept there is no SLATEC), just in case the page gets destroyed : http://www.mbr-pwrc.usgs.gov/software/g77.html

Upvotes: 1

Hristo Iliev
Hristo Iliev

Reputation: 74375

The page you have linked to states that the f2exe wrapper passes -ffree-form to the compiler:

Compilation Command

The above f2exe command is just a batch file that invokes g77, the "real" compilation command. The command:

g77 -ffree-form prog.for -oprog.exe

directs the compiler to compile the file prog.for and stores the output in the file prog.exe. The -ffree-form switch indicates free-form style (remove it if you are using the old style).

In free-form Fortran the only allowed comment format is that of a line starting with !. As a matter of fact, this is also written on the same page directly under the above text:

Comments

In free-form style, use ! for both full-line and in-line comments. In the old style, use a "C" in column-1.

If you are not using the provided f2exe wrapper, don't pass -ffree-form option when compiling fixed-form FORTRAN 77 code.

Upvotes: 1

M. S. B.
M. S. B.

Reputation: 29381

The compiler is not recognizing that statement as a comment. As a comment it should ignore the line but it is trying parse it. Are you sure that the "C" is in the first column?

Why are you using g77? It hasn't been supported for years. gfortran is the current GNU Fortran compiler. It can compile FORTRAN 77, Fortran 90, 95 and portions of 2003 and 2008.

EDIT: Perhaps its wants an upper-case "C".

Upvotes: 1

Related Questions