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

⟦37d02800d⟧ Ada Source

    Length: 17408 (0x4400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Orb_Interface, seg_056b7d

Derivation

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

E3 Source Code



with Text_Io, Com_Dialog, Transport_Defs, Ip_Name, Text_Manager;  
with Bounded_String, Constant_Start_End, All_String, Conversion;

package body Orb_Interface is

    Tampon_Adress_String : All_String.Adress_String;  
    Tampon_Adress_Message_Or_Status : All_String.Adress_Type_Message_Or_Status;

    function Value (S : String) return Com_Defs.V_String is
    begin
        return Com_Defs.V_String (Bounded_String.Value
                                     (S, Com_Defs.Frame_Length));
    end Value;

    function Image (S : T_Frame) return String is
    begin
        return Bounded_String.Image (Bounded_String.Variable_String (S.Frame));  
    end Image;

    function Image (S : Com_Defs.V_String) return String is
    begin
        return Bounded_String.Image (Bounded_String.Variable_String (S));  
    end Image;

    procedure Copy (Target : in out T_Frame; Source : T_Frame) is
    begin
        Bounded_String.Free (Bounded_String.Variable_String (Target.Frame));
        Bounded_String.Copy (Bounded_String.Variable_String (Target.Frame),
                             Bounded_String.Variable_String (Source.Frame));
    end Copy;

    procedure Init_T_Frame (My_Frame : in out T_Frame;
                            Internet_Adress : in Com_Defs.V_String;
                            Appli_Number : in Com_Defs.Com_Number;
                            Quest_Number : in Com_Defs.Com_Number) is  
    begin
        Bounded_String.Free (Bounded_String.Variable_String (My_Frame.Frame));
        Bounded_String.Append
           (Bounded_String.Variable_String (My_Frame.Frame),
            Bounded_String.Variable_String (Internet_Adress));
        Bounded_String.Append (Bounded_String.Variable_String (My_Frame.Frame),
                               Conversion.Number_To_String4 (Appli_Number));
        Bounded_String.Append (Bounded_String.Variable_String (My_Frame.Frame),
                               Conversion.Number_To_String4 (Quest_Number));
        Bounded_String.Append (Bounded_String.Variable_String (My_Frame.Frame),
                               Com_Defs.Orb_String_Adress);
        Bounded_String.Append
           (Bounded_String.Variable_String (My_Frame.Frame),
            Bounded_String.Variable_String (Internet_Adress));
        Bounded_String.Append (Bounded_String.Variable_String (My_Frame.Frame),
                               Conversion.Number_To_String4 (Appli_Number));
        Bounded_String.Append (Bounded_String.Variable_String (My_Frame.Frame),
                               Conversion.Number_To_String4 (Quest_Number));
        Bounded_String.Append
           (Bounded_String.Variable_String (My_Frame.Frame),
            Conversion.Number_To_String2
               (T_Message.T_Mess'Pos (T_Message.Registration)));
        Bounded_String.Append
           (Bounded_String.Variable_String (My_Frame.Frame),
            Conversion.Number_To_String2
               (T_Status.T_State'Pos (T_Status.Client_To_Orb)));
    end Init_T_Frame;


    function Read_Type_Of_Message (My_Frame : T_Frame) return Integer is
    begin
        Tampon_Adress_Message_Or_Status :=
           Bounded_String.Extract
              (Bounded_String.Variable_String (My_Frame.Frame),
               Constant_Start_End.Start_Type_Message,
               Constant_Start_End.End_Type_Message);
        return Conversion.String2_To_Number (Tampon_Adress_Message_Or_Status);
    end Read_Type_Of_Message;


    function Read_Type_Of_Status (My_Frame : T_Frame) return Integer is
    begin
        Tampon_Adress_Message_Or_Status :=
           Bounded_String.Extract
              (Bounded_String.Variable_String (My_Frame.Frame),
               Constant_Start_End.Start_Type_Status,
               Constant_Start_End.End_Type_Status);
        return Conversion.String2_To_Number (Tampon_Adress_Message_Or_Status);
    end Read_Type_Of_Status;


    procedure Exchange_Source_Destination (My_Frame : in out T_Frame) is
        My_Tampon_Source, My_Tampon_Destinataire : All_String.Adress_String;

        function Read_Source_Adress (The_Frame : T_Frame)
                                    return All_String.Adress_String is
        begin
            Tampon_Adress_String :=
               Bounded_String.Extract
                  (Bounded_String.Variable_String (The_Frame.Frame),
                   Constant_Start_End.Start_Source_Adress,
                   Constant_Start_End.End_Source_Adress);
            return Tampon_Adress_String;
        end Read_Source_Adress;

        function Read_Destinataire_Adress  
                    (The_Frame : T_Frame) return All_String.Adress_String is
        begin
            Tampon_Adress_String :=
               Bounded_String.Extract
                  (Bounded_String.Variable_String (The_Frame.Frame),
                   Constant_Start_End.Start_Destinataire_Adress,
                   Constant_Start_End.End_Destinataire_Adress);
            return Tampon_Adress_String;
        end Read_Destinataire_Adress;

    begin
        My_Tampon_Source := Read_Destinataire_Adress (My_Frame);
        My_Tampon_Destinataire := Read_Source_Adress (My_Frame);  
        Bounded_String.Replace
           (Bounded_String.Variable_String (My_Frame.Frame),
            Constant_Start_End.Start_Source_Adress, My_Tampon_Source);
        Bounded_String.Replace (Bounded_String.Variable_String (My_Frame.Frame),
                                Constant_Start_End.Start_Destinataire_Adress,
                                My_Tampon_Destinataire);
    end Exchange_Source_Destination;


    procedure Remove_Data (My_Frame : in out T_Frame) is
        Tampon : T_Frame;
    begin
        Bounded_String.Free (Bounded_String.Variable_String (Tampon.Frame));
        Bounded_String.Copy
           (Bounded_String.Variable_String (Tampon.Frame),
            Bounded_String.Extract
               (Bounded_String.Variable_String (My_Frame.Frame),
                Constant_Start_End.
                   Start_Source_Adress_Internet_And_Apply_Number,
                Constant_Start_End.End_Type_Status));
        Bounded_String.Free (Bounded_String.Variable_String (My_Frame.Frame));
        Bounded_String.Copy (Bounded_String.Variable_String (My_Frame.Frame),
                             Bounded_String.Variable_String (Tampon.Frame));
    end Remove_Data;


    procedure Put_Data (My_Frame : in out T_Frame) is
    begin
        Text_Manager.Text.Put_Line
           ("Data received : " &
            (Bounded_String.Extract
                (Bounded_String.Variable_String (My_Frame.Frame),
                 Constant_Start_End.Start_Data,
                 Bounded_String.Length
                    (Bounded_String.Variable_String (My_Frame.Frame)))));
    end Put_Data;


    procedure Init_Data_Message (My_Data_Message : in Com_Defs.V_String;
                                 My_Frame : in out T_Frame) is  
    begin
        Bounded_String.Append
           (Bounded_String.Variable_String (My_Frame.Frame),
            Bounded_String.Variable_String (My_Data_Message));
    end Init_Data_Message;


    procedure Put_Frame (My_Frame : T_Frame) is
    begin
        Text_Manager.Text.Put_Line
           (Bounded_String.Image
               (Bounded_String.Variable_String (My_Frame.Frame)));
    end Put_Frame;


    procedure Init (My_Appli_Number : out Com_Defs.Com_Number;
                    My_Machine_Name : out Com_Defs.V_String;
                    My_Adress_Ip : in out Com_Defs.V_String;
                    Status : out Boolean) is
        Tampon : Com_Defs.V_String;
    begin
        Com_Dialog.Init (My_Appli_Number, My_Machine_Name, Tampon, Status);
        Ip_Name.Convert (Tampon, My_Adress_Ip);
    end Init;


    procedure Remove (My_Appli_Number : in Com_Defs.Com_Number) is  
    begin
        Com_Dialog.Remove (My_Appli_Number);
    end Remove;


    procedure Receive (My_Appli_Number : in Com_Defs.Com_Number;  
                       My_Frame : in out T_Frame;
                       Status : out Boolean) is
    begin
        Bounded_String.Free (Bounded_String.Variable_String (My_Frame.Frame));
        Com_Dialog.Receive (My_Appli_Number, My_Frame.Frame, Status);
    end Receive;


    procedure Reinsert (My_Appli_Number : in Com_Defs.Com_Number;
                        My_Frame : in T_Frame) is
    begin
        Com_Dialog.Reinsert (My_Appli_Number, My_Frame.Frame);
    end Reinsert;


    procedure Send (My_Appli_Number : Com_Defs.Com_Number;  
                    My_Host_Name : Com_Defs.V_String;
                    The_Type_Of_Message : T_Message.T_Mess;
                    The_Type_Of_Status : T_Status.T_State;
                    The_Frame : in out T_Frame;
                    My_Status : in out Boolean) is  
        My_Frame_Length : Natural := Com_Defs.Length (The_Frame.Frame);

        procedure Init_Type_Of_Message (My_Type_Of_Message : T_Message.T_Mess;
                                        My_Frame : in out T_Frame) is
            My_Integer_Message : Integer;
            My_String_Message : All_String.Adress_Type_Message_Or_Status;
        begin
            My_Integer_Message := T_Message.T_Mess'Pos (My_Type_Of_Message);
            My_String_Message := Conversion.Number_To_String2
                                    (My_Integer_Message);
            Text_Manager.Text.Put_Line
               ("Message is : " & My_String_Message & "=" &
                T_Message.T_Mess'Image (My_Type_Of_Message));
            Bounded_String.Replace
               (Bounded_String.Variable_String (My_Frame.Frame),
                Constant_Start_End.Start_Type_Message, My_String_Message);
        end Init_Type_Of_Message;

        procedure Init_Type_Of_Status (My_Type_Of_Status : T_Status.T_State;                                      My_Frame : in out T_Frame) is  
            My_Integer_Status : Integer;  
            My_String_Status : All_String.Adress_Type_Message_Or_Status;
        begin
            My_Integer_Status := T_Status.T_State'Pos (My_Type_Of_Status);
            My_String_Status := Conversion.Number_To_String2
                                   (My_Integer_Status);
            Text_Manager.Text.Put_Line
               ("Status is : " & My_String_Status & "=" &
                T_Status.T_State'Image (My_Type_Of_Status));
            Bounded_String.Replace
               (Bounded_String.Variable_String (My_Frame.Frame),
                Constant_Start_End.Start_Type_Status, My_String_Status);  
        end Init_Type_Of_Status;

    begin
        Init_Type_Of_Message (The_Type_Of_Message, The_Frame);
        Init_Type_Of_Status (The_Type_Of_Status, The_Frame);
        for I in 1 .. Com_Defs.Frame_Length - My_Frame_Length loop
            begin
                Bounded_String.Append
                   (Bounded_String.Variable_String (The_Frame.Frame), '$');
            end;
        end loop;
        Com_Dialog.Send (My_Appli_Number, My_Host_Name,
                         The_Frame.Frame, My_Frame_Length, My_Status);
    end Send;


end Orb_Interface;

E3 Meta Data

    nblk1=10
    nid=a
    hdr6=1a
        [0x00] rec0=1c rec1=00 rec2=01 rec3=076
        [0x01] rec0=11 rec1=00 rec2=0c rec3=06e
        [0x02] rec0=11 rec1=00 rec2=07 rec3=030
        [0x03] rec0=1a rec1=00 rec2=08 rec3=028
        [0x04] rec0=15 rec1=00 rec2=0f rec3=030
        [0x05] rec0=16 rec1=00 rec2=09 rec3=044
        [0x06] rec0=18 rec1=00 rec2=0d rec3=00a
        [0x07] rec0=00 rec1=00 rec2=06 rec3=00e
        [0x08] rec0=1d rec1=00 rec2=04 rec3=008
        [0x09] rec0=1a rec1=00 rec2=0e rec3=026
        [0x0a] rec0=13 rec1=00 rec2=0b rec3=002
        [0x0b] rec0=13 rec1=00 rec2=02 rec3=022
        [0x0c] rec0=0b rec1=00 rec2=03 rec3=000
        [0x0d] rec0=0d rec1=00 rec2=0d rec3=000
        [0x0e] rec0=00 rec1=00 rec2=00 rec3=000
        [0x0f] rec0=00 rec1=00 rec2=00 rec3=000
    tail 0x21763279687c546714557 0x42a00088462060003
Free Block Chain:
  0xa: 0000  00 10 00 06 80 03 20 20 20 03 79 5f 46 72 61 6d  ┆          y_Fram┆
  0x10: 0000  00 05 00 11 80 0e 74 72 69 6e 67 2e 56 61 72 69  ┆      tring.Vari┆
  0x5: 0000  00 00 00 2a 80 09 65 6e 64 20 53 65 6e 64 3b 09  ┆   *  end Send; ┆