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

⟦fa4f59dd4⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, seg_029695

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 Messages;
WITH Mailboxes;
WITH Destinations;

WITH Io;
WITH Lines;
WITH Message;
WITH Time_Utilities;
WITH String_Utilities;
WITH Symbolic_Display;

PACKAGE BODY Command_Utilities IS

   PACKAGE Su RENAMES String_Utilities;
   PACKAGE Tu RENAMES Time_Utilities;

   Unknown_Command : CONSTANT Command := (Unknown, 0);

   FUNCTION Get_Natural_Argument
               (Kind : Command_Kind; Command : String) RETURN Natural;

   PROCEDURE New_Line;

   PROCEDURE Display IS NEW Symbolic_Display (Io.Put, New_Line);

   PROCEDURE New_Line IS
   BEGIN
      Io.New_Line;
   END New_Line;

   FUNCTION Get_Natural_Argument
               (Kind : Command_Kind; Command : String) RETURN Natural IS
      Start_Of_Argument : Natural := Su.Reverse_Locate (" ", Command);
      Number            : Natural;
      Was_A_Number      : Boolean;
   BEGIN
      Su.String_To_Number (Command (Start_Of_Argument .. Command'Last),
                           Number, Was_A_Number);
      IF NOT Was_A_Number THEN
         RAISE Constraint_Error;
      END IF;
      RETURN Number;
   END Get_Natural_Argument;

   FUNCTION Get_Command RETURN Command IS
      -- Syntax: <command name> [" " <natural number>]
   BEGIN
      Io.Put ("MM> ");
      DECLARE
         Command : CONSTANT String := Su.Strip (Io.Get_Line);
      BEGIN

         FOR I IN Command_Kind'First .. Command_Kind'Last LOOP
            BEGIN
               IF Su.Equal (Command_Kind'Image (I),
                            Command (Command'First ..
                                        Command'First +
                                           Command_Kind'Image (I)'Length - 1),
                            Ignore_Case => True) THEN
                  CASE I IS
                     WHEN Headers | Send | Quit | Unknown =>
                        RETURN (I, 0);
                     WHEN Read | Delete =>
                        RETURN (I, Get_Natural_Argument (I, Command));
                  END CASE;
               END IF;
            EXCEPTION
               WHEN Constraint_Error =>
                  NULL;
            END;
         END LOOP;
         RETURN Unknown_Command;
      END;
   EXCEPTION
      WHEN Constraint_Error =>
         RETURN Unknown_Command;
   END Get_Command;

   FUNCTION Get_Message RETURN Messages.Message IS
      Temp : Messages.Message := Messages.Make;
      Text : Lines.Lines_Type := Lines.Make;
   BEGIN
      Io.Put ("To: ");
      Messages.Set_To (Destinations.Lookup (Io.Get_Line), Temp);
      Messages.Set_Date (Tu.Get_Time, Temp);
      Io.Put ("Subject: ");
      Messages.Set_Subject (Io.Get_Line, Temp);
      Io.Put_Line ("Text: ");
      DECLARE
         Input_File : Io.File_Type := Io.Current_Input;
      BEGIN
         LOOP
            Lines.Add (Io.Get_Line, Text);
         END LOOP;
      EXCEPTION
         WHEN Io.End_Error =>
            Messages.Set_Text (Text, Temp);
            Io.Reset (Input_File);
            Io.New_Line;
            RETURN Temp;
      END;
   END Get_Message;


   PROCEDURE Display_Message (Message : Messages.Message) IS
   BEGIN
      Display (Message);
   END Display_Message;

   PROCEDURE Display_Headers (Mailbox : Mailboxes.Mailbox) IS
   BEGIN
      FOR I IN 1 .. Mailboxes.Last_Message (Mailbox) LOOP
         Io.Put (Natural'Image (I) & " ");
         IF Mailboxes.Get_Read_Flag (I, Mailbox) THEN
            Io.Put ("R ");
         END IF;
         Io.Put (Destinations.Image (Messages.Get_From
                                        (Mailboxes.Get_Message (I, Mailbox))));
         Io.New_Line;
      END LOOP;
   END Display_Headers;

   PROCEDURE Notify_Of_Receipt (Sending_User   : Destinations.User;
                                Receiving_User : Destinations.User) IS
   BEGIN
      Message.Send (Destinations.Image (Receiving_User),
                    "message received from " &
                       Destinations.Image (Sending_User));
   END Notify_Of_Receipt;

END Command_Utilities;

E3 Meta Data

    nblk1=6
    nid=0
    hdr6=c
        [0x00] rec0=27 rec1=00 rec2=01 rec3=02c
        [0x01] rec0=00 rec1=00 rec2=06 rec3=020
        [0x02] rec0=1a rec1=00 rec2=02 rec3=076
        [0x03] rec0=21 rec1=00 rec2=03 rec3=038
        [0x04] rec0=1e rec1=00 rec2=04 rec3=03c
        [0x05] rec0=05 rec1=00 rec2=05 rec3=000
    tail 0x21722f7d083d36a3cfa93 0x489e0066482863001