#-h- entab.r 1624 asc 07-may-80 15:25:04 #-h- main 66 asc 07-may-80 15:24:56 # ## entab - driver # call initr4 # call entab # call endr4 # end #-h- entab 672 asc 07-may-80 15:24:56 ## entab - replace blanks by tabs and blanks # subroutine entab subroutine main character getch integer nxtfil character c integer tabpos, int, argct integer col, i, newcol, tabs(MAXLINE) call settab(tabs) col = 1 argct = 1 while (nxtfil(argct,int) != EOF) { repeat { newcol = col while (getch(c,int) == BLANK) { newcol = newcol + 1 if(tabpos(newcol,tabs) == YES) { call putc(TAB) col = newcol } } for (;col < newcol; col = col + 1) call putc(BLANK) if(c == EOF) { if (int != STDIN) call close(int) break } call putc(c) if(c == NEWLINE) col = 1 else col = col + 1 } } return end #-h- nxtfil 739 asc 07-may-80 15:24:57 ## nxtfil - get next file from argument list integer function nxtfil(argct,int) integer getarg, open, alldig integer argct, int integer flag #own character abuf(FILENAMESIZE) data flag /0/ # flag for one time through int = STDIN for ( ; ; argct = argct + 1) { nxtfil = getarg(argct,abuf,FILENAMESIZE) if(abuf(1) == QMARK) call error("usage: entab [...] [+] [file...]") if (nxtfil == EOF) break if (abuf(1) == PLUS | alldig(abuf) == YES) next flag = flag + 1 if (abuf(1) == MINUS & abuf(2) == EOS) { int = STDIN break } else { int = open(abuf,READ) if (int != ERR) break else call cant(abuf) } } if (flag == 0) { flag = 1 nxtfil = EOS } argct = argct + 1 return end