Logo
Dnote

CopyWrite Notes

Nov 2023 630.02 SilentRunning with NODATATRANSFER

If OPTIONS=NOSUMMARY is Set and a Copy to NULL with a SCRATCHPOOL of NODATATRANSFER is specified, then the File Copied messages are suppressed.

Jul 2023 630.01 Update for MCP 63

Update for mcp 63

Mar 2023 620.03 Density Mnemonics Deimplemented on 6.3

On MCP 6.3 the DENSITY Mnemonics (such as BPI800,BPI1250..) have been deimplemented.

Dec 2022 620.02 Segmented Header CD to CD

When a File with a Segmented Header, in which the last Header Segment was less than a Sector, was copied from CDImage to CDImage, an Assert Dump at 63277000 would occur, and the Copy would fail. The File could be copied from the CDImage to Disk sucessfully.

Mar 2022 620.01 Use LTITLE in FetchImageDirectory

Use LTITLE in FetchImageDirectory to provide access to CD Images with Long Filenames.

Jan 2022 600.07 MULTIVOLUME TapeLabel and Volume Library

When MULTIVOLUME was set, the Volume Library was not updated and a TapeLabel Notice was not sent to SUPERVISOR.

Dec 2021 600.06 Warning 202 TIME(6)

SUPPRESSWARNING 202 about TIME(6) Changes.

Apr 2020 600.05 Not CompletedOK

CopyWrite would set the TASKVALUE to 1 when either some error occurred in the copy to CD Image, or when some of the files were not copied. To allow WFL Jobs to distinguish between these cases CopyWrite will set the TASKVALUE to 3 when an error occurs in the process of copying files to a CD Image, and to 1 if some of the files were not copied.

Feb 2020 600.04 Continue after NODISKHEADER

If FETCHVIRTUALHEADERS received an IOERRORTYPE result of NODISKHEADER, it would return an error, and not return any more headers.

A Flex FILES IN CDIMAGE which indirectly uses that procedure would only return the files up to that Missing Header.

FETCHVIRTUALHEADERS will now ignore any NODISKHEADER results and return whatever headers that there are.

A Missing Header can occur when a file has been recorded in the Tape/CD Directory, but has been removed before it can be copied.

Jan 2020 600.03 FormatFileVersion

When an exception occurs in a COPY&CATALOG or COPY&BACKUP due to some unexpected condition in the Catalog, the File Entries in the Catalog Block may be displayed, before the error message.

Example: Catalog Block: (USER)FILENAME ON FAMILYNAME

          [0]1:0*28/Nov/2019@18:53:02.330[48"C0B46985C02D"]

Key: [<file entry>]<cycle><version><*=resident><timestamp>

The <file entry> is the index of the entry in the Catalog Block, not the GENERATION, as they are unsorted.

A COPY&CATALOG of a File which was not Resident and which had a Long File Name and for which there was no matching Catalog Entry, could fail with a message "Not Entered in Catalog (Resident Entry not Resident)".

Apr 2019 600.02 LOCATECAPABLE=ON synonym for LIBMAINTDIR

WFL prevents the use of the LIBMAINTDIR attribute when the destination volume has KIND = CD. CopyWrite can create LIBMAINTDIR directories for CD Images, but was prevented from doing so when that syntax restriction was introduced. To bypass this restriction, LOCATECAPABLE=ON may be specified on the destination volume, and this wil result in a LIBMAINTDIR being produced. A SERIALNO must be specified on the destination volume when a LIBMAINTDIR is requested. Example: Copy F/= TO V(CD,HOSTNAME=LOCAL,

                       LOCATECAPABLE=ON,SERIALNO="TST001");Target=1
 will create a CD Image called V and a LIBMAINTDIR called
   LIBMAINTDIR/V/<yyyymmdd>/TST001

A LIBMAINTDIR can be created for an existing CD Image by copying to a NULL CD. Example: Copy F/= FROM V(CD,HOSTNAME=LOCAL)

           TO NULL(CD,LOCATECAPABLE=ON,SERIALNO="TST002");Target=1
 will copy and discard the files from V and create a LIBMAINTDIR
   called LIBMAINTDIR/V/<yyyymmdd>/TST002

Mar 2019 600.01 Update for mcp 60

Update for MCP 60 Some preparation for Post 2035 Time(6) changes

Oct 2017 590.04 Allow embedded [] in Instructions

Embedded matching [] are allowed in Instructions. A WFL instruction which included a Task reference such as [T], failed because the ] was interpreted as the end of the instruction.

To allow any character in an Instruction, an encoding in the form %#xx encodes a character in hex (xx) in instructions. For example, the instruction %#4AT%#5A is translated to [T].

This instruction is supported in CopyWrite Self Extracting Archives.

Aug 2017 590.03 Set the ArgIsAHostF flag

Set the ArgIsAHostF flag to indicate that the field at Word 37 of an Archive Backup Record should be interpreted as a HOSTNAME instead of an OWNER. See PLE-19198545.

Aug 2017 590.02 Case sensitive titles in T_Make

Allow a case sensitive title in PARSECONTROLCARD of T_Make. Previously, a {Copy as "*image.png"} would create a file called *"IMAGE.PNG" in the Archive.

Apr 2017 590.01 Fix release level

Cosmetic change

Mar 2017 580.01 Implement Density for CD and DVD

When creating a CD or DVD to be burnt, the DENSITY is used by the MCP Burn function to request either a CD (CD700) or DVD (DVD4700). CopyWrite now passes the DENSITY specified on the destination volume to the Burn function.

The U *METALOGIC/COPYWRITE BURN <filename> : <options> now accepts the options CD and DVD to select the respective media. Eg. U *METALOGIC/COPYWRITE BURN F : CDCOPIES=1,DVD

Sep 2014 570.07 TASKVALUE No Files

Set the TASKVALUE to 1 if No Files were copied on a remote connection.

Sep 2014 570.06 nBytesTransferred

Avoid INTEGER OVERFLOW when nBytesTransferred exceeds MAXINT.

Jun 2014 570.05 Target

Remove $ Target = ALL for Libra 8390.

Jun 2014 570.04 COPYWRITEPROTOCOL

If the COPYWRITEPROTOCOL MAGUS configuration variable was not set, the copy to a remote host failed.

Nov 2013 570.03 SelfExe57

Internal Change.

Nov 2013 570.02 MCP57

Modify the Self Extracting Archive format due to changes in the codefile format on MCP 57.

Nov 2013 570.01 Local Backup

Internal Change.

Sep 2013 560.11 webSock

Internal Change.

Jul 2013 560.10 flex: <flex spec>

FLEX can be used to generate a list of files to be copied by using a <flex specification> in a file list.

<flex specification> ::= flex:<pd request> |

flex:@<filetitle>

For example:

COPY "flex:(NFT)=DO= ON NUCLEUS WHERE SYMBOLFILE"
TO FRED(CD,HOSTNAME=LOCAL);TARGET=1;

The <flex specification> only generates file names. The FAMILYNAME of the file title does not change the <source volume>.

Any number of <flex spcifications> may appear in a COPY statement.

The flex:@<filename> may be used to store the <pd request> in an external <filetitle>. This may be used to avoid the limitations imposed by the syntax of a filename in a copy statement.

For Example:

FILE LoadSources: (*)= IN "E:\MCP56HMP15\Build\CDs\MCP56HMP15Release.mcp" ON DISK AT PC

WHERE SYMBOLFILE

WFL: T(FILE MCP(LFILENAME="E:\MCP56HMP15\Build\CDs\MCP56HMP15Release.mcp")); COPY&COMPARE

"flex:@LoadSources"
FROM MCP(CD,HOSTNAME=PC,LOCKEDFILE)[T];TARGET=1;

In this example, Flex scans a Library/Maintenance CD Volume Image located on a PC, and selects all SYMBOLFILEs. This creates a list of filenames, which are then copied from the same <source volume>.

A <pd request> can be tested in FLEX like this,

U FLEX
FILES <pd request>

Jul 2013 560.09 Inflate Instructions

If COMPRESSIONREQUESTED is set when creating a Self Extracting Archive, the Archive is compressed and that compressed archive file is copied into another Self Extracting Archive, with the default instructions INFLATE %4\RUN %4. This is used by the {$Compress} directive in Make when creating a COLDSTART Archive. The COLDSTART Archive is marked as PU, since it runs without a USERCODE and otherwise it would not be allowed to extract the files. The inflated archive however, is not marked as PU. The syntax of the $Compress directive has been extended,

{ $Compress }
{ $Compress [ <instructions> ] }

For the COLDSTART Archive, the instructions are set as,

{ $Compress [ INFLATE %4\MP %4 +PU\RUN %4 ] }

If FILE INFLATE(NOTE="<instructions>") is label equated to a COPY which has COMPRESSIONREQUESTED and LOCKEDFILE, the <instructions> are applied to the compressed archive. This is how the $Compress directive transfers the <instructions>.

Mar 2013 560.08 SelfExe Atts

Only transfer the PRODUCT,RELEASEID,NOTE and FORMID of a Self-Contained Application and not a Self-Extracting Archive, the Code Base of which is common to all Archives.

Mar 2013 560.07 SetPRODUCT

The PRODUCT,RELEASEID,NOTE and FORMID of a Self-Extracting Archive or a Self-Contained Application are set from the base codefile.

Feb 2013 560.06 Cycle

The CYCLE and VERSION of a Self-Extracting Archive or a Self-Contained Application are set from the base codefile.

Feb 2013 560.05 Self Exe Title

The Destination VolumeId of a COPY may be used as a FileID which is Label-Equated to the COPY statement to specify the actual File Title of the Volume. When COMPRESSIONREQUESTED was set, or SCRATCHPOOL=LMCD was specified, the Label-Equated TITLE was not being used for the embedded Volume.

Feb 2013 560.04 Compressed SelfEXE Archive

If COMPRESSIONREQUESTED is set on the Destination Volume when creating a Self Extracting Archive, the Self Extracting Archive is compressed into a File which has an INFLATE %4\RUN %4 Instruction applied, and the compressed File is then copied into another Self Extracting Archive with the same name.

Example:

COPY *COPYWRITE/LIBRARY/NEWTAPE TO FRED(CD,HOSTNAME=LOCAL,LOCKEDFILE,
COMPRESSIONREQUESTED)
RUN $FRED will extract the compressed Archive, Inflate it and
then RUN it to extract the files orginally copied.

The FAMILYOWNER may be used to specify the USERCODE which the Compressed Archive will have when it is inflated.

The SCRATCHPOOL may be specified to WRAP or copy to LMCD the Self Extracting Archive which contains the compressed Archive.

Feb 2013 560.03 CBC length Byte

Internal Change.

Feb 2013 560.02 ZIP Title

The ZIP and LMZIP Transform ignored the Label Equation of the Volume TITLE.

Jan 2013 560.01 56

MCP 56 Version Update.

Nov 2012 550.03 SMTP

Internal Change.

Aug 2012 550.02 METARELEASE

If SCRATCHPOOL = METARELEASE is set when copying files to a Kind = CD volume, the copy behaves the same as SCRATCHPOOL = ZIP, except that no default file suffixes (such as .con, .mcp or .txt) are appended. The actual filename can be specified using the AS syntax.

Jun 2012 550.01 STATION

Previously the STATION for the Utility Terminal was unconditionally set to the ORGUNIT. Now it is only set if STATION has not been assigned (value 0).

Mar 2012 540.34 LMCD Crypto

Preliminary changes to allow reading and writing of AES encrypted Library/Maintenance CD Volumes.

Dec 2011 540.33 Missing Headers

FetchForeignHeaders will no longer pass a header marked as Missing (LMBMISSF) to the caller.

Previously, if a Files (*)= on a Disk Farm encountered a Capsule marked as Missing, or the Capsule itself was missing, the directory was abandoned. Now, the missing Capsule is ignored, and the directory returns the list of files for which Capsules exist.

FLEX can be used to scan either a Library/Maintenance CD Image or a Wrapped Container resident on a Windows Disk, by specifying the Path to the File. For example, FILES (*)= IN "C:\containers\test.con" ON DISK AT H

It can also be used to scan a Disk Farm. For example, FILES (*)= ON VOLID AT H.

However, there was no way to scan a Disk Farm which was associated with a particular <source host>, or which had a SERIALNO. This capability has now been implemented.

One way is to specify the Path to the Disk Farm.

FILES (*)= IN "C:\ASeriesBackups\HOSTNAME\VOL[SERIAL]" ON DISK AT H

However, this means that the full Path to the Disk Farm on the Windows File Server is known.

To avoid this, a pseudo drive called DiskFarm: may be used, and this corresponds to the DLROOT configured for the Disk Farm, which is by default C:\ASeriesBackup.

FILES (*)= IN "DiskFarm:HOSTNAME\VOL[SERIAL]" On DISK AT H

Nov 2011 540.32 BACKUP SerialNo

If a COPY&BACKUP command is requested without a SERIALNO, and the COPYWRITE_COPYCATSN configuration variable is defined, then CopyWrite will generate the next SERIALNO in the sequence. This capability was already available with a COPY&CATALOG.

Sep 2011 540.31 XHR FamilyName

Fix COPY of a URL TO <volume name>, not the FAMILY of the USERCODE.

Sep 2011 540.30 Copy DVD

Copying a Library/Maintenance DVD Volume failed because the output volume file attributes were not FLEXIBLE.

Copy *VOLUME crunches the output volume.

The status of a a Copy *VOLUME can be requested by ?HI.

Aug 2011 540.29 Reinstall Non PU

REINSTALL and STATUS utility commands may be executed by non privileged users.

Jul 2011 540.28 AES

Internal Change.

Jun 2011 540.27 WZAES

CopyWrite can extract files from a WinZip Archive encrypted using AES128 or AES256 Keys.

The SECURITYGUARD attribute is used to specify the password. For example,

COPY *= FROM WZAES128(CD,HOSTNAME=LOCAL,LOCKEDFILE,
SECURITYGUARD="password");TARGET=1

If the Password is longer than 17 bytes, then multiple 17 character FileIds may be used, for example SECURITYGUARD="pass"/"word" is the same as in the example above.

Jun 2011 540.26 WZip

Internal Change.

May 2011 540.25 Crypt_Zip

Replace Meta_Zip with Crypt_Zip.

May 2011 540.24 LongWrap

A Container with a Long FileName and FILEKIND of DATA was not recognized as CONTAINERDATA, so it was given to IMAGEIOH, which rejected the Copy.

Mar 2011 540.23 No Encrypt

CopyWrite cannot copy from encrypted Library/Maintenance CD Volumes.

Feb 2011 540.22 CopyFromURL

CopyWrite can be used to download files from web sites using an http URL.

COPY 'http://192.61.3.5/aseries/CONTAINER/054.1A/ALGOL.EXE'
AS ALGOLEXE FROM DISK(HOSTNAME=URL)
TO NUCLEUS(PACK,SERIALNO="MD5")
- If an AS <filename> is not used, then the resource is copied
with the last filename in the path of the URL, in this example,
the file would have been *"ALGOL.EXE".
- The HOSTNAME=URL is required to indicate that the HOSTNAME is
specified as part of the URL,rather than the HOSTNAME
attribute.
- The optional SERIALNO on the <destination volume> indicates
the hash algorithm to be used to check the file contents.
It may be specified as MD5 or SHA1. The computed hash value
is stored in the RELEASEID attribute of the copied file.
- The MimeType returned by the Http Server is stored in the
FORMID attribute of the copied file.
- A USERCODE="<usercode>/<password>" may be specified on a
<source volume> where a web site requires basic authentication.
- There may be multiple files in each <source part> and
multiple sources.
- A ?<mixno>HI on the FILE/TRANSFER/SERVICES task will display
the current status of the transfer.
- If a directory on a web server contains multiple files, then
a simple filename can be specified in the source file list,
and the <source volume> label equated with an LFILENAME which
gives the URL prefix.
- CopyWrite will copy whatever resource the URL refers to,
whether it is a file, a web page or anything else.

In this example CopyWrite is used to download and extract the files in a Unisys IC.

COPY 'http://192.61.3.5/aseries/CONTAINER/054.1A/ALGOL.EXE'
AS ALGOLEXE FROM DISK(HOSTNAME=URL);
COPY *"_winzip_" AS ALGOLZIP
FROM ALGOLEXE(CD,HOSTNAME=LOCAL,LOCKEDFILE);
COPY *"ALGOL.CON" AS ALGOLCON
FROM ALGOLZIP(CD,HOSTNAME=LOCAL,LOCKEDFILE);
COPY (ICXFER)541/ALGOL/3/= as (ICXFER)=
FROM ALGOLCON(CD,HOSTNAME=LOCAL,LOCKEDFILE);

Feb 2011 540.21 Hash

Add HASH Command to utility to generate a Message Digest for a Stream File.

HASH <stream filename> : MD4|MD5|SHA1|SHA256

Feb 2011 540.20 Crunch

The blocked file created by the CONVERT Stream File command is now crunched.

Jan 2011 540.19 Widest

If the Convert AS command has a FILEKIND of WIDEST specified, then the widest text record in the source file determines the MAXRECSIZE of the destination file. The maximum source text length is 255 bytes.

If no other option is specified, then the Convert AS command will determine the carriage control delimiter by scanning for the first CR or LF. If no delimiter is found, then a CR is used by default, in the character set determined by scanning the text.

Dec 2010 540.18 Fix Loads from Disk File Image

Reinstate COPY capability from CDROM images inadvertently broken by 540.17.

Nov 2010 540.17 VirtualAV

CopyWrite will call IMAGEIOH to handle a COPY from an Image which it doesn't directly support.

Nov 2010 540.16 FetchVirtualHeaders Debug

Internal Change.

Oct 2010 540.15 LMBlock

Internal Change.

Oct 2010 540.14 Long FileNames

A COPY&COMPARE will no longer terminate when a Long FileName is encountered.

Previously a COPY&COMPARE would terminate with a Header Error if the Target File was Not Resident. Now, the File being Copied is considered a Better Version than the Non Resident File, even if the Non-Resident File has a later Cycle, Version and TimeStamp.

A ZIP of a very large STREAM File using SCRATCHPOOL=ZIP created a corrupted volume.

An attempt to output an MCP message using MCPMESSAGESEARCHER failed on the latest MCPs because of an invalid pointer reference.

The End of Tape Directory was not detected in a Library/Maintenance Capsule created by SCRATCHPOOL=LMZIP.

Oct 2010 540.13 ZipStream

COPYWRITE/ZIP/INTERFACE implements the ZipStream function which can be used by a program to create a Windows .zip Archive. The ZipStream function is also exported by SL ZIPIOH.

The ZipStream function streams the data for a .zip archive to an output function without needing a physical output file. See *COPYWRITE/EXAMPLES/ZIPSTREAM.

Oct 2010 540.12 Capsule

Copywrite can be used to copy native MCP files to Zip Archives. As each file is copied, it is encapsulated in a Library/Maintenance CD Image called a Capsule, which is given a .mcp file extension.

The SCRATCHPOOL=LMZIP attribute is used to select this function.

Example:

COPY *= TO zipvolume(CD,HOSTNAME=LOCAL,SCRATCHPOOL=LMZIP)

Oct 2010 540.11 Remote

Remove When(5) waiting for Station Assignment. If Assignment is Denied, Output is displayed to the ODT.

Oct 2010 540.10 Continue

Improve Zip Archive elapsed time by reducing CONTINUEs.

Oct 2010 540.09 ZipMsg

Improved File Copied messaged when creating a ZIP Archive.

If OPTIONS=NOSUMMARY is set on a CopyWrite COPY, then all File Copied messages are suppressed.

Sep 2010 540.08 ZipTS

Internal Change only.

Sep 2010 540.07 Zip

Copywrite can be used to create Zip Archives which are compatible with Windows 2000 Zip Utilities such as WinZip.

Example:

COPY test/= TO zipvolume(CD,HOSTNAME=LOCAL,SCRATCHPOOL=ZIP)

If the files are Text, they are converted to Windows Text Format and given a .txt extension, just like the WINDOWSNT Transform. CONTAINERDATA files are given a .con extension, and PROMBURNERDATA an extension of .mcp.

The files are compressed using the Deflate of Meta_Zip, and copied into the Zipped Archive.

By Default, the TITLE is converted to NTFS format, so that the Path information is available in the Zip Archive.

The TITLE can be converted into a long name by setting SINGLEUNIT.

Sep 2010 540.06 ZIPIOH

Internal Change.

Apr 2010 540.05 LFILENAME

Allow Long FileNames in FETCHFOREIGNHEADERS.

Apr 2010 540.04 Waiting

Stop waiting for a Packet when the Connection is delinked.

Apr 2010 540.03 Long

Change any Array which might be used for a Header to LONG.

Apr 2010 540.02 SelfExe EXTMODE

Set Self Extracting Archive EXTMODE to SINGLE.

Apr 2010 540.01 Self Contained Archives

Implementation of Self Contained Applications. A Self Contained Application is an application codefile which contains other files needed for the application. Those other files can be accessed using a Virtual IOH.

A Self Contained Application is created in the same way as a Self Extracting Archive, except that the File EXE should be Label Equated to the Application Codefile. If this is not done, then a Self Extracting Archive is created.

Dec 2009 530.02 Copy&Go FTPSITE

The COPY&GO feature of CopyWrite used to use the Library/Maintenance FTAM Transform attribute DOCUMENTTYPE to indicate a file which was to be initiated. Since MCP54HMP13 no longer supports the FTAM attributes, a new mechanism has been implemented.

A COPY&GO Library/Maintenance statement allows an action to be associated with a File or Directory in a COPY Statement by using the FTPSITE Transform attribute.

The simplest form of COPY&GO is either a START or RUN of a file copied to a remote host.

Example:

COPY WFLTEST(FTPSITE="START")
TO NUCLEUS(PACK,HOSTNAME=BLUEGUM);TARGET=1

If FTPSITE is neither START or RUN, then it is interpreted as a WFL Statement.

The WFL Statement is preprocessed to interpret substitution strings as documented for Self Extracting Archives.

Example:

COPY WFLTEST(FTPSITE="START %2 ON %3")
TO NUCLEUS(PACK,HOSTNAME=BLUEGUM);TARGET=1
is equivalent to the example above

In addition, single quotes are translated to double quotes.

Example:

COPY WFLTEST(FTPSITE="START %2 ON %3('%9')")
TO NUCLEUS(PACK,HOSTNAME=BLUEGUM);TARGET=1

Mar 2009 530.01 BLPack Load

Disable REWIND of BLPack Tape. Set RowAllocated Bits in Disk File Header for a file from a BLPack Tape for correct FileLength calculation in Flex.

Nov 2007 520.07 FamilySubstituton

Use Family Substitution for DISK if No Family in FetchTapeHeaders.

Nov 2007 520.06 DSONERROR

A FetchForeignHeaders failed if there was a Directory but no File because DSONERROR was set and so Library/Maintenance terminated the Copy.

Nov 2007 520.05 FetchForeignHeaders

FetchForeignHeaders returns the File and the Directory when a Directory is specified making it consistent with the Flex Files command.

Oct 2007 520.04 DUPLICATED

Remove use of DUPLICATED attribute, deimplemented in 5.3. Suppress 'No Status Available' message when copying to Disk Farm.

Sep 2007 520.03 DoIntercede

To avoid a ForgetCheck Dump on MCP 5.2, a call is made by MAGUS to NO_KANGAROO_ABOVE_HERE. This had the side effect of disabling Software Interrupts, which were used to report the Copy status. CopyWrite now checks the EXCEPTIONEVENT periodically and reports the Copy status if it has Happened.

Jul 2007 520.02 F_Proc

Respect F_Proc Quit Requested.

Jul 2007 520.01 Mount DATA

No matter the FILEKIND, always try and mount a CD Image.

Nov 2006 510.05 BDR

Do not remove BackupFile in RemotePrintServer.

Aug 2006 510.04 Archive FileSize

Update the FileSize in MegaBytes Archive record attribute.

Nov 2005 510.03 BLPack Area Corruption

When an Area boundary occurred within a BLPack Data Record, the Write was split but the Data Pointer was not updated to the Area boundary, resulting in a section of the previous Area's data being written to the start of the next Area.

Apr 2005 510.02 CONVERTHEADER

Use the Magus ConvertDiskFileHeader to convert Version 2 and older Headers.

Mar 2005 510.01 BLSUPPRESS

If OPTIONS=NOSUMMARY is applied to a Copy from a BLPack Tape, any attribute warnings are suppressed.

Feb 2005 500.17 BLPACKSELECTOR

If the Library BLPACKSELECTOR with the entrypoint SELECTFILE is Label Equated to CopyWrite, it will be used to decide which files should be copied from a BLPack Tape.

Feb 2005 500.16 BLPACK EOF

CopyWrite ignores Incomplete Files, which may occur when the End of Tape is reached, but the last file has not been completely copied, and for other reasons unknown.

Silent running is selected by OPTIONS=NOSUMMARY, and when set both File Copied and File Not Copied messages are suppressed.

Feb 2005 500.15 FAB VERSION

File Attribute Block versions 4 and 6 are supported by CopyWrite.

If an unsupported version is encountered, the Copy is terminated unless OPTIONS=DEBUG is set, in which case an AX is required to continue.

Feb 2005 500.14 EXTRACT

The file information for a BLPack Headers Dump has been improved.

For the BLPack utilities, if <filename> ON TAPE is specified, the archive is opened with KIND=TAPE.

The BLPACK EXTRACT <archive name> FILE <file range> AS <filename> command has been implemented.

<archive name> ::= <file title> | <filename> ON TAPE
<file range> ::= <file#> | <file#> - <file#>

This command extracts the specified files from either an ALIGNED180 or a STREAM BLPack Archive and creates an ALIGNED180 Archive.

Jan 2005 500.13 MEMORYSTATUS

Reduces the amount of Save Core when copying files from a BLPack Tape.

If OPTIONS=DEBUG is set, the quantity of Save Core being used be CopyWrite when copying files from a BLPack Tape is displayed at the end of each file copied.

Jan 2005 500.12 BLPACKSTATS

A FileName with a name which contained a fullstop was not correctly extracted from the File Attribute Block.

A Job Summary giving selected statistics for the Copy is displayed at the completion of the Copy.

At the start of the Copy a check is made that the destination Family is online.

After a BLPack File has been copied, the Direct Buffer used for I/O is deallocated.

Jan 2005 500.11 BLCRUNCH

If the COMPRESSIONREQUESTED attribute is set on the <destination volume> when copying from a BLPack Volume, then the files copied are CRUNCHED whether or not the original file was CRUNCHED.

A COPY&VERIFY command from a BLPack volume calls a function which checks that the physical size of the file copied matches the original file described in the File Attribute Block (FAB).

A ?HI command issued to a COPY command from a BLPack volume reports information about the current file being processed.

Dec 2004 500.10 LMDFOKF

A LIBMAINTDIR which contained entries for files which were not copied caused a fault.

Jul 2004 500.09 VLCREATIONDATE

An ADD&BACKUP to a Disk Farm with a LIBMAINTDIR and LIBMAINTAPPEND=TOEND updated the Volume Library with the current date instead of retaining the Volume Library CreationDate.

Jun 2004 500.08 BACKUPHOSTNAME

A LIBMAINTDIRECTORY can be recreated from a Disk Farm using a COPY statement like this,

COPY *= FROM <volume name>(PACK,HOSTNAME=<hostname>,
SERIALNO=<serialno>)
TO NULL(CD,LIBMAINTDIR,SERIALNO=<serialno>,
SCRATCHPOOL=NODATATRANSFER,
FAMILYOWNER=<hostname>)

The FAMILYOWNER attribute may be used to specify the HostName which is stored into the recreated LIBMAINTDIRECTORY.

This use of FAMILYOWNER is incompatible with the &CATALOG option which uses the FAMILYOWNER as the Catalog FamilyName.

Jun 2004 500.07 RELEASED

If an ADD statement specifies LIBMAINTDIR or LIBMAINTAPPEND=TOEND then a LIBMAINTDIRECTORY file must be present.

A COPY statement with LIBMAINTDIR specified creates a new LIBMAINTDIRECTORY.

If LIBMAINTDIR is specified and a File is released using the COPY from NULL syntax, the Released Flag ([33:1] in LMDFStatX) is set for the File Entry.

If LIBMAINTDIR is specified and an ADD&COMPARE replaces some files, the corresponding entry in the LIBMAINTDIRECTORY is modified to match the new file.

If LIBMAINTAPPEND=TOEND is specified, the files added are entered into the LIBMAINTDIRECTORY.

A LIBMAINTDIRECTORY can be recreated from a Disk Farm using a COPY statement like this,

   COPY *= FROM <volume name>(PACK,HOSTNAME=<hostname>,
SERIALNO=<serialno>)
TO NULL(CD,LIBMAINTDIR,SERIALNO=<serialno>,
SCRATCHPOOL=NODATATRANSFER);

If the <serialno> exists in the Volume Library and has a valid Creation Date, the LIBMAINTDIR title is constructed using the Volume attributes.

If a LIBMAINTDIRECTORY is recreated from a Disk Farm which has released files, the File Entry is marked as Released and the File Attributes are set from the Released File Information stored in the Disk Farm.

A LIBMAINTDIRECTORY can be analyzed using the File Analysis utility which comes with CopyWrite for NT.

Jun 2004 500.06 RELEASEDMSG

When Copying from CD to NULL display Released File information if it exists.

Jun 2004 500.05 COPYAS

Copying from a Disk Farm which has Released Files to a CD Image on the MCP System has been corrected.

A COPY AS from a Disk Farm to a CD Image on the MCP System has been implemented.

If a Released File is encountered when copying to a CD Image on an MCP System a message about the released file is displayed.

May 2004 500.04 FAMILYNAMEISDISK

Set the TaskValue to 1 if any error occurs when merging Disk Farms.

Avoid family Substitution when creating a LIBMAINTDIR.

Add the CatalogFamily as the FamilyOwner in a Volume Log Record.

Set the TCP/IP Bridge DialogCheckInterval to 1 minute, and the BlockedTimeOut to 5 minutes.

The TCP/IP Bridge now writes a message in segments which have a maximum size of ACTUALMAXRECSIZE bytes.

If an INSUFFICIENTBUFFERS condition is signalled when writing to a TCP/IP Subfile in the Bridge, a message is displayed and it waits for the OUTPUTEVENT for the Port to happen, and then continues writing the messages.

May 2004 500.03 LOGVOLUMES

After sending a TapeLabel Notice to Supervisor, CopyWrite Logs a Volume Directory Add Record to the System Sumlog.

If a Copy to NULL is performed, and LIBMAINTDIR is specified, a SERIALNO must be assigned to the <destination volume>. If the SERIALNO is found in the Volume Library, the LIBMAINTDIR is created using the Volume Name, SerialNo and Creation Date of the Volume Library entry. If not found, a message is displayed and the LIBMAINTDIR is created for a volume called NULL.

If a LIBMAINTDIR is being created by copying to NULL, then the Data for all files is copied from the <source volume>, and discarded, thus checking the integrity of the <source volume>. When copying from a <source volume> which is a Disk Farm at a Remote Host, such a Copy could cause significant network traffic, just to recreate a LIBMAINTDIR.

If the SCRATCHPOOL = NODATATRANSFER is specified on the <destination volume>, then only the Disk File Headers are transferred, and the Data is skipped.

May 2004 500.02 HARDLINK

If there is a mismatch between the Version of CopyWrite and the Version of ExtractArchive a warning message is displayed.

A COPY *= FROM NULL TO ...Disk Farm releases all files in the Disk Farm and deletes the Disk Farm directory from the NT File System.

A COPY <file list> FROM NULL TO ... Disk Farm replaces each selected file capsule with a Released Capsule, and the space is returned to the NT File System.

The COPY&GO between A-Series and between A-Series and Windows now waits for the Job or CodeFile to complete, before terminating. Any messages generated are displayed.

The capability to initiate a third party copy between Disk Farms on an NT system has been implemented.

The general syntax is,

COPY <file list> FROM <source>(PACK,HOSTNAME=<hostname>), <file list> FROM <source>(PACK,HOSTNAME=<hostname>) TO <destination>(PACK,HOSTNAME=<hostname>)

The <hostname> for the <source> and <destination> must be the same. This capability is used by MergeTape to merge Disk Farms.

The &CATALOG modifier may be used to add an Archive Reference.

The &BACKUP modifier may be used to add a Catalog Reference.

The LIBMAINTDIR may be used to create a LibMaintDir.

If the protocol version of the CopyWrites performing a file transfer between A-Series Hosts are incompatible, an AX is required to continue the Copy.

If a version mismatch occurs between an A-Series and an NT System, the Copy is terminated.

If a FAMILYOWNER of DISK is specified when doing a COPY&CATALOG, a family called DISK is assumed, and No Family Substitution occurs.

After a Volume is added to the Volume Library by CopyWrite it checks if a DUPLICATE FAMILY condition could occur, and if so it terminates the Copy and deletes the Volume.

An attempt to Copy a file which has been released from a Disk Farm displays information about the released file, and skips the file.

If the File CDIMAGEHARDLINK is Label Equated with a FAMILYNAME when creating a CD Image, a reference to the CD Image is created on that FAMILYNAME.

This is used by FAMILYMANAGER to allow CD Images to be located on families other than that specified by FLEX_CWIMAGE.

Feb 2004 500.01 AUTOPRINT

Adds support for remote printing to CopyWrite on NT.

A virtual server is defined like this,

    PS CONFIG CPNTA SERVER="REMOTEPRINTSERVER (
DESTINATION='SITE',
TYPE=CD,SCRIPT=PRINT,HOSTNAME=CPNTA,
PATH=*ASERIESPRINT ON C) IN
SL COPYWRITE"

Files printed to this Virtual Server are copied into a CD Image C:\ASERIESPRINT\<date>\<usercode>\<jobno>_<taskno>.mcp, and the VBScript called Print.vbs is executed. The script converts each file in the CD Image to a .txt file.

If the TYPE=WRAP is specified, a Wrapped container is created.

A site can create VBScripts to perform special processing of an Image or Wrapped Container. The Script is provided with a Selector Object, which gives access to the Files and their Headers in the Image, a Script Object which provides attributes which describe the local environment, and an Info Object which provides access to the Print Attributes in the Info Array of the Virtual Server.

Feb 2004 470.94 FLEX_CWIMAGE

When copying files from a CD Image, if the <source volume> is not resident and a SERIALNO is specified, CopyWrite uses the SERIALNO to find the <familyname> in the Volume Library, and then searches for an image called <source family>/<familyname>. This matches the FLEX FamilyManager naming conventions. The search which was previously done using the current path, is now done on the family specified by the FLEX_CWIMAGE Configuration Variable. This may be overridden by specifying the FAMILYOWNER as another FamilyName.

Example:
Copy F from DEV(CD,SERIALNO="CI1234",LockedFile,HostName=LOCAL)
Copy F from DEV(CD,SERIALNO="CI1234",LockedFile,HostName=LOCAL,
FamilyOwner = DISK)

The search is done using the FamilyName specified without Family Substitution.

Feb 2004 470.93 HDR ORIGIN

If known, the OriginFamily is displayed by the HDR command.

Feb 2004 470.92 ORIGINFAMILY

If SilentRunning (Options=NOSUMMARY) is specified with a COPY&COMPARE, and the file being copied is not a better version than the resident file, the informative message is suppressed.

If the OriginFamily is available, it is included in the File Copied message.

Jan 2004 470.91 LASTFILENO

When copying files to a Disk Farm and creating a LIBMAINTDIR, the Last FileNo was correct in the LibMaintDir control record but not set in the Volume Record.

Jan 2004 470.90 EXEAREASIZE

A Block in a Self Extracting Archive is defined to be the Compiler AreaSize of 504 Sectors. The default BLOCKSIZE is the greater of 1 and the number of Blocks in an Area of *METALOGIC/COPYWRITE/ EXTRACTARCHIVE. A BLOCKSIZE of 1 limits the absolute size of an archive to 15000 Areas * a 504 Sector Block per Area, and would create an archive with a segmented header, which is not loadable during a ColdStart by SYSTEM/LOADER. The BLOCKSIZE attribute can be used to increase the number of Blocks Per Area to avoid these limitations. For example, a BLOCKSIZE of 100 will result in an archive with an AreaSize of 50400 Sectors (100 * 504 Sectors), giving an archive size of about 130GB.

For Example,
COPY *= TO EXE(CD,HOSTNAME=LOCAL,LOCKEDFILE,BLOCKSIZE = 5)

The BLOCKSIZE attribute has been added to the Package and Archive
Directives in a CopyWrite MakeFile.

{$Package BlockSize=5}

The MP attribute may now be set in the Package and Archive
Directives in a CopyWrite MakeFile.

{Package MP +PU +IDENTITY CopyWrite, BlockSize = 5}

This patch also corrects a problem introduced in 470.85 which made the Compare option inactive when doing a COPY&COMPARE to a remote host.

Jan 2004 470.89 EXTENSIONS

When the LIBMAINTJOLIET transform is used, FileKind CONTAINERDATA and WRAPPEDDATA files are given a .con extension, FileKind PROMBURNERDATA files are given a .mcp extension and all other FileKinds are given a .txt extension, provided that no other extension has been specified.

Jan 2004 470.88 UNQUOTEDSTRING

A USERCODE.Instruction in an External File List was not executed correctly because the Transform.NOTE attribute was enclosed in quotes.

Jan 2004 470.87 MAKELOAD

Implement the MakeLoad command to create a list of the target files in a Make file, suitable for use as an external file list in a Copy statement.

Jan 2004 470.86 ITSADIRECTIVE

Prevent ambiguity between [ as a Directive and [ as part of a COPY [FTP] statement in a MAKE File.

Jan 2004 470.85 COPYFROMREMOTETOEXE

Files may be copied from a remote Disk Farm to a Self Extracting Archive. An external file list, such as '@LISTNAME', which contains instructions may be specified.

Jan 2004 470.84 TOBECONTINUED

A Keyed Library/Maintenance CD in which a directory block was split on the null of a key entry was not handled correctly.

Dec 2003 470.83 SIGORGF

Support for Origin Family Lists on MCP 5.0.

Dec 2003 470.82 NOLOGICALIO

Files could not be reloaded from a CD Image with the error message

 FILE000.LASTRECORD NOT ENOUGH ROOM IN DISK FILE HEADER.

This has now been fixed.

Nov 2003 470.81 TARGET

A large WFL statement with about 17000 filenames resulted in some limits being exceeded.

Nov 2003 470.80 LIBMAINTDIRFAMILY

The source FamilyName is now appended to the FileTitle which is stored in a LIBMAINTDIR.

Nov 2003 470.79 COPYLONGLISTF

The WFL Statement passed to LMGUTS was corrupted when copying files from a 4.9 system to an earlier MCP, such as 4.6, which does not support the LMNEWF format and COPYLONGLISTF option.

If the TARGET attribute is label equated to a COPY statement, and it is not 0, then the COPY is assumed to be for CopyWrite, no matter what protocol has been specified in the WFL statement. This feature is intended for communication between other Metalogic software and CopyWrite.

Nov 2003 470.78 NOTRUNCATE

If a file with a long filename was copied as another filename, any file identifiers greater than 17 characters were truncated.

When a COPY&BACKUP of a long filename with greater than 12 levels was done, the file was copied but the Backup References were not updated.

Nov 2003 470.77 SIGSKIPV

If a file with a long filename, and hence a version 8 header, was copied to a system which did not have LONGFILENAMES set, the header was rejected, and the Copy terminated. CopyWrite now displays messages explaining the problem, and continues copying files.

Oct 2003 470.76 VLUPDATE

Implements the VLUPDATE <libmaindivir title> command in CopyWrite Utility. If a Volume is deleted from the Volume Library, and then added again, the FAMILY CREATION DATE is set to UNKNOWN. An attempt to load a file using a backup reference which refers to this volume will fail because the FAMILY CREATION DATE is used to build the title of the LIBMAINTDIR file. The LIBMAINTDIR file stores the name of the Disk Farm Host on which the volume resides. This command opens the LIBMAINTDIR file, and uses the BOTTIMESTAMP as the CREATION DATE to update the Volume Library entry.

Sep 2003 470.75 COPYLONGLISTF

On 4.9 the NEWWFL flag in LMGUTS is only set if LMNEWF and COPYLONGLISTF are set. COPYLONGLISTF is not used on MCP 4.8 and adds nothing on MCP 4.9. This change caused a Bounds Error in LMGUTS at 60250280.

Jul 2003 470.74 ATTABLEGENTABLES

AtTableGen table generation interface for CopyWrite.

Jun 2003 470.73 UNWRAPNOKEY

If there was no valid key for a file with a LICENSEKEY when copying from a Wrapped Container, the Copy was abandoned, instead of just the file being skipped.

Jun 2003 470.72 DSED

The Volume Information is also kept for a COPY&BACKUP to DISK which is DSED.

When a SERIALNO is specified on a COPY to a Disk Farm, the SERIALNO is used to create the Path as for a COPY&BACKUP and COPY&CATALOG.

Jun 2003 470.71 KEEPVOLUME

If a COPY&BACKUP copies some files to a DISK, then the Volume Information is kept, and if a LIBMAINTDIR is requested, only those files copied are stored.

May 2003 470.70 SCRATCH

When doing a COPY&BACKUP or COPY&CATALOG, if the Volume with the SERIALNO is already in the Volume Library, but is marked as SCRATCH, or has the FamilyName "S C R A T C H", CopyWrite will Volume Delete the Volume and use it for the Copy.

May 2003 470.69 CHANGE LIBMAINTDIR

The LIBMAINTDIR utility command has been added. Utility commands may be executed under CANDE by

U *METALOGIC/COPYWRITE <command>

The LIBMAINTDIR command syntax is,

LIBMAINTDIR <title> HOSTNAME
will display the HostName stored in LIBMAINTDIR given by the <title>.

LIBMAINTDIR <title> HOSTNAME <hostname>
will set the HostName in the LIBMAINTDIR given by <title> to the <hostname> specified.

The entrypoints LibMaintDirFileName, FindLibMaintDirHostName and ChangeLibMaintDirHostName are exported from CopyWrite.

May 2003 470.68 LIBMAINTDIR

A LIBMAINTDIRECTORY is created if the LIBMAINTDIR attribute is set and a SERIALNO is specified.

By default the file is called LIBMAINTDIR/<tapename>/<date>/<serial> under the Usercode of the Task performing the Copy, and it is stored on the DL LIBMAINTDIR Family.

The title may be changed by Label Equating FILE LIBMAINTDIR on the Copy Statement.

Apr 2003 470.67 CARDLIST

The CARDLIST command of CopyWrite Utility can be used to create an External File List from a Pseudo Reader Data Deck.

The syntax is,
CARDLIST <filetitle>
The INTNAME of the Input File is CARD.

Apr 2003 470.66 FILELIST

The FILELIST command of CopyWrite Utility can be used to create an External File List.

The syntax is,
FILELIST <filetitle> = <source>,<source>...
<source> ::= <title> | <title> <instructions>
<title> ::= <filetitle> | <filetitle> AS <filetitle>
<instructions> ::= [ <instruction list> ]

The External File List can be used in a local or remote COPY statement. For example,

COPY '@FRED' TO IMAGE(CD,HOSTNAME=LOCAL)

Mar 2003 470.65 LONGFILENAME

A COPY&BACKUP failed with a filename which had a long FileId, on a system which had SYSOPS LONGFILENAMES set.

Feb 2003 470.64 DESTROYED

When doing a COPY&BACKUP a Volume is marked as DESTROYED at the start of the Copy, and if the Copy is CompletedOK, the DESTROYED flag is cleared. On 4.8 the VOLUME DESTROYED statement does not work for Packs, see UCF # 94628242. If CopyWrite detects that the DESTROYED flag has not been set when it should have been set it issues a WARNING message.

Feb 2003 470.63 FILENO

Display the <file#> when copying from a CD Image to NULL.

Fixes a problem when recovering files from a CD Image with a large number of files.

Feb 2003 470.62 CALLBITF

On MCPs before 4.9, the Origin Family List was not provided by LMGUTS for NFT. To avoid this an MCP patch was developed which provided the Origin Family List if NFTFamDirF [39:1] was set. On 4.9 CALL_LIBMAINT was introduced and this is indicated by the CallBitF [39:1] being set. This conflict resulted in CopyWrite faulting on 4.9. NFS 77966442 was accepted as 'Implement ORIGIN for NFT Transfers', but it is not in the base release of 4.9. For the transition to 4.9, the NFTFamDirF bit is only set for MCPs before 4.9.

Feb 2003 470.61 FIX TAPELABEL NOTICE FOR MERGETAPE IMAGES

For image files created by Flex MERGETAPE, COPYWRITE was not supplying the full multi-level title of the image in the Tapelabel notice sent to Supervisor. This meant that the image familyname was not visible from a TP interrogation and has now been fixed.

Jan 2003y 470.60 FAMILYNAME

This patch corrects a problem when copying files from a CD-ROM Image when the Copy is performed with a Family set to "." and there is no famil

Dec 2002 470.59 METAMORPHTIMESTAMP

When creating a Joliet hybrid CD Image, the file Recording Date and Time was being set to the current date and time, instead of the Creation Timestamp of the original file.

Dec 2002 470.58 COMPARE

Fix BLPack Compare when AreaSize = 1.

Dec 2002 470.57 TASKSTRING

Pass the TaskString Attribute through to the remote host.

Dec 2002 470.56 BLHEADERS

Flex Files <pattern> MT <unit> on a non Library/Maintenance tape calls CopyWrite to return the Disk File Headers.

BLPack Tapes have AUTOUNLOAD=OFF set by default. This can be changed in the <source volume> attributes of the COPY statement.

Dec 2002 470.55 BLPACK TAPE MOUNT

Wait for a BLPack Tape to be available or terminate after 60 seconds. The TAPEDIR process is terminated if it becomes SUSPENDED, and the OPEN of the BLPack Tape is delayed by the rewinding of the Tape after the MCP FETCHTAPEDIRECTORY has determined it is not a Library/ Maintenance Tape.

Dec 2002 470.54 UNITISTAPE

Check for all kinds of Tape.

Dec 2002 470.53 FETCHFROMUNIT

FetchImageHeaders tries to return a Tape Directory for a BLPack Tape if the TapeUnit specifies a non Library/Maintenance Tape Unit.

Dec 2002 470.52 ADD&BACKUP CDROM

On 4.8, WFL disallows ADD&BACKUP to a destination volume with a KIND = CDROM. A COPY&BACKUP is allowed. To allow an ADD&BACKUP, a synonym is provided for KIND = CDROM.

If the destination volume is KIND = DISK and DENSITY = SUPER, or any CDROM attribute is set, such as CDCOPIES = 1, CDLOADER or PACKETWRITE, then the destination volume is treated as though it were KIND = CDROM.

If the syntax for a COPY statement is rejected by CopyWrite, and is therefore considered to be a local WFL Copy request, the reason for the rejection is reported.

Nov 2002 470.51 NFTBLPACK

Support access to headers in BLPack containers.

Nov 2002 470.50 BLPACK

Implement copying of files from BLPack containers and tapes.

Oct 2002 470.49 LICENSE

Improve message from Status utility when CopyWrite is installed, but not linked to the current SL'ed MAGUS.

Jun 2002 470.48 SCSIGEN

Added SCSI <filename>,.. command to parse SCSI Command and Response Descriptions and generate Delphi Pascal classes for building the commands and interpreting the responses.

Jun 2002 470.47 INVALID INDEX

Fix an Invalid Index on NX4200.

Jun 2002 470.46 LIBMAINTDIR

CopyWrite failed to copy a file from a tape when LIBMAINTDIR was specified.

Jun 2002 470.45 MP

Implement {$MP <MP command>} for a target.

May 2002 470.44 TAPELABELNOTICE

The TapeLabelNotice sent after a COPY&CATALOG from CD-ROM Images now has a KIND of CDR, to distinguish between CD-ROM Images and CD-ROM volumes.
If OPTIONS=NOSUMMARY is set on the COPY statement, then general information messages are not displayed.

May 2002 470.43 RECREATE NR

In the case where a catalog block was present, but it was marked as Not Catalogued, CopyWrite would CATALOG ADD the file, and then update the backup references. However, if there were no resident entry, the CATALOG ADD failed. CopyWrite now checks if there is a resident entry, and if not, it recreates the non resident entry.

This case can be reproduced by Copy&Backup to Image. Copy A from the Image (without &Backup). Remove A. Copy&Catalog A from Image.

May 2002 470.42 INCLUDE RQGEN/NEWTAPE

Internal change.

Apr 2002 470.41 RQGEN

Added Build <filename>,.. command to parse request definitions and generate Algol and Delphi Pascal modules for packing and unpacking messages.

Mar 2002 470.40 COPYWRITE MODULES

Use the BIND += to bind the CopyWrite Modules.

Mar 2002 470.39 MAKE

The title of a Self Extracting Archive may be label equated using the volume name, in the same way as a CD-ROM Image.

For example, in WFL
T(FILE F(FILENAME=FRED));
COPY = TO F(CD,HOSTNAME=LOCAL,LOCKEDFILE)[T]
The SI_ODTCOMMANDS attribute in Flex returns the commands in Simple Install format and in ODT command format.

The MAKE command is implemented.
MAKE <filename> : <make options>
This command may be used with a MakeFile to create software and system images. See COPYWRITE/MAKEFILE/COLDSTART for an example.

The BURN command is implemented.
BURN <filename> : <burn options> This command calls the MCP to burn a CD-ROM Image.
Running METALOGIC/COPYWRITE without a parameter displays the syntax for these commands.
If the MULTIVOLUME attribute is set when creating a Self Extracting Archive, then any Self Extracting Archive which is extracted is executed. This avoids the need for a RUN %4 instruction which creates an infinite run loop if the archive is executed.

Prolog instructions are available for Self Extracting Archives. If the file PROLOG is label equated to the Copy statement which creates a Self Extracting Archive, then the NOTES file attribute should contain instructions, which are stored within the archive, and which are executed before the files are extracted from the archive.

Some additional instructions for Self Extracting Archives are available.

%9 Returns the HOSTNAME
%10 Returns the GROUPNAME
REQUIRES <filename> suspends execution until the <filename> is available, or the waiting entry is OKed or DSed.

Feb 2002 470.38 CONTINUATION

The record of an external file may be continued across multiple logical records by appending the continuation character (\) to the end of a line.

For example,
A, \
B
is the same as writing
A,B

The syntax for a record of an external file is given below,

<record> ::= <filename> <as filename> <text>
<as filename> ::= <empty> | , <as filename>
<text> ::= <empty> | [ <ebcdic characters> ]
<comment> ::= % <ebcdic characters>
<continuation character> ::= \

Instructions may now be applied to the files in a self extracting archive by using an external file and setting the text to the instructions to be associated with the file.

For example, the external file E, A,B [TD\WM]

Copy "@E" to Fred(Cd,HostName=Local,LockedFile); Run $Fred

This will extract the file called B, and issue the ODT instructions TD and then WM.

The command separator is a back slash. Note that if the last character on a line is a backslash, then it will be interpreted by the file loader as a continuation record.

For example,
A [TD/ /WM]
The first backslash is the command delimiter, the second is the continuation character.

Feb 2002 470.37 COPY "@<filename>"

Due to some changes in 4.8 WFLSUPPORT, the way in which CopyWrite is invoked has changed.
A COPY statement which specifies a HOSTNAME=LOCAL is always passed to CopyWrite. If the HOSTNAME is not specified as LOCAL, then the request is a remote transfer, which may or may not be handled by CopyWrite, depending on the COPYWRITEPROTOCOL configuration.

The COPY "@<filename>" syntax implements a feature whereby an external file contains the names of the files to be copied. The "@<filename>" can be part of a list of filenames or other external references, as in COPY A/=,"@B"...

The file which contains the list of filenames can be any filekind, and each record contains the name of a file to be copied, or an external reference.

A file can be copied AS another filename by following the filename by a comma and the as filename. A comment is started with a % and blank lines are ignored.
Neither a family name nor a hostname may be specified.

For example,

A % Copy the file A
A,B % Copy the file A as B
A/"=" % Copy the directory A/=
A/"=",B/"=" % Copy the directory A/= as B/=
'@FRED' % Copy the files listed in FRED
"@FRED" % Copy the files listed in FRED

Any local copy request, indicated by a HOSTNAME=LOCAL, which is not handled by CopyWrite is now passed to LIBRARY/MAINTENANCE. This allows the "@<filename>" syntax to be used for Disk, Tape and CD copies not normally handled by CopyWrite.

For example,

COPY "@filename" to fred(tape,hostname=local)

Jan 2002 470.36 REMOTE CD IMAGE

This patch corrects an Assert Dump when copying a file from a CD Image at a remote host.

Jan 2002 470.35 COPY FILE NUMBER

A file may be copied by specifying a file number. The file number is specified by a # followed by an integer, and must be enclosed in single quotes.

For example, COPY '#1' FROM TEST(CD,HOSTNAME=LOCAL,LOCKEDFILE)

This syntax may be used for copying files from TAPE or CD, as well as CD Images and Wrapped Containers.

Jan 2002 470.34 FAMILYLIST

FetchImageDirectory loads an origin family list if present in a Tape Directory.

Dec 2001 470.33 DUMPDISKFILEHEADER

Exported some diagnostic functions from COMMON.

Jan 2002 470.32 LONG LIST

The NFTFamDirF bit is set to request Origin Family Names when creating CD Images. This requires an MCP patch (NFS 77966442).

CopyWrite supports the Long List WFL statement format internally, to allow selection of options which are not normally available to NFT.

The &SKIPEXCLUSIVE option is now set in FetchForeignHeaders, which is used by Flex when scanning files at a foreign host. Since files which are opened exclusive are skipped, those files are never able to be selected.

Dec 2001 470.31 RUNSCRIPT

Implement the RunScript entrypoint.

Dec 2001 470.30 UNQUOTEDIOHSTRING

Remove quotes from IOHSTRING in IPC Virtual File.

Dec 2001 470.29 IPC VIRTUAL

Check for a bad archive on a family before attempting to create a new archive. Improve message if unable to create an archive.

Improve message if the CopyWrite Environment cannot be installed, or access is denied because MP SERVICE COPYWRITE has not been done.

Implement FetchForeignHeaders for use by Flex AT <hostname> command.

Implement IPC Virtual File for accessing programs on Windows NT.

Includes a mechanism for WFL to do I/O using the IOHSTRING attribute.

Implement configuration variables for modifying timeouts.

COPYWRITE_MAXREADERWAIT - This is the maximum time in seconds that
the destination volume host will wait for
data to be returned from the remote source
volume host. This includes the time taken
to mount the source volume at the remote
source volume host.
COPYWRITE_MAXWRITERWAIT - This is the maximum time in seconds that
the source volume host will wait for the
data to be written to the remote destination
volume host. This includes the time taken
to mount the destination volume.
COPYWRITE_MAXACKWAIT    - This is the maximum time in seconds that
the source volume host will wait for the
data to be acknowledged by the remote
destination volume host.

The COPYWRITE_MAXTAPEDATAACKWAIT has been deimplemented.

Prevent DUP FILE with COPY&COMPARE by rejecting System Files.

Nov 2001 470.28 RESETHIDEJOLIETFROMMCP

Change the previous change so that if a file called PLE_17681630 is Label Equated, the CD_HideJOLIETFromMCPF option is reset. Therefore the default behaviour of CopyWrite is to hide the JOLIET partition from the MCP. No version with the previous patch was distributed.

Nov 2001 470.27 HIDEJOLIETFROMMCP

If a file called PLE_17681630 is Label Equated, the CD_HideJOLIETFromMCPF option is set when generating a hybrid CD-ROM Image. This option appends a 47"21" byte to the JOLIET Escape Sequences in the Secondary Volume Descriptor. The MCP does not recognize such an Escape Sequence as JOLIET, but it does not prevent Windows 2000/NT from recognizing the Volume. This option avoids a problem caused by PLE 17681630, in which a volume was recognized by the MCP as both Library/Maintenance and JOLIET.

Nov 2001 470.26 CONVERTHEADER

Fixes a problem where a COPY AS failed when the source files had Level 6 Headers. Headers are converted to the current MCP Header Level.

Nov 2001 470.25 SERIALNO

Implement the MAGUS configuration variable COPYWRITE_MAXTAPEDATAACKWAIT to allow the timeout for waiting for a Tape to be mounted, or a reel switch, to be specified.

If a SERIALNO is specified in the <destination volume> attribute list, it is stored in the CD Image, and is used by 4.8 and later MCPs.

CopyWrite delinks from Magus after retrieving configuration variables.

Oct 2001 470.24 NOT RESIDENT

Improve the message displayed when a COPY&CATALOG cannot find the generation being copied, and a resident generation exists.

Oct 2001 470.23 CATALOG ADD

When doing a COPY&BACKUP to a CD Image and the file being backed up was not Catalogued, CopyWrite could not alter the backup references. Now, if a file being backed up is not Catalogued, CopyWrite will CATALOG ADD the file.

Oct 2001 470.22 REMOTE CATALOG

Implements COPY&CATALOG from a CD at a remote host to NULL or a CD Image at the local host, updating the backup references on the local host.

For example,

COPY&CATALOG[FTAM]*=FROM TEST(CD,HOSTNAME=RED,SERIALNO="123456")
TO NULL(CD,FAMILYOWNER=TESTDATA)

Oct 2001 470.21 OPTIONS

A new configuration variable called COPYWRITE_OPTIONS may be defined in the MAGUS configuration file. The variable contains a comma separated list of option names.

COPYWRITE_OPTIONS=<option name>,<option name>... These option names are defined,

 TELLUSWHY  - If CopyWrite rejects a WFL Copy statement and this
option is set, the reason is displayed.
IGNOREDSS  - If CopyWrite rejects a WFL Copy statement and this
option is set, the Copy is abandoned. If not set,
the statement is passed to FILECOPIER.
The options may be interrogated or changed using the OPTIONS command of *METALOGIC/COPYWRITE utility.

Sep 2001 470.20 EXCLUSIVE

Although a file which is open EXCLUSIVE can be replaced or removed, a COPY&COMPARE considers it a better version than the file being copied, and does not replace it.

Sep 2001 470.19 NO CD KIND 4.8

On 4.8 Field Test release, a COPY statement to a remote HOSTNAME with a KIND=CD is disallowed by WFL. This syntax is used by CopyWrite for copying to and from CD images and self extracting archives. To avoid this problem, the attribute pair KIND=DISK,DENSITY=SUPER is now treated as a synonym for KIND=CD. For example, COPY TEST/= TO FRED(DISK,DENSITY=SUPER,HOSTNAME=LOCAL) creates a CD image called FRED

Sep 2001 470.18 LOCKEDFILE

If a COPY&COMPARE encountered a LOCKEDFILE, a DUP FILE occurred and the OF or DS terminated the copy. Now, a LOCKEDFILE is considered a better version than the file being copied, and it is skipped and the copy continues.

If no files were copied in a COPY&COMPARE, the copy task was not shut down immediately. This has been fixed.

An attempt to COPY&CATALOG to NULL failed for a non-resident file which had archive references but no catalog references. The catalog references are now created in this case.

Aug 2001 470.17 SEARCH OUTPUT

A COPY <file list> TO SEARCH(CD,HOSTNAME=LOCAL,SCRATCHPOOL=SEARCH); TASKSTRING="Find UnCased .target.:File F", created the disk file F containing the search results with unprintable characters after the text.

Sep 2001 470.04 ANYUSER

GetLocalAlias in COPYWRITE/COMMON recognizes a username of *ANYUSER

Sep 2001470.02 ANYUSER

COPYWRITE/BRIDGE now checks for a *ANYUSER/<IPAddress>, *ANYUSER/<hostname> and *ANYUSER/<domainname> entry in the UserDataFile when a remote user attempts to connect

Jul 2001 470.01 REMOVE TIME(7)

Remove Time(7) definitions from ZIP, as they are now defined in COPYWRITE/COMMON/INTERFACE