main procedure determines the initial point of the curvei the initial coordinates of the pen denoted by and and the unit increment the square in which the curves are drawn is placed into the middle of the page with given width and height these parameters as well as the drawing procedure line are taken from module draw note that this module retains the current position of the pen definition draw(adens _draw *const width height procedure clear(*clear drawing plane*procedure setpen(xyinteger)procedure line(dirleninteger)(*draw line of length len in direction dir* degreesmove pen accordingly*end draw procedure hilbert draws the hilbert curves hn it uses the four auxiliary procedures abc and recursivelyvar uinteger(adens _hilbert *procedure (iinteger)begin if then ( - )draw line( ) ( - )draw line( ) ( - )draw line( ) ( - end end aprocedure (iinteger)begin if then ( - )draw line( ) ( - )draw line( ) ( - )draw line( ) ( - end end bprocedure (iinteger)begin if then ( - )draw line( ) ( - )draw line( ) ( - )draw line( ) ( - end end cprocedure (iinteger)begin if then ( - )draw line( ) ( - )draw line( ) ( - )draw line( ) ( - end end dprocedure hilbert (ninteger)const squaresize var ix integerbegin draw clearx :draw width div :draw height div :squaresizei : repeat inc( ) : div