##quote
Description
This macro preprocessor function takes a single argument and returns that argument quoted. If the argument already contains quote characters it escapes these quote characters by doubling them. It has the form:
##quote(value)
where value is a literal that is converted to a quoted string. In value a parenthesis character or a quote character must be paired. For example, the following is a valid value:
#define qtest ##quote(He said "Yes" after much debate)
ZZWRITE $$$qtest
it returns "He said ""Yes"" after much debate". ##quote(This (") is a quote character) is not a valid value.
Parentheses within a value string must be paired. The following is a valid value:
#define qtest2 ##quote(After (a lot of) debate)
ZZWRITE $$$qtest2
The ##beginquote .... ##EndQuote directives allow for an unpaired parenthesis character or a quote character.
The following example shows the use of ##quote:
#define AssertEquals(%e1,%e2) DO AssertEquals(%e1,%e2,##quote(%e1)_" == "_##quote(%e2))
Main ;
SET a="abstract"
WRITE "Test 1:",!
$$$AssertEquals(a,"abstract")
WRITE "Test 2:",!
$$$AssertEquals(a_"","abstract")
WRITE "Test 3:",!
$$$AssertEquals("abstract","abstract")
WRITE "All done"
QUIT
AssertEquals(e1,e2,desc) ;
WRITE desc_" is "_$SELECT(e1=e2:"true",1:"false"),!
QUIT
##quote Nesting
InterSystems IRIS supports nesting within a ##quote function. ##quote can nest the following macro functions: ##BeginLit...##EndLit, ##function, ##lit, ##quote, ##expression, ##SafeExpression, ##stripq, ##unique, and ##this.