program align; magic := false; $ turn off regexp matching in GNU SETL read_file; ncols := max/[#line : line in lines]; sizes := [1+max/[#(line(col) ? "") : line in lines] : col in [1..ncols]]; loop for line in lines do print(+/[align(line(col), sizes(col)) : col in [1..#line]]); end loop; read_file:: f := open(command_line(1), "r"); lines := []; loop doing geta(f, line); while line /= om do lines with:= split(line, "$"); end loop; close(f); proc align(s, n); case command_line(2) of ("r"): return lpad(s, n); ("l"): return rpad(s, n); ("c"): return center(s, n); end case; end proc; proc center(s, n); padding := n - #s; l := " " * ceil(padding/2); r := " " * floor(padding/2); return l + s + r; end proc; end program;