xref: /csrg-svn/usr.bin/f77/pass1.vax/fio.h (revision 47955)
1*47955Sbostic /*-
2*47955Sbostic  * Copyright (c) 1980 The Regents of the University of California.
3*47955Sbostic  * All rights reserved.
422814Smckusick  *
5*47955Sbostic  * %sccs.include.proprietary.c%
6*47955Sbostic  *
7*47955Sbostic  *	@(#)fio.h	5.2 (Berkeley) 04/12/91
822814Smckusick  */
922814Smckusick 
1022814Smckusick #include <stdio.h>
1122814Smckusick typedef long ftnint;
1222814Smckusick typedef ftnint flag;
1322814Smckusick typedef long ftnlen;
1422814Smckusick /*external read, write*/
1522814Smckusick typedef struct
1622814Smckusick {	flag cierr;
1722814Smckusick 	ftnint ciunit;
1822814Smckusick 	flag ciend;
1922814Smckusick 	char *cifmt;
2022814Smckusick 	ftnint cirec;
2122814Smckusick } cilist;
2222814Smckusick /*internal read, write*/
2322814Smckusick typedef struct
2422814Smckusick {	flag icierr;
2522814Smckusick 	char *iciunit;
2622814Smckusick 	flag iciend;
2722814Smckusick 	char *icifmt;
2822814Smckusick 	ftnint icirlen;
2922814Smckusick 	ftnint icirnum;
3022814Smckusick } icilist;
3122814Smckusick /*open*/
3222814Smckusick typedef struct
3322814Smckusick {	flag oerr;
3422814Smckusick 	ftnint ounit;
3522814Smckusick 	char *ofnm;
3622814Smckusick 	ftnlen ofnmlen;
3722814Smckusick 	char *osta;
3822814Smckusick 	char *oacc;
3922814Smckusick 	char *ofm;
4022814Smckusick 	ftnint orl;
4122814Smckusick 	char *oblnk;
4222814Smckusick } olist;
4322814Smckusick /*close*/
4422814Smckusick typedef struct
4522814Smckusick {	flag cerr;
4622814Smckusick 	ftnint cunit;
4722814Smckusick 	char *csta;
4822814Smckusick } cllist;
4922814Smckusick /*rewind, backspace, endfile*/
5022814Smckusick typedef struct
5122814Smckusick {	flag aerr;
5222814Smckusick 	ftnint aunit;
5322814Smckusick } alist;
5422814Smckusick /*units*/
5522814Smckusick typedef struct
5622814Smckusick {	FILE *ufd;	/*0=unconnected*/
5722814Smckusick 	char *ufnm;
5822814Smckusick 	long uinode;
5922814Smckusick 	int url;	/*0=sequential*/
6022814Smckusick 	flag useek;	/*true=can backspace, use dir, ...*/
6122814Smckusick 	flag ufmt;
6222814Smckusick 	flag uprnt;
6322814Smckusick 	flag ublnk;
6422814Smckusick 	flag uend;
6522814Smckusick 	flag uwrt;	/*last io was write*/
6622814Smckusick 	flag uscrtch;
6722814Smckusick } unit;
6822814Smckusick typedef struct
6922814Smckusick {	flag inerr;
7022814Smckusick 	ftnint inunit;
7122814Smckusick 	char *infile;
7222814Smckusick 	ftnlen infilen;
7322814Smckusick 	ftnint	*inex;	/*parameters in standard's order*/
7422814Smckusick 	ftnint	*inopen;
7522814Smckusick 	ftnint	*innum;
7622814Smckusick 	ftnint	*innamed;
7722814Smckusick 	char	*inname;
7822814Smckusick 	ftnlen	innamlen;
7922814Smckusick 	char	*inacc;
8022814Smckusick 	ftnlen	inacclen;
8122814Smckusick 	char	*inseq;
8222814Smckusick 	ftnlen	inseqlen;
8322814Smckusick 	char 	*indir;
8422814Smckusick 	ftnlen	indirlen;
8522814Smckusick 	char	*infmt;
8622814Smckusick 	ftnlen	infmtlen;
8722814Smckusick 	char	*inform;
8822814Smckusick 	ftnint	informlen;
8922814Smckusick 	char	*inunf;
9022814Smckusick 	ftnlen	inunflen;
9122814Smckusick 	ftnint	*inrecl;
9222814Smckusick 	ftnint	*innrec;
9322814Smckusick 	char	*inblank;
9422814Smckusick 	ftnlen	inblanklen;
9522814Smckusick } inlist;
9622814Smckusick 
9722814Smckusick extern int errno;
9822814Smckusick extern flag init;
9922814Smckusick extern cilist *elist;	/*active external io list*/
10022814Smckusick extern flag reading,external,sequential,formatted;
10122814Smckusick extern int (*getn)(),(*putn)();	/*for formatted io*/
10222814Smckusick extern FILE *cf;	/*current file*/
10322814Smckusick extern unit *curunit;	/*current unit*/
10422814Smckusick extern unit units[];
10522814Smckusick #define err(f,n,s) {if(f) errno= n; else fatal(n,s); return(n);}
10622814Smckusick 
10722814Smckusick /*Table sizes*/
10822814Smckusick #define MXUNIT 10
10922814Smckusick 
11022814Smckusick extern int recpos;	/*position in current record*/
111