One, probably not so often used, feature of Ada.Text_IO is an ability to redirect output (Put, Put_Line, Newline) to a file. It happens simply by opening a file where you want to redirect the output and then calling Set_Output procedure.
Example below shows how it is done:
with Ada.Text_IO; procedure Redir is Handle : Ada.Text_IO.File_Type; begin Ada.Text_IO.Create (Handle, Ada.Text_IO.Out_File, "out.txt"); Ada.Text_IO.Put_Line ("Starting redirection to out.txt"); -- Tell Text_IO to redirect all output to Handle Ada.Text_IO.Set_Output (Handle); -- Print some text Ada.Text_IO.Put_Line ("Hello, this will go to out.txt"); Ada.Text_IO.Close (Handle); -- Restoring output back to standard output Ada.Text_IO.Set_Output (Ada.Text_IO.Standard_Output); Ada.Text_IO.Put_Line ("Redirection restored to standard output"); end Redir;
EDIT 2014-03-20: Removed all Flush calls, they were useless.