##quote
単一の引数を取り、その引数を引用符付きで返します。
説明
このマクロ・プリプロセッサ関数は、単一の引数を取り、その引数を引用符付きで返します。その引数に既に引用符文字が付いている場合、引用符文字を二重にすることによってこれらの引用符文字をエスケープします。以下の形式をとります。
##quote(value)
value は、引用符付きの文字列に変換されるリテラルです。value では、括弧文字または引用符文字はペアで使用する必要があります。例えば、以下は有効な value です。
#define qtest ##quote(He said "Yes" after much debate)
ZZWRITE $$$qtest
これは、"He said ""Yes"" after much debate" を返します。##quote(This (") is a quote character) は有効な value ではありません。
value 文字列内の括弧はペアになっている必要があります。以下は有効な value です。
#define qtest2 ##quote(After (a lot of) debate)
ZZWRITE $$$qtest2
##beginquote .... ##EndQuote 指示文では、ペアになっていない括弧文字または引用符文字を使用できます。
以下の例は、##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 の入れ子
InterSystems IRIS では、##quote 関数内の入れ子がサポートされます。##quote では、##BeginLit...##EndLit、##function、##lit、##quote、##expression、##SafeExpression、##stripq、##unique、および ##this の各マクロ関数を入れ子にすることができます。