#define isblnk(x) (ltab[x+1]&B)
#define issep(x) (ltab[x+1]&SX)
#define isapos(x) (ltab[x+1]&AX)
#define isexp(x) (ltab[x+1]&EX)
#define issign(x) (ltab[x+1]&SG)
char ltab
[128+1] /* offset one for EOF */
0,0,AX
,0,0,0,0,0,0,0,B
,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
SX
|B
,0,AX
,0,0,0,0,0,0,0,0,SG
,SX
,SG
,0,SX
,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,EX
,EX
,0,0,0,0,0,0,0,0,0,0,
AX
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,EX
,EX
,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
if(curunit
->uend
) return(EOF
);
if((ch
=getc(cf
))!=EOF
) return(ch
);
if(feof(cf
)) curunit
->uend
= 1;
if(curunit
->uend
) return(0);
while((ch
=t_getc())!='\n' && ch
!=EOF
);
#define ERR(x) if(n=(x)) return(n)
#define GETC(x) (x=t_getc())
l_read(number
,ptr
,len
,type
) ftnint
*number
,type
; flex
*ptr
; ftnlen len
;
if(curunit
->uend
) err(elist
->ciend
, EOF
, "list in")
for(GETC(ch
);isblnk(ch
);GETC(ch
));
if(feof(cf
)) err(elist
->ciend
,(EOF
),"list in")
err(elist
->cierr
,errno
,"list in")
if(ltype
==NULL
) goto bump
;
b_char(lchar
,(char *)ptr
,len
);
int i
,ch
,sign
=0,da
,db
,dc
;
for(GETC(ch
);isblnk(ch
);GETC(ch
));
if(isexp(GETC(ch
))) db
=rd_int(&d
);
for(i
=0;i
<d
;i
++) b
*= 10;
for(i
=0;i
< -d
;i
++) b
/= 10;
if(GETC(ch
)=='-') sign
= -1;
for(GETC(ch
);isblnk(ch
);GETC(ch
));
{ if(fscanf(cf
,"%d",&lcount
)!=1)
if(!feof(cf
)) err(elist
->cierr
,112,"no rep")
else err(elist
->cierr
,(EOF
),"lread");
if(!feof(cf
)) err(elist
->cierr
,112,"no star")
else err(elist
->cierr
,(EOF
),"lread");
err(elist
->cierr
,112,"no comma");
if(ch
!=')') err(elist
->cierr
,112,"no )");
if(!feof(cf
)) err(elist
->cierr
,112,"no star")
else err(elist
->cierr
,(EOF
),"lread");
if(GETC(ch
)=='.') GETC(ch
);
if(isblnk(ch
) || issep(ch
) || ch
==EOF
)
else err(elist
->cierr
,112,"logical");
while(!issep(GETC(ch
)) && ch
!='\n' && ch
!=EOF
);
if(GETC(ch
)!='*') err(elist
->cierr
,112,"no star");
if(GETC(ch
)=='\'' || ch
=='"') quote
=ch
;
else if(isblnk(ch
) || issep(ch
) || ch
==EOF
)
else err(elist
->cierr
,112,"no quote");
if(lchar
!=NULL
) free(lchar
);
p
=lchar
=(char *)malloc(size
);
if(lchar
==NULL
) err(elist
->cierr
,113,"no space");
{ while(GETC(ch
)!=quote
&& ch
!='\n'
&& ch
!=EOF
&& ++i
<size
) *p
++ = ch
;
lchar
=(char *)realloc(lchar
, size
+= BUFSIZE
);
else if(ch
==EOF
) return(EOF
);
{ if(*(p
-1) != '\\') continue;
{ if(++i
<size
) *p
++ = ch
;
if(n
=c_le(a
,READ
)) return(n
);
return(nowreading(curunit
));
for(GETC(ch
);isblnk(ch
);GETC(ch
));
if(feof(cf
)) return(EOF
);
if(ch
==',') for(GETC(ch
);isblnk(ch
);GETC(ch
));
if(a
->ciunit
>=MXUNIT
|| a
->ciunit
<0)
err(a
->cierr
,101,"stler");
curunit
= &units
[a
->ciunit
];
if(curunit
->ufd
==NULL
&& fk_open(flag
,SEQ
,FMT
,a
->ciunit
))
if(!curunit
->ufmt
) err(a
->cierr
,103,"lio")
do_lio(type
,number
,ptr
,len
) ftnint
*number
,*type
; flex
*ptr
; ftnlen len
;
return((*lioproc
)(number
,ptr
,len
,*type
));