home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d6xx / d634 / apig.lha / APIG / apig33.lzh / util1.rexx < prev    next >
OS/2 REXX Batch file  |  1992-02-09  |  3KB  |  98 lines

  1. /*  */
  2.  
  3. /* Example of using Utility Library functions 
  4.  
  5.     ALLOCATETAGITEMS()
  6.     CLONETAGITEMS()
  7.     FREETAGITEMS() 
  8.     NEXTTAGITEM()
  9.  
  10. */
  11.  
  12.  x = addlib("apig.library",0,-30,0)
  13.  
  14.  call set_apig_globals()
  15.  
  16.  taglist = ALLOCATETAGITEMS(20)    /* allocate twenty slots */
  17.  
  18.  call SETTAGSLOT(taglist,0,'80080001'x,'n',100)
  19.  call SETTAGSLOT(taglist,1,'80080002'x,'n',200)
  20.  call SETTAGSLOT(taglist,2,'80080003'x,'n',300)
  21.  call SETTAGSLOT(taglist,3,'80080004'x,'n',400)
  22.  call SETTAGSLOT(taglist,4,'80080005'x,'n',500)
  23.  call SETTAGSLOT(taglist,5,'80080006'x,'n',600)
  24.  call SETTAGSLOT(taglist,6,'80080007'x,'n',700)
  25.  call SETTAGSLOT(taglist,7,'80080008'x,'n',800)
  26.  call SETTAGSLOT(taglist,8,'80080009'x,'n',900)
  27.  call SETTAGSLOT(taglist,9,'80080010'x,'n',1000)
  28.  call SETTAGSLOT(taglist,10,TAG_DONE,'n',0)
  29.  
  30.  call show2taglist("   Original",taglist,"",null())
  31.  
  32.  clonetaglist = clonetagitems(taglist)
  33.  call show2taglist("   Original",taglist,"   Clone",clonetaglist)
  34.  
  35.  call FREETAGITEMS(clonetaglist)
  36.  call FREETAGITEMS(taglist)
  37.  
  38. exit
  39.  
  40. /* -------------------------------------- */
  41. show2taglist: procedure expose MEMF_CLEAR
  42. /* -------------------------------------- */
  43.  
  44. parse arg L1heading,list1,L2heading,list2
  45.  
  46.    tstate1 = ALLOCMEM(4,MEMF_CLEAR)   /* needed, since NEXTTAGITEM wants   */
  47.                                       /* it as doubly-indirected reference */
  48.  
  49.    tstate2 = ALLOCMEM(4,MEMF_CLEAR)  
  50.  
  51.    if list1 ~= null() then 
  52.       call export(tstate1,list1,4)     /* copy list1 pointer into tstate1 */
  53.  
  54.    if list2 ~= null() then 
  55.       call export(tstate2,list2,4)     /* copy list2 pointer into tstate2 */
  56.  
  57.    say copies(' ',8) L1heading copies(' ',25-length(L1heading)) L2heading
  58.  
  59.    do forever
  60.  
  61.       t1 = copies(' ',20)
  62.       if tag1 ~= null() then 
  63.          do
  64.             tag1 = NEXTTAGITEM(tstate1)  /* the way you are suppose to */
  65.                                          /* traverse a taglist         */
  66.             if tag1 ~= null() then
  67.                do
  68.                   tagval  = GETVALUE(tag1,0,4,'p')
  69.                   tagdata = GETVALUE(tag1,4,4,'n')
  70.                   t1 = '(' || c2x(tagval) || ':' || tagdata || ')'
  71.                end
  72.          end
  73.       
  74.       t2 = ''
  75.       if tag2 ~= null() then 
  76.          do
  77.             tag2 = NEXTTAGITEM(tstate2)
  78.             if tag2 ~= null() then
  79.                do
  80.                   tagval  = GETVALUE(tag2,0,4,'p')
  81.                   tagdata = GETVALUE(tag2,4,4,'n')
  82.                   t2 = copies(' ',25-length(t1))
  83.                   t2 = t2 || '(' || c2x(tagval) || ':' || tagdata || ')'
  84.                end
  85.          end
  86.       
  87.       if (tag1 = null()) & (tag2 = null()) then leave
  88.  
  89.       say copies(' ',8) t1 t2
  90.       
  91.    end
  92.  
  93.    say ""
  94.    call FREEMEM(tstate1,4)
  95.    call FREEMEM(tstate2,4)
  96.  
  97. return 1
  98.