Da es da einen kleinen Unterschied gibt:

%REPLACE(replacement string: source string{:start position {:source
length to replace}}

%REPLACE returns the character string produced by inserting a replacement string into the source string,
starting at the start position and replacing the specified number of characters.

Du meinst da wohl eher diese Funktion:

%SCANRPL(scan string : replacement : source { : scan start { : scan length } )

%SCANRPL returns the string produced by replacing all occurrences of the scan string in the source
string with the replacement string. The search for the scan string starts at the scan start position and
continues for the scan length. The parts of the source string that are outside the range specified by the
scan start position and the scan length are included in the result.

Die aber erst ab irgend einem Release kam.
Des weiteren kommt es immer auf den Einsatz an. Wenn ichmit SQL mischen muss, nehme ich doch gleich SQL, da das Ergebnis einer Bif erst in eine Variable muss.