Figure 39.

Write without help and error recovery.

------------------------------------------------------ with Get_Command_Line; with SCROLL_TERMINAL, SCROLL_PRINTER, TEXT_IO; procedure No_Help_Write is TITLE : string(1..79); FILENAME : string(1..68); LENGTH : natural; FILE : TEXT_IO.File_type; PAGE : positive; DOUBLE_SPACED : boolean; LINES_LEFT_TO_PRINT : natural; TEXT : string(1..250); RESPONSE : character; PAGE_NO : string(1..4); begin Get_Command_Line(FILENAME,LENGTH); TEXT_IO.Open(FILE, TEXT_IO.IN_FILE, FILENAME(1..LENGTH)); TITLE := (others => ' '); TITLE(1..LENGTH) := FILENAME(1..LENGTH); SCROLL_TERMINAL.put_line("Enter page TITLE, please."); SCROLL_TERMINAL.get("", TITLE, TITLE); SCROLL_TERMINAL.get("Start numbering pages at page ", "1",PAGE_NO); PAGE := integer'VALUE(PAGE_NO); SCROLL_TERMINAL.get("SINGLE or DOUBLE spaced? (S/D) ", 'S', RESPONSE); case RESPONSE is when 'D' | 'd' => DOUBLE_SPACED := TRUE; when others => DOUBLE_SPACED := FALSE; end case; loop exit when TEXT_IO.End_Of_File(FILE); SCROLL_PRINTER.new_line(4); SCROLL_PRINTER.put_line(TITLE); SCROLL_PRINTER.new_line(3); LINES_LEFT_TO_PRINT := 50; loop exit when TEXT_IO.End_Of_File(FILE); TEXT_IO.get_line(FILE,TEXT,LENGTH); SCROLL_PRINTER.put_line(TEXT(1..LENGTH)); LINES_LEFT_TO_PRINT := LINES_LEFT_TO_PRINT-1; if DOUBLE_SPACED then SCROLL_PRINTER.new_line; LINES_LEFT_TO_PRINT := LINES_LEFT_TO_PRINT-1; end if; exit when LINES_LEFT_TO_PRINT < 1; end loop; SCROLL_PRINTER.new_line(LINES_LEFT_TO_PRINT+3); SCROLL_PRINTER.Set_Col(30); SCROLL_PRINTER.put_line(integer'IMAGE(PAGE)); PAGE := PAGE+1; SCROLL_PRINTER.new_page; end loop; TEXT_IO.Close(FILE); SCROLL_TERMINAL.put_line("Done."); end No_Help_Write;