Maze
PROCEDURE find ( lat, long:INTEGER; VAR success: BOOLEAN);
IF ( lat = exitlat ) AND ( long = exitlong ) THEN success = TRUE
BEGIN maze[lat,long] := step;
IF long <> east THEN { go east }
IF ( maze[lat, long+1] = walkway THEN find (lat, long+1);
IF ( NOT success ) AND ( lat <> south ) THEN { go south }
IF ( maze[lat+1, long] = walkway THEN find (lat+1, long);
IF ( NOT success ) AND ( long <> west ) THEN { go west }
IF ( maze[lat, long-1] = walkway THEN find (lat, long-1);
IF ( NOT success ) AND ( lat <> north ) THEN { go north }
IF ( maze[lat-1, long] = walkway THEN find (lat-1, long);
IF success THEN maze[lat, long] := path;