home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
600-699
/
ff634.lha
/
APIG
/
apig33.lzh
/
util3.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1992-01-25
|
5KB
|
163 lines
/* */
/* Example of using Utility Library functions
FILTERTAGCHANGES()
FILTERTAGITEMS()
REFRESHTAGITEMCLONES()
*/
x = addlib("apig.library",0,-30,0)
call set_apig_globals()
taglist = ALLOCATETAGITEMS(20) /* allocate twenty slots */
taglist2 = ALLOCATETAGITEMS(20) /* allocate twenty slots */
call SETTAGSLOT(taglist,0,'80080001'x,'n',100)
call SETTAGSLOT(taglist,1,'80080002'x,'n',200)
call SETTAGSLOT(taglist,2,'80080003'x,'n',300)
call SETTAGSLOT(taglist,3,'80080004'x,'n',400)
call SETTAGSLOT(taglist,4,'80080005'x,'n',500)
call SETTAGSLOT(taglist,5,'80080006'x,'n',600)
call SETTAGSLOT(taglist,6,'80080007'x,'n',700)
call SETTAGSLOT(taglist,7,'80080008'x,'n',800)
call SETTAGSLOT(taglist,8,'80080009'x,'n',900)
call SETTAGSLOT(taglist,9,'80080010'x,'n',1000)
call SETTAGSLOT(taglist,10,TAG_DONE,'n',0)
origtaglist = CLONETAGITEMS(taglist) /* used to REFRESH */
clonetaglist = CLONETAGITEMS(taglist)
call SETTAGSLOT(taglist2,0,'80080001'x,'n',110) /* different data value */
call SETTAGSLOT(taglist2,1,'80080002'x,'n',200)
call SETTAGSLOT(taglist2,2,'80080003'x,'n',320) /* different data value */
call SETTAGSLOT(taglist2,3,'80080004'x,'n',400)
call SETTAGSLOT(taglist2,4,'80080005'x,'n',500)
call SETTAGSLOT(taglist2,5,'80080006'x,'n',600)
call SETTAGSLOT(taglist2,6,'80080007'x,'n',720) /* different data value */
call SETTAGSLOT(taglist2,7,'80080008'x,'n',800)
call SETTAGSLOT(taglist2,8,'80080009'x,'n',900)
call SETTAGSLOT(taglist2,9,'80080010'x,'n',1000)
call SETTAGSLOT(taglist2,10,TAG_DONE,'n',0)
clonelist2 = CLONETAGITEMS(taglist2)
call show2taglist(" Changes",taglist2," Original",taglist)
call FILTERTAGCHANGES(taglist2,taglist,0) /* 0 - do not APPLY changes */
say " After FILTERCHANGES "
call show2taglist(" Changes",taglist2," Original",taglist)
call FILTERTAGCHANGES(clonelist2,clonetaglist,1) /* 1 - APPLY changes */
say " After FILTERCHANGES with changes APPLIED to Original "
call show2taglist(" Changes",clonelist2," Original",clonetaglist)
/* REFRESHTAGITEMCLONES -- changes were applied to 'clonetaglist' */
call REFRESHTAGITEMCLONES(clonetaglist,origtaglist) /* original values back */
say "Refreshed List -- with old Original values "
call show2taglist(" ORIGINAL",origtaglist," REFRESHED",clonetaglist)
/* FILTERTAGITEMS */
tagarray = ALLOCMEM(80,MEMF_CLEAR) /* twenty array slots */
orig2taglist = CLONETAGITEMS(origtaglist)
call SETVALUE(tagarray,0,4,'p','80080002'x) /* the ones to keep or */
call SETVALUE(tagarray,4,4,'p','80080003'x) /* not keep */
call SETVALUE(tagarray,8,4,'p','80080007'x)
call SETVALUE(tagarray,12,4,'p','80080009'x)
call SETVALUE(tagarray,16,4,'p',TAG_DONE)
say ""
call FILTERTAGITEMS(orig2taglist,tagarray,0)
say "Filtered with TAGFILTER_AND ... "
say " if tag in taglist AND in tagarry -- keep it"
say ""
call show2taglist(" ORIGINAL",origtaglist," FILTERED",orig2taglist)
call REFRESHTAGITEMCLONES(orig2taglist,origtaglist)
say ""
call FILTERTAGITEMS(orig2taglist,tagarray,1)
say "Filtered with TAGFILTER_NOT ... "
say " if tag in taglist but NOT in tagarray -- keep it"
say ""
call show2taglist(" ORIGINAL",origtaglist," FILTERED",orig2taglist)
call FREETAGITEMS(taglist)
call FREETAGITEMS(clonetaglist)
call FREETAGITEMS(origtaglist)
call FREETAGITEMS(orig2taglist)
call FREETAGITEMS(clonelist2)
call FREETAGITEMS(taglist2)
call FREEMEM(tagarray,80)
exit
/* -------------------------------------- */
show2taglist: procedure expose MEMF_CLEAR
/* -------------------------------------- */
parse arg L1heading,list1,L2heading,list2
tstate1 = ALLOCMEM(4,MEMF_CLEAR) /* needed, since NEXTTAGITEM wants */
/* it as doubly-indirected reference */
tstate2 = ALLOCMEM(4,MEMF_CLEAR)
if list1 ~= null() then
call export(tstate1,list1,4) /* copy list1 pointer into tstate1 */
if list2 ~= null() then
call export(tstate2,list2,4) /* copy list2 pointer into tstate2 */
say copies(' ',8) L1heading copies(' ',25-length(L1heading)) L2heading
do forever
t1 = copies(' ',20)
if tag1 ~= null() then
do
tag1 = NEXTTAGITEM(tstate1)
if tag1 ~= null() then
do
tagval = GETVALUE(tag1,0,4,'p')
tagdata = GETVALUE(tag1,4,4,'n')
t1 = '(' || c2x(tagval) || ':' || tagdata || ')'
end
end
t2 = ''
if tag2 ~= null() then
do
tag2 = NEXTTAGITEM(tstate2)
if tag2 ~= null() then
do
tagval = GETVALUE(tag2,0,4,'p')
tagdata = GETVALUE(tag2,4,4,'n')
t2 = copies(' ',25-length(t1))
t2 = t2 || '(' || c2x(tagval) || ':' || tagdata || ')'
end
end
if (tag1 = null()) & (tag2 = null()) then leave
say copies(' ',8) t1 t2
end
say ""
call FREEMEM(tstate1,4)
call FREEMEM(tstate2,4)
return 1