1*20991Slibs /* 2*20991Slibs char id_wdfe[] = "@(#)wdfe.c 1.1"; 3*20991Slibs * 4*20991Slibs * write direct formatted external i/o 5*20991Slibs */ 6*20991Slibs 7*20991Slibs #include "fio.h" 8*20991Slibs 9*20991Slibs extern int w_ed(),w_ned(); 10*20991Slibs int y_putc(),y_wnew(),y_tab(); 11*20991Slibs 12*20991Slibs LOCAL char wdfe[] = "write dfe"; 13*20991Slibs 14*20991Slibs s_wdfe(a) cilist *a; 15*20991Slibs { 16*20991Slibs int n; 17*20991Slibs reading = NO; 18*20991Slibs if(n=c_dfe(a,WRITE,wdfe)) return(n); 19*20991Slibs curunit->uend = NO; 20*20991Slibs if(!curunit->uwrt && ! nowwriting(curunit)) err(errflag, errno, wdfe) 21*20991Slibs putn = y_putc; 22*20991Slibs doed = w_ed; 23*20991Slibs doned = w_ned; 24*20991Slibs dotab = y_tab; 25*20991Slibs dorevert = doend = donewrec = y_wnew; 26*20991Slibs if(pars_f()) err(errflag,F_ERFMT,wdfe) 27*20991Slibs fmt_bg(); 28*20991Slibs return(OK); 29*20991Slibs } 30*20991Slibs 31*20991Slibs e_wdfe() 32*20991Slibs { 33*20991Slibs en_fio(); 34*20991Slibs return(OK); 35*20991Slibs } 36*20991Slibs 37*20991Slibs LOCAL 38*20991Slibs y_putc(c) 39*20991Slibs { 40*20991Slibs if(curunit->url!=1 && recpos++ >= curunit->url) err(errflag,F_EREREC,wdfe) 41*20991Slibs putc(c,cf); 42*20991Slibs return(OK); 43*20991Slibs } 44*20991Slibs 45*20991Slibs LOCAL 46*20991Slibs y_wnew() 47*20991Slibs { if(curunit->url != 1) 48*20991Slibs { if(reclen > recpos) 49*20991Slibs { fseek(cf,(long)(reclen-recpos),1); 50*20991Slibs recpos = reclen; 51*20991Slibs } 52*20991Slibs while(recpos < curunit->url) (*putn)(' '); 53*20991Slibs recnum++; 54*20991Slibs recpos = reclen = cursor = 0; 55*20991Slibs } 56*20991Slibs return(OK); 57*20991Slibs } 58