|
|
1.1 root 1: #include "defs"
2:
3:
4: setopt(p,q)
5: char *p;
6: char *q;
7: {
8: int qval;
9: qval = (q!=NULL) && ( equals(q, "yes") || equals(q, "on") );
10:
11: if(equals(p,"debug")) dbgopt = 1;
12: else if(equals(p,"ndebug")) dbgopt = 0;
13: else if(equals(p,"pfort")) langopt = 0;
14: else if(equals(p,"ratfor")) langopt = 1;
15: else if(equals(p,"efl")) langopt = 2;
16: else if(equals(p,"dots"))
17: dotsopt = qval;
18: else if(equals(p,"ioerror"))
19: {
20: if(equals(q,"none"))
21: tailor.errmode = IOERRNONE;
22: else if(equals(q,"ibm"))
23: tailor.errmode = IOERRIBM;
24: else if(equals(q,"fortran77"))
25: tailor.errmode = IOERRFORT77;
26: else execerr("unknown ioerror option %s", q);
27: }
28: else if(equals(p, "system"))
29: {
30: register struct system *sysp;
31: for(sysp = systab ; sysp->sysname ; ++sysp)
32: if( equals(q, sysp->sysname) )
33: break;
34:
35: if(sysp->sysname)
36: tailinit(sysp);
37: else
38: execerr("unknown system %s", q);
39: }
40: else if(equals(p, "continue"))
41: tailor.ftncontnu = equals(q, "column1");
42: else if(equals(p, "procheader"))
43: tailor.procheader = (q ? copys(q) : 0);
44: else if(equals(p, "hollincall"))
45: tailor.hollincall = qval;
46: else if(equals(p, "longcomplextype"))
47: {
48: tailor.lngcxtype = (q ? copys(q) : CNULL);
49: if(qval)
50: eflftn[TYLCOMPLEX] = FTNDCOMPLEX;
51: }
52: else if(equals(p, "longcomplexprefix"))
53: tailor.lngcxprefix = (q ? copys(q) : CNULL);
54: else if(equals(p, "fortran77"))
55: {
56: if(tailor.ftn77 = (q==NULL || qval) )
57: tailor.errmode = IOERRFORT77;
58: else if(tailor.errmode == IOERRFORT77)
59: tailor.errmode = IOERRNONE;
60: }
61:
62: else if( !tailop(p,q) )
63: execerr("unknown option %s", p);
64:
65: if(langopt==2)
66: setdot(dotsopt);
67: else if(langopt==1)
68: setdot(1);
69: }
70:
71:
72:
73:
74: tailinit(sysp)
75: register struct system *sysp;
76: {
77: register int sysf = sysp->sysno;
78: tailor.ftncontnu = (sysf==UNIX);
79: tailor.ftnsys = sysf;
80: tailor.ftnin = 5;
81: tailor.ftnout = 6;
82: tailor.errmode = (sysf==UNIX ? IOERRFORT77 : IOERRIBM);
83: tailor.charcomp = 2;
84: tailor.hollincall = YES;
85: tailor.deltastno = 1;
86: tailor.dclintrinsics = YES;
87:
88: tailsize(sysp->chperwd);
89: tailfmt(sysp->idig, sysp->rdig, sysp->ddig);
90: }
91:
92:
93:
94:
95:
96: tailsize(wordsize)
97: int wordsize;
98: {
99: int i;
100:
101: tailor.ftnchwd = wordsize;
102: tailor.ftnsize[FTNINT] = wordsize;
103: tailor.ftnsize[FTNREAL] = wordsize;
104: tailor.ftnsize[FTNLOG] = wordsize;
105: tailor.ftnsize[FTNCOMPLEX] = 2*wordsize;
106: tailor.ftnsize[FTNDOUBLE] = 2*wordsize;
107: tailor.ftnsize[FTNDCOMPLEX] = 2*wordsize;
108:
109: for(i = 0 ; i<NFTNTYPES ; ++i)
110: tailor.ftnalign[i] = tailor.ftnsize[i];
111: }
112:
113:
114:
115:
116: tailfmt(idig, rdig, ddig)
117: int idig, rdig, ddig;
118: {
119: sprintf(msg, "i%d", idig);
120: tailor.dfltfmt[TYINT] = copys(msg);
121:
122: sprintf(msg, "e%d.%d", rdig+8, rdig);
123: tailor.dfltfmt[TYREAL] = copys(msg);
124:
125: sprintf(msg, "d%d.%d", ddig+8, ddig);
126: tailor.dfltfmt[TYLREAL] = copys(msg);
127:
128: sprintf(msg, "1h(,1p%s,2h, ,%s,1h)",
129: tailor.dfltfmt[TYREAL], tailor.dfltfmt[TYREAL]);
130: tailor.dfltfmt[TYCOMPLEX] = copys(msg);
131:
132: sprintf(msg, "1h(,1p%s,2h, ,%s,1h)",
133: tailor.dfltfmt[TYLREAL], tailor.dfltfmt[TYLREAL]);
134: tailor.dfltfmt[TYLCOMPLEX] = copys(msg);
135:
136: tailor.dfltfmt[TYLOG] = "l2";
137: }
138:
139:
140:
141:
142: tailop(n,v)
143: char *n, *v;
144: {
145: int val;
146: struct itable { char *optn; int *ioptloc; } *ip;
147: struct ctable { char *optn; char **coptloc; } *cp;
148: static struct ctable formats[ ] = {
149: "iformat", &tailor.dfltfmt[TYINT],
150: "rformat", &tailor.dfltfmt[TYREAL],
151: "dformat", &tailor.dfltfmt[TYLREAL],
152: "zformat", &tailor.dfltfmt[TYCOMPLEX],
153: "zdformat", &tailor.dfltfmt[TYLCOMPLEX],
154: "lformat", &tailor.dfltfmt[TYLOG],
155: 0, 0 };
156:
157: static struct itable ints[ ] = {
158: "ftnin", &tailor.ftnin,
159: "ftnout", &tailor.ftnout,
160: "charperint", &tailor.ftnchwd,
161: "charcomp", &tailor.charcomp,
162: "deltastno", &tailor.deltastno,
163: "dclintrinsics", &tailor.dclintrinsics,
164: "isize", &tailor.ftnsize[FTNINT],
165: "rsize", &tailor.ftnsize[FTNREAL],
166: "dsize", &tailor.ftnsize[FTNDOUBLE],
167: "lsize", &tailor.ftnsize[FTNLOG],
168: "zsize", &tailor.ftnsize[FTNCOMPLEX],
169: "ialign", &tailor.ftnalign[FTNINT],
170: "ralign", &tailor.ftnalign[FTNREAL],
171: "dalign", &tailor.ftnalign[FTNDOUBLE],
172: "lalign", &tailor.ftnalign[FTNLOG],
173: "zalign", &tailor.ftnalign[FTNCOMPLEX],
174: 0, 0 };
175:
176: for(cp = formats; cp->optn ; ++cp)
177: if(equals(n, cp->optn))
178: {
179: *(cp->coptloc) = copys(v);
180: return(1);
181: }
182:
183: for(ip = ints ; ip->optn ; ++ip)
184: if(equals(n, ip->optn))
185: {
186: if( equals(v, "yes") || equals(v, "on") )
187: val = 1;
188: else if( equals(v, "no") || equals(v, "off") )
189: val = 0;
190: else val = convci(v);
191: *(ip->ioptloc) = val;
192: return(1);
193: }
194:
195: return(0);
196: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.