home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rexxalgo.zip / TESTALGO / ReplStr.CMD < prev    next >
OS/2 REXX Batch file  |  1997-08-11  |  4KB  |  109 lines

  1. /* REXX *********************************************/
  2. /* Frame for your Rexx program. Verify please!      */
  3. /* Program name: ReplStr                            */
  4. /* Function....: Find all occurences of a substring */
  5. /*               and replace it by an another       */
  6. /* Syntax      :                                    */
  7. /* Changes     :                                    */
  8. /*                                                  */
  9. /* Made use of GREED.  20 Dec 1996 / 10:33:16   JRK */
  10. /****************************************************/
  11. Parse Arg string
  12.  
  13. /*==============(Exception handling)================*/
  14. Signal On Failure Name CLEANUP
  15. Signal On Halt    Name CLEANUP
  16. Signal On Syntax  Name CLEANUP
  17.  
  18. /*==========(Initialize RexxUtil support)===========*/
  19. If RxFuncQuery('SysLoadFuncs') Then Do
  20.   Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  21.   Call SysLoadFuncs
  22. End /* If RxFuncQuery... */
  23.  
  24. Say 
  25. Say Center( "( REPLACE STRING )", 80, '*')
  26.  
  27. If string = '' Then
  28.   string = ',,,aaa,,,,ccc,,,'
  29. Say 'Replace <,> by <,ä>:' 
  30. Say String '==>' StrRepl( string, ',', ',ä' )
  31. Say
  32. Say 'Replace <.> by < , >:' 
  33. Say String '==>' StrRepl( string, '.', ' , ' )
  34. Say
  35. string = 'aaa, aaa, ccc, aaa'
  36. Say 'Replace <aaa> by <x>:' 
  37. Say String '==>' StrRepl( string, 'aaa', 'x' )
  38. Say
  39. string = 'OS/2 OS/2 OS/2 OS/2'
  40. Say 'Replace <OS/2> by <Warp>:' 
  41. Say String '==>' StrRepl( string, 'OS/2', 'Warp' )
  42. Say
  43. string = '.'
  44. Say 'Replace <.> by <+++.+++>:' 
  45. Say String '==>' StrRepl( string, '.', '+++.+++' )
  46. Say
  47. string = '.....'
  48. Say 'Replace <..> by <+..._>:' 
  49. Say String '==>' StrRepl( string, '..', '+..._' )
  50. Say
  51. /*================(End this program)================*/
  52. Call CharOut , "Press any key to exit "
  53. Call LineIn
  54.  
  55. Exit
  56.  
  57. CLEANUP:
  58.   Say
  59.   Say 'GREED001E - Break, Failure or Syntax Error'
  60. Exit
  61.  
  62.  
  63. /******************************************************/
  64. /*          PROCEDURES                                */
  65. /******************************************************/
  66. /*========( Replace a string with an another )========*/
  67. /*                                                 15 */
  68. /* Name.......: StrRepl                               */
  69. /*                                                    */
  70. /* Function...: Find all occurences of a substring    */
  71. /*              and replace it by an another          */
  72. /*                                                    */
  73. /* Call parm..: _string  - input string,              */
  74. /*              _origin  - substring to be replaced   */
  75. /*              _replStr - replace substring          */
  76. /*                                                    */
  77. /* Returns....: translated string                     */
  78. /*                                                    */
  79. /* Syntax.....:                                       */
  80. /*  tranStr = ReplaceString(_string,_origin,_replStr) */
  81. /*                                                    */
  82. /* Changes....: No                                    */
  83. /*                                                    */
  84. /* Author.....: Janosch R. Kowalczyk, 1996.           */
  85. /*====================================================*/
  86. StrRepl: Procedure
  87. Parse Arg _string, _origin, _replStr
  88.  
  89. /*---( Find a substring to replace? )---*/
  90. _lastPos = LastPos( _origin, _string )
  91.  
  92.  
  93. If _lastPos > 0 Then Do
  94.  
  95.   /*---( Get prefix to the substring )---*/
  96.   If _lastPos = 1 Then _prefix = ''
  97.   Else _prefix = SubStr( _string, 1, _lastPos - 1 )
  98.  
  99.   /*---( Get suffix of the substring )---*/
  100.   _suffix = SubStr( _string, _lastPos + Length( _origin ))
  101.  
  102.   /*---( Find next substring to replace )---*/
  103.   Return StrRepl( _prefix, _origin, _replStr ) || _replStr || _suffix
  104.  
  105. End
  106. Else
  107.   Return _string
  108.  
  109.