home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21fs.zip / octave / f2c / readme < prev   
Text File  |  2000-01-15  |  15KB  |  408 lines

  1.  
  2. ====== old index for f2c, now "readme from f2c" ============
  3.  
  4. FILES:
  5.  
  6. f2c.h    Include file necessary for compiling output of the converter.
  7.     See the second NOTE below.
  8.  
  9. f2c.1    Man page for f2c.
  10.  
  11. f2c.1t    Source for f2c.1 (to be processed by troff -man or nroff -man).
  12.  
  13. libf77    Library of non I/O support routines the generated C may need.
  14.     Fortran main programs result in a C function named MAIN__ that
  15.     is meant to be invoked by the main() in libf77.
  16.  
  17. libi77    Library of Fortran I/O routines the generated C may need.
  18.     Note that some vendors (e.g., BSD, Sun and MIPS) provide a
  19.     libF77 and libI77 that are incompatible with f2c -- they
  20.     provide some differently named routines or routines with the
  21.     names that f2c expects, but with different calling sequences.
  22.     On such systems, the recommended procedure is to merge
  23.     libf77 and libi77 into a single library, say libf2c, and to
  24.         install it where you can access it by specifying -lf2c .  The
  25.         definition of link_msg in sysdep.c assumes this arrangement.
  26.  
  27. f2c.ps    Postscript for a technical report on f2c.  After you strip the
  28.     mail header, the first line should be "%!PS".
  29.  
  30. fixes    The complete change log, reporting bug fixes and other changes.
  31.     (Some recent change-log entries are given below).
  32.  
  33. fc    A shell script that uses f2c and imitates much of the behavior
  34.     of commonly found f77 commands.  You will almost certainly
  35.     need to adjust some of the shell-variable assignments to make
  36.     this script work on your system.
  37.  
  38.  
  39. SUBDIRECTORY:
  40.  
  41. f2c/src    Source for the converter itself, including a file of checksums
  42.     and source for a program to compute the checksums (to verify
  43.     correct transmission of the source), is available: ask netlib to
  44.         send all from f2c/src
  45.     If the checksums show damage to just a few source files, or if
  46.     the change log file (see "fixes" below) reports corrections to
  47.     some source files, you can request those files individually
  48.     "from f2c/src".  For example, to get defs.h and xsum0.out, you
  49.     would ask netlib to
  50.         send defs.h xsum0.out from f2c/src
  51.     "all from f2c/src" is about 640 kilobytes long; for convenience
  52.     (and checksums), it includes copies of f2c.h, f2c.1, and f2c.1t.
  53.  
  54.     Tip: if asked to send over 99,000 bytes in one request, netlib
  55.     breaks the shipment into 1000 line pieces and sends each piece
  56.     separately (since otherwise some mailers might gag).  To avoid
  57.     the hassle of reassembling the pieces, try to keep each request
  58.     under 99,000 bytes long.  The final number in each line of
  59.     xsum0.out gives the length of each file in f2c/src.  For
  60.     example,
  61.         send exec.c expr.c from f2c/src
  62.         send format.c format_data.c from f2c/src
  63.     will give you slightly less hassle than
  64.         send exec.c expr.c format.c format_data.c from f2c/src
  65.     Alternatively, if all the mailers in your return path allow
  66.     long messages, you can supply an appropriate mailsize line in
  67.     your netlib request, e.g.
  68.         mailsize 200k
  69.         send exec.c expr.c format.c format_data.c from f2c/src
  70.  
  71.     If you have trouble generating gram.c, you can ask netlib to
  72.         send gram.c from f2c/src
  73.     Then `xsum gram.c` should report
  74.         gram.c    d1ac784    57350
  75.  
  76. NOTE:    For now, you may exercise f2c by sending netlib a message whose
  77.     first line is "execute f2c" and whose remaining lines are
  78.     the Fortran 77 source that you wish to have converted.
  79.     Return mail brings you the resulting C, with f2c's error
  80.     messages between #ifdef uNdEfInEd and #endif at the end.
  81.     (To understand line numbers in the error messages, regard
  82.     the "execute f2c" line as line 0.  It is stripped away by
  83.     the netlib software before f2c sees your Fortran input.)
  84.     Options described in the man page may be transmitted to
  85.     netlib by having the first line of input be a comment
  86.     whose first 6 characters are "c$f2c " and whose remaining
  87.     characters are the desired options, e.g., "c$f2c -R -u".
  88.     This scheme may change -- ask netlib to
  89.                send index from f2c
  90.         if you do not get the behavior you expect.
  91.  
  92.     During the initial experimental period, incoming Fortran
  93.     will be saved in a file.  Don't send any secrets!
  94.  
  95.  
  96. BUGS:    Please send bug reports (including the shortest example
  97.     you can find that illustrates the bug) to research!dmg
  98.     or dmg@research.att.com .  You might first check whether
  99.     the bug goes away when you turn optimization off.
  100.  
  101.  
  102. NOTE:    f2c.h defines several types, e.g., real, integer, doublereal.
  103.     The definitions in f2c.h are suitable for most machines, but if
  104.     your machine has sizeof(double) > 2*sizeof(long), you may need
  105.     to adjust f2c.h appropriately.  f2c assumes
  106.         sizeof(doublecomplex) = 2*sizeof(doublereal)
  107.         sizeof(doublereal) = sizeof(complex)
  108.         sizeof(doublereal) = 2*sizeof(real)
  109.         sizeof(real) = sizeof(integer)
  110.         sizeof(real) = sizeof(logical)
  111.         sizeof(real) = 2*sizeof(shortint)
  112.     EQUIVALENCEs may not be translated correctly if these
  113.     assumptions are violated.
  114.  
  115.     There exists a C compiler that objects to the lines
  116.         typedef VOID C_f;    /* complex function */
  117.         typedef VOID H_f;    /* character function */
  118.         typedef VOID Z_f;    /* double complex function */
  119.     in f2c.h .  If yours is such a compiler, do two things:
  120.     1. Complain to your vendor about this compiler bug.
  121.     2. Find the line
  122.         #define VOID void
  123.        in f2c.h and change it to
  124.         #define VOID int
  125.     (For readability, the f2c.h lines shown above have had two
  126.     tabs inserted before their first character.)
  127.  
  128. FTP:    All the material described above is now available by anonymous
  129.     ftp from netlib.att.com (login: anonymous; Password: your E-mail
  130.     address; cd netlib/f2c).  Note that you can say, e.g.,
  131.  
  132.         cd /netlib/f2c/src
  133.         binary
  134.         prompt
  135.         mget *.Z
  136.  
  137.     to get all the .Z files in src.  You must uncompress the .Z
  138.     files once you have a copy of them, e.g., by
  139.  
  140.         uncompress *.Z
  141.  
  142.     Subdirectory msdos contains two PC versions of f2c,
  143.     f2c.exe.Z and f2cx.exe.Z; the latter uses extended memory.
  144.     The README in that directory provides more details.
  145.  
  146. -----------------
  147. Recent change log (partial)
  148. -----------------
  149.  
  150. Thu Sep  9 08:51:21 EDT 1993
  151.   Adjust "include" to interpret file names relative to the directory
  152. of the file that contains the "include".
  153.  
  154. Fri Sep 24 00:56:12 EDT 1993
  155.   Fix offset error resulting from repeating the same equivalence
  156. statement twice.  Example:
  157.     real a(2), b(2)
  158.     equivalence (a(2), b(2))
  159.     equivalence (a(2), b(2))
  160.     end
  161.   Increase MAXTOKENLEN (to roughly the largest allowed by ANSI C).
  162.  
  163. Mon Sep 27 08:55:09 EDT 1993
  164.   libi77: endfile.c: protect #include "sys/types.h" with
  165. #ifndef NON_UNIX_STDIO; Version.c not changed.
  166.  
  167. Fri Oct 15 15:37:26 EDT 1993
  168.   Fix rarely seen parsing bug illustrated by
  169.     subroutine foo(xabcdefghij)
  170.     character*(*) xabcdefghij
  171.                IF (xabcdefghij.NE.'##') GOTO 40
  172.  40    end
  173. in which the spacing in the IF line is crucial.
  174.  
  175. Thu Oct 21 13:55:11 EDT 1993
  176.   Give more meaningful error message (then "unexpected character in
  177. cds") when constant simplification leads to Infinity or NaN.
  178.  
  179. Wed Nov 10 15:01:05 EST 1993
  180.   libi77: backspace.c: adjust, under -DMSDOS, to cope with MSDOS
  181. text files, as handled by some popular PC C compilers.  Beware:
  182. the (defective) libraries associated with these compilers assume lines
  183. end with \r\n (conventional MS-DOS text files) -- and ftell (and
  184. hence the current implementation of backspace) screws up if lines with
  185. just \n.
  186.  
  187. Thu Nov 18 09:37:47 EST 1993
  188.   Give a better error (than "control stack empty") for an extraneous
  189. ENDDO.  Example:
  190.     enddo
  191.     end
  192.   Update comments about ftp in "readme from f2c".
  193.  
  194. Sun Nov 28 17:26:50 EST 1993
  195.   Change format of time stamp in version.c to yyyymmdd.
  196.   Sort parameter adjustments (or complain of impossible dependencies)
  197. so that dummy arguments are referenced only after being adjusted.
  198. Example:
  199.     subroutine foo(a,b)
  200.     integer a(2)        ! a must be adjusted before b
  201.     double precision b(a(1),a(2))
  202.     call goo(b(3,4))
  203.     end
  204.   Adjust structs for initialized common blocks and equivalence classes
  205. to omit the trailing struct component added to force alignment when
  206. padding already forces the desired alignment.  Example:
  207.     PROGRAM TEST
  208.     COMMON /Z/ A, CC
  209.     CHARACTER*4 CC
  210.     DATA cc /'a'/
  211.     END
  212. now gives
  213.     struct {
  214.         integer fill_1[1];
  215.         char e_2[4];
  216.         } z_ = { {0}, {'a', ' ', ' ', ' '} };
  217. rather than
  218. struct {
  219.     integer fill_1[1];
  220.     char e_2[4];
  221.     real e_3;
  222.     } z_ = { {0}, {'a', ' ', ' ', ' '}, (float)0. };
  223.  
  224. Wed Dec  8 16:24:43 EST 1993
  225.   Adjust lex.c to recognize # nnn "filename" lines emitted by cpp;
  226. this affects the file names and line numbers in error messages and
  227. the #line lines emitted under -g.
  228.   Under -g, arrange for a file that starts with an executable
  229. statement to have the first #line line indicate line 1, rather
  230. than the line number of the END statement ending the main program.
  231.   Adjust fc script to run files ending in .F through /lib/cpp.
  232.   Fix bug ("Impossible tag 2") in
  233.     if (t .eq. (0,2)) write(*,*) 'Bug!'
  234.     end
  235.   libi77: iio.c: adjust internal formatted reads to treat short records
  236. as though padded with blanks (rather than causing an "off end of record"
  237. error).
  238.  
  239. Wed Dec 15 15:19:15 EST 1993
  240.   fc: adjusted for .F files to pass -D and -I options to cpp.
  241.  
  242. Fri Dec 17 20:03:38 EST 1993
  243.   Fix botch introduced 28 Nov. 1993 in vax.c; change "version of"
  244. to "version".
  245.  
  246. Tue Jan  4 15:39:52 EST 1994
  247.   msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only).
  248.  
  249. Wed Jan 19 08:55:19 EST 1994
  250.   Arrange to accept
  251.     integer    Nx, Ny, Nz
  252.     parameter    (Nx = 10, Ny = 20)
  253.     parameter    (Nz = max(Nx, Ny))
  254.     integer    c(Nz)
  255.     call foo(c)
  256.     end
  257. rather than complaining "Declaration error for c: adjustable dimension
  258. on non-argument".  The necessary changes cause some hitherto unfolded
  259. constant expressions to be folded.
  260.   Accept BYTE as a synonym for INTEGER*1.
  261.  
  262. Thu Jan 27 08:57:40 EST 1994
  263.   Fix botch in changes of 19 Jan. 1994 that broke entry points with
  264. multi-dimensional array arguments that did not appear in the subprogram
  265. argument list and whose leading dimensions depend on arguments.
  266.  
  267. Mon Feb  7 09:24:30 EST 1994
  268.   Remove artifact in "fc" script that caused -O to be ignored:
  269.     87c87
  270.     <        # lcc ignores -O...
  271.     ---
  272.     >        CFLAGS="$CFLAGS $O"
  273.  
  274. Sun Feb 20 17:04:58 EST 1994
  275.   Fix bugs reading .P files for routines with arguments of type
  276. INTEGER*1, INTEGER*8, LOGICAL*2.
  277.   Fix glitch in reporting inconsistent arguments for routines involving
  278. character arguments:  "arg n" had n too large by the number of
  279. character arguments.
  280.  
  281. Tue Feb 22 20:50:08 EST 1994
  282.   Trivial changes to data.c format.c main.c niceprintf.c output.h and
  283. sysdep.h (consistency improvements).
  284.   libI77: lread.c: check for NULL return from realloc.
  285.  
  286. Fri Feb 25 23:56:08 EST 1994
  287.   output.c, sysdep.h: arrange for -DUSE_DTOA to use dtoa.c and g_fmt.c
  288. for correctly rounded decimal values on IEEE-arithmetic machines
  289. (plus machines with VAX and IBM-mainframe arithmetic).  These
  290. routines are available from netlib's fp directory.
  291.   msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only); the
  292. former uses -DUSE_DTOA to keep 12 from printing as 12.000000000000001.
  293.   vax.c: fix wrong arguments to badtag and frchain introduced
  294. 28 Nov. 1993.
  295.   Source for f2c converted to ANSI/ISO format, with the K&R format
  296. available by compilation with -DKR_headers .
  297.   Arrange for (double precision expression) relop (single precision
  298. constant) to retain the single-precision nature of the constant.
  299. Example:
  300.     double precision t
  301.     if (t .eq. 0.3) ...
  302.  
  303. Mon Feb 28 11:40:24 EST 1994
  304.   README updated to reflect a modification just made to netlib's
  305. "dtoa.c from fp":
  306. 96a97,105
  307. > Also add the rule
  308. >
  309. >     dtoa.o: dtoa.c
  310. >         $(CC) -c $(CFLAGS) -DMALLOC=ckalloc -DIEEE... dtoa.c
  311. >
  312. > (without the initial tab) to the makefile, where IEEE... is one of
  313. > IEEE_MC68k, IEEE_8087, VAX, or IBM, depending on your machine's
  314. > arithmetic.  See the comments near the start of dtoa.c.
  315. >
  316.  
  317. Sat Mar  5 09:41:52 EST 1994
  318.   Complain about functions with the name of a previously declared
  319. common block (which is illegal).
  320.   New option -d specifies the directory for output .c and .P files;
  321. f2c.1 and f2c.1t updated.  The former undocumented debug option -dnnn
  322. is now -Dnnn.
  323.  
  324. Thu Mar 10 10:21:44 EST 1994
  325.   libf77: add #undef min and #undef max lines to s_paus.c s_stop.c
  326. and system_.c; Version.c not changed.
  327.   libi77: add -DPad_UDread lines to uio.c and explanation to README:
  328.     Some buggy Fortran programs use unformatted direct I/O to write
  329.     an incomplete record and later read more from that record than
  330.     they have written.  For records other than the last, the unwritten
  331.     portion of the record reads as binary zeros.  The last record is
  332.     a special case: attempting to read more from it than was written
  333.     gives end-of-file -- which may help one find a bug.  Some other
  334.     Fortran I/O libraries treat the last record no differently than
  335.     others and thus give no help in finding the bug of reading more
  336.     than was written.  If you wish to have this behavior, compile
  337.     uio.c with -DPad_UDread .
  338. Version.c not changed.
  339.  
  340. Tue Mar 29 09:26:31 EST 1994
  341.   Adjust make_param so dimensions involving min, max, and other
  342. complicated constant expressions do not provoke error messages
  343. about adjustable dimensions on non-arguments.
  344.  
  345. Current timestamps of files in "all from f2c/src", sorted by time,
  346. appear below (mm/dd/year hh:mm:ss).  To bring your source up to date,
  347. obtain source files with a timestamp later than the time shown in your
  348. version.c.  Note that the time shown in the current version.c is the
  349. timestamp of the source module that immediately follows version.c below:
  350.  
  351.  3/29/1994   9:26:23  xsum0.out
  352.  3/29/1994   8:33:07  version.c
  353.  3/29/1994   8:32:59  data.c
  354.  3/05/1994   2:02:49  f2c.1
  355.  3/05/1994   2:02:42  f2c.1t
  356.  3/05/1994   1:05:18  main.c
  357.  3/05/1994   0:57:28  sysdep.c
  358.  3/05/1994   0:56:34  names.c
  359.  3/05/1994   0:49:54  defs.h
  360.  3/05/1994   0:00:03  proc.c
  361.  3/04/1994  23:58:15  misc.c
  362.  3/04/1994  23:42:15  pread.c
  363.  2/28/1994  11:32:36  README
  364.  2/26/1994  12:18:59  makefile
  365.  2/25/1994  23:52:00  expr.c
  366.  2/25/1994  22:18:14  xsum.c
  367.  2/25/1994  14:16:00  Notice
  368.  2/25/1994  12:31:15  parse_args.c
  369.  2/25/1994  12:18:21  format.c
  370.  2/25/1994  12:18:21  lex.c
  371.  2/25/1994  11:01:20  niceprintf.c
  372.  2/25/1994  10:56:33  error.c
  373.  2/25/1994  10:25:21  gram.head
  374.  2/25/1994  10:24:56  vax.c
  375.  2/25/1994  10:24:56  putpcc.c
  376.  2/25/1994  10:24:56  put.c
  377.  2/25/1994  10:24:55  output.c
  378.  2/25/1994  10:24:55  p1output.c
  379.  2/25/1994  10:24:54  formatdata.c
  380.  2/25/1994  10:24:54  malloc.c
  381.  2/25/1994  10:24:54  io.c
  382.  2/25/1994  10:24:54  mem.c
  383.  2/25/1994  10:24:54  intr.c
  384.  2/25/1994  10:24:54  init.c
  385.  2/25/1994  10:24:53  exec.c
  386.  2/25/1994  10:24:53  equiv.c
  387.  2/25/1994  10:24:52  cds.c
  388.  2/25/1994   2:07:19  parse.h
  389.  2/24/1994  23:24:21  sysdep.h
  390.  2/22/1994  19:07:20  iob.h
  391.  2/22/1994  18:56:53  p1defs.h
  392.  2/22/1994  18:53:46  output.h
  393.  2/22/1994  18:51:14  names.h
  394.  2/22/1994  18:30:41  format.h
  395.  1/18/1994  18:12:52  tokens
  396.  1/18/1994  18:12:52  gram.dcl
  397.  6/01/1993  23:10:00  f2c.h
  398.  3/06/1993  14:13:58  gram.expr
  399.  3/04/1993  14:59:25  gram.exec
  400.  1/28/1993   9:03:16  ftypes.h
  401.  1/25/1993  11:26:33  defines.h
  402.  4/06/1990   0:00:57  gram.io
  403.  2/03/1990   0:58:26  niceprintf.h
  404.  1/29/1990  13:26:52  memset.c
  405.  1/07/1990   1:20:01  usignal.h
  406. 11/27/1989   8:27:37  machdefs.h
  407.  7/01/1989  11:59:44  pccdefs.h
  408.