#include "defs" setopt(p,q) char *p; char *q; { int qval; qval = (q!=NULL) && ( equals(q, "yes") || equals(q, "on") ); if(equals(p,"debug")) dbgopt = 1; else if(equals(p,"ndebug")) dbgopt = 0; else if(equals(p,"pfort")) langopt = 0; else if(equals(p,"ratfor")) langopt = 1; else if(equals(p,"efl")) langopt = 2; else if(equals(p,"dots")) dotsopt = qval; else if(equals(p,"ioerror")) { if(equals(q,"none")) tailor.errmode = IOERRNONE; else if(equals(q,"ibm")) tailor.errmode = IOERRIBM; else if(equals(q,"fortran77")) tailor.errmode = IOERRFORT77; else execerr("unknown ioerror option %s", q); } else if(equals(p, "system")) { register struct system *sysp; for(sysp = systab ; sysp->sysname ; ++sysp) if( equals(q, sysp->sysname) ) break; if(sysp->sysname) tailinit(sysp); else execerr("unknown system %s", q); } else if(equals(p, "continue")) tailor.ftncontnu = equals(q, "column1"); else if(equals(p, "procheader")) tailor.procheader = (q ? copys(q) : 0); else if(equals(p, "hollincall")) tailor.hollincall = qval; else if(equals(p, "longcomplextype")) { tailor.lngcxtype = (q ? copys(q) : CNULL); if(qval) eflftn[TYLCOMPLEX] = FTNDCOMPLEX; } else if(equals(p, "longcomplexprefix")) tailor.lngcxprefix = (q ? copys(q) : CNULL); else if(equals(p, "fortran77")) { if(tailor.ftn77 = (q==NULL || qval) ) tailor.errmode = IOERRFORT77; else if(tailor.errmode == IOERRFORT77) tailor.errmode = IOERRNONE; } else if( !tailop(p,q) ) execerr("unknown option %s", p); if(langopt==2) setdot(dotsopt); else if(langopt==1) setdot(1); } tailinit(sysp) register struct system *sysp; { register int sysf = sysp->sysno; tailor.ftncontnu = (sysf==UNIX); tailor.ftnsys = sysf; tailor.ftnin = 5; tailor.ftnout = 6; tailor.errmode = (sysf==UNIX ? IOERRFORT77 : IOERRIBM); tailor.charcomp = 2; tailor.hollincall = YES; tailor.deltastno = 1; tailor.dclintrinsics = YES; tailsize(sysp->chperwd); tailfmt(sysp->idig, sysp->rdig, sysp->ddig); } tailsize(wordsize) int wordsize; { int i; tailor.ftnchwd = wordsize; tailor.ftnsize[FTNINT] = wordsize; tailor.ftnsize[FTNREAL] = wordsize; tailor.ftnsize[FTNLOG] = wordsize; tailor.ftnsize[FTNCOMPLEX] = 2*wordsize; tailor.ftnsize[FTNDOUBLE] = 2*wordsize; tailor.ftnsize[FTNDCOMPLEX] = 2*wordsize; for(i = 0 ; ioptn ; ++cp) if(equals(n, cp->optn)) { *(cp->coptloc) = copys(v); return(1); } for(ip = ints ; ip->optn ; ++ip) if(equals(n, ip->optn)) { if( equals(v, "yes") || equals(v, "on") ) val = 1; else if( equals(v, "no") || equals(v, "off") ) val = 0; else val = convci(v); *(ip->ioptloc) = val; return(1); } return(0); }