10 REM > TwoCol
   20 INPUT"Input file: "in$:in%=OPENIN(in$):IFin%=0:PRINTin$;" not found":END
   30 INPUT"Output file:"out$:out%=OPENOUT(out$):IFout%=0:PRINT"Can't open "out$:CLOSE#in%:END
   40 INPUT"Column width: "wid%:IFwid%=0:wid%=40
   50 INPUT"Page length: "pglen%:IFpglen%=0:pglen%=60
   60 INPUT"Paper length: "plen%:IFplen%=0:plen%=66
   70 REPEAT
   80   p0%=PTR#in%:z%=pglen%:REPEATa$=FNline:z%=z%-1:UNTILz%<1 OR EOF#in%
   90   z%=pglen%:REPEAT
  100     p1%=PTR#in%:PTR#in%=p0%:IFNOTEOF#in%:a$=FNline ELSE a$=""
  110     p0%=PTR#in%:PTR#in%=p1%:IFNOTEOF#in%:b$=FNline ELSE b$=""
  120     PROCout(a$+STRING$(wid%-LENa$," ")+b$)
  130   z%=z%-1:UNTILz%<1 OR p0%>=PTR#in%
  140   z%=plen%-pglen%:IFz%:REPEATPROCout(""):z%=z%-1:UNTILz%<1
  150 UNTILp0%>=PTR#in%
  160 CLOSE#out%:CLOSE#in%
  170 END
  180 :
  190 DEFFNerr:REPORT
  200 IFin%:A%=in%:in%=0:CLOSE#A%
  210 IFout%:A%=out%:out%=0:CLOSE#A%
  220 PRINT" at line ";ERL:=TRUE
  230 :
  240 DEFFNline:LOCAL a$,a%:IFEOF#in%:=""
  250 REPEATa%=BGET#in%:IFa%<>10 AND a%<>13:a$=a$+CHR$a%
  260 UNTILa%=10 OR a%=13 OR LENa$>=wid%-3 OR EOF#in%
  270 =a$
  280 :
  290 DEFPROCout(a$):IFout%=0:PRINTa$:ENDPROC
  300 IFa$<>"":REPEATBPUT#out%,ASCa$:a$=MID$(a$,2):UNTILa$=""
  310 BPUT#out%,13:PRINTCHR$13;100*PTR#in% DIV EXT#in%;"%";:ENDPROC