× 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 28/08/2008, at 2:20 AM, Doug Palme wrote:


Since the ' is the delimiter for a character field....is there anyway for
me to test for it?

All these responses with 'might' and 'try' and other guesses. The standard solution in RPG, COBOL, and CL to this problem of embedding the enclosing character is simply to double it. That is if you want a constant containing a single apostrophe you need to specify FOUR of them. One is the start of the constant, one is the end of the constant, one is the value itself and one is doubled so the compiler does not interpret the previous one as an end marker. Thus:

D APOST C CONST('''')

Simple. In your case you want an apostrophe within a larger string so the same principle applies: double it. Thus.

D @INV c CONST('!@#-c-&\}|NOT{?><.`~||(),*$+-%
D ;:"''ABCDEFGHIJKLMNOPQRSTUVWXYZ.')

Note the two apostrophes between the quote character and the capital A character.

The same principle applies to any delimiter such as a quote character or the C-language escape character \.

This behaviour is explained in the RPG Reference manual under Literals (on page 121 for VRM510) if anyone except me actually bothered reading it.

An apostrophe required as part of a literal is represented by two apostrophes.
For example, the literal O’CLOCK is coded as ‘O’’CLOCK’.

Note that using a hexadecimal representation is cheating somewhat and while it will work for invariant characters it will fail when you try the same technique on variant characters and your code runs in a different CCSID from the one in which you derived the hex value.

Regards,
Simon Coulter.
--------------------------------------------------------------------
FlyByNight Software OS/400, i5/OS Technical Specialists

http://www.flybynight.com.au/
Phone: +61 2 6657 8251 Mobile: +61 0411 091 400 /"\
Fax: +61 2 6657 8251 \ /
X
ASCII Ribbon campaign against HTML E-Mail / \
--------------------------------------------------------------------




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.