1*2502Sdlw /* 2*2502Sdlw char id_sue[] = "@(#)sue.c 1.1"; 3*2502Sdlw * 4*2502Sdlw * sequential unformatted external read/write routines 5*2502Sdlw */ 6*2502Sdlw 7*2502Sdlw #include "fio.h" 8*2502Sdlw 9*2502Sdlw extern int reclen; 10*2502Sdlw long recloc; 11*2502Sdlw char *rsue = "read sue"; 12*2502Sdlw char *sue = "sue"; 13*2502Sdlw 14*2502Sdlw s_rsue(a) cilist *a; 15*2502Sdlw { 16*2502Sdlw int n; 17*2502Sdlw reading = YES; 18*2502Sdlw if(n=c_sue(a,READ)) return(n); 19*2502Sdlw if(curunit->uwrt) nowreading(curunit); 20*2502Sdlw recpos = 0; 21*2502Sdlw if(fread(&reclen,sizeof(int),1,cf) == 1) return(OK); 22*2502Sdlw if(feof(cf)) 23*2502Sdlw { curunit->uend = YES; 24*2502Sdlw err(endflag, EOF, rsue) 25*2502Sdlw } 26*2502Sdlw clearerr(cf); 27*2502Sdlw err(errflag, errno, rsue) 28*2502Sdlw } 29*2502Sdlw 30*2502Sdlw s_wsue(a) cilist *a; 31*2502Sdlw { 32*2502Sdlw int n; 33*2502Sdlw reading = NO; 34*2502Sdlw if(n=c_sue(a,WRITE)) return(n); 35*2502Sdlw if(!curunit->uwrt) nowwriting(curunit); 36*2502Sdlw reclen = 0; 37*2502Sdlw recloc=ftell(cf); 38*2502Sdlw fseek(cf,(long)sizeof(int),1); 39*2502Sdlw curunit->uend = NO; 40*2502Sdlw return(OK); 41*2502Sdlw } 42*2502Sdlw 43*2502Sdlw c_sue(a,flag) cilist *a; 44*2502Sdlw { int n; 45*2502Sdlw external = sequential = YES; 46*2502Sdlw formatted = NO; 47*2502Sdlw lfname = NULL; 48*2502Sdlw elist = NO; 49*2502Sdlw errflag = a->cierr; 50*2502Sdlw endflag = a->ciend; 51*2502Sdlw lunit = a->ciunit; 52*2502Sdlw if(not_legal(lunit)) err(errflag,101,sue) 53*2502Sdlw curunit = &units[lunit]; 54*2502Sdlw if(!curunit->ufd && (n=fk_open(flag,SEQ,UNF,(ftnint)lunit))) 55*2502Sdlw err(errflag,n,sue) 56*2502Sdlw cf = curunit->ufd; 57*2502Sdlw elist = YES; 58*2502Sdlw lfname = curunit->ufnm; 59*2502Sdlw if(curunit->ufmt) err(errflag,103,sue) 60*2502Sdlw if(curunit->url) err(errflag,105,sue) 61*2502Sdlw if(!curunit->useek) err(errflag,120,sue) 62*2502Sdlw return(OK); 63*2502Sdlw } 64*2502Sdlw 65*2502Sdlw e_wsue() 66*2502Sdlw { long loc; 67*2502Sdlw fwrite(&reclen,sizeof(int),1,cf); 68*2502Sdlw loc=ftell(cf); 69*2502Sdlw fseek(cf,recloc,0); 70*2502Sdlw fwrite(&reclen,sizeof(int),1,cf); 71*2502Sdlw fseek(cf,loc,0); 72*2502Sdlw return(OK); 73*2502Sdlw } 74*2502Sdlw 75*2502Sdlw e_rsue() 76*2502Sdlw { 77*2502Sdlw fseek(cf,(long)(reclen-recpos+sizeof(int)),1); 78*2502Sdlw return(OK); 79*2502Sdlw } 80