MODULE GraphPaper; CONST OffPage = Unit.In * 20, Wide = 2; PROC P(unit, div) IS IF INT(div) -> VAR num, i = 0, j, delta, offset = 0 IN num := CEILING(OffPage / unit); delta := unit / div; DO i < num -> j := 0; PS.SetWidth(Wide); DO j < div -> DrawLines(offset); PS.SetWidth(0); offset := offset + delta; j := j + 1 OD; i := i + 1 OD END FI END; PRIVATE PROC DrawLines(x) IS PS.MoveTo((x, 0)); PS.LineTo((x, OffPage)); PS.MoveTo((0, x)); PS.LineTo((OffPage, x)); PS.Stroke() END; PROC Cmd0() IS P(Unit.In, 4) END;