u == 1.4D0work?
GFortran, G95, Open Watcom, and Silverfrost are free Fortran compilers, while Absoft, IBM, Intel, Lahey, NAG, Pathscale, PGI, and Oracle produce commercial Fortran compilers. Polyhedron Software provides compiler comparisons at http://www.polyhedron.com/compare0html. See Compilers for more information.
See the Books page.
Standard capitalization is now the preferred way to write Fortran for several reasons, most notably because that is how recent versions of the standard write it. Another reason is due to an effort to standardize the capitalization of the names of programming languages. To quote Walt Brainerd (originally from the 1997-01-03 version of Keith Bierman’s Fortran FAQ):
The rule: if you say the letters, it is all caps (APL); if you pronounce it as a word, it is not (Cobol, Fortran, Ada).
Some choose to write FORTRAN when referring to older versions of the language (prior to Fortran 90) to distinguish them from newer versions.
To build a static library
libfoo.a containing all modules and procedures in the
.f90 files in the current directory on Linux:
% gfortran -c *.f90 % ar cr libfoo.a *.o
The first command builds the object files and the second archives the object files into a static archive.
To build a shared library
% gfortran -shared *.f90 -o libfoo.so -fPIC
In both cases, other compiler flags such as
-O2 can be used.
u == 1.4D0work?
A common Fortran 95 idiom for reading lines until the end of file is
integer :: stat character(len=100) :: buf open(15, file='foo.txt') do read(fh, iostat=stat) buf if (stat /= 0) exit ! process buf end do close(15)
if (stat == iostat_end) exit
There isn’t a portable way to do this either in Fortran or C, in short, because the terminal controls when the input is sent to your program and by default it is buffered. You must request that the terminal send each key and the method for doing so is platform-dependent.
Clive Page’s Fortran Resources has a section on “Reading single keystrokes from Fortran” which provides a couple of short C functions (sys_keyin.c) which can be called from Fortran to achieve the desired behavior on most Unix systems.
John Urban also provides a getkey function, written in C and callable from Fortran.
See Real precision.
There is no intrinsic procedure for converting character strings to numerical values, or vice-versa. However, this can be accomplished using internal file IO. To obtain a string representation of a numeric variable, one can perform a formatted write to a string, just as one does to a file. Similarly, a formatted read from a string can extract a numeric value. See the strnum program for an example.
open(7, form='unformatted', status='scratch')
This will create a temporary file that only lives until it is closed. It doesn’t need a filename as it will not be permanently saved to disk (although it could be stored somewhere as a temporary file). In this example, the unit number is 7.
The file will be deleted when the program terminates (but may not be deleted if the program terminates abnormally, i.e. crashes). Note that it is not permitted to prevent deletion of a scratch file by closing the file using a close statement with
Yes, in Fortran 2003. Declare the variable and allocate with a given length as follows:
character(LEN=:), allocatable :: str integer :: n n = 27 allocate(character(LEN=n) :: str)
Although there are no official file extensions for Fortran code, there are two widely established conventions. Some use
.f for fixed-form source and
.f90 for Free form layout. The latter is a reference to the Fortran 90 standard, when Free form layout was introduced. The code contained in the file can be Fortran 95, Fortran 2003, etc. Others prefer to use file extensions that indicate the standard under which the code was written. For example,
.f03 for Fortran 2003 code and
.f08 for Fortran 2008 code. Unfortunately, this results in a proliferation of file extensions and some compilers may not support the newer extensions yet.
See File extensions for more discussion on these issues.