diff options
Diffstat (limited to 'tandem/macros')
-rw-r--r-- | tandem/macros | 571 |
1 files changed, 571 insertions, 0 deletions
diff --git a/tandem/macros b/tandem/macros new file mode 100644 index 0000000..ab1505b --- /dev/null +++ b/tandem/macros @@ -0,0 +1,571 @@ +?section ADD^LIST routine +[#IF [#ARGUMENT /VALUE item/ WORD/SPACE/]] +#APPEND bin ADD * FROM [item] +#SET itime [#FILEINFO /MODIFICATION/ [item]] +[#IF itime > ntime |THEN| #SETV ntime itime] + +?section BBZIPLIB MACRO +#FRAME +#push bin item ntime itime libtime +#SET ntime 0 + +#OUTPUT Building [lib] +#APPEND bin CLEAR +add^list CRC32O +add^list CRYPTO +add^list DEFLATEO +add^list FILEIOO +add^list GLOBALSO +add^list TANDEMO +add^list TANZIPO +add^list TREESO +add^list TTYIOO +add^list UTILO +add^list ZIPFILEO +add^list ZIPUPO +#APPEND bin INFO UNRESOLVED * +#APPEND bin BUILD [lib] ! , LIST * OFF + +#SET libtime [#FILEINFO /MODIFICATION/ [lib]] +[#IF libtime < ntime +|THEN| + #OUTPUT [lib] needs re-building + BIND /NAME,INV BIN/ + [#CASE [tacl^completioncode] + | 0 | #OUTPUT Bound [lib] OK + | 1 | #OUTPUT [lib]: BIND Failed with Warnings + | OTHERWISE | #OUTPUT [lib]: BIND Failed with ERRORS ! + ] +|ELSE| + #OUTPUT [lib] is up to date +] + +#UNFRAME + +?section BBZIP MACRO +#FRAME +#push bin ziptime build +#SET build 0 +#OUTPUT Building %1% with %2% memory model +#APPEND bin CLEAR +#APPEND bin ADD * FROM ZIPO +#APPEND bin select search ($system.system.c%2%, [lib]) +#APPEND bin select runnable object on +#APPEND bin select list * off +#APPEND bin set heap 20 pages +#APPEND bin set symbols on +#APPEND bin set saveabend on +#APPEND bin set inspect on +#APPEND bin info unresolved * +#APPEND bin BUILD %1% ! + +#SET ziptime [#FILEINFO /MODIFICATION/ %1%] +[#IF ziptime < [#FILEINFO /MODIFICATION/ ZIPO] |THEN| + #OUTPUT %1% is older than ZIPO + #SET build -1 +] +[#IF ziptime < [#FILEINFO /MODIFICATION/ [lib]] |THEN| + #OUTPUT %1% is older than [lib] + #SET build -1 +] +[#IF build +|THEN| + #OUTPUT %1% is out of date, re-building + BIND /NAME,INV BIN/ + [#CASE [tacl^completioncode] + | 0 | #OUTPUT Bound %1% OK + | 1 | #OUTPUT %1%: BIND Failed with Warnings + | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS ! + ] +|ELSE| + #OUTPUT %1% is up to date, no re-build required +] + +#UNFRAME + +?section BBANY MACRO +#FRAME +#push bin memory anytime build +#SET build 0 +#SETMANY memory, %2% LARGE +#OUTPUT Building %1% with [memory] memory model +#APPEND bin CLEAR +#APPEND bin ADD * FROM %1%O +#APPEND bin select search ($system.system.c[memory],[lib]) +#APPEND bin select runnable object on +#APPEND bin select list * off +#APPEND bin set heap 20 pages +#APPEND bin set symbols on +#APPEND bin set saveabend on +#APPEND bin set inspect on +#APPEND bin info unresolved * +#APPEND bin BUILD %1% ! + +#SET anytime [#FILEINFO /MODIFICATION/ %1%] +[#IF anytime < [#FILEINFO /MODIFICATION/ %1%O] |THEN| + #OUTPUT %1% is older than %1%O + #SET build -1 +] +[#IF anytime < [#FILEINFO /MODIFICATION/ [lib]] |THEN| + #OUTPUT %1% is older than [lib] + #SET build -1 +] +[#IF build +|THEN| + #OUTPUT %1% is out of date, re-building + BIND /NAME,INV BIN/ + [#CASE [tacl^completioncode] + | 0 | #OUTPUT Bound %1% OK + | 1 | #OUTPUT %1%: BIND Failed with Warnings + | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS ! + ] +|ELSE| + #OUTPUT %1% is up to date, no re-build required +] + +#UNFRAME + + +?section BBUNZIPLIB MACRO +#FRAME +#push bin item ntime itime libtime +#SET ntime 0 + +#OUTPUT Building [lib] +#APPEND bin CLEAR +add^list CRC32O +add^list CRYPTO +add^list ENVARGSO +add^list EXPLODEO +add^list EXTRACTO +add^list FILEIOO +add^list GLOBALSO +add^list INFLATEO +add^list LISTO +add^list MATCHO +add^list PROCESSO +add^list TANDEMO +add^list TANUNZO +add^list TTYIOO +add^list UNSHRINO +add^list ZIPINFOO +#APPEND bin INFO UNRESOLVED * +#APPEND bin BUILD [lib] ! , LIST * OFF + +#SET libtime [#FILEINFO /MODIFICATION/ [lib]] +[#IF libtime < ntime +|THEN| + #OUTPUT [lib] needs re-building + BIND /NAME,INV BIN/ + [#CASE [tacl^completioncode] + | 0 | #OUTPUT Bound [lib] OK + | 1 | #OUTPUT [lib]: BIND Failed with Warnings + | OTHERWISE | #OUTPUT [lib]: BIND Failed with ERRORS ! + ] +|ELSE| + #OUTPUT [lib] is up to date +] + +#UNFRAME + +?section BBUNZIP MACRO +#FRAME +#push bin ziptime build +#SET build 0 +#OUTPUT Building %1% with %2% memory model +#APPEND bin CLEAR +#APPEND bin ADD * FROM UNZIPO +#APPEND bin select search ($system.system.c%2%,[lib]) +#APPEND bin select runnable object on +#APPEND bin select list * off +#APPEND bin set heap 20 pages +#APPEND bin set symbols on +#APPEND bin set saveabend on +#APPEND bin set inspect on +#APPEND bin info unresolved * +#APPEND bin BUILD %1% ! + +#SET ziptime [#FILEINFO /MODIFICATION/ %1%] +[#IF ziptime < [#FILEINFO /MODIFICATION/ UNZIPO] |THEN| + #OUTPUT %1% is older than UNZIPO + #SET build -1 +] +[#IF ziptime < [#FILEINFO /MODIFICATION/ [lib]] |THEN| + #OUTPUT %1% is older than [lib] + #SET build -1 +] +[#IF build +|THEN| + #OUTPUT %1% is out of date, re-building + BIND /NAME,INV BIN/ + [#CASE [tacl^completioncode] + | 0 | #OUTPUT Bound %1% OK + | 1 | #OUTPUT %1%: BIND Failed with Warnings + | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS ! + ] +|ELSE| + #OUTPUT %1% is up to date, no re-build required +] + +#UNFRAME + +?section BBSFXLIB MACRO +#FRAME +#push bin item ntime itime libtime +#SET ntime 0 + +#OUTPUT Building [lib] +#APPEND bin CLEAR +add^list CRC32O +add^list EXTRACTX +add^list FILEIOX +add^list GLOBALSX +add^list INFLATEX +add^list MATCHX +add^list PROCESSX +add^list TANDEMX +add^list TANUNZX +add^list TTYIOX +#APPEND bin INFO UNRESOLVED * +#APPEND bin BUILD [lib] ! , LIST * OFF + +#SET libtime [#FILEINFO /MODIFICATION/ [lib]] +[#IF libtime < ntime +|THEN| + #OUTPUT [lib] needs re-building + BIND /NAME,INV BIN/ + [#CASE [tacl^completioncode] + | 0 | #OUTPUT Bound [lib] OK + | 1 | #OUTPUT [lib]: BIND Failed with Warnings + | OTHERWISE | #OUTPUT [lib]: BIND Failed with ERRORS ! + ] +|ELSE| + #OUTPUT [lib] is up to date +] + +#UNFRAME + +?section BBSFX MACRO +#FRAME +#push bin ziptime build +#SET build 0 +#OUTPUT Building %1% with %2% memory model +#APPEND bin CLEAR +#APPEND bin ADD * FROM UNZIPX +#APPEND bin select search ($system.system.c%2%,[lib]) +#APPEND bin select runnable object on +#APPEND bin select list * off +#APPEND bin set heap 20 pages +#APPEND bin set symbols on +#APPEND bin set saveabend on +#APPEND bin set inspect on +#APPEND bin info unresolved * +#APPEND bin BUILD %1% ! + +#SET ziptime [#FILEINFO /MODIFICATION/ %1%] +[#IF ziptime < [#FILEINFO /MODIFICATION/ UNZIPX] |THEN| + #OUTPUT %1% is older than UNZIPX + #SET build -1 +] +[#IF ziptime < [#FILEINFO /MODIFICATION/ [lib]] |THEN| + #OUTPUT %1% is older than [lib] + #SET build -1 +] +[#IF build +|THEN| + #OUTPUT %1% is out of date, re-building + BIND /NAME,INV BIN/ + [#CASE [tacl^completioncode] + | 0 | #OUTPUT Bound %1% OK + | 1 | #OUTPUT %1%: BIND Failed with Warnings + | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS ! + ] +|ELSE| + #OUTPUT %1% is up to date, no re-build required +] + +#UNFRAME + +?section accel^file MACRO +#FRAME +#PUSH buf +[#IF [#FILEINFO /MODIFICATION/ %1%] + > [#FILEINFO /MODIFICATION/ %2%] +|THEN| + #OUTPUT %2% is older than %1% + #OUTPUT Accelerating %1% to %2% + AXCEL /OUTV buf/ %1%,%2% + #OUTPUTV buf + [#CASE [tacl^completioncode] + | 0 | #OUTPUT Accelerated %2% OK + | 1 | #OUTPUT %2%: AXCEL Failed with Warnings + | OTHERWISE | #OUTPUT %2%: AXCEL Failed with ERRORS ! + ] +|ELSE| + #OUTPUT %2% is up to date +] + +#UNFRAME + +?section fup^license ROUTINE +#FRAME +#PUSH #DEFAULTS filename old^user current^user + +[#IF [#ARGUMENT /VALUE filename/ FILENAME]] + +#SET old^user [#USERNAME [#PROCESSINFO /PAID/]] +#SETV current^user old^user +[#LOOP |WHILE| current^user '<>' "SUPER.SUPER" + AND NOT [#INPUTEOF] +|DO| + #OUTPUT Please log on as SUPER.SUPER (CTRL-Y aborts) + logon SUPER.SUPER + #SET current^user [#USERNAME [#PROCESSINFO /PAID/]] + #OUTPUT +] + +[#IF current^user '=' "SUPER.SUPER" |THEN| + #OUTPUT Licensing [filename] + $SYSTEM.SYSTEM.FUP LICENSE [filename] +] + +[#LOOP |WHILE| current^user '<>' old^user + AND NOT [#INPUTEOF] +|DO| + #OUTPUT Please log on as [old^user] (CTRL-Y aborts) + logon [old^user] + #SET current^user [#USERNAME [#PROCESSINFO /PAID/]] + #OUTPUT +] + +#UNFRAME + + +?section CODE routine +#FRAME +#PUSH delta arg + +#SET /TYPE delta/ DELTA + +[#LOOP |WHILE| [#COMPUTE [#ARGUMENT /VALUE arg/ NUMBER END] = 1 ] +|DO| + #APPEND DELTA [arg]I +] + +#RESULT [#DELTA /COMMANDS DELTA/] + +#UNFRAME + + +?section TACL^COMPLETIONCODE routine +#RESULT [_completion:completioncode] + +?SECTION INCREMENT routine +#FRAME +#PUSH increment_variable increment_value + +[#IF [#ARGUMENT /VALUE increment_variable/ VARIABLE]] +[#IF [#EMPTYV [increment_variable]]|THEN|#SET [increment_variable] 0] +[#IF [#MORE] + |THEN| + [#IF [#ARGUMENT /VALUE increment_value/ NUMBER]] + |ELSE| + #SET increment_value 1 +] +[#IF [#ARGUMENT END]] + +#SET [increment_variable] [#COMPUTE [increment_variable] + [increment_value]] + +#UNFRAME + +?section ERROR^IN^FUP^OUTPUT routine +#FRAME +#PUSH err output last line type + +#SETMANY err output, 0 0 + +[#LOOP |WHILE| NOT [#EMPTYV fup^out] +|DO| + #EXTRACTV fup^out line + [#SETMANY type, [#CHARGET line 1 TO 7] .] + [#CASE [type] + | ERROR | #SETMANY output err, -1 -1 + | WARNING | #SET output -1 + | OTHERWISE | + ] + [#IF output |THEN| + #OUTPUTV last + #OUTPUTV line + #SET output 0 + #EXTRACTV fup^out line + ] + #SETV last line +] + +#RESULT [err] + +#UNFRAME + +?section SECURE^FILE routine +#FRAME + +[#DEF fup^out TEXT |BODY|] +[#DEF fup^buf TEXT |BODY|] + +[#DEF fup^cmd MACRO |BODY| + FUP /OUTV fup^out/ %*% + #SETV fup^buf fup^out + [#IF [error^in^fup^output] + |THEN| + #OUTPUT Error detected in FUP output, ABORTING !! + #OUTPUT .............................................................. + #OUTPUTV fup^buf + #OUTPUT .............................................................. + #RAISE _BREAK + ] +] + +[#DEF display^action MACRO |BODY| + [#IF NOT action |THEN| + #OUTPUT /HOLD/ Updating [file] ... + #SET action -1 + #SET count 0 + ] + #OUTPUT /COLUMN 3/ ... %*% +] + +[#DEF display^noaction MACRO |BODY| + [#IF count + |THEN| + increment count + |ELSE| + #OUTPUT + #SET count 1 + ] + [#IF count |THEN| + #OUTPUT /COLUMN [count]/ [code 27]A. + [#IF count > 75 + |THEN| + #SET count 0 + ] + ] +] + +[#DEF process^file TEXT |BODY| + #SET action 0 + #SETMANY cur^owner cur^security cur^license cur^progid, & + [#FILEINFO /OWNER, SECURITY, LICENSED, PROGID/ [file]] + + #SET cur^owner [#USERNAME [cur^owner]] + + [#IF NOT [#EMPTYV owner] + |THEN| + [#IF owner '<>' cur^owner + |THEN| + display^action giving to [owner] (was [cur^owner]) + fup^cmd GIVE [file], [owner] + [#IF cur^progid + |THEN| + #OUTPUT /COLUMN 3/... WARNING! Loss of PROGID flag + #SET cur^progid 0 + ] + ] + ] + [#IF NOT [#EMPTYV security] + |THEN| + [#IF security '<>' cur^security + |THEN| + display^action securing to [security] (was [cur^security]) + fup^cmd SECURE [file], [security] + ] + ] + [#IF license |THEN| + [#IF NOT cur^license + |THEN| + display^action licensed + fup^cmd LICENSE [file] + ] + ] + [#IF progid |THEN| + [#IF NOT cur^progid + |THEN| + display^action PROGID flag set + fup^cmd SECURE [file],, PROGID + ] + ] + [#IF action + |THEN| + fup^cmd INFO [file] + |ELSE| + [#IF tflag + |THEN| + display^noaction + |ELSE| + #OUTPUT /HOLD/ Unchanged : [file] + [#IF cur^progid |THEN| #OUTPUT /COLUMN 39,HOLD/ P] + [#IF cur^license |THEN| #OUTPUT /COLUMN 40,HOLD/ L] + #OUTPUTV /COLUMN 43,HOLD/ cur^security + #OUTPUTV /COLUMN 50,HOLD/ cur^owner + #OUTPUT + ] + ] +] + +#PUSH arg template file security owner progid license prev action count tflag +#PUSH cur^security cur^owner cur^license cur^progid + +#SETMANY license progid, 0 0 +#SET count 0 +#SET tflag 0 + +[#LOOP |WHILE| [#MORE] +|DO| + [#CASE [#ARGUMENT /VALUE arg/ FILENAME + USER /USERNAME/ + USER + SECURITY + KEYWORD /WORDLIST LICENSE/ + KEYWORD /WORDLIST PROGID/ + TEMPLATE + ] + | 1 | #SETV file arg + | 2 | #SETV owner arg + | 3 | #SET owner [#USERNAME [arg]] + | 4 | #SETV security arg + | 5 | #SET license -1 + | 6 | #SET progid -1 + | 7 | #SETV template arg + ] +] +[#IF [#ARGUMENT END]] + + +[#IF [#EMPTYV template] +|THEN| + #SETV template file +|ELSE| + #SET tflag -1 + #OUTPUT /HOLD/ Template : [template] + [#IF progid |THEN| #OUTPUT /COLUMN 39,HOLD/ P] + [#IF license |THEN| #OUTPUT /COLUMN 40,HOLD/ L] + [#IF NOT [#EMPTYV security] |THEN| #OUTPUTV /HOLD/ " "[security]""] + [#IF NOT [#EMPTYV owner] |THEN| #OUTPUTV /HOLD/ " [owner]"] + #OUTPUT +] + +[#IF [#EMPTYV template] +|THEN| + #OUTPUT ERROR! No filename specified + #RESET FRAMES + #RETURN +|ELSE| + #SET file [#FILENAMES /MAXIMUM 1/ [template]] + [#LOOP |WHILE| NOT [#EMPTYV file] + |DO| + process^file + #SETV prev file + #SET file [#FILENAMES /MAXIMUM 1, PREVIOUS [prev]/ [template]] + ] +] + +#UNFRAME |