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

⟦5f0d6bcf9⟧ Ada Source

    Length: 18432 (0x4800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Date_Class, seg_0360be, seg_03638f, seg_0368fb

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 Object, Message, Bounded_String, Counter, String_Class,
     Integer_Class, Time_Utilities, Bug, Symbol;
package body Date_Class is

    package Bs renames Bounded_String;

    type Date_Unary_Message is (Entexte, Tonjour, Tonmois, Tonannee,
                                Tonheure, Tesminutes, Tessecondes);

    type Months is (Janvier, Fevrier, Mars, Avril, Mai, Juin, Juillet,
                    Aout, Septembre, Octobre, Novembre, Decembre);

    function Create return Object.Reference is
        Obj : Object.Reference;
    begin
        Obj := Object.Create (Object.Date_Class, 1);
        return (Obj);
    end Create;

    procedure Create_Default is
        Default_Date_Name : Message.Tiny_String;
        Default_Date : Object.Reference;
    begin
        Bounded_String.Copy (Default_Date_Name, "Date");
        Default_Date := Create;
        Symbol.Insert (Default_Date_Name, Default_Date);
    end Create_Default;

    function Get_Day return Object.Reference is
        The_Date : Time_Utilities.Time;
    begin
        The_Date := Time_Utilities.Get_Time;
        return Integer_Class.Create (Integer (The_Date.Day));
    end Get_Day;

    function Get_Month return Object.Reference is
        The_Date : Time_Utilities.Time;
        The_Month_String : Message.Tiny_String;
    begin
        The_Date := Time_Utilities.Get_Time;
        Bs.Copy (The_Month_String,
                 " " & Months'Image (Months'Val (Time_Utilities.Months'Pos
                                                    (The_Date.Month))));
        return String_Class.Create (The_Month_String);
    end Get_Month;

    function Get_Year return Object.Reference is
        The_Date : Time_Utilities.Time;
    begin
        The_Date := Time_Utilities.Get_Time;
        return Integer_Class.Create (Integer (The_Date.Year));
    end Get_Year;

    function Get_Hour return Object.Reference is
        The_Date : Time_Utilities.Time;
    begin
        The_Date := Time_Utilities.Get_Time;
        return Integer_Class.Create (Integer (The_Date.Hour));
    end Get_Hour;

    function Get_Minutes return Object.Reference is
        The_Date : Time_Utilities.Time;
    begin
        The_Date := Time_Utilities.Get_Time;
        return Integer_Class.Create (Integer (The_Date.Minute));
    end Get_Minutes;

    function Get_Secondes return Object.Reference is
        The_Date : Time_Utilities.Time;
    begin
        The_Date := Time_Utilities.Get_Time;
        return Integer_Class.Create (Integer (The_Date.Second));
    end Get_Secondes;

    procedure In_Text (The_Object : Object.Reference) is
    begin
        Object.In_Text (The_Object);
    end In_Text;

    function Send (To_Object : Object.Reference;
                   The_Message : Message.Tiny_String) return Object.Reference is
        Result : Object.Reference := Object.Void_Reference;
        Talk : Date_Unary_Message;
    begin  
        Talk := Date_Unary_Message'Value (Bs.Image (V => The_Message));
        Counter.Increase (Object.Date_Class);
        case Talk is

            when Entexte =>
                In_Text (To_Object);
                Result := To_Object;

            when Tonjour =>  
                Result := Get_Day;

            when Tonmois =>
                Result := Get_Month;

            when Tonannee =>
                Result := Get_Year;

            when Tonheure =>
                Result := Get_Hour;

            when Tesminutes =>
                Result := Get_Minutes;

            when Tessecondes =>
                Result := Get_Secondes;
        end case;
        Counter.Stop_Time (Object.Date_Class);
        return (Result);

    exception
        when Constraint_Error =>
            raise Bug.Unknown_Date_Message;
    end Send;

end Date_Class;

E3 Meta Data

    nblk1=11
    nid=4
    hdr6=a
        [0x00] rec0=1e rec1=00 rec2=01 rec3=026
        [0x01] rec0=09 rec1=00 rec2=07 rec3=02a
        [0x02] rec0=1b rec1=00 rec2=0d rec3=030
        [0x03] rec0=1d rec1=00 rec2=10 rec3=038
        [0x04] rec0=1b rec1=00 rec2=06 rec3=000
        [0x05] rec0=00 rec1=00 rec2=07 rec3=012
        [0x06] rec0=1d rec1=00 rec2=09 rec3=010
        [0x07] rec0=1d rec1=00 rec2=0b rec3=036
        [0x08] rec0=1d rec1=00 rec2=0f rec3=042
        [0x09] rec0=1f rec1=00 rec2=0c rec3=064
        [0x0a] rec0=1f rec1=00 rec2=11 rec3=01a
        [0x0b] rec0=1c rec1=00 rec2=0e rec3=000
        [0x0c] rec0=1a rec1=00 rec2=04 rec3=00c
        [0x0d] rec0=1e rec1=00 rec2=0d rec3=028
        [0x0e] rec0=09 rec1=00 rec2=10 rec3=000
        [0x0f] rec0=1f rec1=00 rec2=0d rec3=000
        [0x10] rec0=00 rec1=00 rec2=00 rec3=000
    tail 0x21732f59e84dd7f5da9dc 0x42a00088462060003
Free Block Chain:
  0x4: 0000  00 0e 00 3a 00 2e 20 20 20 20 20 20 20 20 20 20  ┆   : .          ┆
  0xe: 0000  00 11 00 31 80 14 6a 65 63 74 2e 49 6e 74 65 67  ┆   1  ject.Integ┆
  0x11: 0000  00 0c 00 10 00 0d 20 20 20 20 20 20 20 20 20 20  ┆                ┆
  0xc: 0000  00 0f 00 05 80 02 72 3b 02 73 61 67 65 2e 53 65  ┆      r; sage.Se┆
  0xf: 0000  00 0b 00 08 80 05 20 28 42 29 20 05 29 20 08 20  ┆       (B)  )   ┆
  0xb: 0000  00 09 00 07 80 04 61 6c 75 65 04 74 2e 47 65 74  ┆      alue t.Get┆
  0x9: 0000  00 05 00 19 80 0b 6c 61 73 73 2e 46 61 6c 73 65  ┆      lass.False┆
  0x5: 0000  00 0a 00 37 80 0d 74 5f 56 61 6c 75 65 20 28 42  ┆   7  t_Value (B┆
  0xa: 0000  00 03 00 04 80 01 74 01 69 73 65 20 42 75 67 2e  ┆      t ise Bug.┆
  0x3: 0000  00 02 00 21 80 1e 20 20 20 20 20 20 20 20 20 20  ┆   !            ┆
  0x2: 0000  00 08 00 87 80 01 3b 01 00 0f 20 20 20 20 20 20  ┆      ;         ┆
  0x8: 0000  00 00 00 e2 80 2e 20 20 20 20 43 6f 75 6e 74 65  ┆     .    Counte┆