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 / util2.rexx < prev    next >
OS/2 REXX Batch file  |  1992-01-25  |  5KB  |  177 lines

  1. /*  */
  2.  
  3. /* Example of using Utility Library functions 
  4.  
  5.     ALLOCATETAGITEMS()
  6.     FINDTAGITEM()
  7.     GETTAGDATA()
  8.     TAGINARRAY()
  9.     FREETAGITEMS() 
  10.     NEXTTAGITEM()
  11.  
  12. */
  13.  
  14.  x = addlib("apig.library",0,-30,0)
  15.  
  16.  call set_apig_globals()
  17.  
  18.  taglist = ALLOCATETAGITEMS(20)    /* allocate twenty slots */
  19.  
  20.  call SETTAGSLOT(taglist,0,'80080001'x,'n',100)
  21.  call SETTAGSLOT(taglist,1,'80080002'x,'n',200)
  22.  call SETTAGSLOT(taglist,2,'80080003'x,'n',300)
  23.  call SETTAGSLOT(taglist,3,'80080004'x,'n',400)
  24.  call SETTAGSLOT(taglist,4,'80080005'x,'n',500)
  25.  call SETTAGSLOT(taglist,5,'80080006'x,'n',600)
  26.  call SETTAGSLOT(taglist,6,'80080007'x,'n',700)
  27.  call SETTAGSLOT(taglist,7,'80080008'x,'n',800)
  28.  call SETTAGSLOT(taglist,8,'80080009'x,'n',900)
  29.  call SETTAGSLOT(taglist,9,'80080010'x,'n',1000)
  30.  call SETTAGSLOT(taglist,10,TAG_DONE,'n',0)
  31.  
  32.  
  33.  tagarray = ALLOCMEM(80,MEMF_CLEAR)   /* twenty array slots */
  34.  
  35.  call SETVALUE(tagarray,0,4,'p','80080101'x)  /* must specify values as */
  36.                                               /* hex-strings (pointers) */
  37.  call SETVALUE(tagarray,4,4,'p','80080102'x)
  38.  call SETVALUE(tagarray,8,4,'p','80080103'x)
  39.  call SETVALUE(tagarray,12,4,'p','80080004'x) /* the only one in taglist */
  40.  call SETVALUE(tagarray,16,4,'p','80080105'x)
  41.  call SETVALUE(tagarray,20,4,'p','80080106'x)
  42.  call SETVALUE(tagarray,24,4,'p','80080107'x)
  43.  call SETVALUE(tagarray,28,4,'p','80080108'x)
  44.  call SETVALUE(tagarray,32,4,'p','80080109'x)
  45.  call SETVALUE(tagarray,36,4,'p','80080110'x)
  46.  call SETVALUE(tagarray,40,4,'p',TAG_DONE)
  47.  
  48.  call show2taglist("   Original",taglist,"",null())
  49.  
  50.  
  51.  /* FINDTAGITEM */
  52.  tagfound = FINDTAGITEM('80080004'x,taglist)
  53.  if tagfound ~= null() then 
  54.     do
  55.         tagval  = GETVALUE(tagfound,0,4,'p')
  56.         tagdata = GETVALUE(tagfound,4,4,'n')
  57.         t1 = '(' || c2x(tagval) || ':' || tagdata || ')'
  58.         say "Tag was found = " t1 
  59.     end
  60.   else
  61.         say "Tag NOT found"
  62.  
  63. say ""
  64. say ""
  65.  /* GETTAGDATA */
  66.  tagdata = GETTAGDATA('80080004'x,-1,taglist)
  67.  if tagdata ~= -1 then 
  68.         say "TagData was found = " tagdata
  69.   else
  70.         say "TagData NOT found"
  71.  
  72.  
  73.  tagdata = GETTAGDATA('80080ff4'x,-5,taglist)
  74.  if tagdata ~= -5 then 
  75.         say "TagData was found = " tagdata
  76.   else
  77.         say "TagData NOT found = " tagdata
  78.  
  79.  
  80.  tagdata = GETTAGDATA('80080ff4'x,15,taglist)
  81.  if tagdata ~= 15 then 
  82.         say "TagData was found = " tagdata
  83.   else
  84.         say "TagData NOT found = " tagdata
  85.  
  86.  
  87.  tagdata = GETTAGDATA('80080006'x,-1,taglist)
  88.  if tagdata ~= -1 then 
  89.         say "TagData was found = " tagdata
  90.   else
  91.         say "TagData NOT found"
  92.  
  93. say ""
  94. say ""
  95.  /* TAGINARRAY */
  96.   tag = TAGINARRAY('80080006'x,tagarray)
  97.   if tag = 1 then
  98.      say "TAG: '80080006'x in TagArray"
  99.   else
  100.      say "TAG: '80080006'x NOT in TagArray"
  101.  
  102.   tag = TAGINARRAY('80080004'x,tagarray)
  103.   if tag = 1 then
  104.      say "TAG: '80080004'x in TagArray"
  105.   else
  106.      say "TAG: '80080004'x NOT in TagArray"
  107.  
  108.   tag = TAGINARRAY('80080106'x,tagarray)
  109.   if tag = 1 then
  110.      say "TAG: '80080106'x in TagArray"
  111.   else
  112.      say "TAG: '80080106'x NOT in TagArray"
  113.  
  114.  
  115.  call FREETAGITEMS(taglist)
  116.  call FREEMEM(tagarray,80)
  117.  
  118. exit
  119.  
  120. /* -------------------------------------- */
  121. show2taglist: procedure expose MEMF_CLEAR
  122. /* -------------------------------------- */
  123.  
  124. parse arg L1heading,list1,L2heading,list2
  125.  
  126.    tstate1 = ALLOCMEM(4,MEMF_CLEAR)   /* needed, since NEXTTAGITEM wants   */
  127.                                       /* it as doubly-indirected reference */
  128.  
  129.    tstate2 = ALLOCMEM(4,MEMF_CLEAR)  
  130.  
  131.    if list1 ~= null() then 
  132.       call export(tstate1,list1,4)     /* copy list1 pointer into tstate1 */
  133.  
  134.    if list2 ~= null() then 
  135.       call export(tstate2,list2,4)     /* copy list2 pointer into tstate2 */
  136.  
  137.    say copies(' ',8) L1heading copies(' ',25-length(L1heading)) L2heading
  138.  
  139.    do forever
  140.  
  141.       t1 = copies(' ',20)
  142.       if tag1 ~= null() then 
  143.          do
  144.             tag1 = NEXTTAGITEM(tstate1)
  145.             if tag1 ~= null() then
  146.                do
  147.                   tagval  = GETVALUE(tag1,0,4,'p')
  148.                   tagdata = GETVALUE(tag1,4,4,'n')
  149.                   t1 = '(' || c2x(tagval) || ':' || tagdata || ')'
  150.                end
  151.          end
  152.       
  153.       t2 = ''
  154.       if tag2 ~= null() then 
  155.          do
  156.             tag2 = NEXTTAGITEM(tstate2)
  157.             if tag2 ~= null() then
  158.                do
  159.                   tagval  = GETVALUE(tag2,0,4,'p')
  160.                   tagdata = GETVALUE(tag2,4,4,'n')
  161.                   t2 = copies(' ',25-length(t1))
  162.                   t2 = t2 || '(' || c2x(tagval) || ':' || tagdata || ')'
  163.                end
  164.          end
  165.       
  166.       if (tag1 = null()) & (tag2 = null()) then leave
  167.  
  168.       say copies(' ',8) t1 t2
  169.       
  170.    end
  171.  
  172.    say ""
  173.    call FREEMEM(tstate1,4)
  174.    call FREEMEM(tstate2,4)
  175.  
  176. return 1
  177.