home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / f2c / i77lib / readme < prev    next >
Text File  |  2000-06-22  |  5KB  |  124 lines

  1. If your compiler does not recognize ANSI C headers,
  2. compile with KR_headers defined:  either add -DKR_headers
  3. to the definition of CFLAGS in the makefile, or insert
  4.  
  5. #define KR_headers
  6.  
  7. at the top of f2c.h .
  8.  
  9.  
  10. If your system lacks /usr/include/local.h ,
  11. then you should create an appropriate local.h in
  12. this directory.  An appropriate local.h may simply
  13. be empty, or it may #define VAX or #define CRAY
  14. (or whatever else you must do to make fp.h work right).
  15. Alternatively, edit fp.h to suite your machine.
  16.  
  17. If your system lacks /usr/include/fcntl.h , then you
  18. should simply create an empty fcntl.h in this directory.
  19. If your compiler then complains about creat and open not
  20. having a prototype, compile with OPEN_DECL defined.
  21. On many systems, open and creat are declared in fcntl.h .
  22.  
  23. If your system's sprintf does not work the way ANSI C
  24. specifies -- specifically, if it does not return the
  25. number of characters transmitted -- then insert the line
  26.  
  27. #define USE_STRLEN
  28.  
  29. at the end of fmt.h .  This is necessary with
  30. at least some versions of Sun software.
  31.  
  32. If your system's fopen does not like the ANSI binary
  33. reading and writing modes "rb" and "wb", then you should
  34. compile open.c with NON_ANSI_RW_MODES #defined.
  35.  
  36. If you get error messages about references to cf->_ptr
  37. and cf->_base when compiling wrtfmt.c and wsfe.c or to
  38. stderr->_flag when compiling err.c, then insert the line
  39.  
  40. #define NON_UNIX_STDIO
  41.  
  42. at the beginning of fio.h, and recompile these modules.
  43.  
  44. Unformatted sequential records consist of a length of record
  45. contents, the record contents themselves, and the length of
  46. record contents again (for backspace).  Prior to 17 Oct. 1991,
  47. the length was of type int; now it is of type long, but you
  48. can change it back to int by inserting
  49.  
  50. #define UIOLEN_int
  51.  
  52. at the beginning of fio.h.  This affects only sue.c and uio.c .
  53.  
  54. You may need to supply the following non-ANSI routines:
  55.  
  56.   fstat(int fileds, struct stat *buf) is similar
  57. to stat(char *name, struct stat *buf), except that
  58. the first argument, fileds, is the file descriptor
  59. returned by open rather than the name of the file.
  60. fstat is used in the system-dependent routine
  61. canseek (in the libI77 source file err.c), which
  62. is supposed to return 1 if it's possible to issue
  63. seeks on the file in question, 0 if it's not; you may
  64. need to suitably modify err.c .  On non-UNIX systems,
  65. you can avoid references to fstat and stat by compiling
  66. err.c, inquire.c, open.c, and util.c with MSDOS defined;
  67. in that case, you may need to supply access(char *Name,0),
  68. which is supposed to return 0 if file Name exists,
  69. nonzero otherwise.
  70.  
  71.   char * mktemp(char *buf) is supposed to replace the
  72. 6 trailing X's in buf with a unique number and then
  73. return buf.  The idea is to get a unique name for
  74. a temporary file.
  75.  
  76. On non-UNIX systems, you may need to change a few other,
  77. e.g.: the form of name computed by mktemp() in endfile.c and
  78. open.c; the use of the open(), close(), and creat() system
  79. calls in endfile.c, err.c, open.c; and the modes in calls on
  80. fopen() and fdopen() (and perhaps the use of fdopen() itself
  81. -- it's supposed to return a FILE* corresponding to a given
  82. an integer file descriptor) in err.c and open.c (component ufmt
  83. of struct unit is 1 for formatted I/O -- text mode on some systems
  84. -- and 0 for unformatted I/O -- binary mode on some systems).
  85.  
  86. For Turbo C++, in particular, you need to adjust the mktemp
  87. invocations and should compile all of libI77 with -DMSDOS .
  88. You also need to #undef ungetc in lread.c and rsne.c .
  89. Don't use -mh -- it is horribly broken.
  90.  
  91. If you want to be able to load against libI77 but not libF77,
  92. then you will need to add sig_die.o (from libF77) to libI77.
  93.  
  94. If you wish to use translated Fortran that has funny notions
  95. of record length for direct unformatted I/O (i.e., that assumes
  96. RECL= values in OPEN statements are not bytes but rather counts
  97. of some other units -- e.g., 4-character words for VMS), then you
  98. should insert an appropriate #define for url_Adjust at the
  99. beginning of open.c .  For VMS Fortran, for example,
  100. #define url_Adjust(x) x *= 4
  101. would suffice.
  102.  
  103. To check for transmission errors, issue the command
  104.     make check
  105. This assumes you have the xsum program whose source, xsum.c,
  106. is distributed as part of "all from f2c/src".  If you do not
  107. have xsum, you can obtain xsum.c by sending the following E-mail
  108. message to netlib@research.att.com
  109.     send xsum.c from f2c/src
  110.  
  111. The makefile assumes you have installed f2c.h in a standard
  112. place (and does not cause recompilation when f2c.h is changed);
  113. f2c.h comes with "all from f2c" (the source for f2c) and is
  114. available separately ("f2c.h from f2c").
  115.  
  116. By default, Fortran I/O units 5, 6, and 0 are pre-connected to
  117. stdin, stdout, and stderr, respectively.  You can change this
  118. behavior by changing f_init() in err.c to suit your needs.
  119. Note that f2c assumes READ(*... means READ(5... and WRITE(*...
  120. means WRITE(6... .  Moreover, an OPEN(n,... statement that does
  121. not specify a file name (and does not specify STATUS='SCRATCH')
  122. assumes FILE='fort.n' .  You can change this by editing open.c
  123. and endfile.c suitably.
  124.