1 /* 2 * Copyright (c) 1980 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 * 6 * @(#)fiodefs.h 5.2 (Berkeley) 07/30/85 7 */ 8 9 /* 10 * fortran file i/o type definitions 11 */ 12 13 #include <stdio.h> 14 #include "f_errno.h" 15 16 /* Logical Unit Table Size */ 17 #define MXUNIT 100 18 19 #define GLITCH '\2' /* special quote for Stu, generated in f77pass1 */ 20 21 #define NAMELIST -2 22 #define LISTDIRECTED -1 23 #define FORMATTED 1 24 25 #define ERROR 1 26 #define OK 0 27 #define YES 1 28 #define NO 0 29 30 #define STDERR 0 31 #define STDIN 5 32 #define STDOUT 6 33 34 #define WRITE 1 35 #define READ 2 36 #define SEQ 3 37 #define DIR 4 38 #define FMT 5 39 #define UNF 6 40 #define EXT 7 41 #define INT 8 42 43 typedef char ioflag; 44 typedef long ftnint; 45 typedef ftnint flag; 46 typedef long ftnlen; 47 48 typedef struct /*external read, write*/ 49 { flag cierr; 50 ftnint ciunit; 51 flag ciend; 52 char *cifmt; 53 ftnint cirec; 54 } cilist; 55 56 typedef struct /*internal read, write*/ 57 { flag icierr; 58 char *iciunit; 59 flag iciend; 60 char *icifmt; 61 ftnint icirlen; 62 ftnint icirnum; 63 ftnint icirec; 64 } icilist; 65 66 typedef struct /*open*/ 67 { flag oerr; 68 ftnint ounit; 69 char *ofnm; 70 ftnlen ofnmlen; 71 char *osta; 72 char *oacc; 73 char *ofm; 74 ftnint orl; 75 char *oblnk; 76 } olist; 77 78 typedef struct /*close*/ 79 { flag cerr; 80 ftnint cunit; 81 char *csta; 82 } cllist; 83 84 typedef struct /*rewind, backspace, endfile*/ 85 { flag aerr; 86 ftnint aunit; 87 } alist; 88 89 typedef struct /*units*/ 90 { FILE *ufd; /*0=unconnected*/ 91 char *ufnm; 92 long uinode; 93 int url; /*0=sequential*/ 94 flag useek; /*true=can backspace, use dir, ...*/ 95 flag ufmt; 96 flag uprnt; 97 flag ublnk; 98 flag uend; 99 flag uwrt; /*last io was write*/ 100 flag uscrtch; 101 } unit; 102 103 typedef struct /* inquire */ 104 { flag inerr; 105 ftnint inunit; 106 char *infile; 107 ftnlen infilen; 108 ftnint *inex; /*parameters in standard's order*/ 109 ftnint *inopen; 110 ftnint *innum; 111 ftnint *innamed; 112 char *inname; 113 ftnlen innamlen; 114 char *inacc; 115 ftnlen inacclen; 116 char *inseq; 117 ftnlen inseqlen; 118 char *indir; 119 ftnlen indirlen; 120 char *inform; 121 ftnlen informlen; 122 char *infmt; 123 ftnint infmtlen; 124 char *inunf; 125 ftnlen inunflen; 126 ftnint *inrecl; 127 ftnint *innrec; 128 char *inblank; 129 ftnlen inblanklen; 130 } inlist; 131 132 typedef union 133 { float pf; 134 double pd; 135 } ufloat; 136 137 typedef union 138 { short is; 139 char ic; 140 long il; 141 } uint; 142 143 struct ioiflg { 144 short if_oeof; 145 short if_ctrl; 146 short if_bzro; 147 }; 148 #define opneof ioiflg_.if_oeof 149 #define ccntrl ioiflg_.if_ctrl 150 #define blzero ioiflg_.if_bzro 151