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

⟦6556dc1b2⟧ Ada Source

    Length: 26624 (0x6800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Profile, pragma Module_Name 4 3219, pragma Subsystem Directory, seg_02850c

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 Directory;
with Simple_Status;

package Profile is

    pragma Subsystem (Directory);
    pragma Module_Name (4, 3219);

    -- A collection of job-related utilities for control of log generation,
    -- Activity files, and error reactions.  These facilities are used by
    -- most packages in !Commands, and may be used by user-written procedures.

    type Response_Profile is private;

    -- The aggregate of all components of the job response profile

    function Get return Response_Profile;
    -- Profile for the current job

    function Get_Default return Response_Profile;
    -- Profile for the Session (which is the default for a job that
    -- does not specify one)

    procedure Set (Profile : Response_Profile);
    -- Set profile for rest of current job

    procedure Set_Default (Profile : Response_Profile);
    -- Set profile for session; this is the value used for the job
    -- response profile if none is otherwise specified.

    function Default_Profile return Response_Profile;

    -- If the user has established no response profile for his session,
    -- this profile is used; it is the aggregate of all the Default_xxx
    -- constants defined in this package.

    subtype Name is String;  -- an unambiguous string name


    -- A map is maintained between a job id and the following values:

    -- The ERROR REACTION specifies which of several options a command is
    -- to follow in reacting to error situations.

    -- The LOG_FILTER specifies in some detail, the desired content of the
    -- log that is generated by the command.

    -- The LOG_PREFIXES specifies the format of messages entered into the log.

    -- The WIDTH specifies the number of columns in the log display.

    -- The LOG_FILE specifies the predefined file to be used by the Log
    -- package to generate output.

    -- The ACTIVITY specifies the activity file used for loading subsystems.


    -- The REMOTE_PASSWORDS specifies the file in which usernames and
    -- passwords for remote machines are stored.

    -- The REMOTE_SESSIONS specifies the file in which session names
    -- for remote machines are stored.

    -- Procedures are provided for setting each of these values into
    -- the map on a job or session basis, and functions are provided
    -- for retrieving the current value from these maps.

    -- Error_Reaction specifies how a command is to respond to errors
    -- along two dimensions:

    -- Perseverance    whether to continue processing or stop at the first
    --                 error.  (If a log is to be generated, the process
    --                 perseveres long enough to print an error message
    --                 regardless of the setting of this option.)

    -- Exception       whether or not a process is to propagate an
    -- Propagation     exception to its caller when it terminates a run in
    --                 which errors occurred. (If processing has
    --                 persevered, ERROR is raised.)

    type Error_Reaction is (Quit, Propagate, Persevere, Raise_Error);

    -- Quit        Command terminates at the first error. It may log
    --             the error in the job error map, but may not
    --             propagate an exception to its caller

    -- Propagate   Command terminates at the first error by raising
    --             an exception.  An entry should be made to the job
    --             error map. Profile.Error may be raised if no other
    --             exception is appropriate.

    -- Persevere   Command continues after errors at its discretion.
    --             Exceptions may not be propagated to its caller.

    -- Raise_Error Command continues after errors at its discretion.
    --             The command must raise an exception if it was unable
    --             to complete successfully.

    Default_Reaction : constant Error_Reaction := Persevere;

    procedure Set_Reaction (Reaction : Error_Reaction);

    procedure Set_Default_Reaction (Reaction : Error_Reaction);

    function Reaction (Response : Response_Profile := Profile.Get)
                      return Error_Reaction;
    function Persevere
                (Response : Response_Profile := Profile.Get) return Boolean;
    -- true if error reaction is Persevere or Raise_Error; i.e. if command
    -- is to continue after an error

    function Propagate
                (Response : Response_Profile := Profile.Get) return Boolean;
    -- true if error reaction is Propagate or Raise_Error; i.e., if a
    -- command is to raise an exception when it is done.

    -- Log Filter

    type Msg_Kind is (Auxiliary_Msg, Debug_Msg, Note_Msg, Positive_Msg,
                      Position_Msg, Negative_Msg, Warning_Msg, Error_Msg,
                      Exception_Msg, Sharp_Msg, At_Msg, Dollar_Msg);

    -- Log messages of any class can be filtered out of the log as it is
    -- being generated using the procedures defined below.

    type Log_Filter is array (Msg_Kind) of Boolean;

    -- The filter specifies what types of messages are to be printed.

    Quiet   : constant Log_Filter := Log_Filter'(others => False);
    Full    : constant Log_Filter := Log_Filter'
                                        (Debug_Msg => False, others => True);
    Terse   : constant Log_Filter := Log_Filter'
                                        (False, False, False, others => True);
    Errors  : constant Log_Filter :=
       Log_Filter'(Negative_Msg .. Exception_Msg => True, others => False);
    Summary : constant Log_Filter :=
       Log_Filter'(Positive_Msg | Negative_Msg => True, others => False);

    Default_Filter : constant Log_Filter := Full;

    function Filter (Response : Response_Profile := Profile.Get)
                    return Log_Filter;

    function Includes
                (Kind : Msg_Kind; Response : Response_Profile := Profile.Get)
                return Boolean;

    -- iff includes (Kind, Response) is true then messages of that Kind are
    -- sent to the log.

    procedure Include            (Kind : Msg_Kind; Value : Boolean := True);
    procedure Include_In_Default (Kind : Msg_Kind; Value : Boolean := True);
    -- Change the filter value for the given message kind

    procedure Set_Filter (Auxiliaries : Boolean := True;
                          Diagnostics : Boolean := True;
                          Notes       : Boolean := True;
                          Positives   : Boolean := True;
                          Negatives   : Boolean := True;
                          Positions   : Boolean := True;
                          Warnings    : Boolean := True;
                          Errors      : Boolean := True;
                          Exceptions  : Boolean := True;
                          Sharps      : Boolean := True;
                          Dollars     : Boolean := True;
                          Ats         : Boolean := True);

    procedure Set_Default_Filter (Auxiliaries : Boolean := True;
                                  Diagnostics : Boolean := True;
                                  Notes       : Boolean := True;
                                  Positives   : Boolean := True;
                                  Negatives   : Boolean := True;
                                  Positions   : Boolean := True;
                                  Warnings    : Boolean := True;
                                  Errors      : Boolean := True;
                                  Exceptions  : Boolean := True;
                                  Sharps      : Boolean := True;
                                  Dollars     : Boolean := True;
                                  Ats         : Boolean := True);

    procedure Set_Filter (Filter : Log_Filter);
    -- Establishes the given filter value(s) as the current filter value
    -- for the job.

    procedure Set_Default_Filter (Filter : Log_Filter);
    -- Establishes the given filter value(s) as the default filter value
    -- for the session.

    -- Log Format
    -- Specifies the prefixes desired for each message and the length of
    -- the line used in formating messages

    type Log_Prefix is (Nil, Time,       -- 11:00:00 PM
                        Hr_Mn_Sc,   -- 23:00:00
                        Hr_Mn,      -- 23:00
                        Date,       -- September 29, 1983
                        Mn_Dy_Yr,   -- 09/29/83
                        Dy_Mon_Yr,  -- 29-SEP-83
                        Yr_Mn_Dy,   -- 83/09/29
                        Symbols     -- +++, ++*, etc
                        );

    -- Each prefix (except Nil) is followed by a single blank

    type Log_Prefixes is array (1 .. 3) of Log_Prefix;

    -- Any combination of up to three prefixes may be specified

    Default_Prefixes : constant Log_Prefixes := (Yr_Mn_Dy, Hr_Mn_Sc, Symbols);

    function Prefixes (Response : Response_Profile := Profile.Get)
                      return Log_Prefixes;

    procedure Set_Prefixes (Prefixes : Log_Prefixes);
    procedure Set_Prefixes (Prefix1, Prefix2, Prefix3 : Log_Prefix := Nil);

    procedure Set_Default_Prefixes (Prefixes : Log_Prefixes);
    procedure Set_Default_Prefixes
                 (Prefix1, Prefix2, Prefix3 : Log_Prefix := Nil);

    Default_Width : constant Natural := 77;  -- default width of log display


    procedure Set_Width         (Width : Natural);
    procedure Set_Default_Width (Width : Natural);

    function Width (Response : Response_Profile := Profile.Get) return Natural;


    -- ACTIVITY:

    subtype Activity_Type is Directory.Object;

    function Default_Activity return Activity_Type;

    procedure Set_Activity         (Activity : Activity_Type);
    procedure Set_Default_Activity (Activity : Activity_Type);

    function Activity (Response : Response_Profile := Profile.Get)
                      return Activity_Type;


    -- LOG_FILE

    type Log_Output_File is (Use_Output, Use_Error,
                             Use_Standard_Output, Use_Standard_Error);

    Default_Log_File : constant Log_Output_File :=
       Use_Output;               -- default file for log

    procedure Set_Log_File         (Log_File : Log_Output_File);
    procedure Set_Default_Log_File (Log_File : Log_Output_File);

    function Log_File (Response : Response_Profile := Profile.Get)
                      return Log_Output_File;


    function Response (Reaction : Error_Reaction  := Profile.Reaction;
                       Filter   : Log_Filter      := Profile.Filter;
                       Prefixes : Log_Prefixes    := Profile.Prefixes;
                       Width    : Natural         := Profile.Width;
                       Activity : Activity_Type   := Profile.Activity;
                       Log_File : Log_Output_File := Profile.Log_File)
                      return Response_Profile;

    procedure Set_Response (Reaction : Error_Reaction  := Profile.Reaction;
                            Filter   : Log_Filter      := Profile.Filter;
                            Prefixes : Log_Prefixes    := Profile.Prefixes;
                            Width    : Natural         := Profile.Width;
                            Activity : Activity_Type   := Profile.Activity;
                            Log_File : Log_Output_File := Profile.Log_File);

    procedure Set_Default_Response
                 (Reaction : Error_Reaction :=
                     Profile.Reaction (Profile.Get_Default);
                  Filter   : Log_Filter := Profile.Filter (Profile.Get_Default);
                  Prefixes : Log_Prefixes :=
                     Profile.Prefixes (Profile.Get_Default);
                  Width    : Natural := Profile.Width (Profile.Get_Default);
                  Activity : Activity_Type :=
                     Profile.Activity (Profile.Get_Default);
                  Log_File : Log_Output_File :=
                     Profile.Log_File (Profile.Get_Default));


    function Ignore (Reaction : Error_Reaction  := Profile.Persevere;
                     Filter   : Log_Filter      := Profile.Quiet;
                     Prefixes : Log_Prefixes    := Profile.Prefixes;
                     Width    : Natural         := Profile.Width;
                     Activity : Activity_Type   := Profile.Activity;
                     Log_File : Log_Output_File := Profile.Log_File)
                    return Response_Profile renames Response;

    function Warn (Reaction : Error_Reaction  := Profile.Persevere;
                   Filter   : Log_Filter      := Profile.Full;
                   Prefixes : Log_Prefixes    := Profile.Prefixes;
                   Width    : Natural         := Profile.Width;
                   Activity : Activity_Type   := Profile.Activity;
                   Log_File : Log_Output_File := Profile.Log_File)
                  return Response_Profile renames Response;

    function Verbose (Reaction : Error_Reaction  := Profile.Reaction;
                      Filter   : Log_Filter      := Profile.Full;
                      Prefixes : Log_Prefixes    := Profile.Prefixes;
                      Width    : Natural         := Profile.Width;
                      Activity : Activity_Type   := Profile.Activity;
                      Log_File : Log_Output_File := Profile.Log_File)
                     return Response_Profile renames Response;

    function Raise_Exception (Reaction : Error_Reaction  := Profile.Propagate;
                              Filter   : Log_Filter      := Profile.Filter;
                              Prefixes : Log_Prefixes    := Profile.Prefixes;
                              Width    : Natural         := Profile.Width;
                              Activity : Activity_Type   := Profile.Activity;
                              Log_File : Log_Output_File := Profile.Log_File)
                             return Response_Profile renames Response;

    No_Prefixes : constant Log_Prefixes := (Nil, Nil, Nil);

    function Nil (Reaction : Error_Reaction  := Profile.Quit;
                  Filter   : Log_Filter      := Profile.Quiet;
                  Prefixes : Log_Prefixes    := Profile.No_Prefixes;
                  Width    : Natural         := Profile.Default_Width;
                  Activity : Activity_Type   := Profile.Default_Activity;
                  Log_File : Log_Output_File := Profile.Default_Log_File)
                 return Response_Profile renames Response;

    Error : exception;


    ----------------------
    -- String Interface --
    ----------------------

    -- The strings accepted and returned by the following subprograms obey
    -- the syntax for form parameters. The Option names and expected values
    -- are as follows:

    -- Option Name               Value

    -- REACTION                  QUIT, PROPAGATE, PERSEVERE, RAISE_ERROR
    --
    -- AUXILIARY_MSG, :::        TRUE or FALSE
    -- DEBUG_MSG, ???                 "
    -- NOTE_MSG, ---                  "
    -- POSITIVE_MSG, +++              "
    -- POSITION_MSG, >>>              "
    -- NEGATIVE_MSG, ++*              "
    -- WARNING_MSG, !!!               "
    -- ERROR_MSG, ***                 "
    -- EXCEPTION_MSG, %%%             "
    -- SHARP_MSG, ###                 "
    -- AT_MSG, @@@                    "
    -- DOLLAR_MSG, $$$                "
    --
    -- PREFIX                    (form[, form[, form]]) where form is one of
    --                           TIME, HR_MN_SC, HR_MN,
    --                           DATE, MN_DY_YR, DY_MON_YR, YR_MN_DY,
    --                           SYMBOLS
    --                           e.g. (TIME, DATE, SYMBOLS)
    --                                (HR_MN_SC, SYMBOLS)
    --
    -- LINE_WIDTH                positive integer in 1..1024
    --
    -- ACTIVITY                  name of activity file
    --
    -- LOG_FILE                  USE_OUTPUT, USE_ERROR, USE_STANDARD_OUTPUT, or
    --                           USE_STANDARD_ERROR


    -- The Options enclosed in "<>" brackets take no value, but denote the
    -- current value of the named profile.  These values may be used by
    -- themselves to denote all components of the named profile or as the value
    -- of one of the profile components to denote just that component of the
    -- named file, e.g. Activity=><DEFAULT>.  Where special symbols appear,
    -- e.g. +++, any symbols not mentioned are turned off.
    --
    -- <DEFAULT>                 System default, ignores user profile.
    --                           PERSEVERE, :::, ~???, ---..$$$, Width=>77
    --                           Prefix=>YR_MN_DY, HR_MN_SC SYMBOLS, USE_OUTPUT
    --
    -- <ERRORS>                  ++*, ***..%%%, <PROFILE>
    --
    -- <IGNORE>                  ~:::..$$$. <PROFILE>
    --
    -- <NIL>                     Empty, ignores user profile.
    --                           Quit, ~:::..$$$, Prefix=>, Width=>77, USE_OUTPUT
    --
    -- <PROFILE>                 Values set by job/session profile.
    --
    -- <QUIET>                   Equivalent of <NIL>
    --
    -- <PROGRESS>                +++, ++*, ***..%%%, <PROFILE>
    --
    -- <RAISE_EXCEPTION>         PROPAGATE, <PROFILE>
    --
    -- <SESSION_PROFILE>         Use session profile rather than job.
    --
    -- <WARN>                    ++*..%%%, <PROFILE>
    --
    -- <VERBOSE>                 :::, ~???, ---..$$$, <PROFILE>


    function Get return String;
    -- Profile for the current job as a form parameter

    function Get_Default return String;
    -- Profile for the Session (which is the default for a job that
    -- does not specify one) as a form parameter

    function Image (Profile : Response_Profile := Standard.Profile.Get)
                   return String;
    function Value (Image : String := Profile.Get) return Response_Profile;

    procedure Convert (Image    :        String;
                       Response : out    Response_Profile;
                       Status   : in out Simple_Status.Condition);

    -- Convert between form parameter representation of a profile and the
    -- internal representation.  The Value function ignores invalid options
    -- in the form parameter.

    procedure Set (Profile : String; Status : in out Simple_Status.Condition);

    -- Set profile for rest of current job; An error Status is returned and
    -- the profile is not changed if the profile string is invalid.

    procedure Set_Default (Profile :        String;
                           Status  : in out Simple_Status.Condition);
    -- Set profile for session; this is the value used for the job   -- response profile if none is otherwise specified.


    procedure Get_Cached_Resolution
                 (Name            :     String;
                  The_Declaration : out Directory.Declaration;
                  The_Object      : out Directory.Object;
                  The_Version     : out Directory.Version;
                  Status          : out Directory.Naming.Name_Status);

    -- Retrieve the resolution of the Name as cached at job initiation. Only
    -- resolution of <IMAGE>, <CURSOR>, <REGION>, and <SELECTION> are cached.

    function Cached_Selected_Text return String;

    -- Retrieve the Selected text at job initiation.

    -- REMOTE_PASSWORDS:

    subtype Remote_Passwords_Type is Directory.Object;
    function  Remote_Passwords (Response : Response_Profile := Profile.Get)
                              return Remote_Passwords_Type;
    function  Default_Remote_Passwords return Remote_Passwords_Type;
    procedure Set_Remote_Passwords (Passwords : Remote_Passwords_Type);
    procedure Set_Default_Remote_Passwords (Passwords : Remote_Passwords_Type);

    -- REMOTE_SESSIONS:

    subtype Remote_Sessions_Type is Directory.Object;  -- text file
    function  Remote_Sessions (Response : Response_Profile := Profile.Get)
                             return Remote_Sessions_Type;
    function  Default_Remote_Sessions return Remote_Sessions_Type;
    procedure Set_Remote_Sessions (Sessions : Remote_Sessions_Type);
    procedure Set_Default_Remote_Sessions (Sessions : Remote_Sessions_Type);
end Profile;

E3 Meta Data

    nblk1=19
    nid=0
    hdr6=32
        [0x00] rec0=1e rec1=00 rec2=01 rec3=06c
        [0x01] rec0=1c rec1=00 rec2=02 rec3=000
        [0x02] rec0=15 rec1=00 rec2=03 rec3=02e
        [0x03] rec0=15 rec1=00 rec2=04 rec3=054
        [0x04] rec0=18 rec1=00 rec2=05 rec3=04e
        [0x05] rec0=17 rec1=00 rec2=06 rec3=038
        [0x06] rec0=00 rec1=00 rec2=19 rec3=01a
        [0x07] rec0=14 rec1=00 rec2=07 rec3=02e
        [0x08] rec0=00 rec1=00 rec2=18 rec3=016
        [0x09] rec0=11 rec1=00 rec2=08 rec3=08e
        [0x0a] rec0=1b rec1=00 rec2=09 rec3=044
        [0x0b] rec0=1c rec1=00 rec2=0a rec3=07c
        [0x0c] rec0=02 rec1=00 rec2=17 rec3=016
        [0x0d] rec0=18 rec1=00 rec2=0b rec3=02a
        [0x0e] rec0=00 rec1=00 rec2=16 rec3=010
        [0x0f] rec0=11 rec1=00 rec2=0c rec3=042
        [0x10] rec0=12 rec1=00 rec2=0d rec3=07a
        [0x11] rec0=10 rec1=00 rec2=0e rec3=084
        [0x12] rec0=17 rec1=00 rec2=0f rec3=022
        [0x13] rec0=18 rec1=00 rec2=10 rec3=058
        [0x14] rec0=15 rec1=00 rec2=11 rec3=016
        [0x15] rec0=1b rec1=00 rec2=12 rec3=040
        [0x16] rec0=16 rec1=00 rec2=13 rec3=002
        [0x17] rec0=17 rec1=00 rec2=14 rec3=040
        [0x18] rec0=0c rec1=00 rec2=15 rec3=000
    tail 0x217223ee083c174d884f0 0x42a00088462065003