macros 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. ?section ADD^LIST routine
  2. [#IF [#ARGUMENT /VALUE item/ WORD/SPACE/]]
  3. #APPEND bin ADD * FROM [item]
  4. #SET itime [#FILEINFO /MODIFICATION/ [item]]
  5. [#IF itime > ntime |THEN| #SETV ntime itime]
  6. ?section BBZIPLIB MACRO
  7. #FRAME
  8. #push bin item ntime itime libtime
  9. #SET ntime 0
  10. #OUTPUT Building [lib]
  11. #APPEND bin CLEAR
  12. add^list CRC32O
  13. add^list CRYPTO
  14. add^list DEFLATEO
  15. add^list FILEIOO
  16. add^list GLOBALSO
  17. add^list TANDEMO
  18. add^list TANZIPO
  19. add^list TREESO
  20. add^list TTYIOO
  21. add^list UTILO
  22. add^list ZIPFILEO
  23. add^list ZIPUPO
  24. #APPEND bin INFO UNRESOLVED *
  25. #APPEND bin BUILD [lib] ! , LIST * OFF
  26. #SET libtime [#FILEINFO /MODIFICATION/ [lib]]
  27. [#IF libtime < ntime
  28. |THEN|
  29. #OUTPUT [lib] needs re-building
  30. BIND /NAME,INV BIN/
  31. [#CASE [tacl^completioncode]
  32. | 0 | #OUTPUT Bound [lib] OK
  33. | 1 | #OUTPUT [lib]: BIND Failed with Warnings
  34. | OTHERWISE | #OUTPUT [lib]: BIND Failed with ERRORS !
  35. ]
  36. |ELSE|
  37. #OUTPUT [lib] is up to date
  38. ]
  39. #UNFRAME
  40. ?section BBZIP MACRO
  41. #FRAME
  42. #push bin ziptime build
  43. #SET build 0
  44. #OUTPUT Building %1% with %2% memory model
  45. #APPEND bin CLEAR
  46. #APPEND bin ADD * FROM ZIPO
  47. #APPEND bin select search ($system.system.c%2%, [lib])
  48. #APPEND bin select runnable object on
  49. #APPEND bin select list * off
  50. #APPEND bin set heap 20 pages
  51. #APPEND bin set symbols on
  52. #APPEND bin set saveabend on
  53. #APPEND bin set inspect on
  54. #APPEND bin info unresolved *
  55. #APPEND bin BUILD %1% !
  56. #SET ziptime [#FILEINFO /MODIFICATION/ %1%]
  57. [#IF ziptime < [#FILEINFO /MODIFICATION/ ZIPO] |THEN|
  58. #OUTPUT %1% is older than ZIPO
  59. #SET build -1
  60. ]
  61. [#IF ziptime < [#FILEINFO /MODIFICATION/ [lib]] |THEN|
  62. #OUTPUT %1% is older than [lib]
  63. #SET build -1
  64. ]
  65. [#IF build
  66. |THEN|
  67. #OUTPUT %1% is out of date, re-building
  68. BIND /NAME,INV BIN/
  69. [#CASE [tacl^completioncode]
  70. | 0 | #OUTPUT Bound %1% OK
  71. | 1 | #OUTPUT %1%: BIND Failed with Warnings
  72. | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS !
  73. ]
  74. |ELSE|
  75. #OUTPUT %1% is up to date, no re-build required
  76. ]
  77. #UNFRAME
  78. ?section BBANY MACRO
  79. #FRAME
  80. #push bin memory anytime build
  81. #SET build 0
  82. #SETMANY memory, %2% LARGE
  83. #OUTPUT Building %1% with [memory] memory model
  84. #APPEND bin CLEAR
  85. #APPEND bin ADD * FROM %1%O
  86. #APPEND bin select search ($system.system.c[memory],[lib])
  87. #APPEND bin select runnable object on
  88. #APPEND bin select list * off
  89. #APPEND bin set heap 20 pages
  90. #APPEND bin set symbols on
  91. #APPEND bin set saveabend on
  92. #APPEND bin set inspect on
  93. #APPEND bin info unresolved *
  94. #APPEND bin BUILD %1% !
  95. #SET anytime [#FILEINFO /MODIFICATION/ %1%]
  96. [#IF anytime < [#FILEINFO /MODIFICATION/ %1%O] |THEN|
  97. #OUTPUT %1% is older than %1%O
  98. #SET build -1
  99. ]
  100. [#IF anytime < [#FILEINFO /MODIFICATION/ [lib]] |THEN|
  101. #OUTPUT %1% is older than [lib]
  102. #SET build -1
  103. ]
  104. [#IF build
  105. |THEN|
  106. #OUTPUT %1% is out of date, re-building
  107. BIND /NAME,INV BIN/
  108. [#CASE [tacl^completioncode]
  109. | 0 | #OUTPUT Bound %1% OK
  110. | 1 | #OUTPUT %1%: BIND Failed with Warnings
  111. | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS !
  112. ]
  113. |ELSE|
  114. #OUTPUT %1% is up to date, no re-build required
  115. ]
  116. #UNFRAME
  117. ?section BBUNZIPLIB MACRO
  118. #FRAME
  119. #push bin item ntime itime libtime
  120. #SET ntime 0
  121. #OUTPUT Building [lib]
  122. #APPEND bin CLEAR
  123. add^list CRC32O
  124. add^list CRYPTO
  125. add^list ENVARGSO
  126. add^list EXPLODEO
  127. add^list EXTRACTO
  128. add^list FILEIOO
  129. add^list GLOBALSO
  130. add^list INFLATEO
  131. add^list LISTO
  132. add^list MATCHO
  133. add^list PROCESSO
  134. add^list TANDEMO
  135. add^list TANUNZO
  136. add^list TTYIOO
  137. add^list UNSHRINO
  138. add^list ZIPINFOO
  139. #APPEND bin INFO UNRESOLVED *
  140. #APPEND bin BUILD [lib] ! , LIST * OFF
  141. #SET libtime [#FILEINFO /MODIFICATION/ [lib]]
  142. [#IF libtime < ntime
  143. |THEN|
  144. #OUTPUT [lib] needs re-building
  145. BIND /NAME,INV BIN/
  146. [#CASE [tacl^completioncode]
  147. | 0 | #OUTPUT Bound [lib] OK
  148. | 1 | #OUTPUT [lib]: BIND Failed with Warnings
  149. | OTHERWISE | #OUTPUT [lib]: BIND Failed with ERRORS !
  150. ]
  151. |ELSE|
  152. #OUTPUT [lib] is up to date
  153. ]
  154. #UNFRAME
  155. ?section BBUNZIP MACRO
  156. #FRAME
  157. #push bin ziptime build
  158. #SET build 0
  159. #OUTPUT Building %1% with %2% memory model
  160. #APPEND bin CLEAR
  161. #APPEND bin ADD * FROM UNZIPO
  162. #APPEND bin select search ($system.system.c%2%,[lib])
  163. #APPEND bin select runnable object on
  164. #APPEND bin select list * off
  165. #APPEND bin set heap 20 pages
  166. #APPEND bin set symbols on
  167. #APPEND bin set saveabend on
  168. #APPEND bin set inspect on
  169. #APPEND bin info unresolved *
  170. #APPEND bin BUILD %1% !
  171. #SET ziptime [#FILEINFO /MODIFICATION/ %1%]
  172. [#IF ziptime < [#FILEINFO /MODIFICATION/ UNZIPO] |THEN|
  173. #OUTPUT %1% is older than UNZIPO
  174. #SET build -1
  175. ]
  176. [#IF ziptime < [#FILEINFO /MODIFICATION/ [lib]] |THEN|
  177. #OUTPUT %1% is older than [lib]
  178. #SET build -1
  179. ]
  180. [#IF build
  181. |THEN|
  182. #OUTPUT %1% is out of date, re-building
  183. BIND /NAME,INV BIN/
  184. [#CASE [tacl^completioncode]
  185. | 0 | #OUTPUT Bound %1% OK
  186. | 1 | #OUTPUT %1%: BIND Failed with Warnings
  187. | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS !
  188. ]
  189. |ELSE|
  190. #OUTPUT %1% is up to date, no re-build required
  191. ]
  192. #UNFRAME
  193. ?section BBSFXLIB MACRO
  194. #FRAME
  195. #push bin item ntime itime libtime
  196. #SET ntime 0
  197. #OUTPUT Building [lib]
  198. #APPEND bin CLEAR
  199. add^list CRC32O
  200. add^list EXTRACTX
  201. add^list FILEIOX
  202. add^list GLOBALSX
  203. add^list INFLATEX
  204. add^list MATCHX
  205. add^list PROCESSX
  206. add^list TANDEMX
  207. add^list TANUNZX
  208. add^list TTYIOX
  209. #APPEND bin INFO UNRESOLVED *
  210. #APPEND bin BUILD [lib] ! , LIST * OFF
  211. #SET libtime [#FILEINFO /MODIFICATION/ [lib]]
  212. [#IF libtime < ntime
  213. |THEN|
  214. #OUTPUT [lib] needs re-building
  215. BIND /NAME,INV BIN/
  216. [#CASE [tacl^completioncode]
  217. | 0 | #OUTPUT Bound [lib] OK
  218. | 1 | #OUTPUT [lib]: BIND Failed with Warnings
  219. | OTHERWISE | #OUTPUT [lib]: BIND Failed with ERRORS !
  220. ]
  221. |ELSE|
  222. #OUTPUT [lib] is up to date
  223. ]
  224. #UNFRAME
  225. ?section BBSFX MACRO
  226. #FRAME
  227. #push bin ziptime build
  228. #SET build 0
  229. #OUTPUT Building %1% with %2% memory model
  230. #APPEND bin CLEAR
  231. #APPEND bin ADD * FROM UNZIPX
  232. #APPEND bin select search ($system.system.c%2%,[lib])
  233. #APPEND bin select runnable object on
  234. #APPEND bin select list * off
  235. #APPEND bin set heap 20 pages
  236. #APPEND bin set symbols on
  237. #APPEND bin set saveabend on
  238. #APPEND bin set inspect on
  239. #APPEND bin info unresolved *
  240. #APPEND bin BUILD %1% !
  241. #SET ziptime [#FILEINFO /MODIFICATION/ %1%]
  242. [#IF ziptime < [#FILEINFO /MODIFICATION/ UNZIPX] |THEN|
  243. #OUTPUT %1% is older than UNZIPX
  244. #SET build -1
  245. ]
  246. [#IF ziptime < [#FILEINFO /MODIFICATION/ [lib]] |THEN|
  247. #OUTPUT %1% is older than [lib]
  248. #SET build -1
  249. ]
  250. [#IF build
  251. |THEN|
  252. #OUTPUT %1% is out of date, re-building
  253. BIND /NAME,INV BIN/
  254. [#CASE [tacl^completioncode]
  255. | 0 | #OUTPUT Bound %1% OK
  256. | 1 | #OUTPUT %1%: BIND Failed with Warnings
  257. | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS !
  258. ]
  259. |ELSE|
  260. #OUTPUT %1% is up to date, no re-build required
  261. ]
  262. #UNFRAME
  263. ?section accel^file MACRO
  264. #FRAME
  265. #PUSH buf
  266. [#IF [#FILEINFO /MODIFICATION/ %1%]
  267. > [#FILEINFO /MODIFICATION/ %2%]
  268. |THEN|
  269. #OUTPUT %2% is older than %1%
  270. #OUTPUT Accelerating %1% to %2%
  271. AXCEL /OUTV buf/ %1%,%2%
  272. #OUTPUTV buf
  273. [#CASE [tacl^completioncode]
  274. | 0 | #OUTPUT Accelerated %2% OK
  275. | 1 | #OUTPUT %2%: AXCEL Failed with Warnings
  276. | OTHERWISE | #OUTPUT %2%: AXCEL Failed with ERRORS !
  277. ]
  278. |ELSE|
  279. #OUTPUT %2% is up to date
  280. ]
  281. #UNFRAME
  282. ?section fup^license ROUTINE
  283. #FRAME
  284. #PUSH #DEFAULTS filename old^user current^user
  285. [#IF [#ARGUMENT /VALUE filename/ FILENAME]]
  286. #SET old^user [#USERNAME [#PROCESSINFO /PAID/]]
  287. #SETV current^user old^user
  288. [#LOOP |WHILE| current^user '<>' "SUPER.SUPER"
  289. AND NOT [#INPUTEOF]
  290. |DO|
  291. #OUTPUT Please log on as SUPER.SUPER (CTRL-Y aborts)
  292. logon SUPER.SUPER
  293. #SET current^user [#USERNAME [#PROCESSINFO /PAID/]]
  294. #OUTPUT
  295. ]
  296. [#IF current^user '=' "SUPER.SUPER" |THEN|
  297. #OUTPUT Licensing [filename]
  298. $SYSTEM.SYSTEM.FUP LICENSE [filename]
  299. ]
  300. [#LOOP |WHILE| current^user '<>' old^user
  301. AND NOT [#INPUTEOF]
  302. |DO|
  303. #OUTPUT Please log on as [old^user] (CTRL-Y aborts)
  304. logon [old^user]
  305. #SET current^user [#USERNAME [#PROCESSINFO /PAID/]]
  306. #OUTPUT
  307. ]
  308. #UNFRAME
  309. ?section CODE routine
  310. #FRAME
  311. #PUSH delta arg
  312. #SET /TYPE delta/ DELTA
  313. [#LOOP |WHILE| [#COMPUTE [#ARGUMENT /VALUE arg/ NUMBER END] = 1 ]
  314. |DO|
  315. #APPEND DELTA [arg]I
  316. ]
  317. #RESULT [#DELTA /COMMANDS DELTA/]
  318. #UNFRAME
  319. ?section TACL^COMPLETIONCODE routine
  320. #RESULT [_completion:completioncode]
  321. ?SECTION INCREMENT routine
  322. #FRAME
  323. #PUSH increment_variable increment_value
  324. [#IF [#ARGUMENT /VALUE increment_variable/ VARIABLE]]
  325. [#IF [#EMPTYV [increment_variable]]|THEN|#SET [increment_variable] 0]
  326. [#IF [#MORE]
  327. |THEN|
  328. [#IF [#ARGUMENT /VALUE increment_value/ NUMBER]]
  329. |ELSE|
  330. #SET increment_value 1
  331. ]
  332. [#IF [#ARGUMENT END]]
  333. #SET [increment_variable] [#COMPUTE [increment_variable] + [increment_value]]
  334. #UNFRAME
  335. ?section ERROR^IN^FUP^OUTPUT routine
  336. #FRAME
  337. #PUSH err output last line type
  338. #SETMANY err output, 0 0
  339. [#LOOP |WHILE| NOT [#EMPTYV fup^out]
  340. |DO|
  341. #EXTRACTV fup^out line
  342. [#SETMANY type, [#CHARGET line 1 TO 7] .]
  343. [#CASE [type]
  344. | ERROR | #SETMANY output err, -1 -1
  345. | WARNING | #SET output -1
  346. | OTHERWISE |
  347. ]
  348. [#IF output |THEN|
  349. #OUTPUTV last
  350. #OUTPUTV line
  351. #SET output 0
  352. #EXTRACTV fup^out line
  353. ]
  354. #SETV last line
  355. ]
  356. #RESULT [err]
  357. #UNFRAME
  358. ?section SECURE^FILE routine
  359. #FRAME
  360. [#DEF fup^out TEXT |BODY|]
  361. [#DEF fup^buf TEXT |BODY|]
  362. [#DEF fup^cmd MACRO |BODY|
  363. FUP /OUTV fup^out/ %*%
  364. #SETV fup^buf fup^out
  365. [#IF [error^in^fup^output]
  366. |THEN|
  367. #OUTPUT Error detected in FUP output, ABORTING !!
  368. #OUTPUT ..............................................................
  369. #OUTPUTV fup^buf
  370. #OUTPUT ..............................................................
  371. #RAISE _BREAK
  372. ]
  373. ]
  374. [#DEF display^action MACRO |BODY|
  375. [#IF NOT action |THEN|
  376. #OUTPUT /HOLD/ Updating [file] ...
  377. #SET action -1
  378. #SET count 0
  379. ]
  380. #OUTPUT /COLUMN 3/ ... %*%
  381. ]
  382. [#DEF display^noaction MACRO |BODY|
  383. [#IF count
  384. |THEN|
  385. increment count
  386. |ELSE|
  387. #OUTPUT
  388. #SET count 1
  389. ]
  390. [#IF count |THEN|
  391. #OUTPUT /COLUMN [count]/ [code 27]A.
  392. [#IF count > 75
  393. |THEN|
  394. #SET count 0
  395. ]
  396. ]
  397. ]
  398. [#DEF process^file TEXT |BODY|
  399. #SET action 0
  400. #SETMANY cur^owner cur^security cur^license cur^progid, &
  401. [#FILEINFO /OWNER, SECURITY, LICENSED, PROGID/ [file]]
  402. #SET cur^owner [#USERNAME [cur^owner]]
  403. [#IF NOT [#EMPTYV owner]
  404. |THEN|
  405. [#IF owner '<>' cur^owner
  406. |THEN|
  407. display^action giving to [owner] (was [cur^owner])
  408. fup^cmd GIVE [file], [owner]
  409. [#IF cur^progid
  410. |THEN|
  411. #OUTPUT /COLUMN 3/... WARNING! Loss of PROGID flag
  412. #SET cur^progid 0
  413. ]
  414. ]
  415. ]
  416. [#IF NOT [#EMPTYV security]
  417. |THEN|
  418. [#IF security '<>' cur^security
  419. |THEN|
  420. display^action securing to [security] (was [cur^security])
  421. fup^cmd SECURE [file], [security]
  422. ]
  423. ]
  424. [#IF license |THEN|
  425. [#IF NOT cur^license
  426. |THEN|
  427. display^action licensed
  428. fup^cmd LICENSE [file]
  429. ]
  430. ]
  431. [#IF progid |THEN|
  432. [#IF NOT cur^progid
  433. |THEN|
  434. display^action PROGID flag set
  435. fup^cmd SECURE [file],, PROGID
  436. ]
  437. ]
  438. [#IF action
  439. |THEN|
  440. fup^cmd INFO [file]
  441. |ELSE|
  442. [#IF tflag
  443. |THEN|
  444. display^noaction
  445. |ELSE|
  446. #OUTPUT /HOLD/ Unchanged : [file]
  447. [#IF cur^progid |THEN| #OUTPUT /COLUMN 39,HOLD/ P]
  448. [#IF cur^license |THEN| #OUTPUT /COLUMN 40,HOLD/ L]
  449. #OUTPUTV /COLUMN 43,HOLD/ cur^security
  450. #OUTPUTV /COLUMN 50,HOLD/ cur^owner
  451. #OUTPUT
  452. ]
  453. ]
  454. ]
  455. #PUSH arg template file security owner progid license prev action count tflag
  456. #PUSH cur^security cur^owner cur^license cur^progid
  457. #SETMANY license progid, 0 0
  458. #SET count 0
  459. #SET tflag 0
  460. [#LOOP |WHILE| [#MORE]
  461. |DO|
  462. [#CASE [#ARGUMENT /VALUE arg/ FILENAME
  463. USER /USERNAME/
  464. USER
  465. SECURITY
  466. KEYWORD /WORDLIST LICENSE/
  467. KEYWORD /WORDLIST PROGID/
  468. TEMPLATE
  469. ]
  470. | 1 | #SETV file arg
  471. | 2 | #SETV owner arg
  472. | 3 | #SET owner [#USERNAME [arg]]
  473. | 4 | #SETV security arg
  474. | 5 | #SET license -1
  475. | 6 | #SET progid -1
  476. | 7 | #SETV template arg
  477. ]
  478. ]
  479. [#IF [#ARGUMENT END]]
  480. [#IF [#EMPTYV template]
  481. |THEN|
  482. #SETV template file
  483. |ELSE|
  484. #SET tflag -1
  485. #OUTPUT /HOLD/ Template : [template]
  486. [#IF progid |THEN| #OUTPUT /COLUMN 39,HOLD/ P]
  487. [#IF license |THEN| #OUTPUT /COLUMN 40,HOLD/ L]
  488. [#IF NOT [#EMPTYV security] |THEN| #OUTPUTV /HOLD/ " "[security]""]
  489. [#IF NOT [#EMPTYV owner] |THEN| #OUTPUTV /HOLD/ " [owner]"]
  490. #OUTPUT
  491. ]
  492. [#IF [#EMPTYV template]
  493. |THEN|
  494. #OUTPUT ERROR! No filename specified
  495. #RESET FRAMES
  496. #RETURN
  497. |ELSE|
  498. #SET file [#FILENAMES /MAXIMUM 1/ [template]]
  499. [#LOOP |WHILE| NOT [#EMPTYV file]
  500. |DO|
  501. process^file
  502. #SETV prev file
  503. #SET file [#FILENAMES /MAXIMUM 1, PREVIOUS [prev]/ [template]]
  504. ]
  505. ]
  506. #UNFRAME