The original sample row, plus a few more sample rows for consideration:
    ....+....1....+....2....+....3
   "DOE, JOHN A    12/AL/PMZ     "
   "DOE, JOHN A  12/AL/PMZ JON   "
   "DOE, JONATHON A12/AL/PMZ     "
   "DOE, JONATHON ALBERT12/AL/PMZ"
   "DOE, JOHN/J A  12/AL/PMZ     "
  Prior to issuing an update, analysis of the data by selection which 
determines any exceptions to all assumptions would be prudent.  For 
example, for the [possible] assumptions that:
   - one blank precedes the pattern   ex. 3 & ex. 4
   - only blanks follow the pattern   ex. 2
   - no slash precedes the pattern    ex. 5
  Note: The following expressions assume the LIKE selection is enforced 
for every row that is included in the result set.  That is, no logic 
that would include rows where that LIKE test was false; e.g. beware of 
any OR logic.  Additionally if a "/" may occur in a name, a creative 
TRANSLATE may be required to ensure desirable results, since the first 
slash is inferred by the following expressions, to be the third 
character of the located pattern.
  The given selection would include rows where the field had non-blank 
characters following the expected nine character pattern.  However if 
the trailing zero-to-many characters are known to always be blanks, then 
the following expression should suffice:
   set namefield = substr(namefield, 1, length(rtrim(namefield))-9)
  The above expression should effect the desired, even if there may be 
no blank preceding the pattern, such that the pattern selection were 
changed to be instead:
   LIKE '%__/__/___%' /* original: LIKE '% __/__/___%' */
  *However*, the effect of the above expression would probably be 
undesirable for a row where non-blank characters followed the pattern. 
Refer to the second of the sample rows, where the result would be "DOE, 
JOHN A  12/A", which means the pattern was *not* replaced by blanks.
  If there may be non-blank characters following the pattern, and those 
characters should also be replaced with blanks [i.e. beyond just that 
pattern being replaced by blanks], then as stated, the above assignment 
can not effect the desired.  Instead use the LOCATE [, POSSTR, or 
POSITION] function to infer the start position of the pattern:
   set namefield = substr(namefield, locate('/',namefield)-3)
  If there may be non-blank characters following the pattern, and those 
characters must _not_ be replaced with blanks [i.e. replace the pattern 
only, leaving any suffix unchanged], then a bit more work is required. 
In that case use the LOCATE [, POSSTR, or POSITION] function to infer 
the start position of the pattern, plus both the CONCAT and the SUBSTR 
functions, to concatenate the substrings on either side of the pattern. 
 For example:
   set namefield = substr(namefield, 1, locate('/',namefield)-3)
            concat substr(namefield, locate('/',namefield)+7))
  Note: The given expressions as assignments were not tested for 
accuracy, neither in syntax nor function.
Regards, Chuck
Dan wrote:
 Time to hit the SQL guru well again.  ;-)
I have a name field that has, as an example,
  "DOE, JOHN A    12/AL/PMZ     "
The "12/AL/PMZ" will always occur after the name (can't guarantee
the number of spaces separating the two), and will always follow
the pattern "nn/AA/AAA", where "nn" is a 2-digit number, and
"AA/AAA" is always upper-cased alpha.  When and if such a pattern
is found, I need to  replace it with blanks.
The way I would search for this would use: LIKE '% __/__/___%'
Even though the underscores represent any single character, I can't
imagine I would ever find it in a real name in my data.  But even
if I use this, how would I then replace the string with blanks?
FWIW, this is on V5R4.
As an Amazon Associate we earn from qualifying purchases.