xref: /csrg-svn/usr.bin/f77/libI77/fiodefs.h (revision 19919)
12507Sdlw /*
2*19919Slibs char id_fiodefs[] = "@(#)fiodefs.h	1.4";
32507Sdlw  *
42507Sdlw  * fortran file i/o type definitions
52507Sdlw  */
62507Sdlw 
72507Sdlw #include <stdio.h>
82507Sdlw #include "f_errno.h"
92507Sdlw 
102507Sdlw /* Logical Unit Table Size */
11*19919Slibs #define MXUNIT 100
122507Sdlw 
132507Sdlw #define GLITCH '\2'	/* special quote for Stu, generated in f77pass1 */
142507Sdlw 
152507Sdlw #define LISTDIRECTED  -1
162507Sdlw #define FORMATTED      1
172507Sdlw 
182507Sdlw #define ERROR	1
192507Sdlw #define OK	0
202507Sdlw #define YES	1
212507Sdlw #define NO	0
222507Sdlw 
232507Sdlw #define STDERR	0
242507Sdlw #define STDIN	5
252507Sdlw #define STDOUT	6
262507Sdlw 
272507Sdlw #define WRITE	1
282507Sdlw #define READ	2
292507Sdlw #define SEQ	3
302507Sdlw #define DIR	4
312507Sdlw #define FMT	5
322507Sdlw #define UNF	6
332507Sdlw #define EXT	7
342507Sdlw #define INT	8
352507Sdlw 
362507Sdlw typedef char ioflag;
372507Sdlw typedef long ftnint;
382507Sdlw typedef ftnint flag;
392507Sdlw typedef long ftnlen;
402507Sdlw 
412507Sdlw typedef struct		/*external read, write*/
422507Sdlw {	flag cierr;
432507Sdlw 	ftnint ciunit;
442507Sdlw 	flag ciend;
452507Sdlw 	char *cifmt;
462507Sdlw 	ftnint cirec;
472507Sdlw } cilist;
482507Sdlw 
492507Sdlw typedef struct		/*internal read, write*/
502507Sdlw {	flag icierr;
512507Sdlw 	char *iciunit;
522507Sdlw 	flag iciend;
532507Sdlw 	char *icifmt;
542507Sdlw 	ftnint icirlen;
552507Sdlw 	ftnint icirnum;
562507Sdlw 	ftnint icirec;
572507Sdlw } icilist;
582507Sdlw 
592507Sdlw typedef struct		/*open*/
602507Sdlw {	flag oerr;
612507Sdlw 	ftnint ounit;
622507Sdlw 	char *ofnm;
632507Sdlw 	ftnlen ofnmlen;
642507Sdlw 	char *osta;
652507Sdlw 	char *oacc;
662507Sdlw 	char *ofm;
672507Sdlw 	ftnint orl;
682507Sdlw 	char *oblnk;
692507Sdlw } olist;
702507Sdlw 
712507Sdlw typedef struct		/*close*/
722507Sdlw {	flag cerr;
732507Sdlw 	ftnint cunit;
742507Sdlw 	char *csta;
752507Sdlw } cllist;
762507Sdlw 
772507Sdlw typedef struct		/*rewind, backspace, endfile*/
782507Sdlw {	flag aerr;
792507Sdlw 	ftnint aunit;
802507Sdlw } alist;
812507Sdlw 
822507Sdlw typedef struct		/*units*/
832507Sdlw {	FILE *ufd;	/*0=unconnected*/
842507Sdlw 	char *ufnm;
852507Sdlw 	long uinode;
862507Sdlw 	int url;	/*0=sequential*/
872507Sdlw 	flag useek;	/*true=can backspace, use dir, ...*/
882507Sdlw 	flag ufmt;
892507Sdlw 	flag uprnt;
902507Sdlw 	flag ublnk;
912507Sdlw 	flag uend;
922507Sdlw 	flag uwrt;	/*last io was write*/
932507Sdlw 	flag uscrtch;
942507Sdlw } unit;
952507Sdlw 
962507Sdlw typedef struct		/* inquire */
972507Sdlw {	flag inerr;
982507Sdlw 	ftnint inunit;
992507Sdlw 	char *infile;
1002507Sdlw 	ftnlen infilen;
1012507Sdlw 	ftnint	*inex;	/*parameters in standard's order*/
1022507Sdlw 	ftnint	*inopen;
1032507Sdlw 	ftnint	*innum;
1042507Sdlw 	ftnint	*innamed;
1052507Sdlw 	char	*inname;
1062507Sdlw 	ftnlen	innamlen;
1072507Sdlw 	char	*inacc;
1082507Sdlw 	ftnlen	inacclen;
1092507Sdlw 	char	*inseq;
1102507Sdlw 	ftnlen	inseqlen;
1112507Sdlw 	char 	*indir;
1122507Sdlw 	ftnlen	indirlen;
1132507Sdlw 	char	*inform;
1142507Sdlw 	ftnlen	informlen;
1152507Sdlw 	char	*infmt;
1162507Sdlw 	ftnint	infmtlen;
1172507Sdlw 	char	*inunf;
1182507Sdlw 	ftnlen	inunflen;
1192507Sdlw 	ftnint	*inrecl;
1202507Sdlw 	ftnint	*innrec;
1212507Sdlw 	char	*inblank;
1222507Sdlw 	ftnlen	inblanklen;
1232507Sdlw } inlist;
1242507Sdlw 
1252507Sdlw typedef union
1262507Sdlw {	float pf;
1272507Sdlw 	double pd;
1282507Sdlw } ufloat;
1292507Sdlw 
1302507Sdlw typedef union
1312507Sdlw {	short is;
1322507Sdlw 	char ic;
1332507Sdlw 	long il;
1342507Sdlw } uint;
1352507Sdlw 
13612020Sdlw struct ioiflg {
13712037Sdlw 	short if_oeof;
13812020Sdlw 	short if_ctrl;
13912020Sdlw 	short if_bzro;
14012020Sdlw };
14112037Sdlw #define	opneof	ioiflg_.if_oeof
14212020Sdlw #define	ccntrl	ioiflg_.if_ctrl
14312020Sdlw #define	blzero	ioiflg_.if_bzro
144