global width procedure main(args) lines := [] width := 0 format := left match("left"|"right"|"center", format <- !args) every put(lines,prepare(!&input)) display(lines, proc(format,3)) end procedure prepare(lines) line := [] lines ? { while (not pos(0)) & (field := tab(upto('$')|0)) do { put(line, field) width <:= *field move(1) } } return line end procedure display(lines, format) width +:= 1 every line := !lines do { every writes(format(!line, width)) write() } end