with Ada.Streams; use Ada.Streams; with Ada.Streams.Stream_Io; use Ada.Streams.Stream_Io; with Ada.Text_Io; use Ada.Text_Io; procedure B001_Pack is type Bool is (F, T); type Bit_Array is array (Positive range <>, Positive range <>) of Bool; pragma Pack (Bit_Array); X : constant Bit_Array (1 .. 3, 1 .. 3) := ((F, T, T), (F, F, T), (F, T, F)); procedure Print (X : Bit_Array) is begin for I in X'Range loop for J in X'Range (2) loop Put_Line (I'Img & J'Img & " " & X (I, J)'Img); end loop; end loop; end Print; Fi : Ada.Streams.Stream_Io.File_Type; begin Print (X); Create (Fi, Out_File, "b001_pack"); Bit_Array'Output (Stream (Fi), X); Close (Fi); Open (Fi, In_File, "b001_pack"); declare Y : constant Bit_Array := Bit_Array'Input (Stream (Fi)); begin Close (Fi); Print (Y); Put_Line (Boolean'Image (X = Y)); end; end B001_Pack;