home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Spezial / SPEZIAL2_97.zip / SPEZIAL2_97.iso / ANWEND / ONLINE / SREFPRC1 / INSERTB.SRF < prev    next >
Text File  |  1997-01-05  |  2KB  |  57 lines

  1. /********************************************************************************/
  2. /* ------------------------- File and string manipulation routines-------- */
  3. /* ----------------------------------------------------------------------- */
  4. /* INSERT_BLOCK
  5. .   insert a block (addme) into haystack, right  after or before aLabel ,
  6. .   where the alabel has the form delim1 label delim2
  7. .   Insertion is immediately after delim2, or before delim1
  8. .   (if after=1, then after --)
  9.     (if after=2, then replace delim1 label delim2 with addme )
  10. .   Default values of delim1={,  2=}
  11. .   Note that labels must have NO embedded spaces.
  12. .
  13. .   Returns the added to (or not added to) haystack
  14. */
  15. /* ----------------------------------------------------------------------- */
  16.  
  17.  
  18. sref_insert_block:
  19.  
  20.   parse arg haystack , alabel , addme  , after, delim1  , delim2
  21.  
  22.  if delim1='' then delim1='{'
  23.  if delim2='' then delim2='}'
  24.  if after=" " then after=1
  25.  
  26.   alabel=translate(alabel)
  27.   thaystack=translate(haystack)
  28.  
  29. /* see any alabel appears anywhere */
  30.    foo=pos(alabel,thaystack)
  31.    if foo=0 then return haystack      /* no match to label name, so no label */
  32.  
  33.    new1=""
  34.    do forever
  35.       parse var haystack pp1 (delim1)  in1 (delim2) haystack
  36.       if in1="" & haystack="" then do
  37.             return new1||pp1
  38.       end
  39.       cand=translate(word(in1,1))
  40.       if cand=alabel then do
  41.         select
  42.           when after=2 then
  43.               new1=new1||pp1||addme||haystack
  44.           when after=1 then
  45.              new1=new1||pp1||delim1||in1||delim2||addme||haystack
  46.          otherwise
  47.              new1=new1||pp1||addme||delim1||in1||delim2||haystack
  48.          end
  49.          return new1
  50.       end
  51. /* else, keep looking */
  52.       new1=new1||pp1||delim1||in1||delim2
  53.   end
  54.  
  55.   return haystack    /* if here, no reasonable match */
  56.  
  57.