
====== 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, and
	install it where you can access it by specifying -lf2c .

f2c.ps	Postscript for a technical report on f2c.

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 649641 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

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 .


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 anonymous
	ftp from research.att.com -- look in dist/f2c .  You must
	uncompress the .Z files once you have a copy of them, e.g., by
		uncompress *.Z

-----------------
Recent change log (partial)
-----------------

Wed Oct 17 16:40:37 EDT 1990:
  libf77, libi77: minor cleanups: _cleanup() and abort() invocations
replaced by invocations of sig_die in main.c; some error messages
previously lost in buffers will now appear.

Mon Oct 22 16:11:27 EDT 1990:
  libf77: separate sig_die from main (for folks who don't want to use
the main in libF77).
  libi77: minor tweak to comments in README.

Fri Nov  2 13:49:35 EST 1990:
  Use two underscores rather than one in generated temporary variable
names to avoid conflict with COMMON names.  f2c.ps updated to reflect
this change and the NAME= extension introduced 15 Oct.

Mon Nov  5 16:43:55 EST 1990:
  libi77: changes to open.c (and err.c): complain if an open stmt
specifies new= and the file already exists (as specified by Fortrans 77
and 90); allow file= to be omitted in open stmts and allow
status='replace' (Fortran 90 extensions).

Fri Nov 30 10:10:14 EST 1990:
  Adjust malloc.c for unusual systems whose sbrk() can return values
not properly aligned for doubles.
  Arrange for slightly more helpful and less repetitive warnings for
non-character variables initialized with character data; these warnings
are (still) suppressed by -w66.

Fri Nov 30 15:57:59 EST 1990:
  Minor tweak to README (about changing VOID in f2c.h).

Mon Dec  3 07:36:20 EST 1990:
  Fix spelling of "character" in f2c.1t.

Tue Dec  4 09:48:56 EST 1990:
  Remark about link_msg and libf2c added to f2c/README.

Thu Dec  6 08:33:24 EST 1990:
  Under -U, render label nnn as L_nnn rather than Lnnn.

Fri Dec  7 18:05:00 EST 1990:
  Add more names from f2c.h (e.g. integer, real) to the c_keywords
list of names to which an underscore is appended to avoid confusion.

Mon Dec 10 19:11:15 EST 1990:
  Minor tweaks to makefile (./xsum) and README (binread/binwrite).
  libi77: a few modifications for POSIX systems; meant to be invisible
elsewhere.

Sun Dec 16 23:03:16 EST 1990:
  Fix null dereference caused by unusual erroneous input, e.g.
	call foo('abc')
	end
	subroutine foo(msg)
	data n/3/
	character*(*) msg
	end
(Subroutine foo is illegal because the character statement comes after a
data statement.)
  Use decimal rather than hex constants in xsum.c (to prevent
erroneous warning messages about constant overflow).

Mon Dec 17 12:26:40 EST 1990:
  Fix rare extra underscore in character length parameters passed
for multiple entry points.

Wed Dec 19 17:19:26 EST 1990:
  Allow generation of C despite error messages about bad alignment forced
by equivalence.
  Allow variable-length concatenations in I/O statements, such as
	open(3, file=bletch(1:n) // '.xyz')

Fri Dec 28 17:08:30 EST 1990:
  Fix bug under -p with formats and internal I/O "units" in COMMON, as in 
      COMMON /FIGLEA/F
      CHARACTER*20 F
      F = '(A)'
      WRITE (*,FMT=F) 'Hello, world!'
      END

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:

12/28/1990  16:24:13  xsum0.out
12/28/1990  16:16:44  version.c
12/28/1990  16:16:33  io.c
12/19/1990  16:30:41  putpcc.c
12/19/1990  15:32:31  equiv.c
12/17/1990  11:32:26  proc.c
12/16/1990  22:55:25  misc.c
12/16/1990  16:46:20  xsum.c
12/10/1990  18:44:24  makefile
12/10/1990  18:44:21  README
12/07/1990  17:37:08  names.c
12/03/1990   7:29:45  f2c.1
12/03/1990   7:14:26  f2c.1t
11/30/1990   9:47:48  data.c
11/15/1990  18:00:20  malloc.c
10/15/1990  19:58:17  mem.c
 9/27/1990  15:58:58  expr.c
 9/04/1990  12:18:27  main.c
 8/28/1990   1:09:28  format.c
 7/26/1990  10:54:47  parse_args.c
 7/26/1990  10:44:26  parse.h
 6/26/1990  11:04:46  p1output.c
 6/19/1990   7:21:39  output.c
 6/19/1990   7:21:38  lex.c
 6/19/1990   0:18:23  formatdata.c
 5/11/1990  14:17:04  error.c
 4/29/1990   9:40:47  exec.c
 4/23/1990  17:35:47  sysdep.h
 4/23/1990  16:37:50  sysdep.c
 4/18/1990  12:25:19  pread.c
 4/18/1990  12:25:19  init.c
 4/18/1990  12:25:18  cds.c
 4/17/1990  23:24:07  defs.h
 4/14/1990   9:32:00  niceprintf.c
 4/10/1990   0:00:38  put.c
 4/06/1990   0:00:57  gram.io
 4/05/1990  23:40:09  gram.exec
 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
 3/27/1990   7:54:52  gram.head
 2/25/1990   9:04:30  vax.c
 2/16/1990  17:29:40  gram.dcl
 2/16/1990  10:37:27  tokens
 2/15/1990  16:57:16  intr.c
 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/20/1990  23:03:00  f2c.h
 1/20/1990  22:54:23  safstrncpy.c
 1/11/1990  18:02:51  ftypes.h
 1/09/1990  16:50:45  Notice
 1/07/1990   1:20:01  usignal.h
11/27/1989   8:27:37  machdefs.h
 7/01/1989  11:59:44  pccdefs.h
