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