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

⟦fa9aa326b⟧ Ada Source

    Length: 25600 (0x6400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Archive, pragma Module_Name 4 3546, pragma Subsystem Archive, seg_012826

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 Machine;

package Archive is

    procedure Save (Objects : String := "<IMAGE>";
                    Options : String := "R1000";
                    Device : String := "MACHINE.DEVICES.TAPE_0";
                    Response : String := "<PROFILE>");

    -- Save a set of objects (files, Ada units, etc.) to a tape or directory
    -- such that they may be restored to their original form at a later time
    -- or on another system.

    -- The Objects parameter specifies the primary objects to be saved.  It
    -- can be any naming expression.  By default, the current image is saved
    -- unless there is a selection on that image, in which case the selected
    -- object is saved.  Normally, the specified object(s) and all contained
    -- objects are archived; this feature can be disabled.

    -- The Options parameter specifies the type of tape to be written and
    -- options to control what is saved.  The Options parameter for each of
    -- the Archive operations is written as a sequence of option
    -- names separated by spaces or commas.  Options with arguments are
    -- given as an option name followed by an equal sign followed by a
    -- value.

    ---------------------------------------------------------------------------

    -- The save options are:
    --
    --   FORMAT = R1000 | R1000_LONG | ANSI
    --      R1000
    --        Writes an ANSI tape with the data file followed by the index
    --        file.  The images of the objects being saved are written
    --        directly to the tape. This is the default.

    --      R1000_LONG
    --        like R1000 format but the data file is written to one ANSI tape
    --        and the index file to a second ANSI tape.

    --      ANSI
    --        Writes the data to a temporary file and then writes both index
    --        and data file to a tape using ANSI tape facilities.

    --   LABEL=(<any balanced string>)
    --      An identifying string written at the head of the archived data.
    --      The label parameter allows the user to specify a string that
    --      will be put at the front of the index file.  When a restore is
    --      done the label specified to the restore procedure will be
    --      checked against the one on the save tape.

    --   NONRECURSIVE
    --      Save only the objects resolved to by the Objects parameter.  Do
    --      not recursively save objects that are inside of other objects.
    --      The default is to save the objects mentioned in the Objects
    --      parameter and all objects contained in them.
    --      To save a world and a subset of its contents one can say:
    --      Save (Objects => "[!FOO?,~!FOO.ABC?,~!FOO.DEF?]", ...,
    --            Options => "R1000 NONRECURSIVE");

    --   AFTER=<time_expression>
    --      Only objects changed after the time represented by
    --      <time_expression> will be archived.  The <time_expression>
    --      should be acceptable to the time_utilities.value function.

    --   STARTING_AT=<time_expression>
    --      the archive will delay until the given time
    --      (after the mount request has been processed).

    --   EFFORT_ONLY
    --      The EFFORT_ONLY option causes a list to be printed of the names
    --      of the units that would be saved if the archive command
    --      was given with this set of parameters.

    --   CODE [=load_proc_list]
    --      The CODE option specifies that code is to be archived for the
    --      named load procs. If no specification follows the
    --      CODE option, the Objects parameter specification is used
    --      instead.

    --   COMPATIBILITY_DATABASE (CDB) [=<Subsystems>]
    --      Causes the full compatibility database for each subsystem
    --      specified to be archived. If no subsystems are specified with
    --      the option, the Objects parameter specification is used instead.

    --      When Ada units in a subsystem are archived, the relevant
    --      portions of the subsystem Compatibility Database is
    --      automatically archived with them.  Therefore, this option is
    --      required only in special situations, primarily when one needs to
    --      "sync up" a primary and a secondary subsystem.

    --      To archive just Compatibility Databases, use
    --      Save ("Subsystems", "CDB");

    --      To archive compatibility databases with other objects, use
    --      Save ("Other Stuff", "CDB=Subsystems");

    --      The "Subsystems" and "Other Stuff" specifications will usually
    --      describe disjoint sets of objects.

    --   IGNORE_CDB
    --      Specifies that no compatibility database information is to be
    --      saved.

    --   LINKS [=<worlds>]
    --      Causes only the link pack for each world specified to be archived.
    --      If no worlds are specified with the option, the Objects
    --      parameter specification is used instead.

    --   PREFIX=<naming pattern>
    --      A naming pattern that is saved with the archived objects, which
    --      can be recalled as the For_Prefix when the data is Restored.
    --      When set to an appropriate value, the restorer need not know
    --      exactly the names of the archived objects to be able to restore
    --      them to a new place.  If this option is not given, the value
    --      used is derived from the Objects parameter.

    --   UNLOAD
    --      A boolean option.  When True (the default), causes the tape to
    --      be rewound and unloaded after the operation is complete.  When
    --      False, this option causes the tape to be rewound to the beginning
    --      and to remain online and available for subsequent requests.
    --      When the tape is left online, subsequent requests send a tape-
    --      mount request to the operator's console, which must be answered
    --      before the tape can be accessed.

    -- For downward compatibility the following options are provided.
    --
    --   DELTA0
    --      write a tape which can be read on a delta0 system.
    --
    --   DELTA1
    --      write a tape which can be read on a delta1 system.
    --
    --   VERSION=<archive_version_number>
    --      write a tape that can be read by a version of source
    --      earlier than the current one. The argument is a three digit
    --      integer. For example, version=440.


    -- The Device parameter can be set to the name of a directory.  In this
    -- case the index and data files are written to that directory.  The
    -- tape format option is irrelevant in this case.

    ---------------------------------------------------------------------------

    procedure Restore (Objects : String := "?";
                       Use_Prefix : String := "*";
                       For_Prefix : String := "*";
                       Options : String := "R1000";
                       Device : String := "MACHINE.DEVICES.TAPE_0";
                       Response : String := "<PROFILE>");

    -- Restore an object or a set of objects from an Archive Tape.

    -- If the archive is on a tape then the tape format option given to
    -- Restore should be the same as that given during the save.  If the
    -- archive is in a directory then the device parameter on the restore
    -- should be set to that directory.

    -- The Objects parameter may be any wildcard pattern specifying the
    -- objects to be restored.
    --
    -- For example:
    --     !USERS.FOO.CLI.TEST
    --     [!USERS.FOO.TESTS.@, !USERS.FOO.LOGS.ABC]

    -- The pattern in the Objects parameter is compared against the full
    -- names of the saved objects. The objects whose names match the Objects
    -- parameter specification are restored. If the name denotes an Ada
    -- unit all of its parts are restored from the tape. If the name denotes
    -- a world or directory all of its subcomponents are restored.

    -- The Use_Prefix and For_Prefix parameters provide a simple means for
    -- changing the names of the archived objects when they are restored.

    -- If the Use_Prefix is the special default value, "*", the For_Prefix
    -- is ignored and the objects are restored using the names they had when
    -- they were saved.

    -- If the Use_Prefix is not "*", it must specify the name of an object
    -- into which the archived objects can be restored.  The name for a
    -- restored object is derived from the name of the archived object by
    -- replacing the shortest portion of the name matched by the For_Prefix
    -- with the value of the Use_Prefix.  If the For_Prefix is "*" the
    -- archived objects are restored using the Default_Prefix stored with
    -- the archived data.

    -- For example:
    --
    --   Restore (Objects    => "!A.B.C.D.E",
    --            Use_Prefix => "!X.Y",
    --            For_Prefix => "!A.B.C");
    --
    -- will restore to !X.Y.D.E.

    -- The For_Prefix may contain wildcard characters (#, @, ?) and the
    -- Use_Prefix parameter may contain substitution characters (@ or # only).

    -- For example:
    --
    --   Restore (Objects    => "[!A.B.TEST1, !D.E.F.TEST2]"
    --            For_Prefix => "?.@"
    --            Use_Prefix => "!C.D.@");
    --
    --   will restore to !C.D.TEST1 and !C.D.TEST2

    -- If the object named by the prefix of the target name of an object
    -- being restored doesn't exist, that object will be created as a set of
    -- nested libraries. So, for example, if the For_Prefix is !A.B and the
    -- unit being restored is then !A.B.X.Y.Z and ...X.Y hasn't been saved on
    -- the tape then !A, !A.B, !A.B.X, !A.B.X.Y will be created.

    ---------------------------------------------------------------------------
   -- The following options are allowed in the Options parameter:
    --
    --   FORMAT and LABEL
    --      as in the save option.

    --   NONRECURSIVE
    --      prevents subcomponents of libraries and Ada units from being
    --      implicitly restored. for example:
    --       Archive.Restore
    --          (Objects => "[!USERS.FOO, !USERS.FOO.CLI, !USERS.FOO.CLI.@]",
    --           Options => "R1000 NONRECURSIVE");
    --       will restore only the named objects and not their substructure.

    --   ALL_OBJECTS
    --      All specified objects are restored.  This is the default.

    --   NEW_OBJECTS
    --      Only specified objects that don't already exist on the target
    --      machine are restored.

    --   UPDATED_OBJECTS
    --      Only specified objects that already exists on the target are
    --      restored, but only if the update time of the archived object
    --      is greater than the update time on the target object.

    --   CHANGED_OBJECTS
    --      Restore both new and updated Objects.

    --   EXISTING_OBJECTS
    --      Only specified objects that already exists on the target
    --      are restored.

    --   DIFFERENT_OBJECTS
    --      Only specified objects that already exists on the target
    --      and have a different update time from the archived object are
    --      restored.

    --   REPLACE
    --       Given an object that is being restored that already exists
    --       on the target, this option will cause the restore operation
    --        (1) to unfreeze the target object if it is frozen.
    --        (2) If the target object is an installed or coded Ada unit
    --            with clients, it is demoted to source using Compilation.
    --            Demote with the "<ALL_WORLDS>" parameter.
    --            Any frozen dependents will be unfrozen.
    --        (3) if the parent library into which an object is being
    --            restored is frozen, the parent will be unfrozen to restore
    --            the object then refrozen.

    --   PROMOTE
    --      After they are restored, any Ada units will be promoted to the
    --      state they were in when they were archived.

    --   REMAKE [=NO_MAINS]
    --      Like the promote option with the further effect that
    --      any objects outside the restore set which were demoted
    --      because the replace option was given will be repromoted.
    --      If no_mains is specified dependent main programs will not
    --      be recoded.

    --   GOAL_STATE = ARCHIVED | SOURCE | INSTALLED | CODED
    --      Specify that all ada objects restored should (if possible)
    --      end up in the given state.

    --   EFFORT_ONLY
    --      Show what would be restored if restore is run with this
    --      set of parameters.

    --   CODE [=load_proc_list>]
    --      Specifies that just the Code Archive Object for the named
    --      load_procs are to be restored.  This option is needed only when
    --      it is desired to restore a Code Archive Object from an archive
    --      that also contains the spec for that load_proc, which is not
    --      to be restored.

    --   COMPATIBILITY_DATABASE, (CDB) [=<Subsystems>]
    --      Specifies that the Compatibility Databases for just the named
    --      subsystems are to be restored.

    --   IGNORE_CDB
    --      Specifies that no compatibility information is to be restored.

    --   LINKS [=<worlds>]
    --      specifies that just the link packs for the named worlds are to
    --      be restored. if no argument is given all link packs of all worlds
    --      on the tape are restored.

    --   PRIMARY
    --      restore the compatibility database as a primary, rather than as a
    --      secondary (which is the default).

    --   REVERT_CDB
    --      allow the compatibility database to be overwritten by the values
    --      in the restore.

    --   OBJECT_ACL=<acl_value>
    --   WORLD_ACL=<acl_value>
    --   DEFAULT_ACL=<acl_value>
    --      Specifies the Access Control List for restored objects
    --      (OBJECT_ACL) and worlds (WORLD_ACL) and the default ACL for
    --      restored worlds (DEFAULT_ACL).
    --      The value is either an ACL specification or one of the special
    --      values RETAIN, ARCHIVED, INHERIT.
    --      - RETAIN means to set the final acl of an already existing object
    --        to the value it had before the restore. If the object doesn't
    --        exist the archived acl value will be used. This is the default.
    --      - ARCHIVED means to use the ACL archived with the object.
    --      - INHERIT means to use the standard inheritence rules for new
    --        versions of objects.

    --   BECOME_OWNER
    --      Modify the ACL of all restored objects such that the restorer
    --      becomes the owner of the restored object.

    --   TRAILING_BLANKS=integer
    --      Specifies the number of trailing blanks which are to be
    --      considered significant when parsing ada units during the
    --      restore. If a line ends in more than this number of blanks,
    --      the line break will be preserved in the image of the restored
    --      ada unit. The default is 2.

    --   UNCONTROL
    --      specifies that controlled objects which are checked in
    --      will be made uncontrolled before being overwritten.
    --      objects will be recontrolled at the end of the archive.
    --      only valid if the replace option is also given.

    --   REQUIRE_PARENTS
    --      require that the parent context for a unit to be restored
    --      already exists. default is false.

    --   VOLUME
    --      specifies which volume archive is to create worlds on.

    --   VERBOSE
    --      Specifies that extra log messages are to be generated describing
    --      more fully the steps of the restore process.

    --   UNLOAD
    --      A boolean option.  When True (the default), causes the tape to
    --      be rewound and unloaded after the operation is complete.  When
    --      False, this option causes the tape to be rewound to the beginning
    --      and to remain online and available for subsequent requests.
    --      When the tape is left online, subsequent requests send a tape-
    --      mount request to the operator's console, which must be answered
    --      before the tape can be accessed.

    ---------------------------------------------------------------------------

    procedure List (Objects : String := "?";
                    Options : String := "R1000";
                    Device : String := "MACHINE.DEVICES.TAPE_0";
                    Response : String := "<PROFILE>");

    -- Produce a listing of the names of the objects on an Archive tape.

    -- The Objects parameter specifies the objects to be listed.  Wildcards
    -- are permitted, so if Objects = "?", the default, then all Objects are
    -- listed.

    -- The Options parameters are:

    --   FORMAT and  LABEL
    --      as in the Save options.

    --   NONRECURSIVE
    --      don't list items on tape which are subcomponents of objects
    --      selected by first paramater.

    ---------------------------------------------------------------------------

    procedure Copy (Objects : String := "<IMAGE>";
                    Use_Prefix : String := "*";
                    For_Prefix : String := "*";
                    Options : String := "";
                    Response : String := "<PROFILE>");

    -- Copy objects from one location to another, including between
    -- machines on the same network.

    -- The Objects parameter specifies where the objects are to be gotten
    -- from as in an Archive.Save.

    -- The Objects and Use_prefix parameters consist of an (optional)
    -- machine name followed directly by an objects name.
    -- A machine name has the form !!name.
    --   Example:
    --     !!machine1!users.foo
    -- Another acceptable way to say the same thing is !!machine1.users.foo
    --
    -- The machine name on the objects parameter specifies the source machine.
    -- The machine name on the use prefix specifies the destination machine.
    -- If either machine is the one on which the command is being given
    -- it is not necessary to give the machine name.

    -- The non-machine name part of the Objects parameter is a name like that
    -- given to the save operation.
    --
    -- The Use_Prefix/For_Prefix parameters specify where the objects
    -- are to go as in Archive.Restore.

    -- If the Use_Prefix parameter is "*" or just a machine name, then the
    -- source Objects are moved to the same place on the destination machine
    -- as specified by the source.  The For_Prefix parameter is ignored.

    -- If neither Objects nor Use_Prefix have a machine name then the
    -- objects are copied from the source to the Use_Prefix on the
    -- current machine.
    --
    -- If it is desired to transfer the same set of objects to multiple
    -- targets in the same command a set of target names can be
    -- specified as the use_prefix in one of the following two ways.
    --   The use prefix can be of the form:
    --     [use_prefix1, ..., use_prefixn]<optional_naming_expression>
    --     examples:
    --       archive.copy (..., use_prefix => "[m1,m2]", ...);
    --       archive.copy (..., use_prefix => "[m1,m2,m3]!users.foo", ...);
    --
    --   The use prefix can be of the form:
    --      _filename<optional_naming_expression_beginning_with_!>
    --   The filename should contain a list of use_prefix's, one per line.
    --     examples:
    --       archive.copy (... use_prefix => "_targets", ...);
    --       archive.copy (... use_prefix => "_targets!users.foo", ...);
    --     where targets is a text file containing (e.g)
    --       m1
    --       m2
    --
    -- In both of the above cases the leading !! in machine names is optional.

    ---------------------------------------------------------------------------

    -- The Options parameter has the following options.
    --
    --   AFTER, CODE, CDB, LINKS, IGNORE_CDB
    --   NONRECURSIVE, EFFORT_ONLY
    --      as in the save operation.
    --
    --   ALL_OBJECTS, NEW_OBJECTS, UPDATED_OBJECTS, CHANGED_OBJECTS,
    --   EXISTING_OBJECTS, DIFFERENT_OBJECTS
    --   PROMOTE, REPLACE, UNCONTROL, REMAKE, GOAL_STATE,
    --   PRIMARY, REVERT_CDB, REQUIRE_PARENTS, VOLUME
    --   BECOME_OWNER, OBJECT_ACL, WORLD_ACL, DEFAULT_ACL
    --   VERBOSE
    --      as in the restore operation.

    --  ENABLE_PRIVILEGES
    --      cause the archive server (and the copy job) to attempt to
    --      enable_privileges.
   ---------------------------------------------------------------------------

    -- Examples of calls:
    --
    --  Copy (Objects    => "!USERS.JMK.CLI",
    --        Use_Prefix => "!!M1");
    --
    --    will copy the CLI directory in !USERS.JMK on the
    --    current machine to machine M1 !USERS.JMK.CLI.
    --
    --  Copy (Objects => "!!M2!USERS.OLLIE.CLI");
    --
    --    will copy !USERS.OLLIE.CLI on M2 to !USERS.OLLIE.CLI on the
    --    current machine.
    --
    --  Copy (Objects    => "!!M3!USERS.JMK.CLI.CMD",
    --        Use_Prefix => "!USERS.OLLIE",
    --        For_Prefix => "!USERS.JMK.CLI");
    --
    --    will copy the file !USERS.JMK.CLI.CMD on M3 to
    --    !USERS.OLLIE.CMD on the current machine.
    --    note when repositioning Objects it is necessary to give a
    --    for_prefix which is a prefix of the Objects part of the
    --    source parameter.
    --
    --  Copy (Objects    => "!!M1!USERS.JMK.ILFORD",
    --        Use_Prefix => "!!M2!AGFA",
    --        For_Prefix => "!USERS.JMK");
    --
    --    will copy !USERS.JMK.ILFORD from machine M1 to
    --    machine M2 !AGFA!ILFORD
    --
    --  Copy (Objects    => "!USERS.JMK.CLI",
    --        Use_Prefix => "!!M1",
    --        Options    => "REPLACE AFTER=12/25/86");
    --
    --    will copy those files which have changed since 12/25/86 in
    --    !USERS.JMK.CLI on the current machine to machine M1 !USERS.JMK.CLI
    --    Any existing files with the same names will be overwritten.

    ---------------------------------------------------------------------------

    procedure Server;

    -- start the archive server;


    procedure Status (For_Job : Machine.Job_Id);

    -- Prints information about the status of the Archive job specified.
    -- Can be the job number of an Archive Server or of a job running
    -- Archive.Copy, Archive.Restore, or Archive.Save.


    pragma Subsystem (Archive);
    pragma Module_Name (4, 3546);

end Archive;

E3 Meta Data

    nblk1=18
    nid=0
    hdr6=30
        [0x00] rec0=17 rec1=00 rec2=01 rec3=01e
        [0x01] rec0=18 rec1=00 rec2=02 rec3=028
        [0x02] rec0=11 rec1=00 rec2=03 rec3=084
        [0x03] rec0=15 rec1=00 rec2=04 rec3=08c
        [0x04] rec0=17 rec1=00 rec2=05 rec3=06e
        [0x05] rec0=11 rec1=00 rec2=06 rec3=080
        [0x06] rec0=19 rec1=00 rec2=07 rec3=060
        [0x07] rec0=16 rec1=00 rec2=08 rec3=034
        [0x08] rec0=14 rec1=00 rec2=09 rec3=046
        [0x09] rec0=19 rec1=00 rec2=0a rec3=002
        [0x0a] rec0=17 rec1=00 rec2=0b rec3=082
        [0x0b] rec0=17 rec1=00 rec2=0c rec3=024
        [0x0c] rec0=17 rec1=00 rec2=0d rec3=08a
        [0x0d] rec0=17 rec1=00 rec2=0e rec3=08c
        [0x0e] rec0=14 rec1=00 rec2=0f rec3=044
        [0x0f] rec0=17 rec1=00 rec2=10 rec3=08e
        [0x10] rec0=15 rec1=00 rec2=11 rec3=038
        [0x11] rec0=1b rec1=00 rec2=12 rec3=054
        [0x12] rec0=14 rec1=00 rec2=13 rec3=062
        [0x13] rec0=14 rec1=00 rec2=14 rec3=036
        [0x14] rec0=1b rec1=00 rec2=15 rec3=002
        [0x15] rec0=19 rec1=00 rec2=16 rec3=068
        [0x16] rec0=1d rec1=00 rec2=17 rec3=02c
        [0x17] rec0=04 rec1=00 rec2=18 rec3=000
    tail 0x2150d8b5882b080f884e1 0x42a00088462060003