392 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			392 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
 | |
| ====== index for f2c ============
 | |
| 
 | |
| FILES:
 | |
| 
 | |
| f2c.h	Include file necessary for compiling output of the converter.
 | |
| 	See the second NOTE below.
 | |
| 
 | |
| f2c.1	Man page for f2c.
 | |
| 
 | |
| f2c.1t	Source for f2c.1 (to be processed by troff -man or nroff -man).
 | |
| 
 | |
| libf77	Library of non I/O support routines the generated C may need.
 | |
| 	Fortran main programs result in a C function named MAIN__ that
 | |
| 	is meant to be invoked by the main() in libf77.
 | |
| 
 | |
| libi77	Library of Fortran I/O routines the generated C may need.
 | |
| 	Note that some vendors (e.g., BSD, Sun and MIPS) provide a
 | |
| 	libF77 and libI77 that are incompatible with f2c -- they
 | |
| 	provide some differently named routines or routines with the
 | |
| 	names that f2c expects, but with different calling sequences.
 | |
| 	On such systems, the recommended procedure is to merge
 | |
| 	libf77 and libi77 into a single library, say libf2c, to install
 | |
| 	it where you can access it by specifying -lf2c , and to adjust
 | |
| 	the definition of link_msg in sysdep.c appropriately.
 | |
| 
 | |
| f2c.ps	Postscript for a technical report on f2c.  After you strip the
 | |
| 	mail header, the first line should be "%!PS".
 | |
| 
 | |
| fixes	The complete change log, reporting bug fixes and other changes.
 | |
| 	(Some recent change-log entries are given below).
 | |
| 
 | |
| fc	A shell script that uses f2c and imitates much of the behavior
 | |
| 	of commonly found f77 commands.  You will almost certainly
 | |
| 	need to adjust some of the shell-variable assignments to make
 | |
| 	this script work on your system.
 | |
| 
 | |
| 
 | |
| SUBDIRECTORY:
 | |
| 
 | |
| f2c/src	Source for the converter itself, including a file of checksums
 | |
| 	and source for a program to compute the checksums (to verify
 | |
| 	correct transmission of the source), is available: ask netlib to
 | |
| 		send all from f2c/src
 | |
| 	If the checksums show damage to just a few source files, or if
 | |
| 	the change log file (see "fixes" below) reports corrections to
 | |
| 	some source files, you can request those files individually
 | |
| 	"from f2c/src".  For example, to get defs.h and xsum0.out, you
 | |
| 	would ask netlib to
 | |
| 		send defs.h xsum0.out from f2c/src
 | |
| 	"all from f2c/src" is 649642 bytes long.
 | |
| 
 | |
| 	Tip: if asked to send over 99,000 bytes in one request, netlib
 | |
| 	breaks the shipment into 1000 line pieces and sends each piece
 | |
| 	separately (since otherwise some mailers might gag).  To avoid
 | |
| 	the hassle of reassembling the pieces, try to keep each request
 | |
| 	under 99,000 bytes long.  The final number in each line of
 | |
| 	xsum0.out gives the length of each file in f2c/src.  For
 | |
| 	example,
 | |
| 		send exec.c expr.c from f2c/src
 | |
| 		send format.c format_data.c from f2c/src
 | |
| 	will give you slightly less hassle than
 | |
| 		send exec.c expr.c format.c format_data.c from f2c/src
 | |
| 
 | |
| 	If you have trouble generating gram.c, you can ask netlib to
 | |
| 		send gram.c from f2c/src
 | |
| 	Then `xsum gram.c` should report
 | |
| 		gram.c	efa337b3	57282
 | |
| 
 | |
| NOTE:	For now, you may exercise f2c by sending netlib a message whose
 | |
| 	first line is "execute f2c" and whose remaining lines are
 | |
| 	the Fortran 77 source that you wish to have converted.
 | |
| 	Return mail brings you the resulting C, with f2c's error
 | |
| 	messages between #ifdef uNdEfInEd and #endif at the end.
 | |
| 	(To understand line numbers in the error messages, regard
 | |
| 	the "execute f2c" line as line 0.  It is stripped away by
 | |
| 	the netlib software before f2c sees your Fortran input.)
 | |
| 	Options described in the man page may be transmitted to
 | |
| 	netlib by having the first line of input be a comment
 | |
| 	whose first 6 characters are "c$f2c " and whose remaining
 | |
| 	characters are the desired options, e.g., "c$f2c -R -u".
 | |
| 	This scheme may change -- ask netlib to
 | |
|                send index from f2c
 | |
|         if you do not get the behavior you expect.
 | |
| 
 | |
| 	During the initial experimental period, incoming Fortran
 | |
| 	will be saved in a file.  Don't send any secrets!
 | |
| 
 | |
| 
 | |
| BUGS:	Please send bug reports (including the shortest example
 | |
| 	you can find that illustrates the bug) to research!dmg
 | |
| 	or dmg@research.att.com .  You might first check whether
 | |
| 	the bug goes away when you turn optimization off.
 | |
| 
 | |
| 
 | |
| NOTE:	f2c.h defines several types, e.g., real, integer, doublereal.
 | |
| 	The definitions in f2c.h are suitable for most machines, but if
 | |
| 	your machine has sizeof(double) > 2*sizeof(long), you may need
 | |
| 	to adjust f2c.h appropriately.  f2c assumes
 | |
| 		sizeof(doublecomplex) = 2*sizeof(doublereal)
 | |
| 		sizeof(doublereal) = sizeof(complex)
 | |
| 		sizeof(doublereal) = 2*sizeof(real)
 | |
| 		sizeof(real) = sizeof(integer)
 | |
| 		sizeof(real) = sizeof(logical)
 | |
| 		sizeof(real) = 2*sizeof(shortint)
 | |
| 	EQUIVALENCEs may not be translated correctly if these
 | |
| 	assumptions are violated.
 | |
| 
 | |
| 	There exists a C compiler that objects to the lines
 | |
| 		typedef VOID C_f;	/* complex function */
 | |
| 		typedef VOID H_f;	/* character function */
 | |
| 		typedef VOID Z_f;	/* double complex function */
 | |
| 	in f2c.h .  If yours is such a compiler, do two things:
 | |
| 	1. Complain to your vendor about this compiler bug.
 | |
| 	2. Find the line
 | |
| 		#define VOID void
 | |
| 	   in f2c.h and change it to
 | |
| 		#define VOID int
 | |
| 	(For readability, the f2c.h lines shown above have had two
 | |
| 	tabs inserted before their first character.)
 | |
| 
 | |
| FTP:	All the material described above is now available by ftp from
 | |
| 	research.att.com (login: netlib; Password: your E-mail address;
 | |
| 	cd f2c).  You must uncompress the .Z files once you have a
 | |
| 	copy of them, e.g., by
 | |
| 		uncompress *.Z
 | |
| 
 | |
| -----------------
 | |
| Recent change log (partial)
 | |
| -----------------
 | |
| 
 | |
| Tue Jan 15 12:00:24 EST 1991:
 | |
|   Fix bug when two equivalence groups are merged, the second with
 | |
| nonzero offset, and the result is then merged into a common block.
 | |
| Example:
 | |
|       INTEGER W(3), X(3), Y(3), Z(3)
 | |
|       COMMON /ZOT/ Z
 | |
|       EQUIVALENCE (W(1),X(1)), (X(2),Y(1)), (Z(3),X(1))
 | |
| ***** W WAS GIVEN THE WRONG OFFSET
 | |
|   Recognize Fortran 90's optional NML= in NAMELIST READs and WRITEs.
 | |
| (Currently NML= and FMT= are treated as synonyms -- there's no
 | |
| error message if, e.g., NML= specifies a format.)
 | |
|   libi77: minor adjustment to allow internal READs from character
 | |
| string constants in read-only memory.
 | |
| 
 | |
| Wed Jan 23 00:38:48 EST 1991:
 | |
|   Allow hex, octal, and binary constants to have the qualifying letter
 | |
| (z, x, o, or b) either before or after the quoted string containing the
 | |
| digits.  For now this change will not be reflected in f2c.ps .
 | |
| 
 | |
| Tue Jan 29 16:23:45 EST 1991:
 | |
|   Arrange for character-valued statement functions to give results of
 | |
| the right length (that of the statement function's name).
 | |
| 
 | |
| Wed Jan 30 07:05:32 EST 1991:
 | |
|   More tweaks for character-valued statement functions: an error
 | |
| check and an adjustment so a right-hand side of nonconstant length
 | |
| (e.g., a substring) is handled right.
 | |
| 
 | |
| Thu Jan 31 13:53:44 EST 1991:
 | |
|   Add a test after the cleanup call generated for I/O statements with
 | |
| ERR= or END= clauses to catch the unlikely event that the cleanup
 | |
| routine encounters an error.
 | |
| 
 | |
| Tue Feb  5 01:39:36 EST 1991:
 | |
|   Change Mktemp to mktmp (for the benefit of systems so brain-damaged
 | |
| that they do not distinguish case in external names -- and that for
 | |
| some reason want to load mktemp).  Try to get xsum0.out right this
 | |
| time (it somehow didn't get updated on 4 Feb. 1991).
 | |
|   Add note to libi77/README about adjusting the interpretation of
 | |
| RECL= specifiers in OPENs for direct unformatted I/O.
 | |
| 
 | |
| Thu Feb  7 17:24:42 EST 1991:
 | |
|   New option -r casts values of REAL functions, including intrinsics,
 | |
| to REAL.  This only matters for unportable code like
 | |
| 	real r
 | |
| 	r = asin(1.)
 | |
| 	if (r .eq. asin(1.)) ...
 | |
| [The behavior of such code varies with the Fortran compiler used --
 | |
| and sometimes is affected by compiler options.]  For now, the man page
 | |
| at the end of f2c.ps is the only part of f2c.ps that reflects this new
 | |
| option.
 | |
| 
 | |
| Fri Feb  8 18:12:51 EST 1991:
 | |
|   Cast pointer differences passed as arguments to the appropriate type.
 | |
| This matters, e.g., with MSDOS compilers that yield a long pointer
 | |
| difference but have int == short.
 | |
|   Disallow nonpositive dimensions.
 | |
| 
 | |
| Fri Feb 15 12:24:15 EST 1991:
 | |
|   Change %d to %ld in sprintf call in putpower in putpcc.c.
 | |
|   Free more memory (e.g. allowing translation of larger Fortran
 | |
| files under MS-DOS).
 | |
|   Recognize READ (character expression)
 | |
| as formatted I/O with the format given by the character expression.
 | |
|   Update year in Notice.
 | |
| 
 | |
| Mon Mar  4 15:19:42 EST 1991:
 | |
|   Fix bug in passing the real part of a complex argument to an intrinsic
 | |
| function.  Omit unneeded parentheses in nested calls to intrinsics.
 | |
| Example:
 | |
| 	subroutine foo(x, y)
 | |
| 	complex y
 | |
| 	x = exp(sin(real(y))) + exp(imag(y))
 | |
| 	end
 | |
| 
 | |
| Fri Mar  8 15:05:42 EST 1991:
 | |
|   Fix a comment in expr.c; omit safstrncpy.c (which had bugs in
 | |
| cases not used by f2c).
 | |
| 
 | |
| Wed Mar 13 02:27:23 EST 1991:
 | |
|   Initialize firstmemblock->next in mem_init in mem.c .  [On most
 | |
| systems it was fortuituously 0, but with System V, -lmalloc could
 | |
| trip on this missed initialization.]
 | |
| 
 | |
| Wed Mar 13 11:47:42 EST 1991:
 | |
|   Fix a reference to freed memory.
 | |
| 
 | |
| Wed Mar 27 00:42:19 EST 1991:
 | |
|   Fix a memory fault caused by such illegal Fortran as
 | |
|        function foo
 | |
|        x = 3
 | |
|        logical foo	! declaration among executables
 | |
|        foo=.false.	! used to suffer memory fault
 | |
|        end
 | |
| 
 | |
| Fri Apr  5 08:30:31 EST 1991:
 | |
|   Fix loss of % in some format expressions, e.g.
 | |
| 	write(*,'(1h%)')
 | |
|   Fix botch introduced 27 March 1991 that caused subroutines with
 | |
| multiple entry points to have extraneous declarations of ret_val.
 | |
| 
 | |
| Fri Apr  5 12:44:02 EST 1991
 | |
|   Try again to omit extraneous ret_val declarations -- this morning's
 | |
| fix was sometimes wrong.
 | |
| 
 | |
| Mon Apr  8 13:47:06 EDT 1991:
 | |
|   Arrange for s_rnge to have the right prototype under -A -C .
 | |
| 
 | |
| Wed Apr 17 13:36:03 EDT 1991:
 | |
|   New fatal error message for apparent invocation of a recursive
 | |
| statement function.
 | |
| 
 | |
| Thu Apr 25 15:13:37 EDT 1991:
 | |
|   F2c and libi77 adjusted so NAMELIST works with -i2.  (I forgot
 | |
| about -i2 when adding NAMELIST.)  This required a change to f2c.h
 | |
| (that only affects NAMELIST I/O under -i2.)  Man-page description of
 | |
| -i2 adjusted to reflect that -i2 stores array lengths in short ints.
 | |
| 
 | |
| Fri Apr 26 02:54:41 EDT 1991:
 | |
|   Libi77: fix some bugs in NAMELIST reading of multi-dimensional arrays
 | |
| (file rsne.c).
 | |
| 
 | |
| Tue May  7 09:04:48 EDT 1991:
 | |
|   gram.c added to f2c/src (for folks who have trouble generating it.  It
 | |
| is not in "all from f2c", nor in the list of current timestamps below.)
 | |
| 
 | |
| Thu May  9 02:13:51 EDT 1991:
 | |
|   Omit a trailing space in expr.c (could cause a false xsum value if
 | |
| a mailer drops the trailing blank).
 | |
| 
 | |
| Thu May 16 13:14:59 EDT 1991:
 | |
|   libi77: increase LEFBL in lio.h to overcome a NeXT bug.
 | |
|   Tweak for compilers that recognize "nested" comments: inside comments,
 | |
| turn /* into /+ (as well as */ into +/).
 | |
| 
 | |
| Sat May 25 11:44:25 EDT 1991:
 | |
|   libf77: s_rnge: declare line long int rather than int.
 | |
| 
 | |
| Fri May 31 07:51:50 EDT 1991:
 | |
|   libf77: system_: officially return status.
 | |
| 
 | |
| Mon Jun 17 16:52:53 EDT 1991:
 | |
|   Minor tweaks: omit unnecessary declaration of strcmp (that caused
 | |
| trouble on a system where strcmp was a macro) from misc.c; add
 | |
| SHELL = /bin/sh to makefiles.
 | |
|   Fix a dereference of null when a CHARACTER*(*) declaration appears
 | |
| (illegally) after DATA.  Complain only once per subroutine about
 | |
| declarations appearing after DATA.
 | |
| 
 | |
| Mon Jul  1 00:28:13 EDT 1991:
 | |
|   Add test and error message for illegal use of subroutine names, e.g.
 | |
|       SUBROUTINE ZAP(A)
 | |
|       ZAP = A
 | |
|       END
 | |
| 
 | |
| Mon Jul  8 21:49:20 EDT 1991:
 | |
|   Issue a warning about things like
 | |
| 	integer i
 | |
| 	i = 'abc'
 | |
| (which is treated as i = ichar('a')).  [It might be nice to treat 'abc'
 | |
| as an integer initialized (in a DATA statement) with 'abc', but
 | |
| other matters have higher priority.]
 | |
|   Render
 | |
| 	i = ichar('A')
 | |
| as
 | |
| 	i = 'A';
 | |
| rather than
 | |
| 	i = 65;
 | |
| (which assumes ASCII).
 | |
| 
 | |
| Fri Jul 12 07:41:30 EDT 1991:
 | |
|   Note added to README about erroneous definitions of __STDC__ .
 | |
| 
 | |
| Sat Jul 13 13:38:54 EDT 1991:
 | |
|   Fix bugs in double type convesions of complex values, e.g.
 | |
| sngl(real(...)) or dble(real(...)) (where ... is complex).
 | |
| 
 | |
| Mon Jul 15 13:21:42 EDT 1991:
 | |
|   Fix bug introduced 8 July 1991 that caused erroneous warnings
 | |
| "ichar([first char. of] char. string) assumed for conversion to numeric"
 | |
| when a subroutine had an array of character strings as an argument.
 | |
| 
 | |
| Wed Aug 28 01:12:17 EDT 1991:
 | |
|   Omit an unused function in format.c, an unused variable in proc.c .
 | |
|   Under -r8, promote complex to double complex (as the man page claims).
 | |
| 
 | |
| Fri Aug 30 17:19:17 EDT 1991:
 | |
|   f2c.ps updated: slightly expand description of intrinsics and,or,xor,
 | |
| not; add mention of intrinsics lshift, rshift; add note about f2c
 | |
| accepting Fortran 90 inline comments (starting with !); update Cobalt
 | |
| Blue address.
 | |
| 
 | |
| Tue Sep 17 07:17:33 EDT 1991:
 | |
|   libI77: err.c and open.c modified to use modes "rb" and "wb"
 | |
| when (f)opening unformatted files; README updated to point out
 | |
| that it may be necessary to change these modes to "r" and "w"
 | |
| on some non-ANSI systems.
 | |
| 
 | |
| Current timestamps of files in "all from f2c/src", sorted by time,
 | |
| appear below (mm/dd/year hh:mm:ss).  To bring your source up to date,
 | |
| obtain source files with a timestamp later than the time shown in your
 | |
| version.c.  Note that the time shown in the current version.c is the
 | |
| timestamp of the source module that immediately follows version.c below:
 | |
| 
 | |
|  8/28/1991   0:29:01  xsum0.out
 | |
|  8/28/1991   0:23:26  version.c
 | |
|  8/28/1991   0:07:02  main.c
 | |
|  8/28/1991   0:07:01  gram.dcl
 | |
|  8/28/1991   0:07:01  expr.c
 | |
|  8/28/1991   0:07:00  defs.h
 | |
|  8/13/1991   9:06:09  format.c
 | |
|  8/13/1991   9:04:25  proc.c
 | |
|  7/13/1991  12:58:37  putpcc.c
 | |
|  7/12/1991   7:25:33  README
 | |
|  7/05/1991   7:16:57  intr.c
 | |
|  6/17/1991  16:43:01  gram.head
 | |
|  6/06/1991   0:41:56  makefile
 | |
|  6/05/1991   8:34:09  misc.c
 | |
|  5/16/1991  13:06:06  p1output.c
 | |
|  4/25/1991  13:20:26  f2c.1
 | |
|  4/25/1991  12:56:19  f2c.h
 | |
|  4/25/1991  12:51:27  f2c.1t
 | |
|  4/25/1991  12:10:22  io.c
 | |
|  4/05/1991   7:43:45  mem.c
 | |
|  3/13/1991  11:18:09  output.c
 | |
|  3/08/1991  10:14:45  niceprintf.c
 | |
|  2/15/1991  12:08:26  Notice
 | |
|  2/08/1991  11:29:18  gram.exec
 | |
|  2/08/1991  11:29:18  malloc.c
 | |
|  2/05/1991   0:52:39  exec.c
 | |
|  1/22/1991  19:25:10  lex.c
 | |
|  1/15/1991   1:21:00  equiv.c
 | |
| 12/16/1990  16:46:20  xsum.c
 | |
| 12/07/1990  17:37:08  names.c
 | |
| 11/30/1990   9:47:48  data.c
 | |
|  7/26/1990  10:54:47  parse_args.c
 | |
|  7/26/1990  10:44:26  parse.h
 | |
|  6/19/1990   0:18:23  formatdata.c
 | |
|  5/11/1990  14:17:04  error.c
 | |
|  4/23/1990  17:35:47  sysdep.h
 | |
|  4/23/1990  16:37:50  sysdep.c
 | |
|  4/18/1990  12:25:19  init.c
 | |
|  4/18/1990  12:25:19  pread.c
 | |
|  4/18/1990  12:25:18  cds.c
 | |
|  4/10/1990   0:00:38  put.c
 | |
|  4/06/1990   0:00:57  gram.io
 | |
|  4/05/1990  23:40:09  gram.expr
 | |
|  3/27/1990  16:39:18  names.h
 | |
|  3/27/1990  10:05:15  p1defs.h
 | |
|  3/27/1990  10:05:14  defines.h
 | |
|  2/25/1990   9:04:30  vax.c
 | |
|  2/16/1990  10:37:27  tokens
 | |
|  2/14/1990   2:00:20  format.h
 | |
|  2/14/1990   1:38:46  output.h
 | |
|  2/14/1990   0:54:06  iob.h
 | |
|  2/03/1990   0:58:26  niceprintf.h
 | |
|  1/29/1990  13:26:52  memset.c
 | |
|  1/11/1990  18:02:51  ftypes.h
 | |
|  1/07/1990   1:20:01  usignal.h
 | |
| 11/27/1989   8:27:37  machdefs.h
 | |
|  7/01/1989  11:59:44  pccdefs.h
 |