summaryrefslogtreecommitdiff
path: root/tandem/macros
diff options
context:
space:
mode:
Diffstat (limited to 'tandem/macros')
-rw-r--r--tandem/macros571
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