× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



On 12/7/10 8:53 AM, David FOXWELL wrote:

I want to modify this in a clp source :

MY_LABEL: CALL PGM(MGR123401)

So it becomes

MY_LABEL: CALL PGM(MGR589801)

I'm trying to use the REPLACE function in SQL. I've added the label
for the WHERE clause. The program name is a standard, i.e., prefix
MGR 4 numbers and suffix (in this case 01) I know the new number,
5898, but I cannot be sure of the old number to replace. I could
presume the program name occupies the same position in the field
SRCDTA but that won't always work.

Something like

UPDATE Myfile
SET SRCDTA = REPLACE ( SRCDTA, '1234', MyNewNumber)
WHERE SRCDTA LIKE 'MY_LABEL:%'

Ideas?

The following would suffice given the string " PGM(MGR" always appears within the SRCDTA column data, for those rows matching the selection [i.e. with the expected label]:

UPDATE Myfile
SET SRCDTA = REPLACE
( SRCDTA
, substr( srcdta
, locate(' PGM(MGR', srcdta) + 8
, 4
)
, :MyNewNumber)
WHERE SRCDTA LIKE 'MY_LABEL:%'

If however the replacement of data at substr(srcdta, 8, 4) with the new number string value is a bad idea for any row having the expected label [according to the selection], then forcing the update to fail for an unsupported NULL value might be a better option [SRCDTA can not be null capable]:

UPDATE Myfile
SET SRCDTA = REPLACE
( SRCDTA
, substr( srcdta
, nullif(locate(' PGM(MGR', srcdta), 0) + 8
, 4
)
, :MyNewNumber)
WHERE SRCDTA LIKE 'MY_LABEL:%'

Or perhaps simply avoiding rows that have the expected label [per selection] but not the expected " PGM(MGR" would suffice; not very good for knowing if the label was found, but not the expected label:

UPDATE Myfile
SET SRCDTA = REPLACE
( SRCDTA
, substr( srcdta
, locate(' PGM(MGR', srcdta) + 8
, 4
)
, :MyNewNumber)
WHERE SRCDTA LIKE 'MY_LABEL:%'
AND locate(' PGM(MGR', srcdta) > 0

Regards, Chuck

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.