home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / fortran / ratfor.lbr / DETAB.RTF < prev    next >
Encoding:
Text File  |  1986-04-27  |  1.1 KB  |  74 lines

  1.  
  2.    include "b:ratdefn.rtf"
  3.  
  4. # detab - convert tabs to equivalent number of blanks
  5.    character getc
  6.    character c
  7.    integer tabpos
  8.    integer col, i, tabs(MAXLINE)
  9.  
  10.    call initio
  11.  
  12.    call settab(tabs)   # set initial tab stops
  13.    col = 1
  14.    while (getc(c) ^= EOF)
  15.       if (c == TAB)
  16.      repeat {
  17.         call putc(BLANK)
  18.         col = col + 1
  19.         } until (tabpos(col, tabs) == YES)
  20.       else if (c == NEWLINE) {
  21.      call putc(NEWLINE)
  22.      col = 1
  23.      }
  24.       else {
  25.      call putc(c)
  26.      col = col + 1
  27.      }
  28.  
  29.    call putc(EOF)
  30.  
  31.    stop
  32.    end
  33.  
  34. # tabpos - return YES if col is a tab stop
  35.    integer function tabpos(col, tabs)
  36.    integer col, i, tabs(MAXLINE)
  37.    if (col > MAXLINE)
  38.       tabpos = YES
  39.    else
  40.       tabpos = tabs(col)
  41.    return
  42.    end
  43.  
  44. # settab - set initial tab stops
  45.    subroutine settab(tabs)
  46.    integer mod
  47.    integer i, tabs(MAXLINE)
  48.  
  49.    for (i = 1; i <= MAXLINE; i = i + 1)
  50.       if (mod(i, 8) == 1)
  51.      tabs(i) = YES
  52.       else
  53.      tabs(i) = NO
  54.    return
  55.    end
  56. 
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.