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

⟦1a1181670⟧ Ada Source

    Length: 11264 (0x2c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Attribute, seg_0499b1, seg_049a42, seg_049a61

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 
└─⟦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, Complement_Array, Enumerate_Array;
package body Attribute is

    procedure Put (Item : out Object;
                   An_Objet : in Objet.Object;
                   A_Detail : in Detail.Object) is

    begin
        Item.The_Objet := An_Objet;
        Item.The_Detail := A_Detail;
    end Put;

    procedure Affect (Item : in Object; Number : Integer; Ok : out Boolean) is

    begin
        if Is_A_Number (Item) and Detail.Exist (Item.The_Detail) then
            Complement_Array.Field_Put_Number
               (Objet.Complement (Item.The_Objet),
                Detail.Index (Item.The_Detail), Number, Ok);
        else
            Ok := False;
        end if;
    end Affect;

    procedure Affect (Item : in Object;
                      Enumeration, Literal : in Positive;
                      Ok : out Boolean) is

        Attribute_Enumeration : Natural;

    begin
        if Detail.Exist (Item.The_Detail) then
            Attribute_Enumeration := (Complement_Array.Field_Enumeration
                                         (Objet.Complement (Item.The_Objet),
                                          Detail.Index (Item.The_Detail)));
            if Is_An_Enumerate (Item) and
               (Attribute_Enumeration = Enumeration) then
                Complement_Array.Field_Put_Enumerate
                   (Objet.Complement (Item.The_Objet),
                    Detail.Index (Item.The_Detail), Enumeration, Literal, Ok);
                Ok := True;
            elsif (Attribute_Enumeration =
                   Enumerate_Array.Enumeration_Index ("special") or
                   Attribute_Enumeration =
                      Enumerate_Array.Enumeration_Index ("normal")) and  
                  (Enumeration =
                   Enumerate_Array.Enumeration_Index ("special") or
                   Enumeration = Enumerate_Array.Enumeration_Index
                                    ("normal")) then
                Complement_Array.Field_Put_Enumerate
                   (Objet.Complement (Item.The_Objet),
                    Detail.Index (Item.The_Detail), Enumeration, Literal, Ok);
                Ok := True;
            else
                Ok := False;
            end if;  
        else
            Ok := False;
        end if;
    end Affect;

    procedure Show (Item : in Object) is

    begin
        Text_Io.Put_Line ("Attribute :");
        Objet.Show (Item.The_Objet);
        Detail.Show (Item.The_Detail);  
        if Is_A_Number (Item) then
            Text_Io.Put_Line ("Number : " & Image (Item));  
        elsif Is_A_Sentence (Item) then
            Text_Io.Put_Line ("Sentence : " & Image (Item));  
        elsif Is_An_Enumerate (Item) then
            Text_Io.Put_Line ("Enumerate : " & Image (Item));
        else
            Text_Io.New_Line;
        end if;
    end Show;

    function Is_A_Number (Item : in Object) return Boolean is

    begin
        if Detail.Exist (Item.The_Detail) then  
            return Complement_Array.Field_Is_A_Number
                      (Objet.Complement (Item.The_Objet),
                       Detail.Index (Item.The_Detail));
        else
            return False;
        end if;
    end Is_A_Number;

    function Is_A_Sentence (Item : in Object) return Boolean is

    begin
        if Detail.Exist (Item.The_Detail) then
            return Complement_Array.Field_Is_A_Sentence
                      (Objet.Complement (Item.The_Objet),
                       Detail.Index (Item.The_Detail));
        else
            return False;
        end if;
    end Is_A_Sentence;

    function Is_An_Enumerate (Item : in Object) return Boolean is

    begin
        if Detail.Exist (Item.The_Detail) then
            return Complement_Array.Field_Is_An_Enumerate
                      (Objet.Complement (Item.The_Objet),
                       Detail.Index (Item.The_Detail));
        else
            return False;
        end if;
    end Is_An_Enumerate;

    function Exist (Item : in Object) return Boolean is

    begin
        if Detail.Exist (Item.The_Detail) then
            return Complement_Array.Field_Belong
                      (Objet.Complement (Item.The_Objet),
                       Detail.Index (Item.The_Detail));
        else  
            return False;
        end if;
    end Exist;

    function Image (Item : in Object) return String is

    begin
        if Is_A_Number (Item) then
            return Integer'Image (Number (Item));
        elsif Is_A_Sentence (Item) then
            return Sentence (Item);  
        elsif Is_An_Enumerate (Item) then
            return Enumerate_Array.Literal (Literal (Item));
        else
            return "";
        end if;
    end Image;

    function Number (Item : in Object) return Integer is

    begin
        if Detail.Exist (Item.The_Detail) then
            return Complement_Array.Field_Number
                      (Objet.Complement (Item.The_Objet),
                       Detail.Index (Item.The_Detail));
        else
            return 0;
        end if;
    end Number;

    function Sentence (Item : in Object) return String is

    begin
        if Detail.Exist (Item.The_Detail) then
            return Complement_Array.Field_Sentence
                      (Objet.Complement (Item.The_Objet),
                       Detail.Index (Item.The_Detail));
        else
            return "";
        end if;
    end Sentence;

    function Enumeration (Item : in Object) return Natural is

    begin
        if Detail.Exist (Item.The_Detail) then
            return Complement_Array.Field_Enumeration
                      (Objet.Complement (Item.The_Objet),
                       Detail.Index (Item.The_Detail));
        else
            return 0;
        end if;
    end Enumeration;

    function Literal (Item : in Object) return Natural is

    begin
        if Detail.Exist (Item.The_Detail) then
            return Complement_Array.Field_Literal
                      (Objet.Complement (Item.The_Objet),
                       Detail.Index (Item.The_Detail));
        else
            return 0;
        end if;
    end Literal;

end Attribute;

E3 Meta Data

    nblk1=a
    nid=4
    hdr6=e
        [0x00] rec0=16 rec1=00 rec2=01 rec3=008
        [0x01] rec0=17 rec1=00 rec2=02 rec3=030
        [0x02] rec0=1a rec1=00 rec2=03 rec3=03a
        [0x03] rec0=1e rec1=00 rec2=0a rec3=00e
        [0x04] rec0=20 rec1=00 rec2=08 rec3=04e
        [0x05] rec0=21 rec1=00 rec2=05 rec3=05c
        [0x06] rec0=19 rec1=00 rec2=06 rec3=000
        [0x07] rec0=1c rec1=00 rec2=06 rec3=05c
        [0x08] rec0=16 rec1=00 rec2=04 rec3=000
        [0x09] rec0=2d rec1=0c rec2=94 rec3=41a
    tail 0x2174dfbb6865f7f3bee1e 0x42a00088462060003
Free Block Chain:
  0x4: 0000  00 07 02 91 80 0b 54 68 65 5f 4f 62 6a 65 74 29  ┆      The_Objet)┆
  0x7: 0000  00 09 03 fc 80 03 68 65 6e 03 00 3e 20 20 20 20  ┆      hen  >    ┆
  0x9: 0000  00 00 00 6a 80 01 6e 01 00 3c 20 20 20 20 20 20  ┆   j  n  <      ┆