1-- { dg-do run }
2
3with Ada.Streams.Stream_IO;
4
5procedure In_Out_Parameter is
6
7   use Ada.Streams;  use Stream_IO;
8
9   File : Stream_IO.File_Type;
10
11   type Bitmap is array (Natural range <>) of Boolean;
12   for Bitmap'Component_Size use 1;
13
14   type Message   is record
15      B : Bitmap (0 .. 14);
16   end record;
17   for Message use record
18      B  at 0 range 2 .. 16;
19   end record;
20
21   TX, RX : Message;
22
23begin
24
25   TX.B  := (others => False);
26   Stream_IO.Create (File => File, Mode => Out_File, Name => "data");
27   Message'Output (Stream (File), TX);
28   Stream_IO.Close (File);
29   --
30   Stream_IO.Open (File => File, Mode => In_File, Name => "data");
31   RX := Message'Input (Stream (File));
32   Stream_IO.Close (File);
33
34   if RX /= TX then
35      raise Program_Error;
36   end if;
37
38end In_Out_Parameter;
39