DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦5ce170822⟧ Ada Source

    Length: 30720 (0x7800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Io, pragma Module_Name 4 3506, pragma Subsystem Input_Output, seg_028472

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



with Action;
with Device_Independent_Io;
with Directory;
with Io_Exceptions;
with Text_Io;
package Io is

    pragma Subsystem (Input_Output, Private_Part => Closed);
    pragma Module_Name (4, 3506);

    type File_Type is private;

    subtype File_Mode is Text_Io.File_Mode;
    In_File  : constant File_Mode := Text_Io.In_File;
    Out_File : constant File_Mode := Text_Io.Out_File;

    subtype Count          is Text_Io.Count;
    subtype Positive_Count is Count range 1 .. Count'Last;
    Unbounded : constant Count := Text_Io.Unbounded;

    subtype Field       is Integer range 0 .. Integer'Last;
    subtype Number_Base is Integer range 2 .. 16;

    subtype Type_Set is Text_Io.Type_Set;
    Upper_Case : constant Type_Set := Text_Io.Upper_Case;
    Lower_Case : constant Type_Set := Text_Io.Lower_Case;

    -- File Management

    procedure Create (File : in out File_Type;
                      Mode :        File_Mode := Out_File;
                      Name :        String    := "";
                      Form :        String    := "");

    procedure Open (File : in out File_Type;
                    Mode :        File_Mode := Out_File;
                    Name :        String;
                    Form :        String    := "");

    procedure Open (File   : in out File_Type;
                    Mode   :        File_Mode;
                    Object :        Directory.Version;
                    Form   :        String := "");
    -- Open a particular directory version; not Text_IO

    procedure Append
                 (File : in out File_Type; Name : String; Form : String := "");

    procedure Append (File   : in out File_Type;
                      Object :        Directory.Version;
                      Form   :        String := "");
    -- Open existing file for output, positioned at end of file; not Text_IO
    -- Output starting after an Append is on a new line, but on the same page
    -- as the previous end of the file

    procedure Flush (File : File_Type);
    -- Force any buffer characters out to file

    procedure Save (File : File_Type);
    -- Save the current contents of the file, but leave it open; calls Flush

    procedure Close  (File : in out File_Type);
    procedure Delete (File : in out File_Type);
    procedure Reset  (File : in out File_Type; Mode : File_Mode);
    procedure Reset  (File : in out File_Type);

    function Mode (File : File_Type) return File_Mode;
    function Name (File : File_Type) return String;
    function Form (File : File_Type) return String;

    function Is_Open (File : File_Type) return Boolean;


    -- Control of default input, output and error files;  error not Text_IO

    procedure Set_Input  (File : File_Type);
    procedure Set_Output (File : File_Type);
    procedure Set_Error  (File : File_Type);

    -- Equivalent of an Open/Create followed by above; not in Text_IO
    procedure Set_Input  (Name : String := "<SELECTION>");
    procedure Set_Output (Name : String := ">>FILE NAME<<");
    procedure Set_Error  (Name : String := ">>FILE NAME<<");

    function Standard_Input  return File_Type;
    function Standard_Output return File_Type;
    function Standard_Error  return File_Type;
    function Standard_Error  return Text_Io.File_Type;

    function Current_Input  return File_Type;
    function Current_Output return File_Type;
    function Current_Error  return File_Type;
    function Current_Error  return Text_Io.File_Type;

    -- For each default files, f, Set_f pushes that File_Type entry on a stack
    -- for the job.  Pop_f removes the top of the stack.  Reset is equivalent
    -- to a Close and a Pop.
    --
    -- All open files in the default file stack at job termination are closed.

    procedure Reset_Error;
    procedure Reset_Input;
    procedure Reset_Output;

    procedure Pop_Error;
    procedure Pop_Input;
    procedure Pop_Output;


    -- Specification of line and page lengths

    procedure Set_Line_Length (File : File_Type; To : Count);
    procedure Set_Line_Length (To : Count);

    procedure Set_Page_Length (File : File_Type; To : Count);
    procedure Set_Page_Length (To : Count);

    function Line_Length (File : File_Type) return Count;
    function Line_Length                    return Count;

    function Page_Length (File : File_Type) return Count;
    function Page_Length                    return Count;


    -- Column, Line and Page Control

    procedure New_Line (File : File_Type; Spacing : Positive_Count := 1);
    procedure New_Line (Spacing : Positive_Count := 1);

    procedure Skip_Line (File : File_Type; Spacing : Positive_Count := 1);
    procedure Skip_Line (Spacing : Positive_Count := 1);

    function End_Of_Line (File : File_Type) return Boolean;
    function End_Of_Line                    return Boolean;

    procedure New_Page (File : File_Type);
    procedure New_Page;

    procedure Skip_Page (File : File_Type);
    procedure Skip_Page;

    function End_Of_Page (File : File_Type) return Boolean;
    function End_Of_Page                    return Boolean;

    function End_Of_File (File : File_Type) return Boolean;
    function End_Of_File                    return Boolean;


    procedure Set_Col (File : File_Type; To : Positive_Count);
    procedure Set_Col (To : Positive_Count);

    procedure Set_Line (File : File_Type; To : Positive_Count);
    procedure Set_Line (To : Positive_Count);

    function Col (File : File_Type) return Positive_Count;
    function Col                    return Positive_Count;

    function Line (File : File_Type) return Positive_Count;
    function Line                    return Positive_Count;

    function Page (File : File_Type) return Positive_Count;
    function Page                    return Positive_Count;


    -- Character Input-Output

    procedure Get (File : File_Type; Item : out Character);
    procedure Get (Item : out Character);

    procedure Put  (File : File_Type; Item : Character);
    procedure Put  (Item : Character);
    procedure Echo (Item : Character);


    -- String Input-Output

    procedure Get (File : File_Type; Item : out String);
    procedure Get (Item : out String);

    procedure Put  (File : File_Type; Item : String);
    procedure Put  (Item : String);
    procedure Echo (Item : String := "");

    procedure Get_Line
                 (File : File_Type; Item : out String; Last : out Natural);
    procedure Get_Line (Item : out String; Last : out Natural);

    procedure Put_Line  (File : File_Type; Item : String);
    procedure Put_Line  (Item : String);
    procedure Echo_Line (Item : String := "");

    -- String Input-Output not in Text_IO

    function Get_Line (File : File_Type) return String;
    function Get_Line                    return String;

    procedure Get (File        :     File_Type;
                   Item        : out String;
                   Last        : out Natural;
                   End_Of_Line : out Boolean;
                   End_Of_Page : out Boolean;
                   End_Of_File : out Boolean);
    -- Get all or part of a line.
    -- End_Of_Line iff Item contains the end of line (possibly null)
    -- End_Of_Page iff End_Of_Line and this is the last line of the page
    -- End_Of_File iff End_Of_Page and this is the last page of the file
    --
    -- The intent if for each call to return as many characters from the
    -- line as fit, but Last /= Item'Last doesn't implies End_Of_Line.


    -- equivalents for instantiations of the type-specific generics

    -- Integer Input-Output; equivalent to an instantiation of Integer_IO

    procedure Get (File : File_Type; Item : out Integer; Width : Field := 0);

    procedure Get (Item : out Integer; Width : Field := 0);

    procedure Put (File  : File_Type;
                   Item  : Integer;
                   Width : Field       := 0;
                   Base  : Number_Base := 10);

    procedure Put (Item  : Integer;
                   Width : Field       := 0;
                   Base  : Number_Base := 10);

    procedure Echo (Item  : Integer;
                    Width : Field       := 0;
                    Base  : Number_Base := 10);


    -- Float Input-Output; equivalent to an instantiation of Float_IO

    procedure Get (File : File_Type; Item : out Float; Width : Field := 0);
    procedure Get (Item : out Float; Width : Field := 0);

    procedure Put (File : File_Type;
                   Item : Float;
                   Fore : Field := 2;
                   Aft  : Field := 14;
                   Exp  : Field := 3);

    procedure Put (Item : Float;
                   Fore : Field := 2;
                   Aft  : Field := 14;
                   Exp  : Field := 3);

    procedure Echo (Item : Float;
                    Fore : Field := 2;
                    Aft  : Field := 14;
                    Exp  : Field := 3);

    -- Boolean Input-Output; equivalent to an instantiation of Enumeration_IO

    procedure Get (File : File_Type; Item : out Boolean);
    procedure Get (Item : out Boolean);

    procedure Put (File : File_Type; Item : Boolean; Width : Field := 0);

    procedure Put (Item : Boolean; Width : Field := 0);

    procedure Echo (Item : Boolean; Width : Field := 0);

    -- Generic package for Input-Output of Integer Types

    generic
        type Num is range <>;
    package Integer_Io is

        Default_Width : Field       := Num'Width;
        Default_Base  : Number_Base := 10;

        procedure Get (File : File_Type; Item : out Num; Width : Field := 0);

        procedure Get (Item : out Num; Width : Field := 0);

        procedure Put (File  : File_Type;
                       Item  : Num;
                       Width : Field       := Default_Width;
                       Base  : Number_Base := Default_Base);

        procedure Put (Item  : Num;
                       Width : Field       := Default_Width;
                       Base  : Number_Base := Default_Base);

        procedure Get (From : String; Item : out Num; Last : out Positive);

        procedure Put (To   : out String;
                       Item :     Num;
                       Base :     Number_Base := Default_Base);
    end Integer_Io;


    -- Generic package for Input-Output of Floating Point Types

    generic
        type Num is digits <>;
    package Float_Io is

        Default_Fore : Field := 2;
        Default_Aft  : Field := Num'Digits - 1;
        Default_Exp  : Field := 3;


        procedure Get (File : File_Type; Item : out Num; Width : Field := 0);
        procedure Get (Item : out Num; Width : Field := 0);

        procedure Put (File : File_Type;
                       Item : Num;
                       Fore : Field := Default_Fore;
                       Aft  : Field := Default_Aft;
                       Exp  : Field := Default_Exp);

        procedure Put (Item : Num;
                       Fore : Field := Default_Fore;
                       Aft  : Field := Default_Aft;
                       Exp  : Field := Default_Exp);

        procedure Get (From : String; Item : out Num; Last : out Positive);

        procedure Put (To   : out String;
                       Item :     Num;
                       Aft  :     Field := Default_Aft;
                       Exp  :     Field := Default_Exp);
    end Float_Io;


    -- Generic package for Input-Output of Fixed Point Types

    generic
        type Num is delta <>;
    package Fixed_Io is

        Default_Fore : Field := Num'Fore;
        Default_Aft  : Field := Num'Aft;
        Default_Exp  : Field := 0;

        procedure Get (File : File_Type; Item : out Num; Width : Field := 0);

        procedure Get (Item : out Num; Width : Field := 0);

        procedure Put (File : File_Type;
                       Item : Num;
                       Fore : Field := Default_Fore;
                       Aft  : Field := Default_Aft;
                       Exp  : Field := Default_Exp);

        procedure Put (Item : Num;
                       Fore : Field := Default_Fore;
                       Aft  : Field := Default_Aft;
                       Exp  : Field := Default_Exp);

        procedure Get (From : String; Item : out Num; Last : out Positive);

        procedure Put (To   : out String;
                       Item :     Num;
                       Aft  :     Field := Default_Aft;
                       Exp  :     Field := Default_Exp);
    end Fixed_Io;


    -- Generic package for Input-Output of Enumeration Types

    generic
        type Enum is (<>);
    package Enumeration_Io is

        Default_Width   : Field    := 0;
        Default_Setting : Type_Set := Upper_Case;

        procedure Get (File : File_Type; Item : out Enum);
        procedure Get (Item : out Enum);

        procedure Put (File  : File_Type;
                       Item  : Enum;
                       Width : Field    := Default_Width;
                       Set   : Type_Set := Default_Setting);

        procedure Put (Item  : Enum;
                       Width : Field    := Default_Width;
                       Set   : Type_Set := Default_Setting);

        procedure Get (From : String; Item : out Enum; Last : out Positive);

        procedure Put (To   : out String;
                       Item :     Enum;
                       Set  :     Type_Set := Default_Setting);
    end Enumeration_Io;


    -- Interchange with other system file_types
    --
    -- Compatibility with Device_Independendent_IO is solely for the purpose
    -- of allowing access to device-specific options at open.
    --
    -- Interchange of Get/Put and Read/Write operations between IO and
    -- Device_Independent_IO is undefined due to internal buffering in IO,
    -- though Flush can be used on output to clear the buffer.
    --
    -- Free interchange of operations with Text_IO is supported.

    function Convert (File : File_Type)         return Text_Io.File_Type;
    function Convert (File : Text_Io.File_Type) return File_Type;

    function Convert (File : File_Type) return Device_Independent_Io.File_Type;
    function Convert (File : Device_Independent_Io.File_Type) return File_Type;

    function "=" (L, R : File_Mode) return Boolean renames Text_Io."=";
    function "=" (L, R : Type_Set)  return Boolean renames Text_Io."=";
    function "<" (L, R : Count)     return Boolean renames Text_Io."<";
    function "=" (L, R : Count)     return Boolean renames Text_Io."=";
    function ">" (L, R : Count)     return Boolean renames Text_Io.">";

    -- Operate on multiple input files matching a wildcard

    generic
        with procedure Process    (File : in out File_Type) is <>;
        with procedure Note_Error (Message : String)        is Io.Put_Line;
    procedure Wildcard_Iterator (Names : String);
    -- Calls Process once with an open File corresponding to each of Names
    -- Name errors and unhandled expections are reported through Note_Error.
    -- Closes File after each call to Process, if not already closed.

    procedure Convert (From :        Device_Independent_Io.File_Type;
                       To   : in out Text_Io.File_Type);
    -- Conversion form that allows changing limited private file_type

    -- File management logical overloads.  Each procedure duplicates one
    -- above, but with direct control over the Action.ID used.
    procedure Create (File      : in out File_Type;
                      Mode      :        File_Mode := Out_File;
                      Name      :        String    := "";
                      Form      :        String    := "";
                      Action_Id :        Action.Id);

    procedure Open (File      : in out File_Type;
                    Mode      :        File_Mode := Out_File;
                    Name      :        String;
                    Form      :        String    := "";
                    Action_Id :        Action.Id);

    procedure Open (File      : in out File_Type;
                    Mode      :        File_Mode;
                    Object    :        Directory.Version;
                    Form      :        String := "";
                    Action_Id :        Action.Id);

    procedure Append (File      : in out File_Type;
                      Name      :        String;
                      Form      :        String := "";
                      Action_Id :        Action.Id);

    procedure Append (File      : in out File_Type;
                      Object    :        Directory.Version;
                      Form      :        String := "";
                      Action_Id :        Action.Id);

    function Get_Action (File : File_Type) return Action.Id;

    -- Exceptions

    Status_Error : exception renames Io_Exceptions.Status_Error;
    Mode_Error   : exception renames Io_Exceptions.Mode_Error;
    Name_Error   : exception renames Io_Exceptions.Name_Error;
    Use_Error    : exception renames Io_Exceptions.Use_Error;
    Device_Error : exception renames Io_Exceptions.Device_Error;
    End_Error    : exception renames Io_Exceptions.End_Error;
    Data_Error   : exception renames Io_Exceptions.Data_Error;
    Layout_Error : exception renames Io_Exceptions.Layout_Error;

end Io;

E3 Meta Data

    nblk1=1d
    nid=0
    hdr6=3a
        [0x00] rec0=21 rec1=00 rec2=01 rec3=00c
        [0x01] rec0=00 rec1=00 rec2=19 rec3=020
        [0x02] rec0=16 rec1=00 rec2=02 rec3=022
        [0x03] rec0=1b rec1=00 rec2=03 rec3=02e
        [0x04] rec0=00 rec1=00 rec2=18 rec3=00c
        [0x05] rec0=1a rec1=00 rec2=04 rec3=020
        [0x06] rec0=00 rec1=00 rec2=17 rec3=00e
        [0x07] rec0=1d rec1=00 rec2=05 rec3=046
        [0x08] rec0=03 rec1=00 rec2=16 rec3=024
        [0x09] rec0=1c rec1=00 rec2=06 rec3=06a
        [0x0a] rec0=03 rec1=00 rec2=15 rec3=050
        [0x0b] rec0=1d rec1=00 rec2=07 rec3=056
        [0x0c] rec0=01 rec1=00 rec2=14 rec3=026
        [0x0d] rec0=17 rec1=00 rec2=08 rec3=05c
        [0x0e] rec0=1e rec1=00 rec2=09 rec3=04e
        [0x0f] rec0=1f rec1=00 rec2=0a rec3=034
        [0x10] rec0=00 rec1=00 rec2=1d rec3=00e
        [0x11] rec0=1e rec1=00 rec2=0b rec3=01c
        [0x12] rec0=00 rec1=00 rec2=1c rec3=004
        [0x13] rec0=1f rec1=00 rec2=0c rec3=006
        [0x14] rec0=00 rec1=00 rec2=1b rec3=004
        [0x15] rec0=1d rec1=00 rec2=0d rec3=004
        [0x16] rec0=00 rec1=00 rec2=1a rec3=00a
        [0x17] rec0=19 rec1=00 rec2=0e rec3=06c
        [0x18] rec0=15 rec1=00 rec2=0f rec3=020
        [0x19] rec0=12 rec1=00 rec2=13 rec3=038
        [0x1a] rec0=01 rec1=00 rec2=10 rec3=00e
        [0x1b] rec0=17 rec1=00 rec2=11 rec3=00a
        [0x1c] rec0=0c rec1=00 rec2=12 rec3=000
    tail 0x21520f94283c1737e6351 0x42a00088462065003