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

⟦1b26d8150⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Build_Defs_Package, seg_020bd2, separate Rpc_Io

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



separate (Rpc_Io)
procedure Build_Defs_Package (From_Db         : Analysis.Database;
                              Named_With_Root : String;
                              In_File         : Io.File_Type) is

    Subprogram_Iter : Analysis.Subprogram_Iterator;
    Exception_Iter  : Analysis.Exception_Iterator;
    Id_Iter         : Analysis.Id_Iterator;

    Subprogram_Number : Natural := 0;
    Exception_Number  : Natural := 5;  -- after predefined exceptions

    procedure Put (Line : String; Line_Feeds : Natural := 0) is
    begin
        Io.Put (In_File, Line);
        if Line_Feeds > 0 then
            Io.New_Line (File    => In_File,
                         Spacing => Io.Positive_Count (Line_Feeds));
        end if;
    end Put;
begin
    Analysis.Init (From_Db => From_Db, Iter => Subprogram_Iter);
    Analysis.Init (From_Db => From_Db, Iter => Exception_Iter);

    Put (Ada_Io.Make_With_Clause (Name => "Rpc"));
    Put (Ada_Io.Make_With_Clause (Name => "Transport_Defs"));

    Put (Ada_Io.Make_Package (Name =>
                                 Rpc_Names.Rpc_Defs_Package (Named_With_Root),
                              Kind => Ada_Io.Spec_Part));
    Put ("  -- Shared defintiions for remote procedure call:", 2);

    Put (Ada_Io.Make_Constant_Declaration
            (Name          => "Network",
             Type_Mark     => "Transport_Defs.Network_Name",
             Initial_Value => """TCP/IP"""));

    -- the Socket, Program, and Version declarations must be completed
    -- by the user
    Put (Ada_Io.Make_Constant_Declaration
            (Name          => "Socket",
             Type_Mark     => "Transport_Defs.Socket_id (1..2)",
             Initial_Value => "([INTEGER-expression], [INTEGER-expression])"),
         1);
    Put (Ada_Io.Make_Constant_Declaration
            (Name          => "Program",
             Type_Mark     => "Rpc.Program_Number",
             Initial_Value => "[INTEGER-expression]"));
    Put (Ada_Io.Make_Constant_Declaration
            (Name          => "Version",
             Type_Mark     => "Rpc.Version_Number",
             Initial_Value => "[INTEGER-expression]"), 1);

    Put (Ada_Io.Make_Package (Name => "Procedure_Number",
                              Kind => Ada_Io.Spec_Part));

    -- uniquely number each package subprogram
    while not Analysis.Done (Subprogram_Iter) loop
        Put (Ada_Io.Make_Constant_Declaration
                (Name          => Analysis.Unique_Name (Subprogram_Iter),
                 Type_Mark     => "Rpc.Procedure_Number",
                 Initial_Value => Natural'Image (Subprogram_Number)));

        Analysis.Next (Subprogram_Iter);
        Subprogram_Number := Subprogram_Number + 1;
    end loop;
    Put (Ada_Io.Make_End, 1);

    Put (Ada_Io.Make_Package (Name => "Exception_Number",
                              Kind => Ada_Io.Spec_Part));

    -- Predefined exceptions:
    Put (Ada_Io.Make_Constant_Declaration (Name => "Constraint_Error",
                                           Type_Mark => "Rpc.Exception_Number",
                                           Initial_Value => "0"));
    Put (Ada_Io.Make_Constant_Declaration (Name => "Numeric_Error",
                                           Type_Mark => "Rpc.Exception_Number",
                                           Initial_Value => "1"));
    Put (Ada_Io.Make_Constant_Declaration (Name => "Program_Error",
                                           Type_Mark => "Rpc.Exception_Number",
                                           Initial_Value => "2"));
    Put (Ada_Io.Make_Constant_Declaration (Name => "Storage_Error",
                                           Type_Mark => "Rpc.Exception_Number",
                                           Initial_Value => "3"));
    Put (Ada_Io.Make_Constant_Declaration (Name => "Tasking_Error",
                                           Type_Mark => "Rpc.Exception_Number",
                                           Initial_Value => "4"));

    -- uniquely number each user defined exception
    while not Analysis.Done (Exception_Iter) loop
        Id_Iter := Analysis.Names (Exception_Iter);
        while not Analysis.Done (Id_Iter) loop
            Put (Ada_Io.Make_Constant_Declaration
                    (Name          => Analysis.Name (Id_Iter),
                     Type_Mark     => "Rpc.Exception_Number",
                     Initial_Value => Natural'Image (Exception_Number)));
            Analysis.Next (Id_Iter);
            Exception_Number := Exception_Number + 1;
        end loop;

        Analysis.Next (Exception_Iter);
    end loop;
    Put (Ada_Io.Make_End, 1);

    Put (Ada_Io.Make_End);

end Build_Defs_Package;

E3 Meta Data

    nblk1=6
    nid=0
    hdr6=c
        [0x00] rec0=1b rec1=00 rec2=01 rec3=042
        [0x01] rec0=00 rec1=00 rec2=06 rec3=014
        [0x02] rec0=16 rec1=00 rec2=02 rec3=06e
        [0x03] rec0=19 rec1=00 rec2=03 rec3=030
        [0x04] rec0=0e rec1=00 rec2=04 rec3=004
        [0x05] rec0=15 rec1=00 rec2=05 rec3=000
    tail 0x2151c8164838d45639b05 0x42a00088462061e03