home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / vmsnet / sources / 497 < prev    next >
Encoding:
Internet Message Format  |  1993-01-25  |  47.5 KB

  1. Path: sparky!uunet!usc!news.service.uci.edu!unogate!mvb.saic.com!vmsnet-sources
  2. Newsgroups: vmsnet.sources
  3. From: "Andy, Systems Manager" <UDAA055@ELM.CC.KCL.AC.UK>
  4. Subject: VMS_SHARE V8.2, part 07/09
  5. Message-ID: <10312312@MVB.SAIC.COM>
  6. Date: Mon, 25 Jan 1993 21:34:55 GMT
  7. Lines: 1295
  8. Followup-To: vmsnet.sources.d
  9. Approved: Mark.Berryman@Mvb.Saic.Com
  10.  
  11. Submitted-by: "Andy, Systems Manager" <UDAA055@ELM.CC.KCL.AC.UK>
  12. Posting-number: Volume 4, Issue 51
  13. Archive-name: vms_share/part07
  14. Supersedes: vms_share: Volume 3, Issue 87-89
  15.  
  16. -+-+-+-+-+-+-+-+ START OF PART 7 -+-+-+-+-+-+-+-+
  17. Vtion`20of`20data`20in`20
  18. Xtransit.`20`20For`20example,`20line`20wrapping,`20case`20folding,`20transposit
  19. Vion`20of`20key`20
  20. Xcharacters`20etc.
  21. X
  22. XVMS_SHARE`20encodes`20files`20before`20transmission`20so`20that`20these`20thin
  23. Vgs`20may`20be`20kept`20
  24. Xunder`20control`20and`20proper`20restoral`20effected`20at`20the`20receiving
  25. V`20end.
  26. X
  27. XFor`20a`20given`20series`20of`20files`20to`20be`20packaged,`20VMS_SHARE`20comb
  28. Vines`20them`20into`20a`20
  29. Xsingle`20large`20'text`20archive'`20file`20that`20can`20be`20unpacked`20into
  30. V`20its`20component`20files`20
  31. Xsimply`20by`20running`20it`20as`20a`20command`20procedure`20at`20the`20receivi
  32. Vng`20end.`20For`20
  33. Xconvenience,`20VMS_SHARE`20will`20optionally`20split`20the`20result`20into`20m
  34. Vultiple`20parts`20
  35. Xthat`20can`20be`20individually`20mailed`20and`20recombined`20at`20the`20receiv
  36. Ving`20end.
  37. X
  38. X
  39. X
  40. X2.`20WHAT`20VMS_SHARE`20DOES`20NOT`20DO
  41. X
  42. XBecause`20VMS_SHARE`20relies`20on`20electronic`20mail`20to`20ship`20the`20file
  43. Vs,`20there`20are`20no`20
  44. Xprotocols`20that`20can`20be`20used`20to`20check`20the`20accuracy`20of`20the
  45. V`20received`20file(s).`20
  46. XThere`20is`20a`20reliance`20on`20the`20underlying`20mail`20system`20to`20get
  47. V`20everything`20there`20in`20
  48. Xone`20piece`20and`20unchanged.`20`20VMS_SHARE`20is`20unable`20to`20ask`20for
  49. V`20retransmission`20of`20
  50. Xmissing`20or`20damaged`20pieces.
  51. X
  52. XVMS_SHARE`20should`20therefore`20be`20used`20to`20send`20files`20only`20via
  53. V`20essentially`20reliable`20
  54. Xmail`20systems`20which`20can`20get`20files,`20whose`20characters`20fall`20with
  55. Vin`20certain`20bounds,`20
  56. Xthere`20intact.
  57. X
  58. XVMS_SHARE`20is`20intended`20for`20sequential`20files`20only.`20Other`20file
  59. V`20formats`20can`20be
  60. Xpackaged`20into`20a`20backup`20saveset,`20whose`20file`20format`20is`20support
  61. Ved`20by`20VMS_SHARE
  62. X
  63. X
  64. X
  65. X3.`20LIMITATIONS`20OF`20MAILERS`20AND`20HOW`20VMS_SHARE`20GETS`20AROUND`20THEM
  66. V
  67. X
  68. XVarious`20mail`20systems`20have`20different`20limitations`20within`20them.`20F
  69. Vor`20instance,`20
  70. Xthey`20will`20wrap`20or`20truncate`20lines`20that`20are`20too`20long,`20they
  71. V`20may`20limit`20the`20size`20of`20
  72. Xan`20individual`20mail`20message,`20they`20may`20transpose`20characters`20inco
  73. Vrrectly`20if`20the`20
  74. Xunderlying`20character`20set`20is`20different`20from`20the`20transmitter`20(AS
  75. VCII/EBCDIC`20is`20a
  76. Xgood`20example`20of`20this).`20
  77. X
  78. XVMS_SHARE`20encodes`20the`20files`20in`20different`20ways`20to`20get`20around
  79. V`20the`20problems.
  80. XPlease`20note`20however,`20that`20the`20encoding`20techniques`20are`20NOT`20fo
  81. Volproof.`20We`20have
  82. Xmerely`20tried`20to`20anticipate`20all`20possible`20corruptions`20and`20devise
  83. V`20an`20encoding
  84. Xscheme`20which`20ensures`20that`20the`20conditions`20under`20which`20corruptio
  85. Vn`20occurs`20does`20not
  86. Xarise.`20If`20a`20form`20of`20corruption`20that`20has`20not`20been`20anticipat
  87. Ved`20occurs,`20corruption
  88. Xto`20the`20transmitted`20files`20will`20be`20irreparable`20except`20through
  89. V`20manual`20editing.`20
  90. X
  91. X
  92. X
  93. X3.1`20Maximum`20Size`20of`20a`20Mail`20Message
  94. X
  95. XMany`20mail`20systems`20cannot`20cope`20with`20single`20mail`20messages`20larg
  96. Ver`20than`20a`20fixed`20
  97. Xnumber`20of`20bytes`20and`20will`20truncate`20messages`20or`20maybe`20even`20f
  98. Vail`20to`20deliver`20them`20
  99. Xaltogether.
  100. X
  101. XThis`20is`20a`20real`20problem`20if`20a`20large`20software`20package`20is`20be
  102. Ving`20sent.`20`20VMS_SHARE`20
  103. Xtries`20to`20overcome`20this`20by`20splitting`20the`20packaged`20files`20into
  104. V`20several`20parts,`20
  105. Xeach`20part`20being`20smaller`20than`20some`20fixed`20size.`20By`20default,
  106. V`20a`20part`20size`20of`2030
  107. Xblocks`20is`20chosen;`20this`20can`20be`20overriden`20by`20defining`20a`20logi
  108. Vcal`20name
  109. X(SHARE_PART_SIZE)`20or`20by`20a`20qualifier`20on`20the`20command`20line`20(/PA
  110. VRT_SIZE=nn).`20For
  111. Xexample,`20we`20might`20send`20a`20`20total`20of`20300`20blocks`20of`20code
  112. V`20as`2010`20parts`20each`20of`2030
  113. Xblocks`20or`20less.`20VMS_SHARE`20`20will`20automatically`20split`20at`20the
  114. V`2030`20block`20boundary.
  115. X
  116. XIt`20should`20be`20noted`20that`20mail`20headers`20added`20on`20route`20can
  117. V`20account`20for`20several
  118. Xblocks`20worth`20of`20extra`20space`20so`20this`20should`20be`20realised`20whe
  119. Vn`20setting`20the
  120. Xmaximum`20part`20size.
  121. X
  122. X
  123. X
  124. X
  125. X3.2`20Maximum`20Line`20Length
  126. X
  127. XMany`20mail`20systems`20do`20not`20like`20lines`20longer`20than`20some`20fixed
  128. V`20maximum`20length,`20a`20
  129. Xmaximum`20length`20of`2080`20characters`20is`20typical.`20This`20results`20in
  130. V`20longer`20lines`20being
  131. Xwrapped`20or`20truncated`20at`20seemingly`20arbitrary`20positions.`20
  132. X
  133. XVMS_SHARE`20tries`20to`20cope`20with`20this`20by`20wrapping`20long`20lines`20i
  134. Vtself`20and`20inserting`20
  135. Xmarkers`20to`20allow`20them`20to`20be`20rejoined`20at`20the`20receiving`20end.
  136. V`20What`20VMS_SHARE`20does`20
  137. Xis`20to`20prefix`20each`20line`20with`20a`20flag`20character.`20This`20flag
  138. V`20character`20says`20EITHER`20
  139. X'this`20is`20the`20first`20part`20of`20a`20line'`20OR`20'this`20line`20is`20a
  140. V`20continuation`20of`20the`20
  141. Xprevious`20line'.
  142. X
  143. XThe`20maximum`20line`20size`20is`20configured`20into`20the`20code`20as`20a`20g
  144. Vlobal`20value`20and`20`20can`20be
  145. Xeasily`20changed`20if`20required.`20It`20is`20not`20intended`20that`20this`20v
  146. Value`20should`20`20be
  147. Xaltered`20by`20the`20average`20user`20however.
  148. X
  149. X
  150. X
  151. X
  152. X3.3`20Trailing`20Blanks
  153. X
  154. XSome`20mailers`20interfere`20with`20blanks`20at`20the`20start`20and`20end`20of
  155. V`20lines.`20VMS_SHARE
  156. Xencodes`20blanks`20(and`20tabs)`20as`20if`20they`20were`20troublesome`20charac
  157. Vters`20(see`20below)
  158. Xto`20get`20around`20this.`20During`20unpacking`20of`20an`20encoded`20file,`20a
  159. Vny`20blank`20characters
  160. Xare`20ignored.
  161. X
  162. X
  163. X
  164. X
  165. X3.4`20Escaped`20Characters
  166. X
  167. XUndoubtedly`20the`20biggest`20problem`20is`20that`20a`20mail`20message`20movin
  168. Vg`20through`20many`20
  169. Xdifferent`20systems`20on`20route`20to`20the`20destination`20may`20undergo`20ch
  170. Varacter`20
  171. Xconversions`20(for`20example`20-`20ASCII`20to`20EBCDIC`20if`20moving`20from
  172. V`20VAX`20to`20an`20IBM).`20
  173. XUnfortunately,`20not`20all`20systems`20keep`20similar`20translation`20tables
  174. V`20and`20characters`20
  175. Xcan`20get`20translated`20into`20something`20unexpected`20at`20the`20remote`20e
  176. Vnd.`20Culprits`20are`20
  177. Xcaret`20(`5E),`20tilde`20(`7E),`20square`20and`20curly`20brackets`20(`20`5B
  178. V`20`5D`20`7B`20`7D`20)`20and`20a`20few`20others.
  179. X
  180. XVMS_SHARE`20deals`20with`20this`20problem`20by`20replacing`20each`20of`20the
  181. V`20troublesome`20
  182. Xcharacters`20-`20the`20ones`20mentioned`20above`20plus`20any`20non-printing
  183. V`20character`20-`20by`20an
  184. Xescape`20sequence.`20The`20escape`20sequence`20is`20recognized`20at`20the`20re
  185. Vceiving`20end`20and`20is`20
  186. Xtranslated`20back`20to`20the`20original`20character.`20`20Obviously,`20to`20wo
  187. Vrk`20correctly,`20the`20
  188. Xescape`20sequence`20itself`20must`20be`20immune`20from`20translation`20problem
  189. Vs.`20
  190. X
  191. XThe`20escape`20technique`20used`20is`20to`20replace`20each`20character`20by
  192. V`20a`20string`20of`20the`20form
  193. X`60xx`20`20`20where`20the`20`60`20symbol`20flags`20the`20start`20of`20an`20esc
  194. Vape`20sequence`20and`20'xx'`20is`20a
  195. X2-digit`20string`20which`20is`20the`20hexadecimal`20form`20of`20the`20ASCII
  196. V`20code`20for`20the
  197. Xcharacter.`20Naturally,`20the`20`60`20character`20itself`20must`20be`20escaped
  198. V`20in`20this`20form`20to
  199. Xavoid`20confusion.`20For`20example,`20a`20space`20would`20be`20replaced`20by
  200. V`20`20`6020`20`20`20and`20a`20tab
  201. Xby`20`20`6009.`20
  202. X
  203. X
  204. X
  205. X3.5`20Additional`20Compression`20Techniques
  206. X
  207. XTwo`20additional`20forms`20of`20character`20encoding`20can`20be`20optionally
  208. V`20selected`20by`20the
  209. Xuser`20to`20reduce`20the`20size`20of`20the`20packaged`20data`20-`20either`20ru
  210. Vn-length`20encoding`20or`20a
  211. Xmodified`20form`20of`20Lempel-Ziv`20compression.
  212. X
  213. XA`20file`20compressed`20with`20one`20of`20these`20options`20will`20be`20automa
  214. Vtically`20decompressed
  215. Xwhen`20unpacked.`20It`20is`20not`20necessary`20for`20the`20recipient`20to`20us
  216. Ve`20external
  217. Xdecompression`20tools.
  218. X
  219. X
  220. X3.5.1`20Run-Length`20Encoding
  221. X
  222. XA`20form`20of`20run`20length`20encoding`20is`20used`20to`20encode`20sequences
  223. V`20of`20the`20same`20character
  224. Xinto`20a`205`20character`20sequence.`20In`20this`20instance,`20the`20generated
  225. V`20sequence`20is:
  226. X
  227. X`20`20`20`26nnXX
  228. X
  229. Xwhere`20`26`20is`20the`20run`20length`20sequence`20flag,`20nn`20is`20the`20cou
  230. Vnt`20(in`20hex)`20of
  231. Xcharacters,`20and`20ZZ`20is`20the`20hex`20code`20of`20the`20ascii`20character.
  232. V`20`20For`20example,`20a`20run
  233. Xof`2015`20spaces`20would`20be`20replaced`20by`20`20`260F20`20(`600F'`20=`2015,
  234. V`20`6020'`20=`20hex`20code`20for
  235. Xspace).
  236. X
  237. XThe`20use`20of`20run`20length`20encoding`20dramatically`20increases`20the`20ti
  238. Vme`20spent`20on
  239. Xencoding`20the`20files.`20In`20many`20cases,`20it`20will`20be`20of`20no`20bene
  240. Vfit.`20Because`20of`20this`20it
  241. Xis`20not`20active`20by`20default.
  242. X
  243. X
  244. X3.5.2`20Lempel-Ziv`20Compression
  245. X
  246. XThe`20Lempel-Ziv`20algorithm`20scans`20for`20common`20substrings`20in`20a`20fi
  247. Vle`20and`20replaces
  248. Xthem`20by`20a`20pointer`20back`20to`20a`20previous`20occurrence`20within`20the
  249. V`20file.`20For`20this
  250. Ximplementation,`20a`20number`20of`20changes`20have`20been`20made`20to`20the
  251. V`20basic`20idea`20to`20fit`20the
  252. Xrestrictions`20of`20the`20TPU`20utility,`20and`20the`20line`20wrapping`20and
  253. V`20quoting`20schemes`20used
  254. Xfor`20long`20lines`20and`20non-printable`20characters.
  255. X
  256. XThe`20file`20is`20scanned`20for`20the`20longest`20previously`20occurring`20sub
  257. Vstring`20and`20is
  258. Xreplaced`20by`20an`20escape`20sequence`20of`20the`20form:
  259. X
  260. X`20`20`20`5Cbbll
  261. X
  262. Xwhere`20`5C`20is`20the`20flag`20to`20indicate`20an`20lz`20encoded`20string,
  263. V`20bb`20is`20a`202`20digit`20hex
  264. Xencoded`20backwards`20count`20to`20the`20start`20of`20the`20original`20string,
  265. V`20and`20ll`20is`20a`20two
  266. Xdigit`20hex`20encoded`20length.`20Because`20of`20the`202`20digit`20hex`20encod
  267. Ving,`20the`20maximum
  268. Xbackwards`20search`20distance`20is`20255`20bytes`20and`20the`20maximum`20lengt
  269. Vh`20is`20also`20255
  270. Xbytes.`20Therefore`20up`20to`20255`20bytes`20can`20be`20compressed`20to`20a
  271. V`205`20char`20sequence`20in`20the
  272. Xoptimal`20case.`20In`20practice,`20compression`20ratios`20are`20nothing`20like
  273. V`20as`20dramatic.
  274. X
  275. XThis`20form`20of`20compression`20is`20very`20slow`20in`20operation`20due`20to
  276. V`20the`20repeated
  277. Xsearching`20for`20substrings`20that`20have`20previously`20occurred.`20Some`20o
  278. Vptimisations`20have
  279. Xbeen`20made`20to`20the`20searching`20but`20it`20should`20still`20be`20selected
  280. V`20only`20if`20it`20is
  281. Xcertain`20to`20be`20of`20some`20benefit.
  282. X
  283. X
  284. X
  285. X3.6`20Detecting`20Damaged`20Files`20with`20Checksums
  286. X
  287. XIn`20cases`20where`20some`20corruption`20occurs`20despite`20the`20encodings
  288. V`20used`20by`20VMS_SHARE,`20
  289. Xdetection`20of`20damage`20(BUT`20NOT`20REPAIR!)`20should`20be`20possible`20bec
  290. Vause`20each`20file`20is`20
  291. Xchecked`20for`20accuracy`20using`20a`20checksum`20once`20it`20has`20been`20unp
  292. Vacked.
  293. X
  294. XVMS_SHARE`20uses`20the`20currently`20undocumented`20CHECKSUM`20command`20to
  295. V`20produce`20a`20
  296. Xchecksum`20value`20for`20the`20source`20file.`20This`20checksum`20is`20carried
  297. V`20across`20in`20the`20
  298. Xpacked`20share`20file`20and`20checked`20when`20the`20file`20is`20restored.`20A
  299. V`20failed`20match`20causes`20
  300. Xa`20message`20and`20the`20receiver`20can`20take`20action`20to`20try`20to`20loc
  301. Vate`20and`20repair`20the`20
  302. Xdamage.
  303. X
  304. XThe`20DCL`20command:
  305. X
  306. X`20`20`20`20`20$`20CHECKSUM`20filename
  307. X
  308. Xwrites`20the`20checksum`20value`20into`20a`20DCL`20symbol`20called`20CHECKSUM$
  309. VCHECKSUM.
  310. X
  311. XThe`20CHECKSUM`20command`20does`20not`20work`20with`20files`20that`20have`20ce
  312. Vrtain`20types`20of
  313. Xrecords`20(specifically,`20those`20with`20an`20MRS`20value`20of`200`20and`20re
  314. Vcords`20exceeding`202048
  315. Xbytes).`20Therefore,`20VMS_SHARE`20cannot`20verify`20such`20files.`20A`20warni
  316. Vng`20message`20is
  317. Xissued`20at`20both`20the`20packing`20and`20unpacking`20stages`20that`20the`20f
  318. Vile`20will`20not/has`20not
  319. Xbeen`20verified.`20It`20is`20then`20up`20to`20the`20user`20to`20take`20appropr
  320. Viate`20action`20to`20verify
  321. Xthe`20files.
  322. X
  323. X
  324. X4.`20VMS_SHARE`20IMPLEMENTATION
  325. X
  326. XVMS_SHARE`20is`20provided`20as`20a`20combination`20of`20DCL`20and`20TPU`20code
  327. V`20in`20order`20to`20ensure`20
  328. Xthat`20it`20will`20run`20on`20any`20VMS`20system.`20`20A`20specific`20program
  329. V`20would`20be`20faster`20of`20
  330. Xcourse`20but`20then`20portability`20is`20not`20guaranteed.
  331. X
  332. XThe`20DCL`20part`20of`20the`20software`20is`20used`20merely`20to`20pick`20up
  333. V`20parameters`20and
  334. Xqualifiers,`20and`20parse`20filenames,`20passing`20them`20to`20the`20TPU`20cod
  335. Ve`20in`20a`20scratch
  336. Xfile.
  337. X
  338. XThe`20TPU`20code`20does`20the`20hard`20work`20of`20packaging`20the`20files,
  339. V`20wrapping`20lines,`20
  340. Xescaping`20characters,`20compressing`20if`20requested,`20`20and`20generating
  341. V`20multiple`20parts.
  342. X
  343. XAs`20distributed,`20the`20DCL`20and`20TPU`20code`20are`20bundled`20into`20a
  344. V`20single`20large`20procedure`20
  345. Xbut`20there`20is`20no`20reason`20why`20the`20TPU`20code`20could`20not`20be`20e
  346. Vxtracted`20and`20made`20into`20a`20
  347. Xsection`20file`20for`20enhanced`20speed.`20The`20modifications`20required`20ar
  348. Ve`20quite`20
  349. Xstraightforward.
  350. X
  351. X
  352. X4.1`20Long`20Lines
  353. X
  354. XBecause`20the`20code`20is`20based`20upon`20TPU,`20some`20limitations`20are`20i
  355. Vmposed`20upon
  356. XVMS_SHARE.`20In`20particular,`20early`20versions`20of`20TPU`20(pre-5.4)`20do
  357. V`20not`20allow`20records
  358. Xlonger`20than`20960`20bytes`20so`20it`20is`20impossible`20to`20package`20them.
  359. V`20Versions`20of`20TPU`20at
  360. XVMS`205.4`20and`20beyond`20allow`20records`20up`20to`2065535`20bytes,`20so`20t
  361. Vhe`20problem`20virtually
  362. Xdisappears.`20For`20compatibility,`20VMS_SHARE`20still`20uses`20the`20old`20re
  363. Vcord`20length
  364. Xunless`20requested`20by`20the`20user`20with`20the`20/LONGLINES`20qualifier.
  365. V`20Use`20of`20this
  366. Xrequires`20a`20minimum`20VMS`20of`205.4`20and`20the`20generated`20share`20file
  367. V`20will`20only`20unpack`20on
  368. X5.4`20or`20greater.
  369. X
  370. XTPU`20file`20handling`20is`20limited.`20Files`20can`20only`20be`20written`20wi
  371. Vth`20variable`20length
  372. Xrecords`20and`20CR`20carriage`20control.`20To`20allow`20other`20formats`20to
  373. V`20be`20packaged,
  374. XVMS_SHARE`20encodes`20selected`20file`20record`20attributes`20into`20the`20sha
  375. Vre`20file`20and`20uses
  376. Xthe`20CONVERT`20utility`20to`20restore`20those`20attributes`20during`20the`20u
  377. Vnpacking`20phase.`20In
  378. Xprinciple,`20this`20allows`20VMS_SHARE`20to`20package`20files`20of`20most`20ty
  379. Vpes,`20including
  380. X.EXE,`20.OBJ`20and`20.BCK`20files.`20In`20the`20case`20of`20.BCK`20files,`20th
  381. Vis`20is`20subject`20to`20the
  382. XBACKUP`20block`20length`20being`20compatible`20with`20the`20maximum`20record
  383. V`20length`20selected`20by
  384. Xthe`20user`20(960`20or`2065535`20as`20appropriate).`20Allowing`20BACKUP`20save
  385. Vsets`20to`20be`20packaged
  386. Xallows`20files`20of`20all`20other`20types`20to`20be`20packaged,`20provided`20t
  387. Vhey`20are`20first`20stored
  388. Xin`20a`20saveset.`20BACKUP`20requires`20a`20minimum`20block`20length`20of`2020
  389. V48`20bytes,`20so`20the`20long
  390. Xline`20support`20is`20a`20pre-requisite`20for`20this.
  391. X
  392. X
  393. X4.2`20Part`20Size`20Determination
  394. X
  395. XThe`20size`20of`20a`20part`20is`20conceptually`20simple.`20Find`20the`20size
  396. V`20of`20a`20buffer`20in`20bytes
  397. Xand`20divide`20by`20512`20to`20get`20the`20number`20of`20blocks`20it`20will
  398. V`20occupy.`20However,`20this`20is
  399. Xcomplicated`20by`20several`20things.
  400. X
  401. XFirst,`20TPU`20does`20not`20count`20line`20ends`20when`20returning`20the`20
  402. V`60LENGTH'`20of`20a`20buffer.
  403. XSecond,`20when`20a`20buffer`20is`20written`20to`20disk,`20there`20is`20a`202
  404. V`20byte`20overhead`20on`20each
  405. Xrecord`20giving`20the`20length`20of`20the`20record.`20Finally,`20within`20a
  406. V`20disk`20block,`20a`20record
  407. Xalways`20starts`20on`20a`20word`20boundary`20so`20that`20some`20records`20may
  408. V`20be`20padded`20with`20an
  409. Xadditional`20null`20byte.
  410. X
  411. XTo`20accurately`20determine`20how`20much`20disk`20space`20a`20buffer`20would
  412. V`20occupy`20would`20involve
  413. Xsome`20complex`20computations.`20However,`20since`20we`20know`20that`20each
  414. V`20record`20has`20either`20a
  415. X2`20byte`20or`20a`203`20byte`20overhead`20we`20can`20get`20a`20reasonably`20ac
  416. Vcurate`20approximation`20by
  417. Xtaking`20the`20LENGTH`20of`20the`20buffer`20and`20adding`203`20bytes`20for`20e
  418. Vach`20record.`20We`20use`203
  419. Xbytes`20to`20allow`20for`20the`20worst`20case`20and`20ensure`20that`20the`20pa
  420. Vrt,`20when`20written`20to
  421. Xdisk,`20never`20exceeds`20the`20specified`20part`20size.`20In`20practice,`20th
  422. Vis`20means`20that`20parts
  423. Xwill`20sometimes`20be`20less`20than`20the`20part`20size`20-`20the`20discrepanc
  424. Vy`20grows`20as`20the`20part
  425. Xsize`20is`20increased.
  426. X
  427. X
  428. X
  429. X5.`20USING`20VMS_SHARE
  430. X
  431. XAs`20distributed,`20VMS_SHARE`20is`20run`20as`20a`20command`20procedure`20(usu
  432. Vally`20via`20a`20
  433. Xsuitable`20symbol`20set`20up`20to`20point`20to`20it)`20thus:-
  434. X
  435. X`20`20`20`20`20$`20@VMS_SHARE`20filespecs`20sharefile
  436. X
  437. Xwhere`20'filespecs'`20is`20a`20comma`20separated`20list`20of`20wildcarded`20fi
  438. Vlenames`20to`20be`20
  439. Xpackaged,`20and`20'sharefile'`20is`20the`20name`20to`20be`20given`20to`20the
  440. V`20packaged`20files.`20Each
  441. Xpart`20of`20the`20sharefile`20will`20be`20suffixed`20by`20a`20part`20number
  442. V`20in`20the`20form:
  443. X
  444. X`20`20`20`20nnn-OF-mmm
  445. X
  446. Xwhere`20nnn`20is`20the`20part`20number`20and`20mmm`20is`20the`20total`20number
  447. V`20of`20parts.
  448. X
  449. XThere`20are`20some`20restrictions`20on`20the`20filenames`20that`20can`20be`20u
  450. Vsed:
  451. X
  452. X`20`20`20`20`20-`20Subdirectories`20may`20be`20used`20provided`20that`20they
  453. V`20are`20beneath`20the`20current
  454. X`20`20`20`20`20`20`20directory.`20It`20is`20not`20permitted`20to`20package`20f
  455. Viles`20in`20other`20directories.
  456. X
  457. X`20`20`20`20`20-`20The`20name`20of`20the`20sharefile`20must`20not`20appear`20i
  458. Vn`20the`20'filespecs'`20list
  459. X`20`20`20`20`20`20`20because`20the`20software`20cannot`20package`20a`20file
  460. V`20into`20itself.
  461. X
  462. X`20`20`20`20`20-`20At`20least`20one`20valid`20file`20must`20be`20given`20in
  463. V`20'filespecs'`20or`20no`20sharefile
  464. X`20`20`20`20`20`20`20will`20be`20produced.
  465. X
  466. X
  467. X6.`20UNPACKING`20A`20VMS_SHARE`20FILE
  468. X
  469. XIn`20general,`20a`20package`20delivered`20using`20the`20VMS_SHARE`20software
  470. V`20will`20arrive`20in`20a`20
  471. Xnumber`20of`20parts,`20from`201`20up`20to`20'n'.`20`20All`20parts`20should`20b
  472. Ve`20concatenated`20together`20
  473. Xin`20order.`20It`20is`20NOT`20necessary`20to`20remove`20superfluous`20mail`20h
  474. Veaders`20from`20any`20part`20
  475. Xother`20than`20part`201`20prior`20to`20concatenation.
  476. X
  477. XThe`20resulting`20combined`20file`20should`20then`20be`20executed`20as`20a`20c
  478. Vommand`20procedure`20in`20
  479. Xorder`20to`20unpack`20the`20resulting`20files.
  480. X
  481. X
  482. X
  483. X6.1`20Typical`20Unpack`20Sequence
  484. X
  485. XA`20typical`20sequence`20of`20events`20goes`20like`20this:
  486. X
  487. X`20-`20Set`20your`20default`20directory`20to`20a`20scratch`20directory`20which
  488. V`20is`20empty.
  489. X
  490. X`20-`20Go`20into`20MAIL`20and`20select`20the`20folder`20which`20contains`20the
  491. V`20parts`20of`20the
  492. X`20`20`20package.
  493. X
  494. X`20-`20Extract`20part`201`20into`20a`20file,`20using`20the`20command`20'EXTRAC
  495. VT/NOHEADER`20`20`20`20`20`20`20`20file'
  496. X`20`20`20Extract`20part`202`20into`20a`20file,`20using`20the`20command`20'EXTR
  497. VACT/NOHEADER/APPEND`20file'
  498. X`20`20`20...
  499. X`20`20`20...
  500. X`20`20`20Extract`20part`20n`20into`20a`20file,`20using`20the`20command`20'EXTR
  501. VACT/NOHEADER/APPEND`20file'
  502. X
  503. X`20-`20Read`20warning`20below`20BEFORE`20proceeding!!!
  504. X
  505. X`20-`20Execute`20as`20a`20command`20procedure,`20using`20the`20following`20com
  506. Vmand:
  507. X`20`20`20`20`20`20$`20@file
  508. X
  509. X
  510. X
  511. X6.2`20Warning
  512. X
  513. XIt`20is`20strongly`20suggested`20that`20the`20generated`20command`20procedure
  514. V`20('file.SHAR'`20in`20
  515. Xthe`20above`20example)`20be`20carefully`20checked`20before`20execution.`20It
  516. V`20is`20possible`20that`20
  517. Xunscrupulous`20persons`20might`20tamper`20with`20the`20source`20before`20sendi
  518. Vng`20it`20and`20
  519. Xintroduce`20a`20virus`20into`20the`20VMS_SHARe'd`20code.`20There`20is`20nothin
  520. Vg`20that`20VMS_SHARE`20
  521. Xcan`20do`20about`20this`20automatically.`20However,`20since`20all`20the`20file
  522. Vs`20should`20be`20human`20
  523. Xreadable`20it`20should`20be`20possible`20to`20detect`20fraudulent`20code`20by
  524. V`20manual`20checking.
  525. XCertainly`20the`20lines`20starting`20with`20'$'`20symbols,`20and`20the`20TPU
  526. V`20code`20near`20the
  527. Xstart,`20should`20be`20checked`20carefully`20as`20these`20are`20most`20likely
  528. V`20to`20be`20troublesome.
  529. X
  530. X
  531. X
  532. X
  533. X7.`20DECLARATION`20AND`20DISCLAIMER
  534. X
  535. XThis`20software`20is`20in`20the`20public`20domain`20and`20may`20be`20freely
  536. V`20distributed`20without`20
  537. Xcharge`20as`20required.`20However,`20all`20copyright`20notices`20and`20referen
  538. Vces`20to`20the
  539. Xauthor`20in`20the`20source`20must`20be`20left`20intact.`20
  540. X
  541. XThird`20party`20modifications`20may`20be`20made`20to`20the`20source`20but`20an
  542. Vy`20errors`20arising`20
  543. Xfrom`20their`20use`20are`20entirely`20the`20responsibility`20of`20the`20modifi
  544. Ver.
  545. X
  546. XThe`20author`20accepts`20no`20responsibility`20for`20the`20suitability`20of
  547. V`20this`20software`20for
  548. Xany`20specific`20purpose.`20Any`20errors`20arising`20from`20its`20use`20are
  549. V`20entirely`20the
  550. Xresponsibility`20of`20the`20user.`20
  551. X
  552. X
  553. XAndy`20Harper
  554. XKings`20College`20London`20UK
  555. $ call unpack VMS_SHARE.TECHNICAL_INFO;22 1029234412 ""
  556. $!
  557. $ create 'f'
  558. X`20`20`20`20`09`09`20`20`20`20`20`20`20`20`20V`20M`20S`20_`20S`20H`20A`20R`20E
  559. V
  560. X
  561. X`20`20`20`20`09`09`20A`20guide`20to`20use`20for`20the`20general`20user
  562. X
  563. X`20`20`20`20`09`09`09`20`20`20`20`20`20`20`20By
  564. X
  565. X`20`20`20`20`09`09`09`20`20`20`20Andy`20Harper
  566. X`20`20`20`20`09`09`09Kings`20College`20London
  567. X
  568. X__________________________________________________________________________
  569. X
  570. X
  571. X
  572. X`09`09`09`20`20A`20B`20S`20T`20R`20A`20C`20T
  573. X
  574. X
  575. X`20`20VMS_SHARE`20is`20designed`20to`20package`20a`20series`20of`20files`20int
  576. Vo`20a`20multi-part
  577. X`20`20share`20file`20suitable`20for`20mailing`20across`20a`20network.`20Files
  578. V`20are`20encoded`20to
  579. X`20`20be`20resistant`20to`20the`20corruption`20that`20many`20mailers`20and`20n
  580. Vetworks
  581. X`20`20generate.`20`20When`20all`20parts`20of`20the`20share`20file`20are`20comb
  582. Vined`20and`20run`20as`20a
  583. X`20`20command`20procedure,`20the`20packaged`20directory`20tree`20is`20recreate
  584. Vd`20in`20its
  585. X`20`20original`20format.
  586. X
  587. X
  588. X
  589. X
  590. X
  591. X
  592. X
  593. X
  594. X
  595. X
  596. X
  597. X
  598. X
  599. X
  600. X
  601. X
  602. X
  603. X
  604. X`20`20This`20software`20is`20copyright`20(C)`20of`20the`20author`20and`20comes
  605. V`20with`20no
  606. X`20`20warranties`20either`20expressed`20or`20implied.`20`20It`20may`20be`20dis
  607. Vtributed`20free`20of
  608. X`20`20charge`20to`20anyone`20who`20may`20require`20a`20copy,`20provided`20that
  609. V`20all`20copyright
  610. X`20`20notices`20remain`20intact.`20Any`20problems`20arising`20from`20its`20use
  611. V`20are`20entirely
  612. X`20`20the`20responsibility`20of`20the`20user.
  613. X
  614. X
  615. X`20`20Andy`20Harper
  616. X`20`20Systems`20Manager
  617. X`20`20Computing`20Centre
  618. X`20`20Kings`20College`20London
  619. X`20`20The`20Strand
  620. X`20`20London`20WC2R`202LS
  621. X`20`20England
  622. X
  623. X`20`20Tel:`20`20+44`20(0)`2071`20873`202347
  624. X`20`20E-mail:`20`20`20UDAA055`20@`20UK.AC.KCL.CC.OAK`20(JANET)
  625. X`20`20`20`20`20`20`20`20`20`20`20`20UDAA055%OAK.CC.KCL.AC.UK`20@`20NSFNET-RELA
  626. VY.AC.UK`20(INTERNET)
  627. X
  628. X_________________________________________________________________________
  629. X
  630. XVersion`208.2`09`09`09`09`09`20`20`20`20`20`09`09Jan`201993
  631. XRevision`205
  632. X`0C
  633. X
  634. X
  635. X`20`20`20`20`09`09`09`20`20C`20O`20N`20T`20E`20N`20T`20S
  636. X
  637. X
  638. X`20`20`20`20`09`091.`09INTRODUCTION
  639. X
  640. X`20`20`20`20`09`092.`09OVERVIEW
  641. X`09`09`092.1`20`20The`20VMS_SHARE`20Utility
  642. X`09`09`092.2`20`20The`20PAKMAIL`20Utility
  643. X
  644. X`09`093.`09USING`20VMS_SHARE
  645. X`09`09`093.1`20`20Simple`20Use
  646. X`20`20`20`20`09`09`09`20`20`20`20`203.1.1`20`20Input`20File`20specification
  647. X`20`20`20`20`09`09`09`20`20`20`20`203.1.2`20`20Output`20File`20specification
  648. X`20`20`20`20`09`09`09`20`20`20`20`203.1.3`20`20Examples
  649. X`09`09`093.2`20`20Subdirectory`20Restrictions
  650. X`09`09`093.3`20`20File`20Type`20Restrictions
  651. X`09`09`093.4`20`20Record`20Length`20Restrictions
  652. X`09`09`093.5`20`20Working`20Set`20and`20Virtual`20Memory`20Requirements
  653. X`09`09`093.6`20`20Checksum`20Validation
  654. X
  655. X`09`094.`09ADVANCED`20USE`20OF`20VMS_SHARE
  656. X`09`09`094.1`20`20Selectable`20Options
  657. X`09`09`094.2`20`20Default`20Settings
  658. X`09`09`094.3`20`20Customization`20Through`20Logical`20Names
  659. X`09`09`09`20`20`20`20`204.3.1`20SHARE_REAL_NAME`20--`20Owner`20Identification
  660. X`09`09`09`20`20`20`20`204.3.2`20SHARE_TEMP`20--`20Temporary`20Files
  661. X`09`09`09`20`20`20`20`204.3.3`20SHARE_UNPACK_TEMP`20--`20Temporary`20Files
  662. X`09`09`09`20`20`20`20`204.3.4`20SHARE_VERIFY`20--`20Procedure`20Verification
  663. X`09`09`094.4`20`20Customization`20Via`20Command-Line`20Qualifiers
  664. X
  665. X`20`20`20`20`09`095.`09USING`20PAKMAIL
  666. X`20`20`20`20`09`09`095.1`20`20User`20specification
  667. X`20`20`20`20`09`09`095.2`20`20File`20specification
  668. X`20`20`20`20`09`09`095.3`20`20Part`20specification
  669. X`09`09`095.4`20`20Partlist`20specification
  670. X`20`20`20`20`09`09`095.5`20`20Comment`20specification
  671. X
  672. X`20`20`20`20`09`096.`09HOW`20TO`20UNPACK`20A`20SHARE`20FILE
  673. X`20`20`20`20`09`09`096.1`20`20Command`20file
  674. X`20`20`20`20`09`09`096.2`20`20Dealing`20with`20multiple`20part`20share`20files
  675. V
  676. X
  677. X
  678. X`20`20`20`20`09`097.`09REFERENCES:
  679. X
  680. X`20`20`20`20`09`09`09`5B1`5D`20VMS_SHARE`20Technical`20Information`20supplemen
  681. Vt
  682. X`20`20`20`20`09`09`09`5B2`5D`20VMS_SHARE`20Release`20notes
  683. X`20`20`20`20`09`09`09`5B3`5D`20On-line`20HELP
  684. X
  685. X`09`09QUALIFIER`20REFERENCE`20SECTION
  686. X`09`09`09/BACKUP
  687. X`09`09`09/BEFORE
  688. X`09`09`09/COMPRESS
  689. X`09`09`09/CONFIRM
  690. X`09`09`09/CREATED
  691. X`09`09`09/DEBUG
  692. X`09`09`09/DIRECTORY
  693. X`09`09`09/EXCLUDE
  694. X`09`09`09/EXPIRED
  695. X`09`09`09/LOG
  696. X`09`09`09/LONGLINES
  697. X`09`09`09/MODIFIED
  698. X`09`09`09/PACKAGE_INDEX
  699. X`09`09`09/PART_SIZE
  700. X`09`09`09/SINCE
  701. X`09`09`09/VERSION
  702. X
  703. X`09`09APPENDIX
  704. X`09`09`09A:`20Redundant`20Features
  705. X`0C
  706. X1.`09INTRODUCTION
  707. X
  708. XThe`20use`20of`20global`20networks`20and`20electronic`20mail`20has`20made`20it
  709. V`20possible`20to
  710. Xdistribute`20software`20packages`20quickly,`20cheaply`20and`20easily`20in`20a
  711. V`20relatively
  712. Xreliable`20way.`20Unfortunately,`20the`20reliability`20cannot`20always`20be
  713. V`20guaranteed`20since
  714. Xmany`20mail`20systems`20can`20introduce`20corruption`20into`20the`20transmitte
  715. Vd`20messages.
  716. X
  717. XSuch`20corruption`20can`20usually`20be`20avoided`20if`20the`20message`20being
  718. V`20sent`20conforms`20to
  719. Xcertain`20restrictions.`20The`20specific`20restrictions`20are`20dictated`20by
  720. V`20the`20common
  721. Xlimitations`20of`20mail`20systems.`20For`20example,`20some`20mail`20systems
  722. V`20will`20truncate`20long
  723. Xlines,`20some`20will`20modify`20character`20sets.`20The`20VMS_SHARE`20utility
  724. V`20is`20designed`20to
  725. Xovercome`20these`20limitations.`20It`20has`20knowledge`20of`20a`20wide`20range
  726. V`20of`20these
  727. Xlimitations`20and`20will`20encode`20a`20series`20of`20files`20into`20a`20forma
  728. Vt`20that`20avoids`20them.
  729. XAs`20a`20result,`20messages`20encoded`20in`20this`20way`20will`20pass`20throug
  730. Vh`20almost`20all`20mail
  731. Xsystems`20uncorrupted,`20allowing`20the`20original`20information`20to`20be`20r
  732. Vecovered`20at`20the
  733. Xreceiving`20end.`20So,`20provided`20there`20is`20an`20electronic`20mail`20link
  734. V`20between`20two`20users,
  735. Xany`20type`20of`20software`20package`20may`20be`20encoded`20and`20sent`20relia
  736. Vbly.
  737. X
  738. XThe`20release`20notes`20for`20the`20package`20describe`20new`20features`20and
  739. V`20general`20changes`20
  740. Xfrom`20previous`20releases`20`5BReference`202`5D.
  741. X
  742. X
  743. X
  744. X
  745. X2.`09OVERVIEW
  746. X
  747. XThe`20VMS_SHARE`20package`20comes`20with`20two`20basic`20components`20-`20the
  748. V`20VMS_SHARE`20utility
  749. Xand`20the`20PAKMAIL`20utility.
  750. X
  751. X
  752. X2.1`20The`20VMS_SHARE`20Utility
  753. X
  754. XFrom`20a`20user`20specified`20set`20of`20input`20files,`20the`20VMS_SHARE`20ut
  755. Vility`20packs`20and
  756. Xencodes`20the`20information`20into`20a`20single`20file,`20known`20as`20an`20ar
  757. Vchive`20or`20'share'
  758. Xfile.`20It`20then`20splits`20up`20the`20file`20into`20pieces`20sufficiently
  759. V`20small`20to`20be`20mailed
  760. Xindividually`20through`20an`20electronic`20mail`20system,`20without`20truncati
  761. Von,`20to`20a
  762. Xrecipient.`20It`20is`20the`20recipient's`20responsibility`20to`20recombine`20t
  763. Vhe`20pieces`20into`20a
  764. Xsingle`20file`20which,`20when`20executed`20as`20a`20VMS`20command`20procedure,
  765. V`20creates`20an`20exact
  766. Xcopy`20of`20the`20original`20input`20files.`20Checksums`20are`20provided`20to
  767. V`20ensure`20that`20if`20the
  768. Xinformation`20is`20corrupted`20by`20some`20unforeseen`20mechanism`20then`20it
  769. V`20is`20at`20least
  770. Xdetected.`20
  771. X
  772. XVMS_SHARE`20encodes`20the`20information`20to`20cope`20with`20different`20types
  773. V`20of`20potential`20
  774. Xcorruption,`20such`20as`20line`20wrapping/truncation,`20character`20code`20con
  775. Vversions,`20
  776. Xtrailing`20blank`20removal`20etc.`20`20Full`20details`20can`20be`20found`20in
  777. V`20the`20technical`20guide`20
  778. X`5BReference`201`5D.
  779. X
  780. X
  781. X2.2`20The`20PAKMAIL`20Utility
  782. X
  783. XBecause`20the`20VMS_SHARE`20utility`20may`20create`20several`20parts`20for`20m
  784. Vailing,`20it`20can`20be
  785. Xdifficult`20to`20issue`20the`20necessary`20commands`20to`20mail`20each`20of
  786. V`20them`20separately.`20The
  787. XPAKMAIL`20utility`20is`20designed`20to`20ease`20this`20difficulty`20by`20gathe
  788. Vring`20all`20of`20the
  789. Xgenerated`20pieces`20of`20the`20share`20file`20and`20mailing`20them`20to`20one
  790. V`20or`20more`20recipients
  791. Xacross`20the`20electronic`20mail`20network.`20VMS`20MAIL`20is`20used`20as`20th
  792. Ve`20mailer.
  793. X`0C
  794. X3.`09USING`20VMS_SHARE
  795. X
  796. XVMS_SHARE`20is`20a`20command`20procedure`20but`20is`20usually`20provided`20to
  797. V`20users`20via`20a
  798. X`60Foreign'`20command`20symbol.`20The`20mechanism`20for`20defining`20this`20sy
  799. Vmbol`20is
  800. Xsite-dependent`20and`20the`20appropriate`20system`20management`20should`20be
  801. V`20consulted`20for
  802. Xdetails.
  803. X
  804. X
  805. X3.1`20Simple`20use
  806. X
  807. XThe`20simplest`20use`20of`20VMS_SHARE`20is`20as`20follows:
  808. X
  809. X`20`20`20`20`20$`20VMS_SHARE`20<input>`20<output>
  810. X
  811. Xwhere:
  812. X
  813. X`20`20<input>`20`20is`20an`20input`20file`20specification`20(see`20below).`20I
  814. Vf`20a`20parameter`20is`20not
  815. X`20`20`20`20`20`20`20`20`20`20`20supplied,`20a`20prompt`20is`20issued.
  816. X
  817. X`20`20<output>`20is`20the`20name`20to`20be`20given`20to`20the`20output`20'shar
  818. Ve'`20file`20(see`20below).
  819. X`20`20`20`20`20`20`20`20`20`20`20If`20a`20parameter`20is`20not`20supplied,`20a
  820. V`20prompt`20is`20issued.`20
  821. X
  822. X
  823. X
  824. X3.1.1`20Input`20File`20specification
  825. X
  826. XThe`20input`20file`20specification`20is`20a`20comma`20separated`20list`20of
  827. V`20standard`20VMS`20
  828. Xfilenames,`20which`20may`20include`20wildcards`20anywhere.`20For`20example:
  829. X
  830. X`20`20`20`20`20TEST
  831. X`20`20`20`20`09The`20specific`20file`20`20`20"TEST."
  832. X
  833. X`20`20`20`20`20*.FOR
  834. X`20`20`20`20`20`20`20`20All`20files`20ending`20in`20".FOR"
  835. X
  836. X`20`20`20`20`20`5B...`5D*.*;*
  837. X`20`20`20`20`20`20`20`20All`20files`20in`20and`20below`20the`20current`20direc
  838. Vtory.
  839. X
  840. X`20`20`20`20`20*.FOR,*.MAR
  841. X`20`20`20`20`20`20`20`20All`20files`20ending`20in`20".FOR",`20then`20all`20fil
  842. Ves`20ending`20in`20".MAR"
  843. X
  844. X
  845. XAny`20subdirectories`20will`20be`20recreated`20when`20the`20share`20file`20is
  846. V`20unpacked.`20For`20this`20
  847. Xreason`20and`20the`20fact`20that`20no`20useful`20information`20is`20contained
  848. V`20within`20them,`20
  849. Xdirectory`20files`20(those`20ending`20in`20.DIR)`20are`20always`20ignored.
  850. X
  851. X
  852. X3.1.2`20Output`20File`20specification
  853. X
  854. XThe`20output`20file`20name`20is`20used`20as`20a`20template`20to`20construct
  855. V`20the`20individual`20parts`20
  856. Xof`20the`20share`20file.`20`20The`20file`20type`20part`20of`20the`20name`20wil
  857. Vl`20be`20suffixed`20by`20a`20'part
  858. Xnumber`20identification'`20of`20the`20form:
  859. X
  860. X`20`20`20`20nnn-OF-mmm
  861. X
  862. Xwhere`20nnn`20is`20the`20part`20number,`20starting`20at`201,`20and`20mmm`20is
  863. V`20the`20total`20number`20of
  864. Xparts`20generated.
  865. X
  866. XFor`20example:
  867. X
  868. XAn`20output`20filename`20of:
  869. X`20`20`20`20PACKAGE.
  870. X
  871. Xmight`20generate`20files`20called:
  872. X`20`20`20`20PACKAGE.001-OF-100
  873. X`20`20`20`20PACKAGE.002-OF-100
  874. X`20`20`20`20`20...
  875. X`20`20`20`20PACKAGE.100-OF-100
  876. X
  877. XAs`20many`20parts`20as`20necessary`20to`20contain`20the`20whole`20package`20ar
  878. Ve`20generated.
  879. X
  880. X
  881. X
  882. X3.1.3`20Examples
  883. X
  884. XTypical`20examples`20of`20the`20use`20of`20VMS_SHARE`20would`20be:
  885. X
  886. X`20`20`20`20`20$`20VMS_SHARE`20`5B...`5D*.*;*`20ARCHIVE
  887. X`20`20`20`20`20`20`20`20`20Archive`20the`20whole`20of`20the`20directory`20tree
  888. V,`20starting`20from`20the`20current
  889. X`20`20`20`20`20`20`20`20`20directory`20into`20a`20share`20file`20with`20a`20te
  890. Vmplate`20name`20of`20"ARCHIVE.SET".`20
  891. X`20`20`20`20`20`20`20`20`20This`20would`20generate`20files`20called`20"ARCHIVE
  892. V.1-OF-9",`20"ARCHIVE.2-OF-9"
  893. X`20`20`20`20`20`20`20`20`20etc.`20(assuming`20a`20total`20of`209`20parts).
  894. X
  895. X
  896. X`20`20`20`20`20$`20VMS_SHARE`20`5B.DOC`5D*.*,`5B.EXE`5D*.*,`5B.SRC`5D*.*`20
  897. V`20VI
  898. X`20`20`20`20`20`20`20`20`20Archive`20all`20files`20in`20the`20three`20director
  899. Vies`20`5B.DOC`5D,`20`5B.EXE`5D`20and`20`5B.SRC`5D
  900. X`20`20`20`20`20`20`20`20`20and`20generate`20share`20files`20with`20a`20templat
  901. Ve`20name`20of`20"VI."`20I.E.
  902. X`20`20`20`20`20`20`20`20`20"VI.01-OF-17",`20"VI.02-OF-17"`20etc.`20(assuming
  903. V`20a`20total`20of`2017`20parts).
  904. X
  905. XWhen`20unpacked,`20the`20tree`20structure`20of`20the`20original`20files`20will
  906. V`20be`20preserved.
  907. X
  908. X
  909. X3.2`20Subdirectory`20restrictions
  910. X
  911. XIn`20order`20to`20ensure`20that`20the`20recipient`20receives`20the`20files`20i
  912. Vn`20a`20known`20set`20of`20
  913. Xdirectories,`20only`20files`20within`20or`20below`20the`20current`20directory
  914. V`20may`20be`20used`20as`20
  915. Xinput.`20`20The`20tree`20structure`20is`20preserved,`20from`20the`20current
  916. V`20directory`20downwards,`20
  917. Xand`20will`20be`20recreated`20below`20the`20recipient's`20current`20directory
  918. V`20at`20unpacking`20
  919. Xtime.
  920. X
  921. XFor`20example,`20if`20we`20archived`20the`20files`20"`5B.SRC...`5D*.*;*"`20the
  922. V`20recipient`20would`20
  923. Xfind`20an`20exact`20copy`20of`20the`20`5B.SRC...`5D`20tree`20recreated`20below
  924. V`20his`20current`20
  925. Xdirectory.
  926. X
  927. XNote:`20advanced`20users`20can`20override`20this`20behaviour`20with`20the`20/N
  928. VODIRECTORY
  929. Xqualifier.`20This`20is`20described`20later.
  930. X
  931. X
  932. X3.3`20File`20type`20Restrictions
  933. X
  934. XVMS_SHARE`20supports`20only`20SEQUENTIAL`20files`20(Not`20INDEXED`20or`20RELAT
  935. VIVE).`20Within`20the
  936. Xsequential`20file`20type,`20all`20record`20formats`20and`20carriage`20control
  937. V`20options`20on`20the
  938. Xfile`20are`20supported`20and`20restored.`20However,`20other`20attributes`20of
  939. V`20the`20file`20are`20not
  940. Xrestored`20`20-`20the`20normal`20file`20defaults`20are`20used.
  941. X
  942. XSince`20fixed`20length`20records`20are`20supported,`20it`20is`20possible`20to
  943. V`20package`20both`20.EXE
  944. Xand`20.OBJ`20files`20without`20the`20need`20for`20external`20encoding.`20The
  945. V`20binary`20data`20normally
  946. Xfound`20in`20such`20files`20is`20automatically`20handled`20and`20encoded`20app
  947. Vropriately.
  948. X
  949. XNote:`20advanced`20users`20can`20use`20the`20/LONGLINES`20qualifier`20to`20all
  950. Vow`20BACKUP`20savesets
  951. Xto`20be`20packaged.`20Any`20type`20of`20file`20may`20be`20shipped`20if`20it
  952. V`20is`20first`20packaged`20inside
  953. Xa`20BACKUP`20saveset.
  954. X
  955. X
  956. X
  957. X3.4`20Record`20Length`20Restrictions
  958. X
  959. XThe`20maximum`20record`20length`20supported`20is`20determined`20by`20the`20und
  960. Verlying`20TPU
  961. Xlanguage`20(in`20which`20a`20large`20portion`20of`20VMS_SHARE`20is`20implement
  962. Ved).`20Prior`20to`20VMS
  963. X5.4`20only`20short`20records`20(less`20than`20960`20bytes)`20were`20permitted.
  964. V`20Later`20versions`20of
  965. XVMS`20recognize`20records`20up`20to`2065535`20bytes.`20For`20compatibility,
  966. V`20VMS_SHARE`20restricts
  967. Xthe`20maximum`20record`20length`20to`20the`20shorter`20length.
  968. X
  969. XNote:`20Advanced`20users`20can`20select`20the`20longer`20record`20length`20usi
  970. Vng`20the`20/LONGLINES
  971. Xoption`20but`20this`20is`20available`20only`20on`20VMS`205.4`20and`20above.
  972. V`20This`20is`20necessary`20only
  973. Xfor`20files`20which`20genuinely`20contain`20records`20longer`20than`20960`20by
  974. Vtes.
  975. X
  976. X
  977. X3.5`20Working`20Set`20and`20Virtual`20Memory`20Requirements
  978. X
  979. XVMS_SHARE`20packages`20files`20by`20first`20reading`20them,`20one`20at`20a`20t
  980. Vime,`20completely`20into
  981. Xmemory.`20Therefore,`20large`20files`20can`20demand`20large`20virtual`20memory
  982. V`20resources`20and
  983. Xusers`20should`20have`20sufficient`20page`20file`20quota`20(PGFLQUO)`20allocat
  984. Ved`20to`20their
  985. Xprocess`20to`20ensure`20that`20the`20files`20will`20fit.`20Later`20versions
  986. V`20of`20TPU`20include
  987. Xautomatic`20use`20of`20a`20behind-the-scenes`20workfile`20to`20hold`20portions
  988. V`20of`20the`20current
  989. Xfile`20and`20the`20need`20for`20larger`20page`20file`20quotas`20disappears`20(
  990. Vto`20be`20replaced`20by`20a
  991. Xneed`20for`20additional`20disk`20quota`20if`20this`20workfile`20is`20on`20a
  992. V`20quota'd`20disk).
  993. X
  994. XBecause`20much`20of`20the`20work`20is`20in`20memory,`20VMS_SHARE`20works`20bes
  995. Vt`20if`20a`20large`20working
  996. Xset`20is`20allocated`20to`20the`20process.`20The`20actual`20size`20depends`20o
  997. Vn`20the`20files`20being
  998. Xpackaged,`20but`20the`20larger`20the`20better.`20Too`20small`20a`20working`20s
  999. Vet`20will`20result`20in`20slow
  1000. Xexecution`20speeds`20caused`20by`20excessive`20paging.
  1001. X
  1002. X
  1003. X
  1004. X3.6`20Checksum`20Validation
  1005. X
  1006. XAlthough`20files`20are`20encoded`20to`20resist`20many`20forms`20of`20corruptio
  1007. Vn,`20there`20may`20be
  1008. Xsome`20mechanisms`20which`20have`20not`20been`20anticipated.`20`20To`20allow
  1009. V`20the`20recipient`20to
  1010. Xdetect`20this,`20a`20checksum`20validation`20scheme`20is`20applied`20to`20each
  1011. V`20file`20unpacked.`20Any
  1012. Xmismatch`20at`20the`20unpacking`20stage`20results`20in`20a`20warning`20message
  1013. V.`20It`20is`20then`20up`20to
  1014. Xthe`20recipient`20to`20locate`20the`20corruption`20and`20fix`20it`20manually
  1015. V`20if`20possible.
  1016. X
  1017. XDue`20to`20limitations`20of`20VMS,`20checksum`20validation`20cannot`20be`20app
  1018. Vlied`20to`20files`20with
  1019. Xcertain`20types`20of`20record`20structure.`20In`20this`20instance,`20a`20warni
  1020. Vng`20is`20issued`20at
  1021. Xboth`20the`20packing`20and`20unpacking`20stages`20noting`20that`20checksum`20v
  1022. Validation`20for`20the
  1023. Xfile`20will`20not`20be`20done.
  1024. X`0C
  1025. X4.`20ADVANCED`20USE`20OF`20VMS_SHARE
  1026. X
  1027. XThe`20simple`20use`20described`20earlier`20makes`20use`20of`20default`20values
  1028. V`20for`20each`20of`20the
  1029. Xuser`20selectable`20options`20built`20in`20to`20VMS_SHARE.`20Each`20option`20m
  1030. Vay`20be`20set
  1031. Xdifferently,`20to`20select`20a`20different`20way`20of`20working.`20Options`20m
  1032. Vay`20be`20set`20either`20by
  1033. Xa`20logical`20name,`20which`20overrides`20the`20default`20value`20normally`20u
  1034. Vsed,`20or`20by`20means`20of
  1035. Xa`20qualifier`20on`20the`20command`20line,`20which`20specifically`20selects
  1036. V`20the`20option`20for`20that
  1037. Xexecution,`20overriding`20both`20the`20default`20value`20and`20the`20setting
  1038. V`20of`20any`20logical
  1039. Xname.
  1040. X
  1041. XTypically,`20users`20will`20define`20logical`20names`20with`20their`20preferre
  1042. Vd`20default`20values
  1043. Xand`20override`20them`20occasionally`20with`20qualifiers.
  1044. X
  1045. X
  1046. X4.1`20Selectable`20Options
  1047. X
  1048. XHere`20is`20a`20summary`20of`20the`20available`20options,`20together`20with
  1049. V`20the`20qualifier`20and/or
  1050. Xlogical`20name`20used`20to`20modify`20the`20default`20value.`20A`20full`20desc
  1051. Vription`20of`20each
  1052. Xappears`20later.
  1053. X
  1054. X
  1055. XFile`20Selection:
  1056. X
  1057. X`20`20`20`20`20o`20`20Exclusion`20of`20files`20by`20directory,`20name,`20type
  1058. V`20or`20version`20number;`20or`20any
  1059. X`20`20`20`20`20`20`20`20combination`20of`20each.`20Wildcards`20are`20not`20per
  1060. Vmitted.
  1061. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20/EXCLUDE=list
  1062. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20`20SHARE_EXCLUDE
  1063. X
  1064. X`20`20`20`20`20o`20`20Selection`20based`20on`20any`20of`20the`20dates`20associ
  1065. Vated`20with`20a`20file`20(created,
  1066. X`20`20`20`20`20`20`20`20expiration,`20backup`20or`20last`20modified).
  1067. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20/SINCE=date,`20/BEFORE=dat
  1068. Ve,`20/CREATED,`20/MODIFIED,`20/BACKUP
  1069. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/EXPIR
  1070. VED
  1071. X`20`20`20`20`20`20`20`20`20`20`20`20Logicals:`20`20`20-`20NONE`20-
  1072. X
  1073. X`20`20`20`20`20o`20Interactive`20Confirmation`20of`20each`20file`20selected.
  1074. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20/CONFIRM
  1075. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20SHARE_CONFIRM
  1076. X
  1077. X
  1078. XFileName`20Preservation:
  1079. X
  1080. X`20`20`20`20`20o`20Preservation`20of`20sub-directory`20names`20across`20packag
  1081. Ving
  1082. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20/DIRECTORY
  1083. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20`20SHARE_DIRECTORY
  1084. X
  1085. X`20`20`20`20`20o`20Preservation`20of`20version`20numbers`20across`20packaging
  1086. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20/VERSION
  1087. X`20`20`20`20`20`20`20`20`20`20`20`20Logical`20`20`20`20`20SHARE_VERSION
  1088. X
  1089. X
  1090. XInformational:
  1091. X
  1092. X`20`20`20`20`20o`20`20Logging`20of`20various`20key`20stages`20in`20execution
  1093. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20/LOG=n
  1094. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20`20SHARE_LOG
  1095. X
  1096. X`20`20`20`20`20o`20`20Selection`20of`20Debugging`20messages`20for`20VMS_SHARE
  1097. V`20development`20(must`20be
  1098. X`20`20`20`20`20`20`20`20privileged)
  1099. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20/DEBUG=n
  1100. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20`20SHARE_DEBUG
  1101. X
  1102. X`20`20`20`20`20o`20DCL`20Verification`20of`20the`20procedure`20as`20it`20execu
  1103. Vtes`20(Must`20have`20read`20access)
  1104. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20-`20NONE`20-
  1105. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20`20SHARE_VERIFY
  1106. X
  1107. X
  1108. XMiscellaneous:
  1109. X
  1110. X`20`20`20`20`20o`20Optional`20compression`20of`20the`20data`20by`20one`20of
  1111. V`20two`20different`20mechanisms-
  1112. X`20`20`20`20`20`20`20Run-length`20encoding`20or`20lempel-ziv`20encoding
  1113. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20/COMPRESS=n
  1114. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20`20SHARE_COMPRESS
  1115. X
  1116. X`20`20`20`20`20o`20Selection`20of`20the`20size`20of`20each`20part`20generated
  1117. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20/PART_SIZE=n
  1118. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20`20SHARE_PART_SIZE
  1119. X
  1120. X`20`20`20`20`20o`20Selection`20of`20support`20for`20long`20lines`20(only`20ava
  1121. Vilable`20on`20VMS`205.4`20and`20up)
  1122. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20/LONGLINES
  1123. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20`20SHARE_LONGLINES
  1124. X
  1125. X`20`20`20`20`20o`20Select`20the`20automatic`20creation`20of`20a`20package`20in
  1126. Vdex`20file`20for`20use`20by
  1127. X`20`20`20`20`20`20`20file`20servers`20which`20are`20going`20to`20make`20the
  1128. V`20package`20available
  1129. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20/PACKAGE_INDEX=suffix
  1130. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20`20SHARE_PACKAGE_INDEX
  1131. X
  1132. X`20`20`20`20`20o`20Inclusion`20of`20user`20identification`20into`20share`20fil
  1133. Ve.
  1134. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20-`20NONE`20-
  1135. X`20`20`20`20`20`20`20`20`20`20`20`20Logical:`20`20`20`20SHARE_REAL_NAME
  1136. X
  1137. X`20`20`20`20`20o`20Definition`20of`20scratch`20files
  1138. X`20`20`20`20`20`20`20`20`20`20`20`20Qualifier:`20`20-`20NONE`20-
  1139. X`20`20`20`20`20`20`20`20`20`20`20`20Logicals:`20`20`20SHARE_TEMP,`20SHARE_UNPA
  1140. VCK_TEMP
  1141. X`20`20`20`20`20`20`20
  1142. X
  1143. X4.2`20Default`20Settings
  1144. X
  1145. XEach`20option`20has`20a`20default`20value`20which`20will`20be`20used`20if`20no
  1146. V`20specific`20value`20is
  1147. Xselected`20by`20the`20user's`20customization.`20In`20general,`20the`20defaults
  1148. V`20are`20suitable`20for
  1149. Xmost`20applications`20and`20it`20will`20work`20satisfactorily`20with`20all`20o
  1150. Vf`20them.
  1151. X
  1152. X
  1153. X
  1154. X4.3`20Customization`20Through`20Logical`20Names
  1155. X
  1156. XMany`20of`20the`20default`20settings`20can`20be`20changed`20by`20defining`20a
  1157. V`20logical`20name`20with`20the
  1158. Xselected`20value.`20While`20this`20logical`20name`20is`20defined,`20all`20exec
  1159. Vutions`20of`20the
  1160. XVMS_SHARE`20utility`20will`20use`20the`20defined`20value`20rather`20than`20the
  1161. V`20default.
  1162. X
  1163. XFor`20example:
  1164. X
  1165. XTo`20override`20the`20default`20part`20size`20of`2030`20blocks:
  1166. X
  1167. X`20`20`20$`20define`20SHARE_PART_SIZE`2050
  1168. X
  1169. XSubsequent`20executions`20of`20VMS_SHARE`20will`20now`20use`20a`20part`20size
  1170. V`20of`2050`20blocks`20rather
  1171. Xthan`20the`20default`20of`2030`20blocks.
  1172. X
  1173. XThere`20are`20some`20options`20may`20be`20set`20only`20via`20logical`20names.
  1174. V`20These`20are`20described
  1175. Xbelow.
  1176. X
  1177. X
  1178. X4.3.1`20SHARE_REAL_NAME`20`20--`20`20Owner`20identification
  1179. X
  1180. XThe`20sharefile`20is`20created`20with`20a`20header`20that`20identifies`20the
  1181. V`20version`20of`20VMS_SHARE
  1182. Xused,`20the`20date`20of`20creation`20and`20the`20person`20who`20created`20it
  1183. V`20(from`20the`20VMS
  1184. Xusername).`20An`20additional`20identification`20string`20may`20be`20included
  1185. V`20by`20defining`20the
  1186. Xlogical`20name`20SHARE_REAL_NAME`20to`20that`20string.
  1187. X
  1188. XFor`20example:
  1189. X
  1190. X`20`20$`20define`20SHARE_REAL_NAME`20"Fred`20Smith"
  1191. X
  1192. X
  1193. X
  1194. X4.3.2`20SHARE_TEMP`20`20--`20`20Temporary`20Files
  1195. X
  1196. XDuring`20the`20packaging`20process,`20a`20number`20of`20temporary`20files`20ar
  1197. Ve`20created.`20These
  1198. Xdefault`20to`20files`20of`20the`20form`20SYS$SCRATCH:SHARE_TEMP.pid`20where
  1199. V`20"pid"`20is`20the
  1200. Xunique`20process`20identification`20string.`20They`20are`20deleted`20after`20u
  1201. Vse.
  1202. X
  1203. XThe`20logical`20name`20SHARE_TEMP`20can`20be`20used`20to`20modify`20the`20loca
  1204. Vtion`20and`20name`20of
  1205. Xthese`20temporary`20files,`20with`20any`20parts`20not`20specified`20being`20ta
  1206. Vken`20from`20the`20above
  1207. Xdefault.
  1208. X
  1209. XFor`20example:
  1210. X
  1211. X`20`20`20$`20define`20SHARE_TEMP`20`20SYS$LOGIN:X.TMP
  1212. X`20`20`20`20`20`20`20`20`20Use`20the`20file`20SYS$LOGIN:X.TMP`20`20for`20the
  1213. V`20temporary`20file(s).
  1214. X
  1215. X`20`20`20$`20define`20SHARE_TEMP`20`20SYS$LOGIN:
  1216. X`20`20`20`20`20`20`20`20`20Place`20the`20temporary`20file`20in`20the`20SYS$LOG
  1217. VIN`20directory`20but`20keep
  1218. X`20`20`20`20`20`20`20`20`20everything`20else`20the`20same.`20The`20full`20name
  1219. V`20used`20is
  1220. X`20`20`20`20`20`20`20`20`20SYS$LOGIN:SHARE_TEMP.pid
  1221. X
  1222. X
  1223. X
  1224. X4.3.3`20SHARE_UNPACK_TEMP`20`20--`20`20Temporary`20files`20during`20unpacking
  1225. X
  1226. XIn`20a`20similar`20fashion`20to`20SHARE_TEMP,`20the`20logical`20name`20SHARE_U
  1227. VNPACK_TEMP`20can`20be
  1228. Xused`20to`20modify`20the`20location`20and`20name`20of`20the`20temporary`20file
  1229. Vs`20used`20during`20the
  1230. Xunpacking`20process,`20with`20any`20parts`20not`20specified`20being`20taken
  1231. V`20from`20the`20default:
  1232. X`60SYS$SCRATCH:SHARE_UNPACK_TEMP.pid'
  1233. X
  1234. X
  1235. X
  1236. X4.3.4`20SHARE_VERIFY`20`20--`20verification`20of`20the`20VMS_SHARE`20procedure
  1237. V
  1238. X
  1239. XSome`20users,`20mainly`20system`20managers`20or`20those`20who`20develop`20VMS_
  1240. VSHARE,`20may`20wish`20to
  1241. Xverify`20the`20operation`20of`20the`20code.`20The`20logical`20name`20SHARE_VER
  1242. VIFY`20may`20be`20defined
  1243. Xto`20a`20TRUE`20or`20FALSE`20value`20and`20this`20has`20the`20effect`20of`20a
  1244. V`20SET`20VERIFY`20or`20SET
  1245. XNOVERIFY`20for`20the`20duration`20of`20execution`20of`20the`20procedure.`20
  1246. V`20Any`20user`20may`20define
  1247. Xthe`20logical`20name`20but`20READ`20access`20to`20the`20procedure`20is`20neede
  1248. Vd`20and`20this`20is`20not
  1249. Xusually`20given.`20`20Typically`20then,`20only`20privileged`20users`20will`20b
  1250. Ve`20able`20to`20verify
  1251. Xthe`20operation`20of`20the`20code.
  1252. X
  1253. X
  1254. X4.4`20Customization`20Via`20Command-Line`20Qualifiers
  1255. X
  1256. XMany`20options`20can`20be`20enabled,`20disabled`20or`20selected`20by`20means
  1257. V`20of`20qualifiers`20placed
  1258. Xon`20the`20command`20line.`20For`20example:
  1259. X
  1260. X`20`20`20$`20VMS_SHARE`20<input>`20<output>`20/qualifiers
  1261. X
  1262. XEach`20qualifier`20specifies`20a`20new`20setting`20for`20one`20option;`20any
  1263. V`20number`20of`20quaLifiers
  1264. Xmay`20be`20specified`20and`20they`20are`20processed`20from`20left`20to`20right
  1265. V.`20In`20the`20case`20of
  1266. Xconflicting`20qualifiers,`20the`20rightmost`20one`20specified`20takes`20preced
  1267. Vence.
  1268. X
  1269. XIf`20a`20qualifier`20is`20given,`20it`20overrides`20any`20default`20setting
  1270. V`20or`20the`20value`20set`20by`20a
  1271. Xlogical`20name.
  1272. X
  1273. XFor`20example:
  1274. X
  1275. X`20`20`20$`20VMS_SHARE`20`5B.PACKAGE`5D*.*`20PACKAGE`20/PART_SIZE=100
  1276. X`20`20`20`20`20`20`20`20`20will`20create`20a`20package`20of`20100`20block`20fi
  1277. Vles`20regardless`20of`20the`20setting`20of
  1278. X`20`20`20`20`20`20`20`20`20the`20SHARE_PART_SIZE`20logical`20name.
  1279. X
  1280. XThe`20full`20list`20of`20qualifiers`20recognized,`20and`20a`20description`20of
  1281. V`20each,`20is`20given`20in
  1282. Xthe`20qualifier`20reference`20section`20at`20the`20end`20of`20this`20guide.
  1283. X
  1284. X`0C
  1285. X5.`09USING`20PAKMAIL
  1286. X
  1287. XOnce`20the`20share`20file`20parts`20have`20been`20created,`20they`20can`20be
  1288. V`20transmitted`20over`20the`20
  1289. Xelectronic`20mail`20network`20to`20one`20or`20more`20recipients`20using`20the
  1290. V`20VMS`20MAIL`20utility.`20
  1291. XPAKMAIL`20is`20a`20utility`20to`20simplify`20the`20sending`20mechanism`20by
  1292. V`20providing`20a`20single`20
  1293. Xline`20command`20to`20send`20the`20complete`20package.`20Typically,`20PAKMAIL
  1294. V`20is`20made`20
  1295. Xavailable`20via`20a`20'foreign`20command'`20so`20the`20command`20is:
  1296. X
  1297. X`20`20`20`20`20$`20PAKMAIL`20recipient`20file`20maxparts`20`5Bpartlist`5D`20
  1298. V`5Bcomment`5D
  1299. X
  1300. XEach`20of`20the`20parameters`20is`20explained`20below.
  1301. X
  1302. X
  1303. X
  1304. X5.1`20User`20specification
  1305. +-+-+-+-+-+-+-+-  END  OF PART 7 +-+-+-+-+-+-+-+-
  1306.