12495Sdlw /* 2*2594Sdlw char id_inquire[] = "@(#)inquire.c 1.2"; 32495Sdlw * 42495Sdlw * inquire.c - f77 i/o inquire statement routine 52495Sdlw */ 62495Sdlw 72495Sdlw #include "fio.h" 82495Sdlw 92495Sdlw f_inqu(a) inlist *a; 102495Sdlw { char *byfile; 112495Sdlw int i; 122495Sdlw unit *p; 132495Sdlw char buf[256], *s; 142495Sdlw long x_inode; 152495Sdlw 162495Sdlw elist = NO; 172495Sdlw lfname = a->infile; 182495Sdlw lunit = a->inunit; 192495Sdlw external = YES; 202495Sdlw p = NULL; 212495Sdlw if(byfile=a->infile) 222495Sdlw { 232495Sdlw g_char(a->infile,a->infilen,buf); 242495Sdlw if((x_inode=inode(buf))==-1) 252495Sdlw { if(a->inex) *a->inex = NO; /* doesn't exist */ 262495Sdlw return(OK); 272495Sdlw } 282495Sdlw for(i=0;i<MXUNIT;i++) 292495Sdlw if(units[i].ufd && (units[i].uinode==x_inode)) 302495Sdlw { 312495Sdlw p = &units[i]; 322495Sdlw break; 332495Sdlw } 342495Sdlw } 352495Sdlw else 362495Sdlw { 37*2594Sdlw if (not_legal(lunit)) err(a->inerr,F_ERUNIT,"inquire") 382495Sdlw else 392495Sdlw if (units[lunit].ufd) 402495Sdlw { p= &units[lunit]; 412495Sdlw lfname = p->ufnm; 422495Sdlw } 432495Sdlw } 442495Sdlw if(a->inex) *a->inex= ((byfile && x_inode) || (!byfile && p)); 452495Sdlw if(a->inopen) *a->inopen=(p!=NULL); 462495Sdlw if(a->innum) *a->innum= (p?(p-units):-1); 472495Sdlw if(a->innamed) *a->innamed= (byfile || (p && p->ufnm)); 482495Sdlw if(a->inname) 492495Sdlw { 502495Sdlw if(byfile) s = buf; 512495Sdlw else if(p && p->ufnm) s = p->ufnm; 522495Sdlw else s=""; 532495Sdlw b_char(s,a->inname,a->innamlen); 542495Sdlw } 552495Sdlw if(a->inacc && p) 562495Sdlw { 572495Sdlw if(p->url) s = "direct"; 582495Sdlw else s = "sequential"; 592495Sdlw b_char(s,a->inacc,a->inacclen); 602495Sdlw } 612495Sdlw if(a->inseq) 622495Sdlw { 632495Sdlw s= ((byfile && !p) || (p && !p->url))? "yes" : "no"; 642495Sdlw b_char(s,a->inseq,a->inseqlen); 652495Sdlw } 662495Sdlw if(a->indir) 672495Sdlw { 682495Sdlw s= ((byfile && !p) || (p && p->useek && p->url))? "yes" : "no"; 692495Sdlw b_char(s,a->indir,a->indirlen); 702495Sdlw } 712495Sdlw if(a->inform) 722495Sdlw { if(p) 732495Sdlw { 742495Sdlw #ifndef KOSHER 752495Sdlw if(p->uprnt) s = "print"; /*** NOT STANDARD FORTRAN ***/ 762495Sdlw else 772495Sdlw #endif 782495Sdlw s = p->ufmt?"formatted":"unformatted"; 792495Sdlw } 802495Sdlw else s = "unknown"; 812495Sdlw b_char(s,a->inform,a->informlen); 822495Sdlw } 832495Sdlw if(a->infmt) 842495Sdlw { 852495Sdlw if (p) s= p->ufmt? "yes" : "no"; 862495Sdlw else s= "unknown"; 872495Sdlw b_char(s,a->infmt,a->infmtlen); 882495Sdlw } 892495Sdlw if(a->inunf) 902495Sdlw { 912495Sdlw if (p) s= p->ufmt? "no" : "yes"; 922495Sdlw else s= "unknown"; 932495Sdlw b_char(s,a->inunf,a->inunflen); 942495Sdlw } 952495Sdlw if(a->inrecl && p) *a->inrecl=p->url; 962495Sdlw if(a->innrec && p && p->url) 972495Sdlw *a->innrec=(ftell(p->ufd)/p->url)+1; 982495Sdlw if(a->inblank && p && p->ufmt) 992495Sdlw { 1002495Sdlw b_char(p->ublnk? "zero" : "blank",a->inblank,a->inblanklen); 1012495Sdlw } 1022495Sdlw return(OK); 1032495Sdlw } 104