WITH useful; WITH addQueen; WITH ada.text_io; PROCEDURE Queen IS -- records blocked positions FreeColumn : useful.ColumnFree; UpDiagonalFree : useful.UpFree ; DownDiagonalFree : useful.DownFree; -- controls search Row : Useful.ZeroToEight; -- records placement of queens ColumnArray : Useful.Columns; -- counters Tried : integer := 0; -- counts queens placed Tested : integer := 0; -- counts positions tested -- output file Board : ada.text_io.file_type; -- keeps success record & text BEGIN -- prepare file for use ada.text_io.create (file => board, mode => ada.text_io.out_file, name => "a:\writeboard.out"); -- initializations Row := 0; FreeColumn := (OTHERS => true); UpDiagonalFree:= (OTHERS => true); DownDiagonalFree := (OTHERS => true); -- do work AddQueen (R => Row, UpF => UpDiagonalFree, DownF => DownDiagonalFree, FreeC => FreeColumn, Col => ColumnArray, Tried => Tried, Tested => Tested, Solutions =>Board); -- when arrive here, work done so close output files ada.text_io.close (file => Board); END Queen;