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

  1. Path: sparky!uunet!stanford.edu!agate!spool.mu.edu!howland.reston.ans.net!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 01/09
  5. Message-ID: <10312261@MVB.SAIC.COM>
  6. Date: Mon, 25 Jan 1993 21:33:41 GMT
  7. Lines: 1355
  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 45
  13. Archive-name: vms_share/part01
  14. Supersedes: vms_share: Volume 3, Issue 87-89
  15.  
  16.   VMS_SHARE is designed to package a series of files into a multi-part
  17.   share file suitable for mailing across a network. Files are encoded to
  18.   be resistant to the corruption that many mailers and networks
  19.   generate.  When all parts of the share file are combined and run as a
  20.   command procedure, the packaged directory tree is recreated in its
  21.   original format.
  22.  
  23. $! ------------------ CUT HERE -----------------------
  24. $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
  25. $!
  26. $! This archive created by VMS_SHARE Version 8.2
  27. $!   On 25-JAN-1993 13:14:48.47   By user BERRYMAN
  28. $!
  29. $! The VMS_SHARE software that created this archive
  30. $!    was written by  Andy Harper, Kings College London UK
  31. $!    -- December 1992
  32. $!
  33. $! Credit is due to these people for their original ideas:
  34. $!    James Gray, Michael Bednarek 
  35. $!
  36. $!+ THIS PACKAGE DISTRIBUTED IN 9 PARTS, TO KEEP EACH PART
  37. $!  BELOW 100 BLOCKS
  38. $!
  39. $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
  40. $! AND EXECUTE AS A COMMAND PROCEDURE  (  @name  )
  41. $!
  42. $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
  43. $!       1. PAKMAIL.COM;23
  44. $!       2. PAKMAIL.HLP;10
  45. $!       3. TEST.TXT;2
  46. $!       4. VMS_SHARE.COM;191
  47. $!       5. VMS_SHARE.HLP;34
  48. $!       6. VMS_SHARE.RELEASE_NOTES;46
  49. $!       7. VMS_SHARE.TECHNICAL_INFO;22
  50. $!       8. VMS_SHARE.USER_GUIDE;33
  51. $!
  52. $set="set"
  53. $set symbol/scope=(nolocal,noglobal)
  54. $f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID"))
  55. $e="write sys$error  ""%UNPACK"", "
  56. $w="write sys$output ""%UNPACK"", "
  57. $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
  58. $ ve=f$getsyi("version")
  59. $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start
  60. $ e "-E-OLDVER, Must run at least VMS 4.4"
  61. $ v=f$verify(v)
  62. $ exit 44
  63. $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes
  64. $ if f$parse(P1) .nes. "" then $ goto dirok
  65. $ dn=f$parse(P1,,,"DIRECTORY")
  66. $ w "-I-CREDIR, Creating directory ''dn'"
  67. $ create/dir 'dn'
  68. $ if $status then $ goto dirok
  69. $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped"
  70. $ delete 'f'*
  71. $ exit
  72. $dirok:
  73. $ x=f$search(P1)
  74. $ if x .eqs. "" then $ goto file_absent
  75. $ e "-W-EXISTS, File ''P1' exists. Skipped"
  76. $ delete 'f'*
  77. $ exit
  78. $file_absent:
  79. $ w "-I-UNPACK, Unpacking file ", P1
  80. $ n=P1
  81. $ if P3 .nes. "" then $ n=f
  82. $ if .not. f$verify() then $ define/user sys$output nl:
  83. $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n'
  84. PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t,
  85. SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE;
  86. PROCEDURE SkipPartsep LOOP EXITIF MARK(NONE)=END_OF(b);EXITIF INDEX(ERASE_LINE,
  87. "-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;PROCEDURE ProcessLine LOCAL c,s,l,b,
  88. n,p;c := ERASE_CHARACTER(1);s := ERASE_LINE;IF c = "X" THEN SPLIT_LINE; ENDIF;
  89. MOVE_HORIZONTAL(-1);l := LENGTH(s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1);
  90. p := p+1;CASE c FROM ' ' TO '`' ['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[
  91. ' ']: p:=p+1;[INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE;
  92. PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=END_OF(b);
  93. IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;ELSE ProcessLine;
  94. MOVE_HORIZONTAL(1);ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET(
  95. SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=GET_INFO(
  96. COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,GET_INFO(
  97. COMMAND_LINE,"output_file"));QUIT;
  98. $ if p3 .eqs. "" then $ goto dl
  99. $ open/write fdl &f
  100. $ write fdl "RECORD"
  101. $ write fdl P3
  102. $ close fdl
  103. $ w "-I-CONVRFM, Converting record format to ", P3
  104. $ convert/fdl=&f &f-1 &P1
  105. $dl: delete 'f'*
  106. $ checksum 'P1'
  107. $ if checksum$checksum .nes. P2 then $ -
  108.   e "-E-CHKSMFAIL, Checksum of ''P1' failed."
  109. $ exit
  110. $ endsubroutine
  111. $start:
  112. $!
  113. $ create 'f'
  114. X$!`20Purpose:
  115. X$!`09To`20mail`20out`20a`20series`20of`20files`20produced`20by`20VMS_SHARE`20t
  116. Vo`20a`20series
  117. X$!`09of`20recipients.
  118. X$!
  119. X$!`20Parameters:
  120. X$!
  121. X$!`09P1`20=`20name`20(or`20list`20)`20of`20recipient(s).`20Can`20be`20logical
  122. V`20or`20distribution
  123. X$!`20`20`20`20`20`20`20`20`20`20`20list.
  124. X$!
  125. X$!`09`09If`20sending`20to`20a`20distribution`20list,`20it`20is`20necessary`20t
  126. Vo`20define
  127. X$!`09`09a`20logical`20pointing`20to`20the`20file`20and`20then`20give`20that
  128. V`20logical`20as
  129. X$!`09`09the`20recipient`20name.`20`20This`20avoids`20problems`20with`20DCL's
  130. V`20handling
  131. X$!`09`09of`20quotes`20and`20'@'`20symbols.
  132. X$!
  133. X$!
  134. X$!`09P2`20=`20file`20spec`20of`20package`20-`20"`5Bdirectory`5Dfile"`20without
  135. V`20VMS_SHARE`20suffix!
  136. X$!
  137. X$!
  138. X$!`09P3`20=`20no`20of`20parts`20of`20the`20package
  139. X$!
  140. X$!`20`09`09This`20procedure`20adds`20the`20VMS_SHARE`20suffix`20and`20sends
  141. V`20files
  142. X$!`09`09called`20`20"`5Bdirectory`5Dfile''nn'-OF-''P3'"`20`20`20nn`20from`201-
  143. V>`20'P3'
  144. X$!
  145. X$!`09P4`20=`20Optional`20list`20of`20parts`20to`20be`20sent`20(default:`20all
  146. V`20parts)
  147. X$!
  148. X$!`09P5`20=`20Comment`20to`20add`20to`20mail`20subject`20line
  149. X$!
  150. X$!
  151. X$!`20Privileges:
  152. X$!`09Whatever`20is`20necessary`20to`20access`20e-mail`20and`20the`20relevant
  153. V`20network.
  154. X$!
  155. X$!
  156. X$!`20Environment:
  157. X$!`09Nothing`20special.`20`20VMS_SHARE`20must`20exist`20of`20course`20in`20ord
  158. Ver`20to
  159. X$!`09produce`20the`20software`20package.
  160. X$!
  161. X$!`20Revision`20History:
  162. X$!`091.0`09Andy`20Harper`096-DEC-1988`09Original`20version
  163. X$!`091.1`09Andy`20Harper`0919-DEC-1988`09Allow`20P4`20to`20be`20mail`20subject
  164. V
  165. X$!`091.2`09Andy`20Harper`095-JAN-1989`09Return`20exit`20status
  166. X$!`091.3`09Andy`20Harper`0916-JUN-1989`09Remove`20"OF_''mm'"`20extension
  167. X$!`091.4`09Andy`20Harper`093-AUG-1989`09use`20READ,`20check`20EOF`20status
  168. X$!`091.5`09Andy`20Harper`093-SEP-1992`09Update`20part`20format
  169. X$!`092.0`09Andy`20Harper`098-JAN-1993`09Recode`20for`20V5;`20add`20part`20list
  170. V
  171. X$!
  172. X$!
  173. X$
  174. X$
  175. X$!`20SET`20UP`20STANDARD`20EXIT`20CODES
  176. X$`20ss$_normal=`201
  177. X$`20ss$_abort`20=`2044
  178. X$
  179. X$!`20SET`20UP`20USEFUL`20SYMBOLS
  180. X$`20em="write`20sys$error`20""%"`20+f$parse(f$environment("PROCEDURE"),,,"NAME
  181. V")+""","
  182. X$
  183. X$
  184. X$!`20MAKE`20SURE`20WE`20HAVE`20ALL`20THE`20REQUIRED`20PARAMETERS
  185. X$
  186. X$!`20P1:`20E-mail`20address`20of`20recipient(s)
  187. X$get_recipient:
  188. X$`20P1`20=`20f$edit(P1,"TRIM,UPCASE")
  189. X$`20if`20P1`20.eqs.`20""
  190. X$`20`20`20then
  191. X$`20`20`20`20`20`20read/prompt="_mail`20address`20of`20recipient`20"/end=exit
  192. V`20sys$command`20P1
  193. X$`20`20`20`20`20`20goto`20get_recipient
  194. X$`20endif
  195. X$
  196. X$
  197. X$!`20P2:`20Name`20of`20package`20to`20be`20sent
  198. X$package_location:
  199. X$`20P2`20=`20f$edit(P2,"TRIM,UPCASE")
  200. X$`20if`20P2`20.eqs.`20""
  201. X$`20`20`20then
  202. X$`20`20`20`20`20read/prompt="_Enter`20package`20directory`20and`20base`20filen
  203. Vame`20"/end=exit`20sys$command`20P2
  204. X$`20`20`20`20`20goto`20package_location
  205. X$`20endif
  206. X$`20P2`20=`20f$parse(P2,,,,"SYNTAX_ONLY")`20-`20f$parse(P2,,,"VERSION")
  207. X$`20if`20f$parse(P2,,,"TYPE")`20.nes.`20"."`20then`20$`20P2`20=`20P2`20+`20"_"
  208. V
  209. X$
  210. X$
  211. X$!`20P3:`20`20Total`20number`20of`20parts`20in`20the`20package
  212. X$get_parts:
  213. X$`20P3`20=`20f$edit(P3,"TRIM")
  214. X$`20if`20P3`20.eqs.`20""
  215. X$`20`20`20then
  216. X$`20`20`20`20`20read/prompt="_Enter`20number`20of`20parts`20"/end=exit`20sys$c
  217. Vommand`20P3
  218. X$`20`20`20`20`20goto`20get_parts
  219. X$`20endif
  220. X$
  221. X$`20if`20f$type(P3)`20.nes.`20"INTEGER"
  222. X$`20`20`20then
  223. X$`20`20`20`20`20em`20"-E-NONNUMTOT,`20Non-numeric`20total`20part`20count`20-
  224. V`20",`20P3
  225. X$`20`20`20`20`20exit`20ss$_abort
  226. X$`20endif
  227. X$
  228. X$
  229. X$!`20P4:`20(Optional)`20list`20of`20parts`20to`20be`20sent,`20defaults`20to
  230. V`20all`20parts
  231. X$!`20P5:`20(Optional)`20comment`20to`20add`20to`20mail`20subject`20line
  232. X$
  233. X$
  234. X$!`20SET`20UP`20USEFUL`20SYMBOLS
  235. X$`20package`20=`20f$parse(P2,,,"NAME")
  236. X$`20l`20=`20f$length(P3)
  237. X$
  238. X$
  239. X$!`20IS`20THERE`20A`20SET`20OF`20FILES`20THAT`20MATCHES`20THE`20SPECIFICATION?
  240. V?
  241. X$`20x`20=`20f$fao("!AS*-OF-!ZL",P2,f$integer(P3))
  242. X$`20if`20f$search("''x'")`20.eqs.`20""
  243. X$`20`20`20then
  244. X$`20`20`20`20`20em`20"-E-PACKAGE,`20Cannot`20find`20any`20parts`20for`20",`20P
  245. Vackage
  246. X$`20`20`20`20`20exit`20ss$_abort
  247. X$`20endif
  248. X$
  249. X$
  250. X$!`20DO`20A`20DUMMY`20RUN`20TO`20MAKE`20SURE`20ALL`20REQUIRED`20FILES`20ARE
  251. V`20THERE!!!!!
  252. X$`20Really_Post_It`20=`20"FALSE"
  253. X$`20gosub`20PostParts
  254. X$
  255. X$!`20WERE`20ALL`20THE`20PARTS`20FOUND?`20IF`20NOT,`20NOW'S`20THE`20TIME`20TO
  256. V`20FIND`20OUT!
  257. X$`20if`20.not.`20OK
  258. X$`20`20`20then
  259. X$`20`20`20`20`20em`20"-E-PARTERRS,`20Error`20with`20one`20or`20more`20parts.
  260. V`20Abandoning`20send"
  261. X$`20`20`20`20`20exit`20ss$_abort
  262. X$`20endif
  263. X$
  264. X$!`20NOW`20DOE`20A`20REAL`20RUN`20AND`20POST`20THE`20PARTS
  265. X$`20Really_Post_It`20=`20"TRUE"
  266. X$`20gosub`20PostParts
  267. X$`20exit
  268. X$
  269. X$
  270. X$!`20-------------------------------------------------------------------------
  271. V
  272. X$!`20Routine`20to`20post`20all`20the`20required`20parts;`20Really_Post_It`20mu
  273. Vst`20be`20"TRUE"
  274. X$!`20-------------------------------------------------------------------------
  275. V
  276. X$PostParts:
  277. X$`20n`20=`200
  278. X$`20OK`20=`20"TRUE"
  279. X$NextPart:
  280. X$`20n`20=`20n+1
  281. X$`20part`20=n
  282. X$
  283. X$!`20If`20a`20part`20list`20was`20specified,`20use`20these;`20otherwise`20do
  284. V`20all`20parts
  285. X$`20if`20P4`20.nes.`20""
  286. X$`20`20`20then
  287. X$
  288. X$`20!`20Extract`20the`20next`20required`20part`20number
  289. X$`20`20`20`20`20part`20=`20f$element(n-1,",",P4)
  290. X$`20`20`20`20`20if`20part`20.eqs.`20","`20then`20$`20return`09!`20no`20more
  291. V`20parts,`20give`20up`20here
  292. X$
  293. X$`20!`20Make`20sure`20they've`20not`20given`20us`20a`20dodo`20....
  294. X$`20`20`20`20`20if`20f$type(part)`20.nes.`20"INTEGER"
  295. X$`20`20`20`20`20`20`20then
  296. X$`20`20`20`20`20`20`20`20`20em`20"-E-NONNUMPRT,`20Non-numeric`20part`20specifi
  297. Ved`20-`20",`20part
  298. X$`20`20`20`20`20`20`20`20`20OK`20=`20"FALSE"
  299. X$`20`20`20`20`20endif
  300. X$
  301. X$`20!`20Make`20sure`20this`20part`20is`20within`20the`20range`20for`20this`20p
  302. Vackage
  303. X$`20`20`20`20`20if`20part`20.gt.`20P3
  304. X$`20`20`20`20`20`20`20then
  305. X$`20`20`20`20`20`20`20`20`20em`20"-E-BIGPRTNUM,`20Part`20number`20greater`20th
  306. Van`20maximum`20-`20",`20part
  307. X$`20`20`20`20`20`20`20`20`20OK`20=`20"FALSE"
  308. X$`20`20`20`20`20endif
  309. X$`20`20`20`20`20part`20=`20f$integer(part)
  310. X$`20endif
  311. X$
  312. X$!`20OK,`20go`20action`20this`20part
  313. X$`20if`20part`20.le.`20P3
  314. X$`20`20`20then
  315. X$`20`20`20`20`20part`20=`20f$fao("!#ZL",l,part)
  316. X$`20`20`20`20`20file`20=`20P2`20+`20part`20+`20"-OF-"`20+`20P3
  317. X$`20`20`20`20`20if`20Really_Post_It
  318. X$`20`20`20`20`20`20`20then
  319. X$`20`20`20`20`20`20`20`20`20em`20"-I-SENDPART,`20Sending`20part`20",`20part,
  320. V`20"`20of`20",`20package
  321. X$`20`20`20`20`20`20`20`20`20subj`20=`20f$parse(file,,,"NAME")`20+`20f$parse(fi
  322. Vle,,,"TYPE")`20+`20"`20`20"`20+`20P5
  323. X$`20`20`20`20`20`20`20`20`20mail/noedit/noself/subject=`26subj`20'file'`20'P1'
  324. V
  325. X$`20`20`20`20`20`20`20`20`20if`20.not.`20$status`20then`20$`20return`20!`20Ret
  326. Vurn`20status`20from`20mail`20if`20it`20failed
  327. X$`20`20`20`20`20`20`20else
  328. X$`20`20`20`20`20`20`20`20`20if`20f$search(file)`20.eqs.`20""
  329. X$`20`20`20`20`20`20`20`20`20`20`20then
  330. X$`20`20`20`20`20`20`20`20`20`20`20`20`20em`20"-E-NOPART,`20Part`20''part'`20of
  331. V`20''package'`20is`20missing!"
  332. X$`20`20`20`20`20`20`20`20`20`20`20`20`20OK`20=`20"FALSE"
  333. X$`20`20`20`20`20`20`20`20`20endif
  334. X$`20`20`20`20`20endif
  335. X$`20`20`20`20`20goto`20NextPart
  336. X$`20endif
  337. X$`20return
  338. $ call unpack PAKMAIL.COM;23 1682522482 ""
  339. $!
  340. $ create 'f'
  341. X!`20Version`202.0
  342. X!`20`20`20`20`20--`20Andy`20Harper,`20Kings`20College`20London,`20UK
  343. X!`20`20`20`20`20--`20January`201993
  344. X1`20PAKMAIL
  345. X
  346. XSends`20a`20series`20of`20files`20produced`20by`20VMS_SHARE`20across`20the`20E
  347. V-mail
  348. Xsystem`20to`20a`20specified`20set`20of`20recipients.`20
  349. X
  350. XFormat:
  351. X`20`20`20`20`20$`20PAKMAIL`20recipient`20filespec`20parts`20`5Bpart-list`5D
  352. V`20`5Bcomment`5D
  353. X
  354. X2`20Author
  355. X
  356. XThis`20software`20was`20written`20by,`20and`20is`20the`20copyright`20(C)`20of:
  357. V
  358. X
  359. XAndy`20Harper
  360. XKings`20College`20London
  361. XEngland
  362. X
  363. X2`20Examples
  364. X
  365. X`20`20`20`20`20$`20PAKMAIL`20FRED`20`5B.TEST`5DPACKAGE`2025
  366. X`20`20`20`20`20`20`20`20`20`20Send`20all`2025`20parts`20of`20a`20VMS_SHARE`20c
  367. Vreated`20series`20of`20files
  368. X`20`20`20`20`20`20`20`20`20`20that`20comprise`20the`20package`20"PACKAGE".`20F
  369. Viles`20have`20a`20generic
  370. X`20`20`20`20`20`20`20`20`20`20prefix`20of`20"`5B.TEST`5DPACKAGE"`20and`20`20ea
  371. Vch`20will`20have`20its`20TYPE
  372. X`20`20`20`20`20`20`20`20`20`20suffixed`20by`20the`20VMS_SHARE`20convention`20o
  373. Vf`20'nn'-OF-25
  374. X
  375. X`20`20`20`20`20$`20PAKMAIL`20FRED`20`5B.TEST`5DPACKAGE`2025`205,9
  376. X`20`20`20`20`20`20`20`20`20`20As`20above,`20but`20just`20send`20parts`205`20an
  377. Vd`209.
  378. X
  379. X
  380. X`20`20`20`20`20$`20PAKMAIL`20FRED`20`5B.TEST`5DPACKAGE`2025`205,9`20"Demonstra
  381. Vtion`20only"
  382. X`20`20`20`20`20`20`20`20`20`20As`20above,`20but`20just`20send`20parts`205`20an
  383. Vd`209,`20and`20add`20the
  384. X`20`20`20`20`20`20`20`20`20`20comment`20"Demonstration`20only"`20into`20the
  385. V`20subject`20field
  386. X`20`20`20`20`20`20`20`20`20`20of`20each`20message.
  387. X
  388. X
  389. X2`20Filespec
  390. X
  391. XThe`20directory`20and`20fixed`20constant`20part`20of`20the`20files`20containin
  392. Vg`20the
  393. XVMS_SHARE'd`20package.`20The`20part`20number`20is`20appended`20to`20the`20TYPE
  394. V`20part
  395. Xof`20the`20name.`20
  396. X
  397. XFor`20instance,`20the`20name`20"`5B.TEST`5DBURBLE.SHAR"`20refers`20to`20the
  398. V`20files:
  399. X
  400. X`20`20`20`20`20`5B.TEST`5DBURBLE.SHAR_nn-OF-mm
  401. X
  402. X'nn'`20being`20the`20part`20number`20and`20'mm'`20being`20the`20total`20number
  403. V`20of`20parts
  404. X
  405. X2`20Comment
  406. X
  407. XThis`20paramter`20is`20optional.`20If`20specified,`20it`20defines`20a`20commen
  408. Vt
  409. Xstring`20to`20be`20inserted`20into`20the`20subject`20header`20of`20the`20gener
  410. Vated
  411. Xmail`20message.
  412. X
  413. XFor`20example,`20without`20this`20parameter,`20the`20subject:`20header`20looks
  414. V
  415. Xlike`20this:`20
  416. X`20`20`20Subject:`20`20`20VMS_SHARE.1-OF-4
  417. X
  418. XWith`20it`20set`20to`20the`20string`20"(Version`208.2)",`20the`20subject:
  419. Xheader`20line`20looks`20like`20this:`20
  420. X`20`20`20Subject:`20`20`20VMS_SHARE.1-OF-4`20(Version`208.2)
  421. X
  422. X2`20Partlist
  423. X
  424. XThis`20parameter`20is`20optional.`20If`20specified,`20it`20should`20be`20a`20c
  425. Vomma
  426. Xseparated`20list`20of`20parts.`20Only`20the`20parts`20listed`20will`20be`20sen
  427. Vt.
  428. X
  429. XIf`20not`20specified,`20all`20parts`20will`20be`20sent.
  430. X
  431. X2`20Parts
  432. X
  433. XThis`20parameter`20is`20required.`20It`20defines`20the`20total`20number`20of
  434. V`20parts
  435. Xmaking`20up`20the`20share`20file`20to`20be`20sent.
  436. X
  437. X2`20Recipient
  438. X
  439. XThe`20mail`20address`20of`20the`20recipient.`20This`20may`20be`20anything`20wh
  440. Vich`20can
  441. Xbe`20used`20on`20the`20MAIL`20command`20line.`20Because`20of`20the`20way`20MAI
  442. VL`20parses
  443. Xaddresses`20and`20the`20way`20DCL`20treats`20@`20symbols,`20care`20is`20needed
  444. V`20when
  445. Xspecifying`20addresses`20which`20are`20distribution`20lists`20(usually
  446. Xprefixed`20by`20@)`20or`20which`20contain`20double`20quotes.`20
  447. X
  448. X3`20Distribution_Lists
  449. X
  450. XUse`20of`20distribution`20lists`20directly`20on`20the`20MAIl`20command`20line
  451. V`20does
  452. Xnot`20work`20as`20DCL`20gets`20at`20the`20'@'`20symbol`20before`20MAIL`20does!
  453. V`20`20It`20must
  454. Xbe`20done`20by`20pointing`20a`20logical`20name`20at`20the`20distribution`20lis
  455. Vt,
  456. Xincluding`20the`20'@'`20and`20then`20using`20the`20logical`20name`20as`20the
  457. Xrecipient.`20
  458. X
  459. XFor`20instance,`20to`20simulate:
  460. X
  461. X`20`20`20$`20PAKMAIL`20@FRIENDS`20`20`20....
  462. X
  463. XDo:
  464. X
  465. X`20`20`20$`20DEFINE`20FRIENDS`20"@FRIENDS.DIS"
  466. X`20`20`20$`20CREATE`20FRIENDS.DIS
  467. X`20`20`20.....`20insert`20friends`20here
  468. X`20`20`20`5EZ
  469. X`20`20`20$`20PAKMAIL`20FRIENDS`20.....
  470. X
  471. X3`20Quoted_usernames
  472. X
  473. XUsernames`20must`20be`20specified`20in`20exactly`20the`20same`20form`20as`20th
  474. Vey
  475. Xwould`20be`20used`20on`20the`20MAIL`20command`20line,`20as`20in:`20
  476. X
  477. X`20`20`20$`20MAIL`20MESSAGE.TXT`20NET%"""FRED@MIT"""
  478. X
  479. XThis`20is`20important`20only`20when`20addresses`20containing`20double`20quotes
  480. V
  481. Xare`20used;`20essentially,`20individual`20quotes`20are`20doubled`20and`20a`20n
  482. Vew
  483. Xset`20placed`20around`20the`20lot.`20
  484. X
  485. XFor`20instance,`20to`20simulate:
  486. X
  487. X`20`20`20$`20PAKMAIL`20`20EARN%"FRED@CARNEGIE"
  488. X
  489. XDo:
  490. X`20`20`20$`20PAKMAIL`20`20EARN%"""FRED@CARNEGIE"""
  491. X
  492. XAlternatively,`20define`20a`20logical`20name`20that`20contains`20the`20origina
  493. Vl
  494. Xform`20of`20address:`20
  495. X
  496. X`20`20`20$`20DEFINE`20BROTHER`20EARN%"""FRED@CARNEGIE"""
  497. X`20`20`20$`20PAKMAIL`20BROTHER`20`20`20...
  498. X
  499. X2`20VMS_SHARE
  500. X
  501. XVMS_SHARE`20packages`20a`20series`20of`20files`20into`20the`20special`20format
  502. V.`20See
  503. Xthe`20help`20on`20that`20utility`20for`20specific`20information.`20
  504. $ call unpack PAKMAIL.HLP;10 2035317049 ""
  505. $!
  506. $ create 'f'
  507. X`20`20`20`20`09`09`09V`20M`20S`20_`20S`20H`20A`20R`20E`20`20`20`20`20TEST`20FI
  508. VLE
  509. X
  510. X----------------------------------------`20Test`20printable`20characters
  511. Xabcdefghijklmnopqrstuvwxyz`09!`20All`20lower`20case`20letter,`20in`20order
  512. XABCDEFGHIJKLMNOPQRSTUVWXYZ`09!`20All`20upper`20case`20letters,`20in`20order
  513. X0123456789`09`09`09!`20All`20digits`20in`20order
  514. X`60`20`20!`20Backwords`20quote
  515. X`7E`20`20!`20Tilde
  516. X!`20`20!`20Exclamation`20mark
  517. X@`20`20!`20at`20sign
  518. X#`20`20!`20Hash`20or`20pound`20sign
  519. X$`20`20!`20Dollar`20sign
  520. X%`20`20!`20Percent`20sign
  521. X`5E`20`20!`20Caret
  522. X`26`20`20!`20Ampersand
  523. X*`20`20!`20asterisk
  524. X(`20`20!`20Left`20round`20bracket
  525. X)`20`20!`20Right`20round`20bracket
  526. X-`20`20!`20minus
  527. X+`20`20!`20plus
  528. X=`20`20!`20equals
  529. X`7B`20`20!`20left`20brace
  530. X`7D`20`20!`20right`20brace
  531. X`5B`20`20!`20left`20square`20bracket
  532. X`5D`20`20!`20right`20square`20bracket
  533. X:`20`20!`20colon
  534. X"`20`20!`20Double`20quote
  535. X`7C`20`20!`20vertical`20bar
  536. X;`20`20!`20semicolon
  537. X'`20`20!`20single`20quote
  538. X`5C`20`20!`20backslash
  539. X>`20`20!`20greater`20than
  540. X<`20`20!`20less`20than
  541. X,`20`20!`20comma
  542. X.`20`20!`20period
  543. X?`20`20!`20question`20mark
  544. X/`20`20!`20slash
  545. X----------------------------------------`20Test`20single`20blank`20line
  546. X
  547. X----------------------------------------`20Test`20trailing`20blanks,`20non`20s
  548. Vplit`20lines
  549. XHere`20are`20some`20lines`20with`20trailing`20blanks`20`20`20`20`20`20`20
  550. Xand`20another`20`20`20`20`20
  551. X----------------------------------------`20Test`20trailing`20blanks,`20split
  552. V`20lines
  553. X123456789012345678901234567890123456789012345678901234567890123456789012345678
  554. V901234567890123456789012345678901234567890123456789012345678901234567890
  555. X1234567890`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20
  556. V`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20
  557. V`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20
  558. X1234567890`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20
  559. V`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20
  560. V`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20
  561. X1234567890`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20
  562. V`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20
  563. V`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20`20`20
  564. X1234567890`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x
  565. V`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20
  566. V`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20`20
  567. X1234567890x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x
  568. V`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20
  569. V`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20x`20`20`20`20`20`20
  570. X
  571. X
  572. X`20`20`20`20`09`09END`20OF`20`20V`20M`20S`20_`20S`20H`20A`20R`20E`20`20TEST
  573. V`20FILE
  574. $ call unpack TEST.TXT;2 942494529 ""
  575. $!
  576. $ create 'f'
  577. X$`20v='f$verify(f$trnlnm("SHARE_VERIFY"))'
  578. X$!`20Purpose:
  579. X$!`09Package`20a`20series`20of`20files`20into`20a`20multi-part`20archive,`20es
  580. Vpecially`20encoded
  581. X$!`09so`20that`20it`20can`20be`20mailed`20across`20multiple`20networks`20witho
  582. Vut`20undue`20damage
  583. X$!
  584. X$!`20Parameters:
  585. X$!`09P1`20=`20List`20of`20files`20to`20scan
  586. X$!`09P2`20=`20name`20of`20share`20file`20to`20generate`20(will`20be`20suffixed
  587. V`20by`20part`20no.)
  588. X$!
  589. X$!`20Qualifiers:
  590. X$!`20`20`20`20`20`20/BACKUP`09`09`09Specify`20BACKUP`20as`20the`20selection
  591. V`20date`20criteria
  592. X$!`09/BEFORE`5B=date`5D`09`09Specify`20latest`20date`20for`20file`20considerat
  593. Vion
  594. X$!`09/`5BNO`5DCOMPRESS`5B=n`5D`09Try`20to`20do`20compression`20on`20files
  595. X$!`09/`5BNO`5DCONFIRM`09`09Require`20confirmation`20of`20selected`20files
  596. X$!`09/CREATED`09`09Specify`20CREATED`20as`20the`20selection`20date`20criteria
  597. X$!`09/`5BNO`5DDEBUG`5B=n`5D`09`09Turn`20on`20debugging`20code`20`5Bat`20level
  598. V`20n`5D
  599. X$!`09/`5BNO`5DDIRECTORY`09`09Preserve`20directory`20structure`20in`20archives
  600. X$!`09/`5BNO`5DEXCLUDE=list`09Exclude`20list`20of`20files
  601. X$!`09/EXPIRED`09`09Specify`20EXPIRED`20as`20the`20selection`20date`20criteria
  602. X$!`09/`5BNO`5DLOG`5B=n`5D`09`09Specify`20logging
  603. X$!`09/`5BNO`5DLONGLINES`09`09Allow`20long`20lines`20if`20using`20later`20TPU's
  604. V
  605. X$!`09/MODIFIED`09`09Specify`20MODIFIED`20as`20the`20selection`20date`20criteri
  606. Va
  607. X$!`09/`5BNO`5DPACKAGE_INDEX`5B=type`5D`20Write`20part`20list`20for`20file`20se
  608. Vrver`20package`20files
  609. X$!`09/PART_SIZE=NNN`09`09Specify`20maximum`20size`20of`20parts
  610. X$!`09/SINCE`5B=date`5D`09`09Specify`20earliest`20date`20for`20file`20considera
  611. Vtion
  612. X$!`09/`5BNO`5DVERSION`09`09Preserve`20version`20numbers`20in`20archive
  613. X$!
  614. X$!`20Environment:
  615. X$!`09Needs`20at`20least`20VMS`205.0
  616. X$!
  617. X$!`20Revision`20History:
  618. X$!`098.0`09Andy`20Harper`09September`201992`09Extensive`20rewrite
  619. X$!`098.1`09Andy`20Harper`09September`201992`09Bug`20fixes`20following`20releas
  620. Ve
  621. X$!`09`09`09`09`09`09`26`20`20a`20few`20new`20features
  622. X$!`098.2`09Andy`20Harper`09December`20`201992`09New`20features`20and`20bugfixe
  623. Vs
  624. X$!
  625. X$!`20This`20software`20is`20copyright`20(C)`20Andy`20Harper,`20Kings`20College
  626. V`20London`20and`20is
  627. X$!`20supplied`20free`20of`20charge`20with`20no`20warranties`20expressed`20or
  628. V`20implied.`20Any
  629. X$!`20problems`20arising`20from`20its`20use`20are`20entirely`20the`20responsibi
  630. Vlity`20of`20the`20user
  631. X$!`20You`20are`20free`20to`20distribute`20this`20software`20to`20anyone,`20pro
  632. Vvided`20that`20all
  633. X$!`20copyright`20notices`20remain`20in`20place.
  634. X$
  635. X$!`20Protection
  636. X$`20set="set"
  637. X$`20set`20noon
  638. X$`20set`20symbol/scope=(nolocal,noglobal)
  639. X$
  640. X$`20Facility`20`20`20`20`20`20`20`20`20`20`20`20`20`20=`20f$parse(f$environmen
  641. Vt("PROCEDURE"),,,"NAME")
  642. X$`20em="write`20sys$error`20""%''Facility'"","
  643. X$`20SS$_NORMAL`20`20`20`20`20`20`20`20`20`20`20`20=`20%X00000001
  644. X$`20SS$_ABORT`20`20`20`20`20`20`20`20`20`20`20`20`20=`20%X1000002C
  645. X$`20status`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20=`20SS$_ABORT
  646. X$`20Current_Directory`20`20`20`20`20=`20f$parse(f$environment("DEFAULT"),"`5B
  647. V`5D")`20-`20".;"
  648. X$`20Cur_Device`20`20`20`20`20`20`20`20`20`20`20`20=`20f$parse(Current_Director
  649. Vy,,,"DEVICE")
  650. X$`20Cur_Directory`20`20`20`20`20`20`20`20`20=`20f$parse(Current_Directory,,,"D
  651. VIRECTORY")
  652. X$
  653. X$`20VMS`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20=`20f$getsyi("
  654. Vversion")
  655. X$`20VMSx`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20=`20f$extract(1,
  656. Vf$length(VMS)-1,VMS)
  657. X$`20Version`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20=`20"8.2"
  658. X$
  659. X$`20Max_Share_Length`20`20`20`20`20`20=`2079
  660. X$`20Def_Part_Size`20`20`20`20`20`20`20`20`20=`2030
  661. X$
  662. X$`20Min_VMS`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20=`20"5.0"`09!`20To`20a
  663. Vllow`20block-IF`20stuff
  664. X$`20Min_VMS_For_TPU`20`20`20`20`20`20`20=`20"4.4"`09!`20To`20recognize`20TPU
  665. X$`20Min_VMS_For_LongLines`20=`20"5.4"`09!`20To`20allow`20long`20records`20in
  666. V`20TPU
  667. X$`20Max_Line_OldTPU`20`20`20`20`20`20`20=`20960`09!`20Max`20line`20lengths`20f
  668. Vor`20older`20TPUs
  669. X$`20Max_Line_NewTPU`20`20`20`20`20`20`20=`2065535`20!`20Max`20line`20lengths
  670. V`20for`20newer`20TPUs
  671. X$
  672. X$!`20Define`20the`20format`20for`20the`20name`20of`20sharefile`20parts
  673. X$`20format1`20=`20"!AS!#*n-OF-!#ZL"
  674. X$`20format2`20=`20"!AS!#ZL-OF-!#ZL"
  675. X$
  676. X$!`20Set`20debugging`20levels
  677. X$`20Debug_Rejected`20`20`20`20`20`20`20`20=`202
  678. X$`20Debug_ShowParams`20`20`20`20`20`20=`202
  679. X$
  680. X$!`20Set`20logging`20levels
  681. X$`20Log_Ident`20`20`20`20`20`20`20`20`20`20`20`20`20=`201
  682. X$`20Log_Selected`20`20`20`20`20`20`20`20`20`20=`201
  683. X$`20Log_Processing`20`20`20`20`20`20`20`20=`201
  684. X$`20Log_RenameParts`20`20`20`20`20`20`20=`201
  685. X$`20Log_PackageIndex`20`20`20`20`20`20=`201
  686. X$
  687. X$!`20Version`20check
  688. X$`20if`20VMSx`20.ges.`20Min_VMS`20then`20$`20goto`20VMS_ok
  689. X$`20em`20"-E-OLD,`20Need`20at`20least`20VMS`20''Min_VMS'`20to`20run.`20Current
  690. Vly`20running`20VMS`20''VMSx'"
  691. X$`20goto`20abort
  692. X$!`20From`20here,`20we`20can`20use`20block-IF`20stuff`20as`20we`20are`20on`20t
  693. Vhe`20right`20version
  694. X$VMS_ok:
  695. X$!`0C
  696. X$!`20Set`20up`20abort`20handling
  697. X$`20on`20control_y`20then`20$`20goto`20abort
  698. X$
  699. X$!`20Parse`20parameters
  700. X$`20gosub`20Get_Default_Parameters
  701. X$`20gosub`20Parse_Command_Line
  702. X$`20gosub`20Break_Out_Parameters
  703. X$`20gosub`20Break_Out_Options
  704. X$`20gosub`20Check_Parameters
  705. X$
  706. X$`20if`20logging`20.ge.`20Log_Ident`20then`20$`20em`20"-I-IDENT,`20",`20f$fao(
  707. V"!AS`20Version`20!AS`20-`20!AS`20!%D",Facility,Version,f$cvtime(,,"WEEKDAY"),0
  708. V)
  709. X$
  710. X$!`20Write`20parameters`20to`20the`20parameter`20file,`20so`20the`20packing
  711. V`20code`20can`20pick`20them`20up
  712. X$`20gosub`20Create_Parameter_File
  713. X$`20if`20FileCount`20.eq.`200
  714. X$`20`20`20then
  715. X$`20`20`20`20`20em`20"-E-NOFILES,`20No`20files`20selected."
  716. X$`20`20`20`20`20goto`20abort
  717. X$`20endif
  718. X$
  719. X$`20gosub`20PackFiles`09`09`09!`20Go`20pack`20the`20files`20into`20the`20archi
  720. Vve
  721. X$`20gosub`20Rename_Parts`09`09`09!`20Generate`20part`20type`20of`20".nnn-of-mm
  722. Vm"
  723. X$`20gosub`20Create_Package_Index`09`09!`20Create`20the`20xxx.$PACKAGE`20index
  724. V`20file
  725. X$`20
  726. X$!`20Clean`20up`20and`20exit
  727. X$`20status`20=`20ss$_normal
  728. X$abort:
  729. X$`20if`20f$trnlnm("SHARE_PARAMS")`20`20.nes.`20""`20then`20$`20close`20SHARE_P
  730. VARAMS
  731. X$`20if`20f$trnlnm("SHARE_PACKIDX")`20.nes.`20""`20then`20$`20close`20SHARE_PAC
  732. VKIDX
  733. X$`20if`20f$search(Tempfile)`20.nes.`20""`20then`20$`20delete`20`26TempFile;*
  734. X$`20v=f$verify(v)
  735. X$`20exit`20status
  736. X$
  737. X$
  738. X$!`0C
  739. X$!`20-------------------------------------------------------------------------
  740. V--
  741. X$!`20GET`20DEFAULT`20PARAMETERS
  742. X$!
  743. X$!`20`20`20Defaults`20are`20set`20by`20logical`20names.`20If`20no`20logical
  744. V`20exists,`20then`20the
  745. X$!`20`20`20built-in`20system`20default`20is`20used.
  746. X$!
  747. X$!`20-------------------------------------------------------------------------
  748. V--
  749. X$Get_Default_Parameters:
  750. X$!`20Get`20parameters`20from`20logical`20names/system;`20normally`20these`20wi
  751. Vll`20set`20defaults
  752. X$`20Compression=f$edit(f$trnlnm("SHARE_COMPRESS"),`20`20`20`20`20`20"TRIM")
  753. X$`20Confirm`20`20`20=`20f$edit(f$trnlnm("SHARE_CONFIRM"),`20`20`20`20`20`20
  754. V`20"TRIM")
  755. X$`20Debugging`20=`20f$edit(f$trnlnm("SHARE_DEBUG"),`20`20`20`20`20`20`20`20
  756. V`20"TRIM")
  757. X$`20DirKeep`20`20`20=`20f$edit(f$trnlnm("SHARE_DIRECTORY"),`20`20`20`20`20"TRI
  758. VM")
  759. X$`20Exclude`20`20`20=`20f$edit(f$trnlnm("SHARE_EXCLUDE"),`20`20`20`20`20`20
  760. V`20"TRIM,UPCASE")
  761. X$`20Logging`20`20`20=`20f$edit(f$trnlnm("SHARE_LOG"),`20`20`20`20`20`20`20`20
  762. V`20`20`20"TRIM")
  763. X$`20LongLines`20=`20f$edit(f$trnlnm("SHARE_LONGLINES"),`20`20`20`20`20"TRIM")
  764. X$`20PackageIdx=`20f$edit(f$trnlnm("SHARE_PACKAGE_INDEX"),`20"TRIM")
  765. X$`20Part_Size`20=`20f$edit(f$trnlnm("SHARE_PART_SIZE"),`20`20`20`20`20"TRIM")
  766. X$`20Real_Name`20=`20f$edit(f$trnlnm("SHARE_REAL_NAME"),`20`20`20`20`20"TRIM")
  767. X$`20VersKeep`20`20=`20f$edit(f$trnlnm("SHARE_VERSION"),`20`20`20`20`20`20`20"T
  768. VRIM")
  769. X$`20TempFile`20`20=`20f$parse("SHARE_TEMP","SYS$SCRATCH:SHARE_TEMP."+f$getjpi(
  770. V"","PID"))
  771. X$`20TempFile`20`20=`20TempFile`20-`20f$parse(TempFile,,,"VERSION")
  772. X$
  773. X$!`20Get`20the`20exclusions;`20this`20is`20the`20old`20format`20and`20is`20(al
  774. Vmost)`20redundant.
  775. X$`20X_Files`20`20`20=`20f$edit(f$trnlnm("SHARE_EXCLUDE_FILES"),`20"TRIM,UPCASE
  776. V")
  777. X$`20X_Dirs`20`20`20`20=`20f$edit(f$trnlnm("SHARE_EXCLUDE_DIRS"),`20`20"TRIM,UP
  778. VCASE")
  779. X$`20X_Names`20`20`20=`20f$edit(f$trnlnm("SHARE_EXCLUDE_NAMES"),`20"TRIM,UPCASE
  780. V")
  781. X$`20X_Types`20`20`20=`20f$edit(f$trnlnm("SHARE_EXCLUDE_TYPES"),`20"TRIM,UPCASE
  782. V")
  783. X$
  784. X$!`20------------------------------------------------------------------------
  785. X$!`20Convert`20the`20`60old-style'`20exclusion`20clauses`20to`20the`20new`20fo
  786. Vrmat
  787. X$!`20------------------------------------------------------------------------
  788. X$`20if`20X_Dirs`20.nes.`20""
  789. X$`20`20`20then
  790. X$`20`20`20`20`20if`20Exclude`20.nes.`20""`20then`20$`20Exclude`20=`20Exclude
  791. V`20+`20","
  792. X$`20`20`20`20`20Exclude`20=`20Exclude`20+`20X_Dirs
  793. X$`20endif
  794. X$
  795. X$`20if`20X_Names`20.nes.`20""
  796. X$`20`20`20then
  797. X$`20`20`20`20`20if`20Exclude`20.nes.`20""`20then`20$`20Exclude`20=`20Exclude
  798. V`20+`20","
  799. X$`20`20`20`20`20Exclude`20=`20Exclude`20+`20X_Names
  800. X$`20endif
  801. X$
  802. X$`20if`20X_Types`20.nes.`20""
  803. X$`20`20`20then
  804. X$`20`20`20`20`20if`20Exclude`20.nes.`20""`20then`20$`20Exclude`20=`20Exclude
  805. V`20+`20","
  806. X$`20`20`20`20`20Exclude`20=`20Exclude`20+`20X_Types
  807. X$`20endif
  808. X$
  809. X$`20if`20X_Files.nes.`20""
  810. X$`20`20`20then
  811. X$`20`20`20`20`20if`20Exclude`20.nes.`20""`20then`20$`20Exclude`20=`20Exclude
  812. V`20+`20","
  813. X$`20`20`20`20`20Exclude`20=`20Exclude`20+`20X_Files
  814. X$`20endif
  815. X$
  816. X$
  817. X$!`20------------------------------------------------------------------------
  818. X$!`20SET`20UP`20THE`20REAL`20NAME
  819. X$!`20------------------------------------------------------------------------
  820. X$`20if`20Real_Name`20.eqs.`20""
  821. X$`20`20`20then
  822. X$`20`20`20`20`20Real_Name`20=`20f$edit(f$getjpi("","USERNAME"),"TRIM")
  823. X$`20`20`20else
  824. X$`20`20`20`20`20Real_Name`20=`20f$edit(f$getjpi("","USERNAME"),"TRIM")`20+`20"
  825. V`20("`20+`20Real_Name`20+`20")"
  826. X$`20endif
  827. X$
  828. X$
  829. X$!`20------------------------------------------------------------------------
  830. X$!`20SET`20UP`20THE`20DEFAULT`20MAX`20LINE`20LENGTH`20AND`20MIN`20TPU`20VERSIO
  831. VNS`20ALLOWED`20FOR`20UNPACKING
  832. X$!`20------------------------------------------------------------------------
  833. X$`20Min_VMS_To_Unpack`20`20`20=`20Min_VMS_For_TPU`09!`20Default`20allows`20any
  834. V`20version`20of`20TPU
  835. X$`20Max_TPU_Line_Length`20=`20Max_Line_OldTPU`20!`20...`20provided`20we`20stic
  836. Vk`20to`20short`20lines
  837. X$
  838. X$
  839. X$!`20------------------------------------------------------------------------
  840. X$!`20DEFAULT`20FILE`20SELECTION`20DATES/CRITERIA
  841. X$!`20------------------------------------------------------------------------
  842. X$`20Since`20`20`20`20=`20""`09`09`09`09!`20Earliest`20date`20is`20anything
  843. X$`20Before`20`20`20=`20""`09`09`09`09!`20Latest`20date`20is`20anything
  844. X$`20Criteria`20=`20"RDT"`09`09`09!`20Revision`20(modification)`20is`20default
  845. X$
  846. X$`20return
  847. X$
  848. X$
  849. X$!`0C
  850. X$!`20-------------------------------------------------------------------------
  851. V--
  852. X$!`20PARSE`20COMMAND`20LINE
  853. X$!
  854. X$!`20`20`20`20Parse`20the`20parameter`20list`20and`20extract`20qualifiers`20an
  855. Vd`20parameters
  856. X$!
  857. X$!`20-------------------------------------------------------------------------
  858. V--
  859. X$Parse_Command_Line:
  860. X$`20Cmd_Line=f$edit(P1+"`20"+P2+"`20"+P3+"`20"+P4+"`20"+P5+"`20"+P6+"`20"+P7+"
  861. V`20"+P8,"TRIM,COMPRESS")
  862. X$`20P1`20=`20""
  863. X$`20P2`20=`20""
  864. X$`20P3`20=`20""
  865. X$`20P4`20=`20""
  866. X$`20P5`20=`20""
  867. X$`20P6`20=`20""
  868. X$`20P7`20=`20""
  869. X$`20P8`20=`20""
  870. X$
  871. X$`20N=0
  872. X$`20Qualifiers`20=`20""
  873. X$Next_Param:
  874. X$`20if`20f$length(Cmd_Line)`20.ne.`200
  875. X$`20`20`20then
  876. X$`20`20`20`20`20String`20=`20f$extract(0,f$locate("`20",Cmd_Line),Cmd_Line)
  877. X$`20`20`20`20`20Cmd_Line`20=`20Cmd_Line`20-`20String`20-`20"`20"
  878. X$`20`20`20`20`20Param`20=`20f$extract(0,f$locate("/",String),String)
  879. X$`20`20`20`20`20String`20=`20String`20-`20Param
  880. X$`20`20`20`20`20if`20Param`20.nes.`20""
  881. X$`20`20`20`20`20`20`20then
  882. X$`20`20`20`20`20`20`20`20`20N=N+1
  883. X$`20`20`20`20`20`20`20`20`20P'N'`20=`20Param
  884. X$`20`20`20`20`20endif
  885. X$`20`20`20`20`20qualifiers`20=`20qualifiers`20+`20String
  886. X$`20`20`20`20`20goto`20Next_Param
  887. X$`20endif
  888. X$`20
  889. X$`20return
  890. X$
  891. X$
  892. X$!`0C
  893. X$!`20-------------------------------------------------------------------------
  894. V--
  895. X$!`20BREAK`20OUT`20PARAMETERS
  896. X$!
  897. X$!`20`20`20`20Check`20the`20parameters`20and`20break`20out`20those`20we`20want
  898. V
  899. X$!
  900. X$!`20-------------------------------------------------------------------------
  901. V--
  902. X$Break_Out_Parameters:
  903. X$`20FileSpec`20=`20P1
  904. X$`20ShareFile=`20P2
  905. X$
  906. X$get_filespec:
  907. X$`20filespec`20=`20f$edit(filespec,"TRIM,UPCASE")
  908. X$`20if`20filespec`20.eqs.`20""
  909. X$`20`20`20then
  910. X$`20`20`20`20`20if`20f$mode()`20.nes.`20"INTERACTIVE"
  911. X$`20`20`20`20`20`20`20then
  912. X$`20`20`20`20`20`20`20`20`20em`20"-E-MISREQPAR,`20Missing`20required`20paramet
  913. Ver`20-`20list`20of`20files"
  914. X$`20`20`20`20`20`20`20`20`20goto`20abort
  915. X$`20`20`20`20`20endif
  916. X$`20`20`20`20`20read/prompt="..`20Enter`20list`20of`20files`20to`20be`20packed
  917. V`20:`20"`20sys$command`20filespec
  918. X$`20`20`20`20`20goto`20get_filespec
  919. X$`20endif
  920. X$
  921. X$get_share_file:
  922. X$`20sharefile`20=`20f$edit(sharefile,"TRIM,UPCASE")
  923. X$`20if`20sharefile`20.eqs.`20""
  924. X$`20`20`20then
  925. X$`20`20`20`20`20if`20f$mode()`20.nes.`20"INTERACTIVE"
  926. X$`20`20`20`20`20`20`20then
  927. X$`20`20`20`20`20`20`20`20`20em`20"-E-MISREQPAR,`20Missing`20required`20paramet
  928. Ver`20-`20output`20share`20file`20name"
  929. X$`20`20`20`20`20`20`20`20`20goto`20abort
  930. X$`20`20`20`20`20endif
  931. X$`20`20`20`20`20read/prompt="..`20Enter`20name`20of`20share`20file`20`20`20
  932. V`20`20`20`20`20`20:`20"`20sys$command`20sharefile
  933. X$`20`20`20`20`20goto`20get_share_file
  934. X$`20endif
  935. X$
  936. X$Check_Output_Dir:
  937. X$`20if`20f$parse(sharefile)`20.eqs.`20""
  938. X$`20`20`20then
  939. X$`20`20`20`20`20em`20"-E-INVOUT,`20invalid`20output`20file`20or`20non-existent
  940. V`20output`20directory"
  941. X$`20`20`20`20`20goto`20abort
  942. X$`20endif
  943. X$`20return
  944. X$
  945. X$
  946. X$!`0C
  947. X$!`20-------------------------------------------------------------------------
  948. V--
  949. X$!`20BREAK`20OUT`20OPTIONS
  950. X$!
  951. X$!`20`20Scan`20the`20qualifier`20string`20and`20set`20up`20the`20various`20opt
  952. Vions`20selected`20by`20the
  953. X$!`20`20user.`20Default`20values`20for`20each`20option`20should`20already`20ha
  954. Vve`20been`20set`20up
  955. X$!`20`20by`20the`20get_default_parameters`20routine.
  956. X$!`20`20
  957. X$!`20-------------------------------------------------------------------------
  958. V--
  959. X$Break_Out_Options:
  960. X$`20if`20Qualifiers`20.nes.`20""
  961. X$`20`20`20then
  962. X$`20`20`20`20`20ThisQual`20=`20Qualifiers`20-`20"/"
  963. X$`20`20`20`20`20ThisQual`20=`20f$extract(0,f$locate("/",ThisQual),ThisQual)
  964. X$`20`20`20`20`20Qualifiers`20=`20Qualifiers`20-`20"/"`20-`20ThisQual
  965. X$
  966. X$`20`20`20!`20First`20check`20for`20negated`20qualifiers`20and`20remember`20th
  967. Ve`20status
  968. X$`20`20`20`20`20if`20f$locate("NO",ThisQual)`20.eq.`200
  969. X$`20`20`20`20`20`20`20then
  970. X$`20`20`20`20`20`20`20`20`20ThisQual=ThisQual-"NO"
  971. X$`20`20`20`20`20`20`20`20`20Value="FALSE"
  972. X$`20`20`20`20`20`20`20else
  973. X$`20`20`20`20`20`20`20`20`20Value="TRUE"
  974. X$`20`20`20`20`20endif
  975. X$
  976. X$`20`20`20!`20Extract`20any`20equivalence`20value`20for`20parameters`20which
  977. V`20expect`20them
  978. X$`20`20`20`20`20Equiv`20`20`20`20=`20f$element(1,"=",ThisQual)
  979. X$`20`20`20`20`20ThisQual`20=`20f$element(0,"=",ThisQual)
  980. X$
  981. X$!`20Detect`20ambiguous`20qualifier`20/B
  982. X$`20`20`20`20`20if`20f$locate(ThisQual,"B")`20.eq.`200`20then`20$`20goto`20BOO
  983. V_AmbigQual
  984. X$
  985. X$!`20/BACKUP
  986. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("BACKUP"),ThisQual),"BACKUP
  987. V")`20.eq.`200
  988. X$`20`20`20`20`20`20`20then
  989. X$`20`20`20`20`20`20`20`20`20if`20.not.`20Value`20then`20$`20goto`20BOO_NonNegQ
  990. Vual
  991. X$`20`20`20`20`20`20`20`20`20if`20Equiv`20.nes.`20"="`20then`20$`20goto`20BOO_Q
  992. VualNoValue
  993. X$`20`20`20`20`20`20`20`20`20Criteria`20=`20"BDT"
  994. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  995. X$`20`20`20`20`20endif
  996. X$
  997. X$!`20/BEFORE`5B=date`5D
  998. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("BEFORE"),ThisQual),"BEFORE
  999. V")`20.eq.`200
  1000. X$`20`20`20`20`20`20`20then
  1001. X$`20`20`20`20`20`20`20`20`20Before`20=`20""
  1002. X$`20`20`20`20`20`20`20`20`20if`20Value`20.and.`20Equiv`20.nes.`20"="`20then
  1003. V`20$`20Before`20=`20Equiv
  1004. X$`20`20`20`20`20`20`20`20`20if`20Value`20.and.`20Equiv`20.eqs.`20"="`20then
  1005. V`20$`20Before`20=`20"TODAY"
  1006. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1007. X$`20`20`20`20`20endif
  1008. X$
  1009. X$!`20Detect`20ambiguous`20qualifier`20/CO
  1010. X$`20`20`20`20`20if`20f$locate(ThisQual,"CO")`20.eq.`200`20then`20$`20goto`20BO
  1011. VO_AmbigQual
  1012. X$
  1013. X$!`20/COMPRESS`5B=n`5D
  1014. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("COMPRESS"),ThisQual),"COMP
  1015. VRESS")`20.eq.`200
  1016. X$`20`20`20`20`20`20`20then
  1017. X$`20`20`20`20`20`20`20`20`20Compression`20=`20Value
  1018. X$`20`20`20`20`20`20`20`20`20if`20Compression`20.and.`20Equiv`20.nes.`20"="`20t
  1019. Vhen`20$`20Compression`20=`20Equiv
  1020. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1021. X$`20`20`20`20`20endif
  1022. X$
  1023. X$!`20/CONFIRM
  1024. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("CONFIRM"),ThisQual),"CONFI
  1025. VRM")`20.eq.`200
  1026. X$`20`20`20`20`20`20`20then
  1027. X$`20`20`20`20`20`20`20`20`20Confirm`20=`20Value
  1028. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1029. X$`20`20`20`20`20endif
  1030. X$
  1031. X$!`20/CREATED
  1032. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("CREATED"),ThisQual),"CREAT
  1033. VED")`20.eq.`200
  1034. X$`20`20`20`20`20`20`20then
  1035. X$`20`20`20`20`20`20`20`20`20if`20.not.`20Value`20then`20$`20goto`20BOO_NonNegQ
  1036. Vual
  1037. X$`20`20`20`20`20`20`20`20`20if`20Equiv`20.nes.`20"="`20then`20$`20goto`20BOO_Q
  1038. VualNoValue
  1039. X$`20`20`20`20`20`20`20`20`20Criteria`20=`20"CDT"
  1040. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1041. X$`20`20`20`20`20endif
  1042. X$
  1043. X$!`20Detect`20ambiguous`20qualifier`20/D
  1044. X$`20`20`20`20`20if`20f$locate(ThisQual,"D")`20.eq.`200`20then`20$`20goto`20BOO
  1045. V_AmbigQual
  1046. X$
  1047. X$!`20/DEBUG`5B=n`5D
  1048. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("DEBUG"),ThisQual),"DEBUG")
  1049. V`20.eq.`200
  1050. X$`20`20`20`20`20`20`20then
  1051. X$`20`20`20`20`20`20`20`20`20Debugging`20=`20Value
  1052. X$`20`20`20`20`20`20`20`20`20if`20Debugging`20.and.`20Equiv`20.nes.`20"="`20the
  1053. Vn`20$`20Debugging`20=`20Equiv
  1054. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1055. X$`20`20`20`20`20endif
  1056. X$
  1057. X$!`20/DIRECTORY
  1058. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("DIRECTORY"),ThisQual),"DIR
  1059. VECTORY")`20.eq.`200
  1060. X$`20`20`20`20`20`20`20then
  1061. X$`20`20`20`20`20`20`20`20`20if`20Equiv`20.nes.`20"="`20then`20$`20goto`20BOO_Q
  1062. VualNoValue
  1063. X$`20`20`20`20`20`20`20`20`20DirKeep`20=`20Value
  1064. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1065. X$`20`20`20`20`20endif
  1066. X$
  1067. X$!`20Detect`20ambiguous`20qualifier`20/EX
  1068. X$`20`20`20`20`20if`20f$locate(ThisQual,"EX")`20.eq.`200`20then`20$`20goto`20BO
  1069. VO_AmbigQual
  1070. X$
  1071. X$!`20/EXCLUDE
  1072. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("EXCLUDE"),ThisQual),"EXCLU
  1073. VDE")`20.eq.`200
  1074. X$`20`20`20`20`20`20`20then
  1075. X$`20`20`20`20`20`20`20`20`20Exclude`20=`20""
  1076. X$`20`20`20`20`20`20`20`20`20if`20Value`20.and.`20Equiv`20.nes.`20"="`20then
  1077. V`20$`20Exclude`20=`20Equiv
  1078. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1079. X$`20`20`20`20`20endif
  1080. X$
  1081. X$!`20/EXPIRED
  1082. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("EXPIRED"),ThisQual),"EXPIR
  1083. VED")`20.eq.`200
  1084. X$`20`20`20`20`20`20`20then
  1085. X$`20`20`20`20`20`20`20`20`20if`20.not.`20Value`20then`20$`20goto`20BOO_NonNegQ
  1086. Vual
  1087. X$`20`20`20`20`20`20`20`20`20if`20Equiv`20.nes.`20"="`20then`20$`20goto`20BOO_Q
  1088. VualNoValue
  1089. X$`20`20`20`20`20`20`20`20`20Criteria`20=`20"EDT"
  1090. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1091. X$`20`20`20`20`20endif
  1092. X$
  1093. X$!`20Detect`20ambiguous`20qualifier`20/LO
  1094. X$`20`20`20`20`20if`20f$locate(ThisQual,"LO")`20.eq.`200`20then`20$`20goto`20BO
  1095. VO_AmbigQual
  1096. X$
  1097. X$!`20/LOG`5B=n`5D
  1098. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("LOG"),ThisQual),"LOG")`20.
  1099. Veq.`200
  1100. X$`20`20`20`20`20`20`20then
  1101. X$`20`20`20`20`20`20`20`20`20Logging`20=`20Value
  1102. X$`20`20`20`20`20`20`20`20`20if`20Logging`20.and.`20Equiv`20.nes.`20"="`20then
  1103. V`20$`20Logging=Equiv
  1104. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1105. X$`20`20`20`20`20endif
  1106. X$
  1107. X$!`20/LONGLINES
  1108. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("LONGLINES"),ThisQual),"LON
  1109. VGLINES")`20.eq.`200
  1110. X$`20`20`20`20`20`20`20then
  1111. X$`20`20`20`20`20`20`20`20`20if`20Equiv`20.nes.`20"="`20then`20$`20goto`20BOO_Q
  1112. VualNoValue
  1113. X$`20`20`20`20`20`20`20`20`20LongLines`20=`20Value
  1114. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1115. X$`20`20`20`20`20endif
  1116. X$
  1117. X$!`20/MODIFIED
  1118. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("MODIFIED"),ThisQual),"MODI
  1119. VFIED")`20.eq.`200
  1120. X$`20`20`20`20`20`20`20then
  1121. X$`20`20`20`20`20`20`20`20`20if`20.not.`20Value`20then`20$`20goto`20BOO_NonNegQ
  1122. Vual
  1123. X$`20`20`20`20`20`20`20`20`20if`20Equiv`20.nes.`20"="`20then`20$`20goto`20BOO_Q
  1124. VualNoValue
  1125. X$`20`20`20`20`20`20`20`20`20Criteria`20=`20"RDT"
  1126. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1127. X$`20`20`20`20`20endif
  1128. X$
  1129. X$!`20Detect`20ambiguous`20qualifier`20/PA
  1130. X$`20`20`20`20`20if`20f$locate(ThisQual,"PA")`20.eq.`200`20then`20$`20goto`20BO
  1131. VO_AmbigQual
  1132. X$
  1133. X$!`20/PACKAGE_INDEX
  1134. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("PACKAGE_INDEX"),ThisQual),
  1135. V"PACKAGE_INDEX")`20.eq.`200
  1136. X$`20`20`20`20`20`20`20then
  1137. X$`20`20`20`20`20`20`20`20`20PackageIdx`20=`20Value
  1138. X$`20`20`20`20`20`20`20`20`20if`20PackageIdx`20.and.`20Equiv`20.nes.`20"="`20th
  1139. Ven`20$`20PackageIdx`20=`20Equiv
  1140. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1141. X$`20`20`20`20`20endif
  1142. X$
  1143. X$!`20/PART_SIZE=nnn
  1144. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("PART_SIZE"),ThisQual),"PAR
  1145. VT_SIZE")`20.eq.`200
  1146. X$`20`20`20`20`20`20`20then
  1147. X$`20`20`20`20`20`20`20`20`20if`20.not.`20Value`20then`20$`20goto`20BOO_NonNegQ
  1148. Vual
  1149. X$`20`20`20`20`20`20`20`20`20if`20equiv`20.eqs.`20"="`20then`20$`20goto`20BOO_Q
  1150. Vual_Val_Required
  1151. X$`20`20`20`20`20`20`20`20`20Part_Size`20=`20Equiv
  1152. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1153. X$`20`20`20`20`20endif
  1154. X$
  1155. X$!`20/SINCE`5B=date`5D
  1156. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("SINCE"),ThisQual),"SINCE")
  1157. V`20.eq.`200
  1158. X$`20`20`20`20`20`20`20then
  1159. X$`20`20`20`20`20`20`20`20`20Since`20=`20""
  1160. X$`20`20`20`20`20`20`20`20`20if`20Value`20.and.`20Equiv`20.nes.`20"="`20then
  1161. V`20$`20Since`20=`20Equiv
  1162. X$`20`20`20`20`20`20`20`20`20if`20Value`20.and.`20Equiv`20.eqs.`20"="`20then
  1163. V`20$`20Since`20=`20"TODAY"
  1164. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1165. X$`20`20`20`20`20endif
  1166. X$
  1167. X$!`20/VERSION
  1168. X$`20`20`20`20`20if`20f$locate(f$extract(0,f$length("VERSION"),ThisQual),"VERSI
  1169. VON")`20.eq.`200
  1170. X$`20`20`20`20`20`20`20then
  1171. X$`20`20`20`20`20`20`20`20`20if`20Equiv`20.nes.`20"="`20then`20$`20goto`20BOO_Q
  1172. VualNoValue
  1173. X$`20`20`20`20`20`20`20`20`20VersKeep`20=`20Value
  1174. X$`20`20`20`20`20`20`20`20`20goto`20Break_Out_Options
  1175. X$`20`20`20`20`20endif
  1176. X$
  1177. X$!`20Something`20else`20..
  1178. X$`20`20`20`20`20em`20"-E-UNRECQUAL,`20Invalid`20qualifier`20specified"
  1179. X$`20`20`20`20`20if`20.not.`20Value`20then`20$`20ThisQual`20=`20"NO"`20+`20This
  1180. VQual
  1181. X$`20`20`20`20`20write`20sys$error`20"`20`20`5C",`20ThisQual,`20"`5C"
  1182. X$`20`20`20`20`20goto`20abort
  1183. X$`20endif
  1184. X$`20return
  1185. X$
  1186. X$
  1187. X$BOO_AmbigQual:
  1188. X$`20if`20.not.`20value`20then`20$`20ThisQual`20=`20"NO"`20+`20ThisQual
  1189. X$`20em`20"-E-AMBIG,`20/",`20ThisQual,`20"`20is`20an`20ambiguous`20qualifier"
  1190. X$`20goto`20abort
  1191. X$
  1192. X$BOO_NonNegQual:
  1193. X$`20em`20"-E-NONNEG,`20/NO",`20ThisQual,`20"`20is`20not`20a`20negatable`20qual
  1194. Vifier"
  1195. X$`20goto`20abort
  1196. X$
  1197. X$BOO_QualNoVal:
  1198. X$`20em`20"-E-NOTREQ,`20",`20ThisQual,`20"`20does`20not`20take`20a`20value`20sp
  1199. Vecification"
  1200. X$`20goto`20abort
  1201. X$
  1202. XBOO_Qual_Val_Required:
  1203. X$`20em`20"-E-VALREQ,`20",`20Thisqual,`20"`20requires`20a`20value`20specificati
  1204. Von"
  1205. X$`20goto`20abort
  1206. X$!`0C
  1207. X$!`20-------------------------------------------------------------------------
  1208. V--
  1209. X$!`20CHECK`20PARAMETERS
  1210. X$!
  1211. X$!`20`20`20Check`20that`20the`20user`20supplied`20parameters`20have`20reasonab
  1212. Vle`20values`20and
  1213. X$!`20`20`20give`20errors`20if`20not.`20In`20some`20cases,`20set`20up`20default
  1214. Vs.
  1215. X$!
  1216. X$!`20-------------------------------------------------------------------------
  1217. V--
  1218. X$Check_Parameters:
  1219. X$!`20CHECK`20THE`20LONG`20LINES`20OPTION;`20ONLY`20ALLOWED`20IF`20THIS`20VMS
  1220. V`20SUPPORTS`20IT
  1221. X$`20if`20LongLines
  1222. X$`20`20`20then
  1223. X$`20`20`20`20`20if`20VMSx`20.lts.`20Min_VMS_For_LongLines
  1224. X$`20`20`20`20`20`20`20then
  1225. X$`20`20`20`20`20`20`20`20`20em`20"-E-NOLONG,`20Long`20lines`20not`20supported
  1226. V`20prior`20to`20VMS`20",`20Min_VMS_For_LongLines
  1227. X$`20`20`20`20`20`20`20`20`20goto`20abort
  1228. X$`20`20`20`20`20endif
  1229. X$`20`20`20`20`20Max_TPU_Line_Length`20=`20Max_Line_NewTPU
  1230. X$`20`20`20`20`20Min_VMS_To_Unpack`20`20`20=`20Min_VMS_For_LongLines
  1231. X$`20endif
  1232. X$
  1233. X$
  1234. X$!`20CHECK`20THE`20PART`20SIZE`20SPECIFICATION
  1235. X$`20if`20Part_Size`20.eqs.`20""`20then`20$`20Part_Size`20=`20Def_Part_Size
  1236. X$`20if`20f$type(Part_Size)`20.nes.`20"INTEGER"
  1237. X$`20`20`20then
  1238. X$`20`20`20`20`20em`20"-E-NONNUMSIZE,`20Part`20size`20is`20not`20numeric"
  1239. X$`20`20`20`20`20goto`20abort
  1240. X$`20endif
  1241. X$`20if`20Part_Size`20.le.`200
  1242. X$`20`20`20then
  1243. X$`20`20`20`20`20em`20"-E-NONPOSSIZE,`20Part`20size`20is`20not`20a`20positive
  1244. V`20value"
  1245. X$`20`20`20`20`20goto`20abort
  1246. X$`20endif
  1247. X$
  1248. X$
  1249. X$!`20MASSAGE`20THE`20SHARE`20FILE`20NAME
  1250. X$`20ShareFile`20=`20f$parse(ShareFile,"`5B`5D")`20-`20f$parse(ShareFile,,,"VER
  1251. VSION")
  1252. X$`20if`20f$parse(ShareFile,,,"TYPE")`20.nes.`20"."`20then`20$`20ShareFile`20=
  1253. V`20ShareFile`20+`20"_"
  1254. X$`20
  1255. X$
  1256. X$!`20CHECK`20THE`20PACKAGE`20INDEX`20SUFFIX`20SPECIFICATION
  1257. X$`20if`20f$extract(0,1,PackageIdx)`20.nes.`20"."
  1258. X$`20`20`20then
  1259. X$`20`20`20`20`20if`20PackageIdx
  1260. X$`20`20`20`20`20`20`20then`20PackageIdx`20=`20".$PACKAGE"`09!`20Set`20default
  1261. V`20suffix`20for`20"TRUE"`20value
  1262. X$`20`20`20`20`20`20`20else`20PackageIdx`20=`20""`09`09!`20Set`20no`20suffix
  1263. V`20for`20"FALSE"`20value
  1264. X$`20`20`20`20`20endif
  1265. X$`20`20`20else
  1266. X$`20`20`20`20`20if`20f$parse(PackageIdx,,,"TYPE")`20.nes.`20PackageIdx
  1267. X$`20`20`20`20`20`20`20then
  1268. X$`20`20`20`20`20`20`20`20`20em`20"-E-INVSUFFIX,`20Invalid`20package`20index
  1269. V`20file`20suffix`20specification`20",`20PackageIdx
  1270. X$`20`20`20`20`20`20`20`20`20goto`20abort
  1271. X$`20`20`20`20`20endif
  1272. X$`20endif
  1273. X$
  1274. X$
  1275. X$!`20WE`20ALLOW`20DEBUGGING`20ONLY`20FOR`20SYSTEMS`20PEOPLE,`20WITH`20EITHER
  1276. V`20SYSPRV`20OR`20SETPRV
  1277. X$!`20AUTHORIZED`20(DOESN'T`20HAVE`20TO`20BE`20ENABLED,`20JUST`20AUTHORIZED)
  1278. X$`20x`20=`20f$getjpi("","AUTHPRIV")
  1279. X$`20l`20=`20f$length(x)
  1280. X$`20if`20f$locate("SYSPRV",x)`20.eq.`20l`20.and.`20f$locate("SETPRV",x)`20.eq.
  1281. V`20l`20then`20$`20Debugging`20=`20"FALSE"
  1282. X$
  1283. X$
  1284. X$!`20CONVERT`20COMPRESSION/LOGGING/DEBUGGING`20FLAGS`20TO`20SUITABLE`20INTEGER
  1285. V`20VALUES
  1286. X$!`20FALSE`20becomes`20numeric`200,`20TRUE`20becomes`20numeric`201;`20if`20int
  1287. Veger,`20use`20that`20value
  1288. X$`20Compression=`20f$integer(Compression)
  1289. X$`20Debugging`20`20=`20f$integer(Debugging)
  1290. X$`20Logging`20`20`20`20=`20f$integer(Logging)
  1291. X$`20if`20DirKeep`20`20.eqs.`20""`20then`20$`20DirKeep`20`20=`20"T"`09!`20Defau
  1292. Vlt`20is`20to`20keep`20them
  1293. X$`20Dirkeep`20`20`20`20=`20f$integer(DirKeep)
  1294. X$`20if`20Verskeep`20.eqs.`20""`20then`20$`20Verskeep`20=`20"T"`09!`20Default
  1295. V`20is`20to`20keep`20them
  1296. X$`20VersKeep`20`20`20=`20f$integer(VersKeep)
  1297. X$
  1298. X$
  1299. X$!`20CHECK`20COMPRESSION`20VALUE`20IS`20WITHIN`20LIMITS`20CURRENTLY`20SUPPORTE
  1300. VD
  1301. X$`20if`20Compression`20.lt.`200`20`20.or.`20Compression`20.gt.`202
  1302. X$`20`20`20then
  1303. X$`20`20`20`20`20em`20"-E-UNSUPCOM,`20Unsupported`20compression`20type"
  1304. X$`20`20`20`20`20goto`20abort
  1305. X$`20endif
  1306. X$
  1307. X$!`20CHECK`20THE`20BEFORE/SINCE`20DATE`20SPECIFICATIONS
  1308. X$`20if`20Before`20.nes.`20""
  1309. X$`20`20`20then
  1310. X$`20`20`20`20`20Before`20=`20f$cvtime(Before,"COMPARISON")
  1311. X$`20`20`20`20`20if`20.not.`20$status
  1312. X$`20`20`20`20`20`20`20then
  1313. X$`20`20`20`20`20`20`20`20`20em`20"-E-INVTIME,`20Bad`20/BEFORE`20time`20specifi
  1314. Vcation`20-`20",`20Before
  1315. X$`20`20`20`20`20`20`20`20`20goto`20abort
  1316. X$`20`20`20`20`20endif
  1317. X$`20endif
  1318. X$`20if`20Since`20.nes.`20""
  1319. X$`20`20`20then
  1320. X$`20`20`20`20`20Since`20`20=`20f$cvtime(Since,"COMPARISON")
  1321. X$`20`20`20`20`20if`20.not.`20$status
  1322. X$`20`20`20`20`20`20`20then
  1323. X$`20`20`20`20`20`20`20`20`20em`20"-E-INVTIME,`20Bad`20/SINCE`20time`20specific
  1324. Vation`20-`20",`20Since
  1325. X$`20`20`20`20`20`20`20`20`20goto`20abort
  1326. X$`20`20`20`20`20endif
  1327. X$`20endif
  1328. X$
  1329. X$
  1330. X$!`20CONFIRMATION`20OF`20EACH`20FILE`20SELECTED`20IS`20ONLY`20AVAILABLE`20IF
  1331. V`20INTERACTIVE`20AS`20WE
  1332. X$!`20CAN'T`20PROMPT`20ANYONE`20OTHERWISE.
  1333. X$`20if`20Confirm`20.and.`20f$mode()`20.nes.`20"INTERACTIVE"
  1334. X$`20`20`20then
  1335. X$`20`20`20`20`20`20em`20"-w-CONFNOTINT,`20/CONFIRM`20ignored`20-`20not`20inter
  1336. Vactive"
  1337. X$`20`20`20`20`20`20Confirm`20=`20"FALSE"
  1338. X$`20endif
  1339. X$`20return
  1340. X$!`0C
  1341. X$!`20-------------------------------------------------------------------------
  1342. V--
  1343. X$!`20CREATE`20PARAMETER`20FILE
  1344. X$!
  1345. X$!`20`20`20Write`20a`20file`20containing`20all`20the`20parameters,`20options
  1346. V`20and`20filenames`20which`20the
  1347. X$!`20`20`20Packing`20routine`20needs`20to`20process.
  1348. X$!
  1349. X$!`20-------------------------------------------------------------------------
  1350. V--
  1351. X$Create_Parameter_File:
  1352. X$`20IfDebug`20=`20"if`20debugging`20.ge.`20DEBUG_ShowParams`20then`20$`20"`20+
  1353. V`20em
  1354. X$`20create`20`26TempFile
  1355. X$`20if`20.not.`20$status`20then`20$`20goto`20CPF_error1
  1356. X$`20open/append/error=CPF_error2`20SHARE_PARAMS`20`26TempFile
  1357. X$`20write/error=CPF_error2`20SHARE_PARAMS`20Facility
  1358. X$`20IfDebug`20"-I-DBGPARAM,`20Facility`20`20`20`20`20`20`20`20`20`20`20=`20",
  1359. V`20Facility
  1360. X$`20write/error=CPF_error2`20SHARE_PARAMS`20Version
  1361. X$`20IfDebug`20"-I-DBGPARAM,`20Version`20`20`20`20`20`20`20`20`20`20`20`20=`20"
  1362. V,`20Version
  1363. X$`20write/error=CPF_error2`20SHARE_PARAMS`20Min_VMS_to_Unpack
  1364. X$`20IfDebug`20"-I-DBGPARAM,`20Min_VMS_To_Unpack`20`20=`20",`20Min_VMS_To_Unpac
  1365. +-+-+-+-+-+-+-+-  END  OF PART 1 +-+-+-+-+-+-+-+-
  1366.