home *** CD-ROM | disk | FTP | other *** search
- /*write sequential formatted external*/
- #include "fio.h"
- #include "fmt.h"
- extern int x_putc(),w_ed(),w_ned();
- extern int xw_end(),xw_rev(),x_wSL();
- s_wsfe(a) cilist *a; /*start*/
- { int n;
- if(!init) f_init();
- if(n=c_sfe(a,WRITE)) return(n);
- reading=0;
- sequential=1;
- formatted=1;
- external=1;
- elist=a;
- cursor=recpos=0;
- scale=0;
- fmtbuf=a->cifmt;
- if(pars_f(fmtbuf)<0) err(a->cierr,100,"startio");
- curunit = &units[a->ciunit];
- cf=curunit->ufd;
- putn= x_putc;
- doed= w_ed;
- doned= w_ned;
- doend=xw_end;
- dorevert=xw_rev;
- donewrec=x_wSL;
- fmt_bg();
- cplus=0;
- cblank=curunit->ublnk;
- if(!curunit->uwrt) nowwriting(curunit);
- return(0);
- }
- x_putc(c)
- {
- recpos++;
- putc(c,cf);
- }
- pr_put(c)
- { static flag new = 1;
- recpos++;
- if(c=='\n')
- { new=1;
- putc(c,cf);
- }
- else if(new==1)
- { new=0;
- if(c=='0') putc('\n',cf);
- else if(c=='1') putc('\f',cf);
- }
- else putc(c,cf);
- }
- x_wSL()
- {
- recpos=0;
- cursor = 0;
- (*putn)('\n');
- return(1);
- }
- xw_end()
- {
- (*putn)('\n');
- return(0);
- }
- xw_rev()
- {
- if(workdone) (*putn)('\n');
- return(workdone=0);
- }
-