DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦0b1b3590e⟧ TextFile

    Length: 5277 (0x149d)
    Types: TextFile
    Names: »B«

Derivation

└─⟦516dceb10⟧ Bits:30000751 8mm tape, Rational 1000, RCI_VADS
    └─ ⟦9a14c9417⟧ »DATA« 
        └─⟦this⟧ 

TextFile

separate (Library_Extensions)
procedure Import_Postprocess  
             (Views_To_Import :        Directory.Naming.Iterator;
              Into_View       :        String;
              Status          : in out Simple_Status.Condition) is

    Views_2_Import : Naming.Iterator := Views_To_Import;

    Machine_Result : constant Library_Interface.String_Result :=
       Library_Interface.Remote_Machine (View => Into_View);

    Directory_Result : constant Library_Interface.String_Result :=
       Library_Interface.Remote_Directory (View => Into_View);

    Remote_Machine : constant String :=
       Machine_Result.Result (1 .. Machine_Result.Size);

    Remote_Directory : constant String :=
       Directory_Result.Result (1 .. Directory_Result.Size);

    Old_Context : Directory.Naming.Context;

    procedure Display_Information is
    begin
        if Remote_Machine = "" then
            Log.Put_Line (Message => "A null remote machine name was provided.",
                          Kind    => Profile.Warning_Msg);
        end if;
        if Remote_Directory = "" then
            Log.Put_Line (Message =>
                             "A null remote directory name was provided.",
                          Kind    => Profile.Warning_Msg);
        end if;
    end Display_Information;

begin

    Log.Put_Line  
       (Message => "Import_Postprocess ( Views_To_Import =>",
        Kind    => Profile.Sharp_Msg);

    Naming.Reset (Views_2_Import);
    while not Naming.Done (Views_2_Import) loop
        Log.Put_Line  
           (Message => Naming.Source_Name (Views_2_Import),
            Kind    => Profile.Sharp_Msg);

        Naming.Next (Views_2_Import);
    end loop;


    Log.Put_Line  
       (Message => "into_view => " & Into_View & ")",
        Kind    => Profile.Sharp_Msg);


    Simple_Status.Initialize (Status);

    -- Sanity checks
    Naming.Reset (Views_2_Import);
    if Naming.Done (Views_2_Import) then
        return;  -- there are no views to import!
    end if;

    if Remote_Machine = "" or else Remote_Directory = "" then
        Display_Information;
        Set_Status
           (Status   => Status,
            Message  => "Insufficient remote program library information.",
            Severity => Simple_Status.Problem);
        return;
    end if;

    Set_Context  
       (Old_Context => Old_Context,  
        View        => Into_View,  
        Status      => Status);

    if not Simple_Status.Error (Status) then
        declare
            Remote_Connection : Rci.Context;

        begin

            Acquire_Connection  
               (Remote_Connection => Remote_Connection,
                Remote_Machine    => Remote_Machine,
                Status            => Status);

            if not Simple_Status.Error (Status) then
                declare
                    View_Object   : Directory.Object;
                    Naming_Status : Directory.Error_Status :=
                       Directory.Successful;
                begin
                    Naming.Reset (Views_2_Import);
                    while not Naming.Done (Views_2_Import) loop

                        Naming.Get_Object (Iter       => Views_2_Import,
                                           The_Object => View_Object,
                                           Status     => Naming_Status);

                        if Directory."=" (Naming_Status,
                                          Directory.Successful) then
                            declare
                                Immediate_Import : constant String :=
                                   Naming.Get_Full_Name (Entity => View_Object);
                            begin
                                Acquire_Visibility
                                   (Imported_View     => Immediate_Import,
                                    Into_View         => Into_View,
                                    Remote_Connection => Remote_Connection,
                                    Status            => Status);
                            end;
                        else
                            Log.Put_Line (Message => Simple_Status.Message
                                                        (Status => Status),
                                          Kind    => Profile.Negative_Msg);
                        end if;
                        Naming.Next (Views_2_Import);
                    end loop;
                exception
                    when others =>
                        Rci.Release  
                           (Remote_Connection => Remote_Connection,
                            Status            => Status,
                            Trace_Command     => Trace_Rci_Commands);
                        raise;
                end;

                Rci.Release  
                   (Remote_Connection => Remote_Connection,
                    Status            => Status,
                    Trace_Command     => Trace_Rci_Commands);

            end if;

        exception
            when others =>
                Reset_Context (Old_Context);
                raise;
        end;

        Reset_Context (Old_Context);
    end if;

exception
    when others =>
        Unhandled_Exception (Status, "Import_Postprocess");
end Import_Postprocess;