1*2495Sdlw /* 2*2495Sdlw char id_inquire[] = "@(#)inquire.c 1.1"; 3*2495Sdlw * 4*2495Sdlw * inquire.c - f77 i/o inquire statement routine 5*2495Sdlw */ 6*2495Sdlw 7*2495Sdlw #include "fio.h" 8*2495Sdlw 9*2495Sdlw f_inqu(a) inlist *a; 10*2495Sdlw { char *byfile; 11*2495Sdlw int i; 12*2495Sdlw unit *p; 13*2495Sdlw char buf[256], *s; 14*2495Sdlw long x_inode; 15*2495Sdlw 16*2495Sdlw elist = NO; 17*2495Sdlw lfname = a->infile; 18*2495Sdlw lunit = a->inunit; 19*2495Sdlw external = YES; 20*2495Sdlw p = NULL; 21*2495Sdlw if(byfile=a->infile) 22*2495Sdlw { 23*2495Sdlw g_char(a->infile,a->infilen,buf); 24*2495Sdlw if((x_inode=inode(buf))==-1) 25*2495Sdlw { if(a->inex) *a->inex = NO; /* doesn't exist */ 26*2495Sdlw return(OK); 27*2495Sdlw } 28*2495Sdlw for(i=0;i<MXUNIT;i++) 29*2495Sdlw if(units[i].ufd && (units[i].uinode==x_inode)) 30*2495Sdlw { 31*2495Sdlw p = &units[i]; 32*2495Sdlw break; 33*2495Sdlw } 34*2495Sdlw } 35*2495Sdlw else 36*2495Sdlw { 37*2495Sdlw if (not_legal(lunit)) err(a->inerr,101,"inquire") 38*2495Sdlw else 39*2495Sdlw if (units[lunit].ufd) 40*2495Sdlw { p= &units[lunit]; 41*2495Sdlw lfname = p->ufnm; 42*2495Sdlw } 43*2495Sdlw } 44*2495Sdlw if(a->inex) *a->inex= ((byfile && x_inode) || (!byfile && p)); 45*2495Sdlw if(a->inopen) *a->inopen=(p!=NULL); 46*2495Sdlw if(a->innum) *a->innum= (p?(p-units):-1); 47*2495Sdlw if(a->innamed) *a->innamed= (byfile || (p && p->ufnm)); 48*2495Sdlw if(a->inname) 49*2495Sdlw { 50*2495Sdlw if(byfile) s = buf; 51*2495Sdlw else if(p && p->ufnm) s = p->ufnm; 52*2495Sdlw else s=""; 53*2495Sdlw b_char(s,a->inname,a->innamlen); 54*2495Sdlw } 55*2495Sdlw if(a->inacc && p) 56*2495Sdlw { 57*2495Sdlw if(p->url) s = "direct"; 58*2495Sdlw else s = "sequential"; 59*2495Sdlw b_char(s,a->inacc,a->inacclen); 60*2495Sdlw } 61*2495Sdlw if(a->inseq) 62*2495Sdlw { 63*2495Sdlw s= ((byfile && !p) || (p && !p->url))? "yes" : "no"; 64*2495Sdlw b_char(s,a->inseq,a->inseqlen); 65*2495Sdlw } 66*2495Sdlw if(a->indir) 67*2495Sdlw { 68*2495Sdlw s= ((byfile && !p) || (p && p->useek && p->url))? "yes" : "no"; 69*2495Sdlw b_char(s,a->indir,a->indirlen); 70*2495Sdlw } 71*2495Sdlw if(a->inform) 72*2495Sdlw { if(p) 73*2495Sdlw { 74*2495Sdlw #ifndef KOSHER 75*2495Sdlw if(p->uprnt) s = "print"; /*** NOT STANDARD FORTRAN ***/ 76*2495Sdlw else 77*2495Sdlw #endif 78*2495Sdlw s = p->ufmt?"formatted":"unformatted"; 79*2495Sdlw } 80*2495Sdlw else s = "unknown"; 81*2495Sdlw b_char(s,a->inform,a->informlen); 82*2495Sdlw } 83*2495Sdlw if(a->infmt) 84*2495Sdlw { 85*2495Sdlw if (p) s= p->ufmt? "yes" : "no"; 86*2495Sdlw else s= "unknown"; 87*2495Sdlw b_char(s,a->infmt,a->infmtlen); 88*2495Sdlw } 89*2495Sdlw if(a->inunf) 90*2495Sdlw { 91*2495Sdlw if (p) s= p->ufmt? "no" : "yes"; 92*2495Sdlw else s= "unknown"; 93*2495Sdlw b_char(s,a->inunf,a->inunflen); 94*2495Sdlw } 95*2495Sdlw if(a->inrecl && p) *a->inrecl=p->url; 96*2495Sdlw if(a->innrec && p && p->url) 97*2495Sdlw *a->innrec=(ftell(p->ufd)/p->url)+1; 98*2495Sdlw if(a->inblank && p && p->ufmt) 99*2495Sdlw { 100*2495Sdlw b_char(p->ublnk? "zero" : "blank",a->inblank,a->inblanklen); 101*2495Sdlw } 102*2495Sdlw return(OK); 103*2495Sdlw } 104