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

⟦4484c9dab⟧ Ada Source

    Length: 9216 (0x2400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Parameter, seg_0578d9

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 String_Utilities;

package body Parameter is

    Name_Begin_String : constant String := "(name=>";
    Name_End_String : constant String := ",class=>";
    Class_End_String : constant String := ",mode=>";
    Mode_End_String : constant String := ",value=>";
    Value_End_String : constant String := ")";


    function Create (Name : String;
                     Mode : Standard.Parameter.Mode;
                     Class : String;
                     Value : String) return Object is
        Parameter : Standard.Parameter.Object;
    begin
        Bounded_String.Copy (Target => Parameter.Name, Source => Name);
        Parameter.Mode := Mode;
        Bounded_String.Copy (Target => Parameter.Class, Source => Class);
        Bounded_String.Copy (Target => Parameter.Value, Source => Value);
        return Parameter;
    end Create;

    function Get_Name (Parameter : Object) return String is
    begin
        return Bounded_String.Image (Parameter.ame);
    end Get_Name;


    function Get_Mode (Parameter : Object) return Standard.Parameter.Mode is
    begin
        return Parameter.Mode;
    end Get_Mode;


    function Get_Class (Parameter : Object) return String is
    begin
        return Bounded_String.Image (Parameter.Class);
    end Get_Class;


    function Get_Value (Parameter : Object) return String is
    begin
        return Bounded_String.Image (Parameter.Value);
    end Get_Value;


    function Image (Parameter : Object) return String is
    begin
        return Name_Begin_String & Get_Name (Parameter) & Name_End_String &
                  Get_Class (Parameter) & Class_End_String &
                  Mode'Image (Get_Mode (Parameter)) & Mode_End_String &
                  Get_Value (Parameter) & Value_End_String;
    end Image;

    function Value (Parameter_String : String) return Object is
        Parameter : Object;
        Position : Natural;  
    begin
        Value (Parameter, Parameter_String, Position);
        return Parameter;
    end Value;

    procedure Value (Parameter : in out Object;
                     Parameter_String : String;
                     End_Parameter : out Natural) is
        Position : Natural;
        Name_Begin : Natural;
        Name_End : Natural;
        Class_Begin : Natural;
        Class_End : Natural;
        Mode_Begin : Natural;
        Mode_End : Natural;  
        Value_Begin : Natural;
        Value_End : Natural;  
    begin
        Position := String_Utilities.Locate (Fragment => Name_Begin_String,
                                             Within => Parameter_String,
                                             Ignore_Case => True);
        if Position /= Parameter_String'First then
            raise Syntax_Error;
        end if;
        Name_Begin := Parameter_String'First + Name_Begin_String'Length;
        Position := String_Utilities.Locate
                       (Fragment => Name_End_String,
                        Within => Parameter_String
                                     (Name_Begin .. Parameter_String'Last),
                        Ignore_Case => True);
        if Position = 0 then
            raise Syntax_Error;
        end if;
        Name_End := Position - 1;
        Class_Begin := Position + Name_End_String'Length;
        Position := String_Utilities.Locate
                       (Fragment => Class_End_String,
                        Within => Parameter_String
                                     (Class_Begin .. Parameter_String'Last),
                        Ignore_Case => True);
        if Position = 0 then
            raise Syntax_Error;
        end if;
        Class_End := Position - 1;
        Mode_Begin := Position + Class_End_String'Length;
        Position := String_Utilities.Locate
                       (Fragment => Mode_End_String,
                        Within => Parameter_String
                                     (Mode_Begin .. Parameter_String'Last),
                        Ignore_Case => True);
        if Position = 0 then
            raise Syntax_Error;
        end if;
        Mode_End := Position - 1;
        Value_Begin := Position + Mode_End_String'Length;
        Position := String_Utilities.Locate
                       (Fragment => Value_End_String,
                        Within => Parameter_String
                                     (Value_Begin .. Parameter_String'Last),
                        Ignore_Case => True);
        if Position = 0 then
            raise Syntax_Error;
        end if;
        Value_End := Position - 1;
        Parameter := Create (Name => Parameter_String (Name_Begin .. Name_End),
                             Mode => Mode'Value (Parameter_String
                                                    (Mode_Begin .. Mode_End)),
                             Class => Parameter_String
                                         (Class_Begin .. Class_End),
                             Value => Parameter_String
                                         (Value_Begin .. Value_End));
        End_Parameter := Position + Value_End_String'Length - 1;
    exception
        when others =>
            raise Syntax_Error;
    end Value;


end Parameter;

E3 Meta Data

    nblk1=8
    nid=2
    hdr6=e
        [0x00] rec0=1c rec1=00 rec2=01 rec3=05e
        [0x01] rec0=00 rec1=00 rec2=05 rec3=002
        [0x02] rec0=22 rec1=00 rec2=08 rec3=00e
        [0x03] rec0=19 rec1=00 rec2=06 rec3=024
        [0x04] rec0=16 rec1=00 rec2=07 rec3=00c
        [0x05] rec0=14 rec1=00 rec2=03 rec3=038
        [0x06] rec0=0b rec1=00 rec2=04 rec3=000
        [0x07] rec0=05 rec1=00 rec2=02 rec3=001
    tail 0x2154e1a7287cd3a0643e7 0x42a00088462060003
Free Block Chain:
  0x2: 0000  00 00 00 3e 80 10 61 72 61 6d 65 74 65 72 5f 53  ┆   >  arameter_S┆