%!PS % Joseph O'Rourke % Illustrates a procedure with parameters 3 setlinewidth % How to call: xmin ymin length square /square { /x exch def % Store square side length into variable x moveto % move to lowerleft corner (xmin,ymin) on stack top % Use relative moves below to draw four sides: x 0 rlineto 0 x rlineto x neg 0 rlineto % NB!: need to neg x, because -x is illegal % Could now say: 0 x neg rlineto; but use closepath instead closepath stroke } def 1 0 0 setrgbcolor 100 500 100 square 0 1 0 setrgbcolor 300 400 50 square 0 0 1 setrgbcolor 50 50 375 square showpage