必要な非インタラクティブな「コンソール」ごとにファイルを作成することを検討してください。
with Ada.Text_IO;
generic
type Names is (<>);
package Generic_Consoles is
procedure Open_Or_Create;
function File (Name : in Names) return Ada.Text_IO.File_Access;
end Generic_Consoles;
package body Generic_Consoles is
Files : array (Names) of aliased Ada.Text_IO.File_Type;
procedure Open_Or_Create is
use Ada.Text_IO;
begin
for Name in Files'Range loop
begin
Open (File => Files (Name),
Mode => Append_File,
Name => Names'Image (Name));
exception
when others =>
Create (File => Files (Name),
Mode => Append_File,
Name => Names'Image (Name));
end;
end loop;
end Open_Or_Create;
function File (Name : in Names) return Ada.Text_IO.File_Access is
begin
return Files (Name)'Access;
end File;
end Generic_Consoles;
パッケージをインスタンス化して を呼び出すとOpen_Or_Create
、通常のすべての Ada.Text_IO 出力プロシージャでさまざまな「コンソール」を使用できます。
Put_Line (File => Consoles (Parser_Errors),
Item => "Error 42: Could not parse statement.");