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

⟦3132adc0b⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Users, seg_02841b

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 Io;
with Table_Formatter;
with Time_Utilities;
with Scheduler;
with String_Utilities;
with System_Utilities;

procedure Users (Jobs_Too : Boolean := False; Verbose : Boolean := False) is

    use System_Utilities;
    use Io;
    package Tu renames Time_Utilities;

    function Image (Value   : Long_Integer;
                    Base    : Natural   := 10;
                    Width   : Natural   := 0;
                    Leading : Character := ' ') return String
        renames String_Utilities.Number_To_String;

    Output : File_Type := Current_Output;

    S      : Session_Iterator;
    J_Iter : Job_Iterator;

    function Elapsed (For_Job : Job_Id) return String is
    begin
        return Tu.Image (Elapsed (For_Job));
    end Elapsed;

    function Trim (S : String; Width : Natural; Left : Boolean := False)
                  return String is
    begin
        if S'Length > Width then
            if Left then
                return S (S'Last - Width .. S'Last);
            else
                return S (S'First .. S'First + Width);
            end if;
        else
            return S;
        end if;
    end Trim;

    function Name (S : Session_Id) return String is
    begin
        return User_Name (S) & '.' & Session_Name (S);
    end Name;

    procedure Show_Sessions is

        package Tf is new Table_Formatter (5);
        use Tf;

        procedure Display_Session (S : Session_Id) is
            J         : Job_Iterator;
            Displayed : Boolean := False;
        begin
            Item (Name (S));
            Item (Port'Image (System_Utilities.Terminal (S)));
            Init (J, S);
            while not Done (J) loop
                declare
                    use Scheduler;
                begin
                    if Get_Job_Kind (Value (J)) = Scheduler.Ce then
                        Item (Image (Long_Integer (Value (J))));
                        Item (Tu.Image (Elapsed (Value (J))));
                        Displayed := True;
                        exit;
                    end if;
                end;
                Next (J);
            end loop;
            if not Displayed then
                Item ("?");
                Item ("?");
            end if;
            Item (Image (Input_Count (System_Utilities.Terminal (S))) & "/" &
                  Image (Output_Count (System_Utilities.Terminal (S))));
        end Display_Session;
    begin
        Header ("Session");
        Header ("Line", Right);
        Header ("Job", Right);
        Header ("Time", Right);
        Header ("IO Count", Centered);

        Init (S);
        while not Done (S) loop
            Display_Session (Value (S));
            Next (S);
        end loop;
        Sort;
        Display (Output);

    end Show_Sessions;

    procedure Show_Jobs is
        package Tf is new Table_Formatter (5);
        use System_Utilities;
        J : System_Utilities.Job_Iterator;
    begin
        Io.New_Line;

        Tf.Header ("Owner");
        Tf.Header ("Job");
        Tf.Header ("Elapsed", Tf.Right);
        Tf.Header ("CPU", Tf.Right);
        Tf.Header ("Job Name");
        Init (S);
        while not Done (S) loop
            System_Utilities.Init (J, Value (S));
            while not Done (J) loop
                Tf.Item (Trim (Name (Value (S)), 14, Left => False));
                Tf.Item (Image (Long_Integer (Value (J)))); -- job #
                Tf.Item (Trim (Elapsed (Value (J)), 8, Left => False));
                Tf.Item (Trim (Tu.Image (System_Utilities.Cpu (Value (J))), 8,
                               Left => False));
                Tf.Item (Trim (Job_Name (Value (J)), 37, Left => False));
                Next (J);
            end loop;

            Next (S);
        end loop;
        Tf.Sort;
        Tf.Display (Output);
    end Show_Jobs;egin
    Io.Put_Line (Output, "Rational Environment " &
                            System_Utilities.System_Boot_Configuration &
                            ", Last boot: " &
                            Tu.Image (Tu.Convert_Time
                                         (System_Utilities.System_Up_Time)));
    Io.New_Line;

    Show_Sessions;
    if Jobs_Too then
        Show_Jobs;
    end if;


end Users;
pragma Main;

E3 Meta Data

    nblk1=7
    nid=0
    hdr6=e
        [0x00] rec0=24 rec1=00 rec2=01 rec3=020
        [0x01] rec0=00 rec1=00 rec2=07 rec3=00a
        [0x02] rec0=20 rec1=00 rec2=02 rec3=028
        [0x03] rec0=00 rec1=00 rec2=06 rec3=010
        [0x04] rec0=21 rec1=00 rec2=03 rec3=01a
        [0x05] rec0=1c rec1=00 rec2=04 rec3=002
        [0x06] rec0=10 rec1=00 rec2=05 rec3=000
    tail 0x2172235d083c1722a863d 0x42a00088462065003