ibmi-brunch-learn

Announcement

Collapse
No announcement yet.

Found this hunk of find replace code

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Found this hunk of find replace code

    Code:
    We submit jobs from within RPG programs, so finding an easier way to insert the parameters in the submit string would help, which lead to creating FindReplace. The procedure finds the specified value and replaces it with the supplied string. Only the first occurrence is changed and capitalization is ignored. This procedure eliminated the need to worry about array locations, concatenating strings, changes to the string messing up substitutions, etc. (the target, " ((Content component not found.)) ", could be any sequence of characters). We're finding new uses for this every day. 
    
     
    D CM              S             80    ctdata
    perrcd(1) dim(1)  
    
     * Change all occurrences of FIND to REPLACE in SOURCE 
    d FindReplace     pr          1024                     
    d  Source                     1024    varying value    
    d  Find                        255    varying value    
    d  Replace                     255    varying value    
    c                   eval      target=findreplace(  
    c                               cm(1)              
    c                               :' ((Content component not found.)) '              
    c                               :'January'             
    c                               )                  
    c                   eval      *inlr=*on            
    
     * Change 1st occurrence of FIND to REPLACE in SOURCE   
    p FindReplace     b                                     
    d                 pi          1024                      
    d  Source                     1024    varying value     
    d  Find                        255    varying value     
    d  Replace                     255    varying value     
    d Work            s                   like(Source)      
    c                   eval      Work = Source             
    c                   if        %scan(Find:Work) > 0      
    c                   eval      Work = %replace(Replace   
    c                                      :Work            
    c                                      :%scan(Find:Work)
    c                                      :%len(Find)      
    c                                       )               
    c                   endif                               
    c                   return    Work                      
    p                 e                                     
    ** SUBMIT COMMAND  ARRAY CM                          
    SBMJOB CCCHECKSOK CDAJOBD CMD(CALL CC0012 PARM(' ((Content component not found.)) '))
    All my answers were extracted from the "Big Dummy's Guide to the As400"
    and I take no responsibility for any of them.

    www.code400.com
Working...
X