lgoodbar@xxxxxxxxxxxxxx wrote:
David, the procedure simply removes the "outside" quotes, not the inside
ones. If the string doesn't have any surrounding quotes then no harm.

RUNSQL2 CMD('update truc set ma=''hello'' where myzone = ''blah blah''')
REXX session:
'update truc set ma=''hello'' where myzone = ''blah blah'''
update truc set ma=''hello'' where myzone = ''blah blah''
Press ENTER to end terminal session.

One extra call in the REXX and problem solved. In my opinion the extra
flexibility and validation the command interface provides offsets
working with quotes.

I did it this way:

parse arg 'SQL('sqlstring') OUTPUT('
[snip]
sql = undouble_apost(substr(sqlstring,2,length(sqlstring)-2))
[snip]
exit

undouble_apost:

parse arg wrk?

do while pos("''",wrk?) \= 0
parse var wrk? head "''" tail
wrk? = head'00'x||tail
end

do while pos('00'x,wrk?) \= 0
parse var wrk? head '00'x tail
wrk? = head"'"tail
end

return(wrk?)
[snip]

I'm sure it can be much more efficient than that, but it's never been enough of a problem to be a... umm... problem.

In my usage, the outer quotes always exist; so, I cut them out as part of the argument to the undouble_apost() procedure. In the proc, I convert each doubled apostrophe to a '00'x token. Then I convert each '00'x token to a single apostrophe.

I know, I could've combined those into essentially a single operation by tracking my positions in the string; but that just didn't turn out to be worth the effort.

Tom Liotta

-----Original Message-----

I'll be sticking to my original command with a CL as a CPP. Imagine this
command :
RUNSQL2 CMD('update truc set ma=''hello'' where myzone = ''blah blah''')
etc, it's simply unworkable.

But thanks for the interesting REXX functions that I completely ignored
the existance of until now.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

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.