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

⟦be9193d15⟧ Ada Source

    Length: 32768 (0x8000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Operational_Characteristics, pragma Module_Name 4 4142, pragma Segmented_Heap Associated_File_Info, pragma Segmented_Heap Associated_File_List_Ptr, pragma Segmented_Heap Object, pragma Segmented_Heap Option_Info, pragma Segmented_Heap Option_List_Ptr, pragma Segmented_Heap String_Ptr, seg_01b232

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 Simple_Status;
package Operational_Characteristics is

    -- The Build and Check constructors, as well as the Get selectors, provide
    -- storage for the following information:
    --   Compile        command line
    --   Link           command line
    --   Change context command line
    --   Change library command line
    --   Command Options
    --   General command line formation
    --   Filename and directory characteristics
    --   Information needed for Target_Builder instantiation


    type Compilation_Phase is (Assemble,  -- currently unsupported
                               Promote,  
                               Demote,    -- currently unsupported
                               Link);
    type Phase_Map is array (Compilation_Phase) of Boolean;


    type Compiler_Properties is
       (Generics_Share_Code,  
        Require_Body_And_Generic_In_Same_Compilation,
        Requires_Subunits_And_Generic_In_Same_Compilation,       Implements_Pragma_Inline,  
        Separate_Subunits_Are_Inefficient);
    type Compiler_Property_List is array (Compiler_Properties) of Boolean;


    type Filename_Type is (Ada_Name,    -- Filename prefix is based on
                                        -- name of corresponding ada unit
                           File_Name,   -- Filename prefix equals filename
                                        -- prefix of corresponding ada unit
                           Fixed_Name   -- File has same name, regardless of
                                        -- ada unit
                           );


    type File_Type is (Text,  
                       Binary);


    type Name_Case is (Upper,  
                       Lower,  
                       Capitalize,  
                       Dont_Care);

    -- Upper      -> THIS_NAME
    -- Lower      -> this_name
    -- Capitalize -> This_Name
    -- Dont_Care  -> All names are exactly as typed in, with auto-generated
    --               names in lower case


    type Operating_System is (Unix,  
                              Vms,  
                              Ultrix,  
                              Vm,  
                              Mvs,  
                              Os2,  
                              Dos,  
                              Spare1, Spare2, Spare3, Spare4, Unknown);


    type Retrieve_Condition is (On_Normal,  
                                On_Error,  
                                On_Warning,  
                                Always);


    type Transfer_Type is (Dtia, Ftp);

    type Operation_Mode is (Interactive, Batch);

    Invalid_Access : exception;
    -- Raised if a Get is attempted on an object that was never built

    Build_Failed : exception;

    Target_Is_Registered : exception;

    Target_Not_Initialized : exception;

    -------------
    -- Options --
    -------------

    type Option_Info is private;

    Null_Option_Info : constant Option_Info;

    function Build (Option_Name : String;  
                    Active_Phases : Phase_Map;  
                    Switch_Dependent : Boolean;
                    Switch_Name : String;  
                    Default_Value : String;  
                    Option_Takes_Arg : Boolean;  
                    Is_Pre_Option : Boolean;
                    Help : String := "";
                    For_Target : String) return Option_Info;
-------------  Arguments to build ----------
-- Option_Name : String;
--          Target text for option.  Should be unique and non-empty.
-- Active_Phases : Phase_Map;
--          When is option included in target compiler commands
-- Switch_Dependent : Boolean;
--          Is option's presence dependent on a switch being true.
-- Switch_Name : String;
--          If above is false, this is the name of that switch.  Should be
--          a valid ada identifier.
-- Default_Value : string;
--          Initial value of switch.
--          This field and the corresponding value in the switch file have
--          different interpretations depending on whether the option in
--          question takes an argument.
--              If Option_Takes_Arg is false, then this value should be either
--          "True" or "False", with "True" meaning that the option is
--          activated and "False" meaning it is not.
--              If Option_Takes_Arg is true, then the following table
--          describes the implications of this value:
--
--              Empty string    =>  Option is not present.
--              "@"             =>  Option is present with no argument.
--              <OTHER_VALUE>   =>  Option is present and it's argument is
--                  equal to <OTHER_VALUE>.
--
-- Option_Takes_Arg : Boolean;
--          Can an argument accompany the option
-- Is_Pre_Option : Boolean;
--          True if option is placed before unit name in command line.
--          False if placed after.
-- Help : string;
--          Message to be displayed when user hits EXPLAIN key on
--          corresponding switch.
    function Is_Null (The_Option_Info : Option_Info) return Boolean;

    function Get_Option_Name (The_Option_Info : Option_Info) return String;
    function Get_Active_Phases (The_Option_Info : Option_Info) return Phase_Map;
    function Switch_Dependent (The_Option_Info : Option_Info) return Boolean;
    function Get_Switch_Name (The_Option_Info : Option_Info) return String;
    function Default_Value (The_Option_Info : Option_Info) return String;
    function Option_Takes_Arg (The_Option_Info : Option_Info) return Boolean;
    function Is_Pre_Option (The_Option_Info : Option_Info) return Boolean;
    function Get_Help (The_Option_Info : Option_Info) return String;

    -- Alphabetized Option_Info functions:
    --
    --     Default_Value
    --     Get_Active_Phases
    --     Get_Option_Name
    --     Get_Switch_Name
    --     Is_Pre_Option
    --     Is_Null
    --     Option_Takes_Arg
    --     Switch_Dependent
    --     Is_Pre_Option

    type Option_List is array (Natural range <>) of Option_Info;

    -- [Need to customize the algorithm for creating a target name].

    -- [Also need to customize the algorithm for formatting a command line].
    --
    --  command     => <pre> <cmd> <options> <filename> [<lib>] <post>
    --
    --  where:
    --  <options>   => <separator> <option> [<gets> <value>]
    --  <filename>  => <unitname> <delimiter> <extension>

    -- Compile_Syntax : constant String :=
    --    "<pre> <cmd> <options> <filename> [<lib>] <post>";
    --
    -- Link_Syntax : constant String :=
    --    "<pre> <cmd> <options> <filename> [<lib>] <post>";
    --
    -- Filename_Syntax : constant String := "<unitname> <delimiter> <extension>";
    --
    -- Option_Syntax : constant String := "<separator> <option> <gets> <value>.";
    --
    -- Library_Syntax : constant String := "<lib_cmd> <separator> <library>";
    --
    -- Context_Syntax : constant String := "<dir_cmd> <separator> <directory>";


    ----------------------
    -- Associated Files --
    ----------------------

    type Associated_File_Info is private;

    Null_Associated_File_Info : constant Associated_File_Info;

    function Is_Null (The_File_Info : Associated_File_Info) return Boolean;

    function Build (The_File_Type : File_Type;
                    The_Retrieve_Condition : Retrieve_Condition;
                    Retrieve_Phase : Compilation_Phase;
                    Option_Dependent : Boolean;
                    Associated_Option_Switch : String;
                    Host_Filename_Extension : String;
                    Remote_Filename_Type : Filename_Type;
                    Argument_Overrides_Fixed_Name : Boolean;
                    Fixed_Remote_Filename : String;
                    Remote_Filename_Extension : String;
                    For_Target : String) return Associated_File_Info;


    ---------- Parameters for Build ----------
-- The_File_Type : File_Type;
--          See file_type description
-- The_Retrieve_Condition : Retrieve_Condition;
--          After which command results is file retrieved
-- Retrieve_Phase : Compilation_Phase;
--          When is file retrieved
-- Option_Dependent : Boolean;
--          True if file retrieval is dependent on the presence of an
--          option in the command line that creates the file
-- Associated_Option_Switch : String;
--          SWITCH name for the option on who's presence file retrieval
--          depends
-- Host_Filename_Extension : String;
--          Unbracketed file name used in host file creation.
--           eg.  "ASM" => "unit.<ASM>"
-- Remote_Filename_Type : Filename_Type;
--          See filename_type description
-- Argument_Overrides_Fixed_Name : Boolean;
--          True if the name of the file to be retrieved is equal to the
--          argument value except when it's empty.
-- Fixed_Remote_Filename : String;
--          Fixed filename prefix to be used when filename type is "fixed" and
--          no overriding factors are present.  When the filename type is
--          anything other than "fixed", and the field is non-empty, it
--          will be directly appended to the prefix.
-- Remote_Filename_Extension : String;
--          Portion of target file name that appears "after the dot".
--          Null string implies no dot.
--
--
    function Get_File_Type
                (The_File_Info : Associated_File_Info) return File_Type;
    function Get_Retrieve_Condition (The_File_Info : Associated_File_Info)
                                    return Retrieve_Condition;
    function Get_Retrieve_Phase
                (The_File_Info : Associated_File_Info) return Compilation_Phase;
    function Option_Dependent
                (The_File_Info : Associated_File_Info) return Boolean;
    function Get_Associated_Option_Switch
                (The_File_Info : Associated_File_Info) return String;
    function Get_Host_Filename_Extension
                (The_File_Info : Associated_File_Info) return String;
    function Get_Remote_Filename_Type
                (The_File_Info : Associated_File_Info) return Filename_Type;
    function Argument_Overrides_Fixed_Name
                (The_File_Info : Associated_File_Info) return Boolean;
    function Get_Fixed_Remote_Filename
                (The_File_Info : Associated_File_Info) return String;
    function Get_Remote_Filename_Extension
                (The_File_Info : Associated_File_Info) return String;

    -- Alphabetized Associated_File_Info functions:
    --
    --     Argument_Overrides_Fixed_Name
    --     Get_Associated_Option_Switch
    --     Get_Delete_Phase
    --     Get_File_Type
    --     Get_Host_Filename_Extension
    --     Get_Retrieve_Condition
    --     Get_Retrieve_Phase
    --     Get_Fixed_Remote_Filename
    --     Get_Remote_Filename_Type
    --     Get_Remote_Filename_Extension
    --     Is_Null
    --     Option_Dependent

    type Associated_File_List is
       array (Natural range <>) of Associated_File_Info;


    ---------------------------
    -- Customization Objects --
    ---------------------------

    type Object is private;

    Null_Object : constant Object;


    function Is_Null (The_Object : Object) return Boolean;

    function Build
                (Properties : Compiler_Property_List;
                 Max_Filename_Length : Natural;
                 Full_Pathname_Length : Natural;

                 Spec_Filename_Extension : String;
                 -- Filename extension for files containing an ada spec
                 Body_Filename_Extension : String;
                 -- Filename extension for files containing an ada body

                 Extension_Separator : String;
                 -- File format is
                 -- <filename><EXTENSION_SEPARATOR><appropriate_extension>

                 Directory_Separator : String;
                 Directory_Prefix : String;
                 Directory_Suffix : String;
                 Directory_Unit_Separator : String;
                 -- Fully qualified filename would be of this format:

                 -- <DPREF>dir_name1<DS>dir_name2<DS>dir_name2<DS>....
                 -- <DS>dir_name_n<DSUF><DUS>unit_name

                 -- Where <DS> => directory_separator,
                 --      <DPREF> => directory_prefix,
                 --      <DSUF> => directory_suffix,
                 --      <DUS> => directory_unit_separatory.

                 --  eg. For the VMS file
                 --  [DHR.TESTS.SUB]file,

                 --  <DPREF> -> "[",
                 --  <DS>    -> ".",
                 --  <DSUF>  -> "]",
                 --  <DUS>   -> ""

                 Case_Sensitive : Boolean;
                 Command_Line_Case : Name_Case;
                 Max_Command_Line_Length : Natural;

                 Compiler_Command : String;
                 Compiler_Pre_Command : String;
                 -- Command to be executed before compile command
                 Compiler_Post_Command : String;
                 -- Command to be executed after compile command

                 Linker_Command : String;
                 Linker_Pre_Command : String;
                 -- Command to be executed before link command
                 Linker_Post_Command : String;
                 -- Command to be executed after link command
                 Executable_Option : String;
                 -- Compiler option that names the executable file,
                 -- (Leave empty if no such option exists)
                 Executable_Option_Is_Pre_Option : Boolean;
                 -- Option goes before or after unit name in command line

                 Context_Command : String;
                 -- Command to change remote context

                 Library_Command : String;
                 -- Command to change remote program library

                 Default_Program_Library_Name : String;
                 -- Simple name of program_library
                 -- (Assumed to be contained in source directory)
                 Parse_Standard_Output : Boolean;
                 --  True if the RCI must look at standard output to
                 -- determine remote command execution success/failure
                 Parse_Standard_Error : Boolean;
                 --  True if the RCI must look at standard error to
                 -- determine remote command execution success/failure
                 Error_Pattern : String;
                 -- What text sequence indicates an error
                 -- (Used when parsing standard error or standard output)

                 Remote_Operating_System : Operating_System;

                 The_Transfer_Type : Transfer_Type;


                 -- *Option Information*
                 Option_Separator : String;
                 Option_Header : String;
                 Option_Argument_Separator : String;
                 -- Format of compile/link command is

                 -- Command line => <Cmd> <OH>Opt1<OS><OH>Opt2<OS><OH>Opt3 ...
                 -- Opt          => option[<OAS>argument]

                 -- Where

                 -- <OH>    -> Option_Header,
                 -- <OS>    -> Option_Prefix,
                 -- <OAS>   -> Option_Argument_Separator

                 -- Note that an option may or may not take an argument.  If
                 -- it does, the option_argument_separator is used to
                 -- separate the option and argument.

                 Options : Option_List;
                 -- The list of available compiler and linker options.


                 -- *Associated File Information*
                 Ada_Name_Subunit_Separator : String;
                 -- Used in lieu of '.' in forming remote file names based
                 -- on the ada name of subunits.

                 -- eg, if Ada_Name_Subunit_Separator = "__", and the
                 -- customizer has defined an associated file with
                 -- filename_type ADA_NAME and extension, say, "TEST",
                 -- then when subunit A.B.C is compiled/linked,
                 -- the RCI will attempt to retrieve A__B__C.TEST from the
                 -- remote machine.

                 Ada_Name_Spec_Suffix : String;
                 -- Similar to Ada_Name_Subunit_Separator, but is appended
                 -- to the ada_name of specs.
                 -- In the above example, if Ada_Name_Spec_Suffix is "_",
                 -- then when A'SPEC is compiled/linked, the RCI will attempt
                 -- to retrieve the file A_.TEST.

                 Ada_Name_Body_Suffix : String;
                 -- Similar to Ada_Name_Subunit_Separator, but is appended
                 -- to the ada_name of bodies.
                 -- In the above example, if Ada_Name_Body_Suffix is "_",
                 -- then when A'BODY is compiled/linked, the RCI will attempt
                 -- to retrieve the file A_.TEST.

                 Ada_Name_Is_Lowercase : Boolean := False;
                 -- "Are associated files based on the Ada name lowercase?"

                 Associated_Files : Associated_File_List;
                 -- The list of associated files to be retrieved

                 The_Operation_Mode : Operation_Mode := Interactive;
                 -- This field decides on whether the given customization
                 -- uses the interactive or batch compilation modes.
                 -- Default value will be set to interactive

                 Generate_Batch_Compile_Commands : Boolean := True;
                 -- This field is use only if the operation mode
                 -- is batch. If set to true this will cause
                 -- the RCI to write ADA compile commands
                 -- into the script file

                 Run_Script_Command : String := "";
                 -- Command to execute the batch script

                 Copy_Command : String := "";
                 -- Command to copy one file to another on the target

                 Batch_Move_Script_File_Name : String := "";
                 -- The name of the move script. This is the
                 -- first file written to the tape when
                 -- rci.build_script_via_tape is used

                 Create_Dir_Command : String := "";
                 -- The command used to create a directory on the target

                 Date_Command : String := "";
                 Date_File_Suffix : String := "";

                 For_Target : String) return Object;

    procedure Check (The_Object : Object;
                     Status : in out Simple_Status.Condition);

    procedure Display (The_Object : Object);

    function Get_Properties (The_Object : Object) return Compiler_Property_List;

    function Get_Max_Filename_Length (The_Object : Object) return Natural;
    function Get_Full_Pathname_Length (The_Object : Object) return Natural;

    function Get_Spec_Filename_Extension (The_Object : Object) return String;
    function Get_Body_Filename_Extension (The_Object : Object) return String;

    function Get_Extension_Separator (The_Object : Object) return String;
    function Get_Option_Separator (The_Object : Object) return String;
    function Get_Option_Header (The_Object : Object) return String;
    function Get_Option_Argument_Separator (The_Object : Object) return String;

    function Get_Ada_Name_Subunit_Separator (The_Object : Object) return String;
    function Get_Ada_Name_Spec_Suffix (The_Object : Object) return String;
    function Get_Ada_Name_Body_Suffix (The_Object : Object) return String;
    function Get_Ada_Name_Is_Lowercase (The_Object : Object) return Boolean;

    function Get_Directory_Separator (The_Object : Object) return String;  
    function Get_Directory_Prefix (The_Object : Object) return String;  
    function Get_Directory_Suffix (The_Object : Object) return String;
    function Get_Directory_Unit_Separator (The_Object : Object) return String;

    function Case_Sensitive (The_Object : Object) return Boolean;
    function Get_Command_Line_Case (The_Object : Object) return Name_Case;
    function Get_Max_Command_Line_Length (The_Object : Object) return Natural;

    function Get_Compiler_Command (The_Object : Object) return String;
    function Get_Compiler_Pre_Command (The_Object : Object) return String;
    function Get_Compiler_Post_Command (The_Object : Object) return String;

    function Get_Linker_Command (The_Object : Object) return String;
    function Get_Linker_Pre_Command (The_Object : Object) return String;
    function Get_Linker_Post_Command (The_Object : Object) return String;
    function Get_Executable_Option (The_Object : Object) return String;
    function Executable_Option_Is_Pre_Option
                (The_Object : Object) return Boolean;

    function Get_Context_Command (The_Object : Object) return String;

    function Get_Library_Command (The_Object : Object) return String;

    function Get_Default_Program_Library_Name
                (The_Object : Object) return String;
    function Parse_Standard_Output (The_Object : Object) return Boolean;
    function Parse_Standard_Error (The_Object : Object) return Boolean;
    function Get_Error_Pattern (The_Object : Object) return String;

    function Get_Remote_Operating_System
                (The_Object : Object) return Operating_System;

    function Get_Transfer_Type (The_Object : Object) return Transfer_Type;

    function Get_Options (The_Object : Object) return Option_List;
    function Get_Associated_Files
                (The_Object : Object) return Associated_File_List;

    function Get_Operation_Mode (The_Object : Object) return Operation_Mode;

    function Get_Generate_Batch_Compile_Commands
                (The_Object : Object) return Boolean;

    function Get_Execute_Batch_Script (The_Object : Object) return Boolean;

    function Get_Run_Script_Command (The_Object : Object) return String;

    function Get_Copy_Command (The_Object : Object) return String;

    function Get_Batch_Move_Script_File_Name
                (The_Object : Object) return String;
    function Get_Create_Dir_Command (The_Object : Object) return String;
    function Get_Date_Command (The_Object : Object) return String;

    function Get_Date_File_Suffix (The_Object : Object) return String;


    -- Alphabetized Object functions:
    --
    --     Case_Sensitive
    --     Executable_Option_Is_Pre_Option
    --     Get_Associated_Files
    --     Get_Body_Filename_Extension
    --     Get_Command_Line_Case
    --     Get_Compiler_Command
    --     Get_Context_Command
    --     Get_Default_Program_Library_Name
    --     Get_Directory_Prefix
    --     Get_Directory_Separator
    --     Get_Directory_Suffix
    --     Get_Error_Pattern
    --     Get_Executable_Option
    --     Get_Full_Pathname_Length
    --     Get_Library_Command
    --     Get_Linker_Command
    --     Get_Max_Command_Line_Length
    --     Get_Max_Filename_Length
    --     Get_Options
    --     Get_Option_Argument_Separator
    --     Get_Option_Header
    --     Get_Option_Separator
    --     Get_Properties
    --     Get_Remote_Operating_System
    --     Get_Spec_Filename_Extension
    --     Get_Extension_Separator
    --     Is_Null
    --     Parse_Standard_Error
    --     Parse_Standard_Output


    pragma Module_Name (4, 4142);   pragma Bias_Key (32);


private
    type String_Ptr is access String;
    pragma Segmented_Heap (String_Ptr);
    pragma Short_Pointer (String_Ptr);

    type Command_Line_Info is
        record
            Case_Sensitive : Boolean := True;
            Command_Line_Case : Name_Case := Dont_Care;
            Max_Command_Line_Length : Natural;
        end record;

    Null_Command_Line_Info : constant Command_Line_Info :=
       (Case_Sensitive => True,  
        Command_Line_Case => Dont_Care,  
        Max_Command_Line_Length => 0);


    -- Command_Info does NOT include options.
    type Command_Info is
        record
            The_Command : String_Ptr;
            Command_Syntax : String_Ptr;
            Use_Simple_Name : Boolean := False;
            Command_Required : Boolean := True;
        end record;

    Null_Command_Info : constant Command_Info := (The_Command => null,  
                                                  Command_Syntax => null,  
                                                  Use_Simple_Name => False,  
                                                  Command_Required => False);


    type Default_Option_Info is
        record
            Compiler_Option : String_Ptr;
            Linker_Option : String_Ptr;
            Context_Option : String_Ptr;
            Library_Option : String_Ptr;
        end record;

    Null_Default_Option_Info : constant Default_Option_Info :=
       (Compiler_Option => null,
        Linker_Option => null,
        Context_Option => null,
        Library_Option => null);

    type Parse_Info is
        record
            Parse_Standard_Output : Boolean;
            Parse_Error_Output : Boolean;
            Error_Pattern : String_Ptr;
        end record;

    Null_Parse_Info : constant Parse_Info := (Parse_Standard_Output => False,
                                              Parse_Error_Output => False,
                                              Error_Pattern => null);


    type Option_Rec is
        record
            Option_Name : String_Ptr;
            Active_Phases : Phase_Map;
            Switch_Dependent : Boolean;
            Switch_Name : String_Ptr;
            Default_Value : String_Ptr;
            Option_Takes_Arg : Boolean;
            Is_Pre_Option : Boolean;
            Help : String_Ptr;
        end record;

    type Option_Info is access Option_Rec;
    pragma Segmented_Heap (Option_Info);

    Null_Option_Info : constant Option_Info := null;

    type Option_List_Ptr is access Option_List;
    pragma Segmented_Heap (Option_List_Ptr);
    pragma Short_Pointer (Option_List_Ptr);

    type Associated_File_Rec is
        record
            The_File_Type : File_Type;
            The_Retrieve_Condition : Retrieve_Condition;
            Retrieve_Phase : Compilation_Phase;
            Delete_Phase : Compilation_Phase;  
            Option_Dependent : Boolean;
            Associated_Option_Switch : String_Ptr;
            Host_Filename_Extension : String_Ptr;
            Remote_Filename_Type : Filename_Type;
            Argument_Overrides_Fixed_Name : Boolean;
            Fixed_Remote_Filename : String_Ptr;
            Remote_Filename_Extension : String_Ptr;
        end record;

    type Associated_File_Info is access Associated_File_Rec;
    pragma Segmented_Heap (Associated_File_Info);

    Null_Associated_File_Info : constant Associated_File_Info := null;


    type Associated_File_List_Ptr is access Associated_File_List;
    pragma Segmented_Heap (Associated_File_List_Ptr);
    pragma Short_Pointer (Associated_File_List_Ptr);

    type Object_Rec is
        record
            The_Properties : Compiler_Property_List;

            The_Max_Filename_Length : Natural;
            The_Full_Pathname_Length : Natural;

            The_Spec_Filename_Extension : String_Ptr;
            The_Body_Filename_Extension : String_Ptr;

            The_Extension_Separator_Info : String_Ptr;
            The_Option_Separator_Info : String_Ptr;
            The_Option_Header_Info : String_Ptr;
            The_Option_Argument_Separator_Info : String_Ptr;

            Ada_Name_Subunit_Separator : String_Ptr;
            Ada_Name_Spec_Suffix : String_Ptr;
            Ada_Name_Body_Suffix : String_Ptr;
            Ada_Name_Is_Lowercase : Boolean;

            The_Directory_Separator_Info : String_Ptr;
            The_Directory_Prefix_Info : String_Ptr;
            The_Directory_Suffix_Info : String_Ptr;
            Directory_Unit_Separator : String_Ptr;

            The_Command_Line_Info : Command_Line_Info;

            The_Compiler_Info : Command_Info;
            The_Linker_Info : Command_Info;
            The_Context_Info : Command_Info;
            The_Library_Info : Command_Info;

            Linker_Pre_Command : String_Ptr;
            Linker_Post_Command : String_Ptr;
            Executable_Option : String_Ptr;
            Executable_Option_Is_Pre_Option : Boolean;

            Compiler_Pre_Command : String_Ptr;
            Compiler_Post_Command : String_Ptr;

            The_Default_Program_Library_Name : String_Ptr;

            The_Parse_Info : Parse_Info;

            Remote_Operating_System : Operating_System;

            The_Transfer_Type : Transfer_Type;

            Options : Option_List_Ptr;

            Associated_Files : Associated_File_List_Ptr;

            The_Operation_Mode : Operation_Mode;

            Generate_Batch_Compile_Commands : Boolean;

            Run_Script_Command : String_Ptr;

            Copy_Command : String_Ptr;

            Batch_Move_Script_File_Name : String_Ptr;

            Create_Dir_Command : String_Ptr;

            Date_Command : String_Ptr;
            Date_File_Suffix : String_Ptr;
        end record;

    type Object is access Object_Rec;
    pragma Segmented_Heap (Object);

    Null_Object : constant Object := null;

end Operational_Characteristics;

E3 Meta Data

    nblk1=1f
    nid=0
    hdr6=3e
        [0x00] rec0=1c rec1=00 rec2=01 rec3=002
        [0x01] rec0=1a rec1=00 rec2=02 rec3=072
        [0x02] rec0=25 rec1=00 rec2=03 rec3=010
        [0x03] rec0=17 rec1=00 rec2=04 rec3=008
        [0x04] rec0=13 rec1=00 rec2=05 rec3=052
        [0x05] rec0=14 rec1=00 rec2=06 rec3=018
        [0x06] rec0=1c rec1=00 rec2=07 rec3=068
        [0x07] rec0=19 rec1=00 rec2=08 rec3=066
        [0x08] rec0=17 rec1=00 rec2=09 rec3=048
        [0x09] rec0=13 rec1=00 rec2=0a rec3=038
        [0x0a] rec0=15 rec1=00 rec2=0b rec3=044
        [0x0b] rec0=20 rec1=00 rec2=0c rec3=07c
        [0x0c] rec0=19 rec1=00 rec2=0d rec3=03c
        [0x0d] rec0=16 rec1=00 rec2=0e rec3=02a
        [0x0e] rec0=13 rec1=00 rec2=0f rec3=092
        [0x0f] rec0=1b rec1=00 rec2=10 rec3=072
        [0x10] rec0=14 rec1=00 rec2=11 rec3=036
        [0x11] rec0=14 rec1=00 rec2=12 rec3=05c
        [0x12] rec0=17 rec1=00 rec2=13 rec3=052
        [0x13] rec0=15 rec1=00 rec2=14 rec3=058
        [0x14] rec0=11 rec1=00 rec2=15 rec3=06e
        [0x15] rec0=16 rec1=00 rec2=16 rec3=008
        [0x16] rec0=1a rec1=00 rec2=17 rec3=020
        [0x17] rec0=1f rec1=00 rec2=18 rec3=002
        [0x18] rec0=1f rec1=00 rec2=19 rec3=070
        [0x19] rec0=1c rec1=00 rec2=1a rec3=026
        [0x1a] rec0=1e rec1=00 rec2=1b rec3=034
        [0x1b] rec0=1b rec1=00 rec2=1c rec3=02e
        [0x1c] rec0=19 rec1=00 rec2=1d rec3=03e
        [0x1d] rec0=23 rec1=00 rec2=1e rec3=046
        [0x1e] rec0=06 rec1=00 rec2=1f rec3=001
    tail 0x21517d70283637b80dafa 0x42a00088462060003