xref: /original-bsd/usr.bin/f77/libI77/nmlio.h (revision f052b07a)
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  *	@(#)nmlio.h	5.1	07/30/85
7  */
8 
9 /*	header for namelist I/O */
10 
11 #define ERRNM(x)	if(n=(x)) return(n);
12 #define VL		16	/* variable name length from f77pass1/defs.h */
13 
14 extern char namelistkey_;
15 
16 typedef struct
17 {
18 	char namelistname[VL+4];	/* 4 for padding */
19 	struct namelistentry
20 		{
21 		char varname[VL+4];	/* 4 for padding */
22 		char *varaddr;
23 		short int type;
24 		short int typelen;
25 		/*
26 		 * If dimp is not null, then the corner element of the array is
27 		 * at varaddr.  However,  the element with subscripts:
28 		 * (i1,...,in) is at
29 		 *
30 		 *	varaddr - dimp->baseoffset + sizeoftype *
31 		 *			((i1-1)+span[0]*((i2-1)+span[1]*...)
32 		 */
33 		int *dimp;	/* dimension info: (null means scalar)
34 					*dimp: numb. of dim.,
35 					dimp[0]: number of dimensions
36 					dimp[1]: total number of elements,
37 					dimp[2]: base offset,
38 					dimp[3]: span of 1st dimension
39 					dimp[4]: span of 2nd dimension
40 						...			 */
41 		} names[1];	/* actually one per name in the namelist */
42 } Namelist;
43 
44 typedef struct
45 {	flag cierr;
46 	ftnint ciunit;
47 	flag ciend;
48 	Namelist *namelist;
49 } namelist_arglist;
50