From:	MERC::"uunet!WKUVX1.BITNET!FILESERV-Mgr"  6-JUL-1992 17:18:16.21
To:	galaxy::gleeve
CC:	
Subj:	VMS_SHARE.003-OF-005

-+-+-+-+-+-+-+-+ START OF PART 3 -+-+-+-+-+-+-+-+
X    PartNo := PartNo + 1;
X    xbuf_range := Find_Break(Xbuffer,Max_Bytes-Size_part_buf-Reserved);
X    POSITION( END_OF(part_buf) );
X    IF xbuf_range <> 0`20
X      THEN
X        Move_Info(xbuf_range, part_buf);
X    ENDIF;
X    Insert_Part_Separator(PartNo, part_buf, Xbuffer, SPLIT_status);
X         `20
X    IF PartNo = 1
X       THEN
X          Move_Info(part_buf, pt1_buf);
X       ELSE
X          Write_Part(part_buf, PartNo);  ERASE(part_buf);
X    ENDIF;
X
X  ENDLOOP;
X
X  Move_Info(Xbuffer, part_buf);
X
XENDPROCEDURE;
X
X
X
XPROCEDURE Flush_Buffer(Xbuffer,Part)
X
X  IF Size_Buffer(Xbuffer) > 0
X     THEN
X        Write_Part(Xbuffer,Part);
X  ENDIF;
X
XENDPROCEDURE;
X`0C
X! +--------------------------------------------------------------------+
X! +   MAIN PROGRAM                                                     +
X! +                                                                    +
X! +   This is the main control loop of the program, responsible for    +
X! +   picking up the parameters, creating the prologue and epilogue of +
X! +   the share file, setting up global constants and variables etc.   +
X! +                                                                    +
X! +   It also contains the main loop which goes around each of the     +
X! +   specified files to be packed into the share file.                +
X! +                                                                    +
X! +--------------------------------------------------------------------+
X
X
X
XInit_Constants;
XInit_Tables;
X
XSET(SUCCESS,OFF);`09`09! Suppress non-error messages
XSET(FACILITY_NAME, FAC_name);`09! identify ourself in errors
X
Xinfo_buf  := CREATE_BUFFER("`7Binfo`7D", GET_INFO(COMMAND_LINE, "FILE_NAME")
V);
Xpart_buf  := CREATE_BUFFER("`7Bpart`7D");
Xpt1_buf   := CREATE_BUFFER("`7Bpart_1`7D");
Xwork_buf  := CREATE_BUFFER("`7Bwork`7D");
X
X
X! PICK UP PARAMETERS FROM THE OUTSIDE WORLD
XPOSITION( info_buf);
XUsername   := CURRENT_LINE;      MOVE_VERTICAL(1);
XIF DEBUG_state
X  THEN
X    Inform("I","DBGPAR", "Params: Creator = """ + Username + """");
XENDIF;
X
XMax_Blocks:= INT(CURRENT_LINE); MOVE_VERTICAL(1);
XIF DEBUG_state
X  THEN
X    Inform("I","DBGPAR", "Params: Max_Blocks = " + STR(Max_Blocks));
XENDIF;
X
X
XShare_File:= CURRENT_LINE;      MOVE_VERTICAL(1);
XIF DEBUG_state
X  THEN
X    Inform("I","DBGPAR", "Params: Share_File = """ + Share_File + """");
XENDIF;
X`0C
X! INITIALIZE STUFF TO GO THROUGH FILES
XStart_Of_Filenames := MARK(NONE);
XPartNo := 0;
XMax_Bytes := 512 * Max_Blocks;
X
X! Reserve space in the part buffers for 1 start and 1 end part + CR/LF chars
X! + a bit spare! They may not always be used but this is the worst case!
XReserved  := LENGTH(FAO(FAO_start_part,Max_Parts))
X           + LENGTH(FAO(FAO_end_part,  Max_Parts))
X           + 6;
X
X
X! CREATE THE INITIAL SHARE FILE HEADER
XCreate_Prologue_Head(work_buf, Username, Max_Blocks, Start_Of_Filenames);
XAdd_To_Part(work_buf,SPLIT_permit_goto);
X
XCreate_Prologue_Unpacker(work_buf);
XAdd_To_Part(work_buf,SPLIT_disallowed);
X
XCreate_Prologue_Trail(work_buf);
XAdd_To_Part(work_buf,SPLIT_permit_goto);
X
XPOSITION(Start_Of_Filenames);
X
X! LOOP AROUND, FILLING THE PART BUFFER WITH DATA FROM FILES
XLOOP
X   POSITION(info_buf);
X   EXITIF MARK(NONE) = END_OF(info_buf);
X
X   file_info := CURRENT_LINE;   MOVE_VERTICAL(1);
X   separator := INDEX(file_info,' ');
X   fname     := SUBSTR(file_info,1,separator-1);
X   chksum    := SUBSTR(file_info,separator+1,LENGTH(file_info)-separator);
X
X   IF DEBUG_state THEN
X      Inform("I","DBGPAR", "Params: filename = """ + fname + """");
X   ENDIF;
X
X   Create_File_Header(work_buf);
X   Add_To_Part(work_buf,SPLIT_permit_goto);
X
X   Create_File(work_buf,fname);
X   Quote_Buffer(work_buf, ANY(Funny_Chars));
X   Quote_Buffer(work_buf, " "&LINE_END);
X   Wrap_Lines(work_buf,Max_Line_Length);
X   Add_To_Part(work_buf,SPLIT_inhibit_goto);
X
X   Create_File_Trailer(work_buf,fname,chksum);
X   Add_To_Part(work_buf,SPLIT_permit_goto);
X
XENDLOOP;
X
XCreate_Epilogue(work_buf);
XAdd_To_Part(work_buf,SPLIT_permit_goto);
X
X
XPartNo := PartNo + 1;
XPOSITION(BEGINNING_OF(pt1_buf));
X
X
XIF PartNo > 1
X  THEN`09! Modify the inital message to state exact number of parts
X     POSITION(SEARCH( "$!+", FORWARD) );
X     POSITION( SEARCH( STR(Max_Parts), FORWARD) );
X     ERASE_CHARACTER(3);
X     COPY_TEXT( STR(PartNo) );
X
X  ELSE`09! Erase initial attention message as there's only 1 part!
X     MOVE_TEXT(part_buf);
X     POSITION(BEGINNING_OF(pt1_buf));
X     POSITION(SEARCH( "$!+", FORWARD) );
X     ERASE_LINE; ERASE_LINE; ERASE_LINE;
XENDIF;
X
XFlush_Buffer(part_buf, PartNo);
XFlush_Buffer(pt1_buf,  1);
X
XInform("I","NOOFPTS",FAO("Share file written in !UL part!%S",PartNo));
X
Xquit;
X$ delete /nolog /noconfirm 'temp';*
X$!
X$! Now go through the parts, if any, and rename them from
X$!
X$! `09P2%%% to P2%%%-OF-%%%`20
X$!
X$! where the 2nd %%% is the number of parts emitted.
X$!
X$ yyy = 0
X$10$:
X$ xxx = f$search(p2+"%%%.0",1)
X$ if xxx .eqs. "" then goto 20$
X$ zzz = f$integer(f$element(0,";",(xxx - p2)))
X$ if zzz .gt. yyy then yyy = zzz
X$ goto 10$
X$20$:
X$ if yyy .eq. 0 then goto 40$
X$ xxx = 1
X$30$:
X$ rename 'p2''F$FAO("!3ZL",XXX)'.0 'p2''F$FAO("!3ZL",XXX)'-of-'F$FAO("!3ZL",
VYYY)'
X$ xxx = xxx + 1
X$ if xxx .le. yyy then goto 30$
X$40$:
X$ v=f$verify(v)
$ CALL UNPACK [.VMS_SHARE]VMS_SHARE.COM;1 1551440877
$ create 'f'
X! Version 7.2-007 OF VMS_SHARE
X!      - 22 FEB 1990,   Andy Harper,  Kings College London UK
X1 VMS_SHARE
XPackage a series of files into a form suitable for mailing out
Xacross the network.`20
X
XFormat:
X     $ VMS_SHARE filespec sharefile
X2 Errors
XThe following error codes may be produced. Errors are normally in
Xthe form of standard VMS error messages although they cannot be`20
Xsuppressed with SET MESSAGE.
X3 ABORT
XThe user has aborted the procedure with CTRL-Y or CTRL-C.`20
X3 CANTSPLIT
XIndicates that VMS_SHARE has tried to split the share file into
Xtwo or more parts and the split point boundary is in a place
Xwhere it is not allowed to be. In this case, this is usually in
Xthe packed TPU code which is written to the output share file.`20
X
XThe usual cure is to increase the minimum size of a part so that
Xthe split point boundary moves to a new position, hopefully past
Xthe offending section.`20
X3 CHKSMFAIL
XIndicates that the file just unpacked from the archive is in some
Xway damaged as its checksum does not match that of the original.
XThe share file should be checked for corruption around this file.
X3 CREDIR
XIndicates that the file is to be unpacked into a subdirectory and
Xthis subdirectory needs to be created. An attempt to create that
Xsubdirectory will be made.`20
X3 CREDIRFAIL
XIndicates that an attempt to create the directory for the output
Xfile, during unpacking, has failed for some reason. Probably due
Xto lack of disk quota or no access to the parent directory.`20
XIt may also be because more than 8 levels of directory are`20
Xrequired in which case, change the default directory up`20
Xsufficient levels to reduce the requirement to 8.
X3 CURLINEIS
XAn error during the processing of one of the lines of an input
Xfile has occurred and the current line being processed is listed
Xfor reference. This should be preceded by an actual error message
Xdescribing the problem.`20
X3 DBG
XVarious DBGxxxxxx message can be produced but only if the
Xdebugging flag within VMS_SHARE has been turned on. This option
Xis restricted to the system manager.`20
X3 FILRDERR
XIndicates that some kind of error occurred trying to read the
Xcontents of one of the input files into the buffer. Either it has
Xgone away since the filename parameters were parsed or the user
Xhas no read access to the file contents. The name of the
Xoffending file is shown in the message.`20
X3 FILWRERR
XAn error has occurred writing to the indicated file. This is most
Xlikely due to lack of disk quota or no write access to the parent
Xdirectory.`20
X3 NOOFPTS
XAn informational message confirming the number of parts created.`20
X3 NOOUTDIR
XThe use has specified a file to hold the created share file but
Xthe directory in which to create that file does not exist. It
Xmust exist before running VMS_SHARE and is not created
Xautomatically.`20
X3 NOPARFIL
XThe temporary file used to pass parameters into the TPU program
Xcannot be created. This is likely due to insufficient disk quota
Xor no access to the parent directory. Also check the SHARE_TEMP
Xlogical to ensure it is either not defined or defined with the
Xcorrect scratch file name.`20
X3 NOTINTREE
XThe specified file was not within or below the current directory.
XThis is a requirement of VMS_SHARE to prevent the recipient of a
Xshare file unpacking and having files created in random parts of
Xthe directory structure. If it is truly necessary to package
Xfiles in other directories, then set the default directory to a
Xlevel which is higher than all of them.`20
X3 OLDVER
XThe version of VMS currently running is not of a sufficiently
Xrecent version to allow the unpacking of the share file to take
Xplace. The required minimum version is stated in the message.`20
X3 OLDVMS
XThe version of VMS currently running is not of a sufficiently
Xrecent version to allow VMS_SHARE to run. A minimum revision is
Xneeded because of certain VMS features used that do not exist in
Xearlier versions. The required minimum version is indicated in
Xthe error message.`20
X3 PROCESS
XIndicates that file unpacking is now being performed and that the
Xnamed file will be created.`20
X3 SELECTED
XAn informational message indicating that a particular file has
Xbeen selected for inclusion into the share file.
X3 SHRNOTPACK
XA file with the same name as one of the generated share file
Xparts has been discovered. It is not possible to package a share
Xfile into itself and so this file is rejected.`20
X3 TPULONGREC
XProcessing of a line of input has resulted in a record that is
Xtoo long to be handled by the current version of TPU and hence
Xcannot be processed. The line will be left as it is and probably
Xcause errors during transmission (such as truncation).`20
X2 Examples
X     $ VMS_SHARE *.for SOURCE
X          Package all the files ending in .FOR into the sharefile
X          'SOURCE'. Parts will be created called SOURCE.1, SOURCE.2 ...
X          etc.
X
X     $ VMS_SHARE `5B...`5D*.* SBDIR
X          Package all the files in all subdirectories below the
X          current one. The directory structure, relative to the current
X          directory, will be preserved and recreated at the unpacking
X          stage.
X2 Filespec
XA comma-separated list of wildcarded filename specifications. All
Xfiles which match the pattern(s) are packaged.`20
X
XThere are some restrictions:-
X     - The output share file name may not be included in the list.
X     - files ending in .DIR (normally directory files) are ignored.
X     - Files must exist in or below the current directory.
X
XA prompt is issued if no files are specified.
X2 Logical_Names
XSeveral logical names can be configured to control the operation
Xof VMS_SHARE.`20
X3 SHARE_EXCLUDE_DIRS
XIf defined with a comma separated list of directory
Xspecifications, enclosed in quotes, any file matching any of the
Xlisted directories will be excluded from the packaging operation.
X
XWildcards are not permitted; all directories must be listed in
Xfull.`20
X3 SHARE_EXCLUDE_NAMES
XIf defined with a comma separated list of names, enclosed in
Xquotes, any file whose NAME part matches any of the listed names
Xwill be excluded from the packaging operation.`20
X
XWildcards are not permitted.
X3 SHARE_EXCLUDE_TYPES
XIf defined with a comma separated list of file types, enclosed in
Xquotes, any file whose TYPE part matches any of the listed types
Xwill be excluded from the packaging operation.`20
X
XWildcards are not permitted.
X3 SHARE_LOG
XIf defined with a logical value (YES/NO, TRUE/FALSE etc.)
Xdetermines whether the unpacking stage produces informational
Xmessages about its progress. Error messages are always output.`20
X
XThe default is to produce the informational messages.
X3 SHARE_PART_SIZE
XIf defines, sets the maximum part size. The value is specified in
Xblocks and must be greater than 6. A zero value causes the
Xdefault size to be used otherwise a value less than 6 causes 6 to
Xbe used.`20
X
XThe default size is 30 blocks.
X3 SHARE_REAL_NAME
XDefines a string which is included at the head of the created
Xshare file following the username of the user who created it.  It
Xis intended that it will contain the real name of the user (For
Xexample, "FRED SMITH").`20
X3 SHARE_VERIFY
XIf defined with the value "TRUE" (or 1 or "YES" etc.) then
Xverification of the VMS_SHARE procedure is turned on. If defined
Xwith "FALSE" (or 0 or "NO" etc.) verifications is turned off.`20
X
XIf the logical is not defined at all, verification is off.
X
XNote that the user must have READ access to the procedure for
Xverification to be enabled.`20
X3 SHARE_TEMP
XDefines the name of a file to be used as a scratch file during
Xthe packaging operation.`20
X
XDefaults are taken from the name`20
XSYS$SCRATCH:SHARE_TEMP.TMP_'pid' where 'pid' is the current
XProcess Identification number.`20
X2 Operational_Notes
XVMS_SHARE packages all the specified files into one or more parts
Xhaving a common filename prefix. The suffix will be the part
Xnumber. Multiple parts will be created if the total size of a
Xpart exceeds the specified maximum size (taken from the logical
XSHARE_PART_SIZE).`20
X
XEach part is encoded so that it can survive destruction when
Xmailed across the network through unfriendly mailers which wrap
Xlines, transpose characters etc. A checksum is included which can
Xdetect damage at the receiving end.`20
X
XTo unpack, all parts must be concatenated in order and the whole
Xexecuted as a command procedure. It is preferable to be in an
Xempty scratch directory when doing this. If the parts have been
Xreceived via mail then it is NOT necessary to remove the mail
Xheaders between parts before concatenating them.  The unpack code
Xwill ignore them if present. However, mail headers should be
Xremoved from the initial part.`20
X2 PAKMAIL
XThe PAKMAIL utility may be used to send the generated parts of
Xthe sharefile to one or more recipients over the electronic mail
Xnetwork. Consult the separate help entry for full details.`20
X2 Sharefile
XThe name of the packed output file. This name will be suffixed by
Xthe part number even if there is only 1 part created.`20
X
XA prompt is issued if no sharefile name is specified.
$ CALL UNPACK [.VMS_SHARE]VMS_SHARE.HLP;1 404365551
$ create 'f'
X
X        `09`09`09V M S _ S H A R E
X
X    `09`09`09   R E L E A S E   N  O T E S
X
X
X
X    `09`09`09`09`09`09`09`09Version 7.2-007
X    `09`09`09`09`09`09`09`09Feb 1990
X
X
X1. INTRODUCTION
X
XVersion 7.2-007  of VMS_SHARE is a maintenance release that merely fixes a
Xnumber of known bugs. It introduces no new features for the user.
X
X
X
X2. NEW FEATURES
X
XThere are no new features with this release
X
X
X
X
X3. BUG FIXES
X
XThe following bugs have been fixed.
X
X
X3.1 Version Check`09`09`09`09`09(7.2-001)
X
XBoth the VMS_SHARE code and the created share file include checks on the`20
Xversion of VMS under which they run. This ensures that attempts to run on`20
Xunsupported (ie very OLD) versions of VMS are trapped with a suitable warnin
Vg.`20
XIn previous versions, this check was not altogether correct because it assum
Ved`20
Xthat the version number obtained with  f$getsyi("VERSION")  started with the
V`20
Xletter "V".  In some releases, this is not the case - there are "A" and "B"`
V20
Xversions around at least! Usually to be found in mixed version clusters.
X
XThe fix corrects this problem by stripping off the "V" and just comparing th
Ve`20
Xnumeric part.
X
X
X3.2 Use of /NOLOG`09`09`09`09`09(7.2-002)
X
XWith the inclusion of a "SET SYMBOL/SCOPE=(NOLOCAL,NOGLOBAL)" command in a`2
V0
Xprevious release of VMS_SHARE, the use of the /NOLOG qualifiers on certain`2
V0
Xcommands in the generated share file is redundant.  These have been removed`
V20
Xand will make the share file very slightly shorter.
X
X
X3.3 Variable names in the share file`09`09`09(7.2-003)
X
XThe TPU unpacking code placed into the share file uses several variables`20
Xto hold relevant information. To save space, these have been changed to be`2
V0
Xsingle letter variable names where possible. In some instances, the code is`
V20
Xrestructured to remove the variables altogether.
X
X
X3.4 Part Separator Check and Infinite Looping Problems`09(7.2-004)
X
XBecause VMS_SHARE allows the share file to be created in multiple parts for`
V20
Xease of mailing, it includes flags to allow it to skip over any intervening`
V20
X'garbage', typically mail headers and mail signatures.  Two special flag lin
Ves
Xare inserted - one at the end of a part and one at the start of a part.`20
X
XThe unpacking code however did not fully check for the start of part flag li
Vne`20
Xand consequently could be confused by mail headers or mail signatures that`2
V0
Xlooked like the start of flag lines. The code has been tightened up to more`
V20
Xfully check that the line found is a real start of part. This avoids problem
Vs`20
Xof the code being stuck in infinite CPU gobbling loops.
X
X
X
X3.5 Replacement of EXIT`09`09`09`09`09(7.2-006)
X
XIt has been reported that, under VMS 5.3, VMS_SHARE runs into problems at th
Ve`20
XTPU 'EXIT' statement.  The exact problem is unclear but seems related to the
V`20
Xflushing of buffers. To circumvent the problem, EXIT has been replaced by`20
X'QUIT' in both VMS_SHARE and the generated share file.
X
X
X
X3.6 Suppression of TPU messages.`09`09`09(7.2-007)
X
XBecause TPU produces unwanted informational messages when it starts, the cod
Ve`20
Xdiverts these to NL: via a user mode logical name assignment.  However this`
V20
Xhas the side effect of also suppressing any TPU error messages.  To allow`20
Xthese error messages to be seen if something is wrong, the share file now on
Vly`20
Xassigns the output to NL: if verification is OFF (see the logical name`20
XSHARE_VERIFY). If verification is on, all output comes to SYS$OUTPUT.
X
X
X
X
X
X4. CHANGES IN OPERATION
X
XThe following major changes in operation have occurred.
X
X
X4.1 Encoding of Special Characters`09`09`09(7.2-005)
X
XPrevious versions encoded troublesome characters using a 3 digit decimal`20
Xrepresentation of the ASCII code prefixed by an escape character.  This`20
Xrelease uses a hex encoding thus saving 1 byte for each escaped character.
X
XFor small files, the file may be slightly longer because of the extra code
Xnecessary to unpack hex characters. For long files, small space savings shou
Vld
Xoccur.`20
X
X
X5. DOCUMENTATION CHANGES
X
XA number of minor changes have been applied to the user guide and to the`20
Xtechnical info documents. No new information has been added.
X
X
X
X6. TESTING
X
XThis version of VMS_SHARE has been tested on VMS 5.1-1 but is believed to wo
Vrk`20
Xon all versions from VMS 4.4 to VMS 5.3.  However, it is not supported`20
Xformally on any version of VMS other than the one on which it has been teste
Vd.
X
X
X
X7. PREVIOUS RELEASE NOTES
X
XRelease notes for previous versions are appended at the end. These give`20
Xdetails of changes and bug fixes for those versions.
X`0C
X`09`09V M S _ S H A R E   B U G   F I X E S
X
X    `09`09`09 Version 7.1-004
X
X
X
X
X1. INTRODUCTION
X
XThis document is an addendum to the main release notes for VMS_SHARE`20
Xdescribing all the bugs fixed since the last major release 7.1-001
X
X
X
X2. BUG FIX DESCRIPTIONS
X
X2.1 Verification`09`09`09`09`09(7.1-002)
X
XVMS_SHARE now turns verification of the DCL code on or off based on the`20
Xdefinition of the logical name SHARE_VERIFY. Previously no attempt was made
V to`20
Xalter the verification setting. The environment is restored on exit.
X
XIf SHARE_VERIFY is defined as TRUE (or 1 or YES etc.) then verification is`2
V0
Xenabled. If defined as FALSE (or 0 or NO etc.) or is not defined at all,`20
Xverification is disabled.
X
XNote that this logical defines verification both for VMS_SHARE itself and fo
Vr`20
Xany unpack operations performed on the created archive.
X
XNote also that if the user has no READ access to the procedure (recommended)
V`20
Xthen verification is always disabled.
X
XThe .HLP file has been updated to include a reference to this logical and it
Vs`20
Xdefinitions.
X
XNOTE that the Version 7.1 release notes contain a comment that this logical`
V20
Xname has been removed. This was true with release 7.1-001 of VMS_SHARE but t
Vhe`20
Xlogical has been reinstated with release 7.1-002
X
X
X
X2.2 Symbol Redefinition`09`09`09`09`09(7.1-002)
X
XVMS_SHARE now uses the SET SYMBOL command to insulate itself from any symbol
V`20
Xdefinitions made by the user. Both local and global definitions of any DCL
Xsymbols are ignored.  If VMS_SHARE exits normally then the original setting
V is`20
Xrestored. However, an abnormal exit may cause the new settings to be retaine
Vd.`20
XThis may cause confusion if a user is unaware of what has happened.
X
XPreviously any external symbol definitions matching commands used internally
V`20
Xto VMS_SHARE would cause unexpected actions and usually cause VMS_SHARE to`2
V0
Xfail.
X
X
X
X2.3 Spurious Rejection of certain files`09`09`09(7.1-002)
X
XVMS_SHARE contains code to reject any attempt to include the output files in
V`20
Xthe packed archive on the grounds that packing an archive into itself is not
V`20
Xsensible. However the code for this check was faulty due to an undocumented`
V20
X'feature' of the f$integer lexical which returns 1 if a string starts with`2
V0
XT or Y (in other words, does a conversion from boolean to integer where T,Y
V =`20
X1 and F, N = 0). This caused some perfectly valid filenames to be rejected o
Vn
Xthe grounds that they had the same name as the output file.
X
XAs an example, if the output file is specified as 'V' then invalid input fil
Ves
Xwould be anything starting with this name followed by a number, such as 'V.1
V',
X'V.2' etc. The bug also caused files 'V.T' and 'V.Y' to be invalid.`20
X
XThe code has now been fixed by avoiding the use of f$integer until the strin
Vg`20
Xhas been checked with f$type to make sure it really is a number.
X
X
X
X2.4 Movement Of Generated CUT HERE line`09`09`09(7.1-003)
X
XThe inclusion of the verification option (SHARE_VERIFY) was inadvertently`20
Xplaced BEFORE rather than AFTER the ' ...   CUT HERE   ... ' line in the`20
Xgenerated share file. It has now been moved to its proper place ensuring tha
Vt`20
Xcutting on the indicated line does not remove the VERIFY option.
X
X
X
X2.5 Angle Brackets in Directory names`09`09`09(7.1-004)
X
XIf the parameters to VMS_SHARE, or the current default directory, contained`
V20
Xangle brackets around directory specifications (For example, <TEST> rather`2
V0
Xthan the more normal `5BTEST`5D) then VMS_SHARE treated each file as invalid
V`20
Xbecause it was not designed to handle the <> notation, which is perfectly`20
Xvalid VMS syntax.
X
XThis problem has been cured by ensuring that all occurrences of <..> notatio
Vn`20
Xare translated to the more normal `5B..`5D notation before processing the`20
Xfilenames. The way in which this is done relys on a little known feature of`
V20
Xthe f$parse lexical function:
X
X   f$parse(P1,"`5B`5D")  will translate any <..> directory to `5B..`5D
X
X   f$parse(P1,"<>")  will translate any `5B..`5D directory to <..>
X
XHowever if P1 contains a version number the conversion is not done! (WHY thi
Vs`20
Xshould be so is a mystery at this time)
X
X
X
X2.6 Check for correct VMS version in created share file`09(7.1-004)
X
XThe check for a minimum revision of VMS was incorrect. The current version,`
V20
Xobtained with f$getsyi("VERSION") was being checked against "4.4" instead of
V`20
X"V4.4".
X
X
X
X2.7 Check for correct VMS version in main procedure`09(7.1-004)
X
XNo check was made in the main VMS_SHARE procedure for the correct minimum`20
Xrevision of VMS required. This would cause it to fail if run on a pre-VMS 4.
V4`20
Xsystem. A check has now been included.
X
X
X
X2.8 Information on errors in HELP`09`09`09(7.1-004)
X
XExplanations of the error codes for both VMS_SHARE and PAKMAIL have been`20
Xincluded into the HELP files for the utilities. There are also some minor`20
Xeditorial changes to the help text.
X
X
X
X2.9 User Guide`09`09`09`09`09`09(7.1-004)
X
XA preliminary user guide is issued with this release. This describes the`20
Xrationale behind VMS_SHARE, from the user's viewpoint and details of how to`
V20
Xuse both VMS_SHARE and PAKMAIL. Details of unpacking share files are include
Vd`20
Xalso.
X
X
X
X2.10 Location of Break Point`09`09`09`09(7.1-004)
X
XCorrected the check for a null buffer in the routine which locates the optim
Vum`20
Xbreak point for a share file part.
X
X
X2.11 Part Separator Insertion`09`09`09`09(7.1-004)
X
XCorrected the check for the right part separator, GOTO/label or special flag
V`20
Xlines, by only checking the line below the separation point and not the line
Vs`20
Xon either side.  This ensures that the GOTO/LABEL code is only used when the
V`20
Xsplit point immediately precedes DCL code.
X
X
X
X3. KNOWN PROBLEMS
X
XThere are no known problems at this time.
X
X
X
X
XAndy Harper
X9-AUG-1989
X`0C
X        `09`09`09V M S _ S H A R E
X
X    `09`09`09   R E L E A S E   N  O T E S
X
X
X
X    `09`09`09`09`09`09`09`09Version 7.1
X    `09`09`09`09`09`09`09`09Aug 1989
X
X
X1. INTRODUCTION
X
XVersion 7.1 of VMS_SHARE has been completely rewritten to eliminate long
Xstanding bugs, and to improve performance by utilising new algorithms for th
Ve
Xpacking and upacking of files. Details of the changes from the previous
Xversions are given below.
X
X
X
X2. NEW FEATURES
X
X2.1 Subdirectories
X
XVMS_SHARE now supports subdirectories.  The user may package a series of fil
Ves
Xexisting in the directory tree within/below the current directory. The
Xdirectory structure will be recreated at the unpacking stage as an equivalen
Vt
Xtree beneath the current directory. All required directories are automatical
Vly`20
Xcreated as required.
X
XFor example:
X
X    $ VMS_SHARE `5B.TPU...`5D*.*,`5B.DATA`5D*.* PACKAGE.SHAR
X        Will package the directory tree beneath `5B.TPU`5D and the subdirect
Vory
X        `5B.DATA`5D.  During unpacking, these subdirectories will be created
X        automatically below the current directory.
X
X
XIt was originally decided to make the directory handling a bit like BACKUP,`
V20
Xallowing any directory to be packaged and individual items to be selected at
Xunpack time. However this proved to be extremely difficult in DCL and so was
Xabandoned. It may appear in a future release.  In order to prevent files
Xappearing in essentially random directories it was decided to adopt the abov
Ve
Xcompromise. It retains sufficient flexibility to deal with most package`20
Xstructures but maintains a known directory structure that will avoid files`2
V0
Xbeing placed randomly as far as the receiving user is concerned.
X
X
X
X2.2 DEBUG code
X
XTo assist those who enhance and develop VMS_SHARE, a large amount of
Xdebug/trace code is included into the source.  By redefining a simple global
Xconstant value, this debug code can be turned on or off to assist in trackin
Vg
Xdown faults.
X
X
X
X
X2.3 New Part Splitting Algorithms
X
XThe algorithms used for splitting parts have been extensively redesigned to
Xensure minimal use of memory for buffers. Essentially, VMS_SHARE now uses on
Vly
Xenough memory to hold the sum of two parts and the largest file. We read a
Xsingle file, add as much as possible to the part buffer and then write the
Xpart buffer, removing the equivalent info from the original file buffer.
X
XThe algorithm for finding the optimum part breakpoint now uses a binary sear
Vch
Xinstead of a sequential search for speed.
X
X
X
X
X2.4 New Unpacking Algorithms
X
XThe algorithm used to unpack code, embedded in the TPU code stored in the
Xoutput share file, has been redesigned to need less error checking and hence
Xless code.  The TPU code is also packed more compactly than before giving
Ximproved compilation speed as well as execution speed.`20
X
X
X
X
X2.5 Error and Status Messages
X
XVMS_SHARE now produces messages similar to the standard VMS form. Messages a
Vre
Xproduced to keep the user informed of progress (these normally go to
Xsys$output) and error messages (which normally go to sys$error).
X
XInitial informational messages from TPU, as it reads in the source, are also
Xprinted. It is hoped that in a future release some way can be found to turn
Xthis off.
X
X
X
X2.6 Exclusion Files
X
+-+-+-+-+-+-+-+-  END  OF PART 3 +-+-+-+-+-+-+-+-
