{
{   The purpose of this request is to copy one file to another.
{
{   The function of this interface is identical to fsp$copy_file with the
{ exception that this interface allows the caller to specify the conditions
{ under which the input and output files are to be attached to the job.  Use of
{ this interface has the following advantages over the use of fsp$copy_file:
{
{   1.  The input and or the output file may be shared with a writer during the
{       copy operation (use ACCESS_AND_SHARE_MODES and OPEN_SHARE_MODES
{       options).
{
{   2.  If either the input or the output file is password protected, the copy
{       operation may be performed without having to attach the files
{       beforehand (use the PASSWORD option).
{
{   3.  If your program is executing in a more privileged (lesser numbered)
{       ring, you may request that the copy operation be validated using your
{       caller's ring privilege (use the VALIDATION_RING option).
{
{   4.  By specifying FALSE for PRIVATE_READ and using the OPEN_POSITION option
{       for the input file and or the output file, it is possible to copy all
{       or part of the input file to the beginning, middle, or end of the
{       output file.  If you use the amc$open_no_positioning ($ASIS)
{       OPEN_POSITION, the position in either file must be established prior to
{       calling this request; refer to AMP$GET_NEXT and
{       AMP$SET_SEGMENT_POSITION.
{
{   The caller of this interface is responsible for the consequences of its
{ use.  Unless you have a requirement to specify attachment options for the
{ input file and or the output file, you should use fsp$copy_file.
{
{   This interface requires that the input file's access_modes include read
{ access and the output file's access_modes include shorten and or append
{ access.  Failure to include this minimal access may cause an access violation
{ during the copy operation.
{
{   The copy operation may have an undesirable effect on other instances of
{ open of either the input file or the output file unless you take certain
{ precautions.  Refer to the discussion of the INPUT_FILE_ATTACHMENT and
{ OUTPUT_FILE_ATTACHMENT parameters for more information.
{
{       FSP$SUBSYSTEM_COPY_FILE (INPUT, OUTPUT, INPUT_FILE_ATTACHMENT,
{         OUTPUT_FILE_ATTACHMENT, INPUT_ATTRIBUTE_VALIDATION,
{         OUTPUT_ATTRIBUTE_VALIDATION, OUTPUT_CREATION_ATTRIBUTES, STATUS)
{
{ INPUT: (input)  This parameter specifies the name of the file from which data
{       is to be copied.  The open position provided in the file expression is
{       overridden by the value of the open position specified by the
{       INPUT_FILE_ATTACHMENT parameter.
{
{ OUTPUT: (input)  This parameter specifies the name of the file to which data
{       is to be copied.  The open position provided in the file expression is
{       overridden by the value of the open position specified by the
{       OUTPUT_FILE_ATTACHMENT parameter.
{
{ INPUT_FILE_ATTACHMENT: (input)  This parameter specifies the attachment
{       options to be in effect for the input file.  Refer to the documentation
{       of the FILE_ATTACHMENT parameter of FSP$OPEN_FILE for further
{       information.
{
{       It is recommended that you specify the following values for the input
{       file unless your application requires otherwise:
{
{       ACCESS_AND_SHARE_MODES - access_modes:  read; share_modes:  (read
{       execute)
{
{       CREATE_FILE - false
{
{       DELETE_DATA - false (This will be the default if left unspecified)
{
{       OPEN_SHARE_MODES - (read execute).  This ensures that the file cannot
{       be modifed during the copy operation but allows concurrent readers.
{
{       PRIVATE_READ- true, if the access modes do not include write access.
{       This ensures that the copy operation does not affect nonprivate readers
{       of the input file.  Otherwise, do not specify PRIVATE_READ.
{
{       If the OPEN_SHARE_MODES are not explicitly specified,
{       FSP$SUBSYSTEM_COPY_FILE provides a default of:
{
{       1st record:  (read execute)
{
{       2nd record:  ALL.  However, by default, the implementation of ALL does
{       not share the file for write access with another job.  By default, the
{       implementation of ALL does not share the file for write access within
{       the requesting job unless the writer's instance of open is in the same
{       task and prevents other tasks from opening the file for write access.
{
{       Because OPEN_SHARE_MODES are always specified when opening the input
{       file, the JOB_WRITE_CONCURRENCY parameter of the ATTACH_FILE command
{       has no effect on the input file of this request.
{
{ OUTPUT_FILE_ATTACHMENT: (input)  This parameter specifies the attachment
{       options to be in effect for the output file.  Refer to the
{       documentation of the FILE_ATTACHMENT parameter of FSP$OPEN_FILE for
{       further information.
{
{       It is recommended that you specify the following values for the output
{       file unless your application requires otherwise:
{
{       ACCESS_AND_SHARE_MODES
{
{       1st record:  access_modes:  (append shorten) share_modes:  (none)
{
{       2nd record:  access_modes:  (append) share_modes:  (none)
{
{       CREATE_FILE - do not specify.  This will have the same effect as
{       specifying CREATE_FILE=FALSE for permanent files with a cycle
{       specification of $LOW or $HIGH, and CREATE_FILE=TRUE for all other
{       cases.
{
{       DELETE_DATA - true
{
{       OPEN_SHARE_MODES
{
{       1st record:  (none)
{
{       2nd record:  (all)
{
{       PRIVATE_READ - false (This will be the default if left unspecified)
{
{
{ INPUT_ATTRIBUTE_VALIDATION: (input)  This parameter specifies the required
{       attribute values of the input file.  Refer to the description of the
{       ATTRIBUTE_VALIDATION parameter of FSP$OPEN_FILE for more information.
{
{ OUTPUT_ATTRIBUTE_VALIDATION: (input)  This parameter specifies the required
{       attribute values of the output file.  Refer to the description of the
{       ATTRIBUTE_VALIDATION parameter of FSP$OPEN_FILE for more information.
{
{ OUTPUT_CREATION_ATTRIBUTES: (input)  This parameter specifies file attribute
{       values which are mandated for the output file, if it is created by this
{       request.  Refer to the description of the MANDATED_CREATION_ATTRIBUTES
{       parameter of FSP$OPEN_FILE for more information.
{
{ STATUS: (output) This parameter specifies the request status.
{       CONDITION: Only the conditions not in common with fsp$copy_file are
{                  included below:
{
{       IDENTIFIER: amc$access_method_id.
{
