##quoteExp
コンパイル時に評価される式を引数として取ります。この式には、入れ子/再帰 MPP 関数を含めることができます。
説明
このマクロ・プリプロセッサ関数は、コンパイル時に評価される式を引数として取ります。この式には、入れ子/再帰 MPP 関数を含めることができます。その後、このプリプロセッサ関数は、コンパイルされた結果を引用符付きの文字列として返します。その引数に既に引用符文字が付いている場合、引用符文字を二重にすることによってこれらの引用符文字をエスケープします。以下の形式をとります。
##quoteExp(expression)
expression には、##BeginLit...##EndLit、##expression、##function、##lit、##quote、##quoteExp、##SafeExpression、##stripq、##unique、および ##This のいずれの入れ子/再帰 MPP 関数も記述できます。
##quoteExp を使用すると、可変個数の添え字を受け入れ、その参照を引用符付き文字列として返す複雑な汎用グローバル・マクロを作成できます。このとき、添え字の値が数値と文字列のいずれとして渡されるかは関係ありません。#def1arg 指示文を使用して、複雑なグローバル参照としてマクロを定義します。この複雑なグローバル参照を引用符付き文字列として返すには、マクロに指定した添え字に関係なく、このマクロを ##quoteExp にラップします。このマクロは、##quoteExp に渡された expression 引数を評価し、この値を引用符付き文字列として返します。
以下に例を示します。
#def1arg complexGlobal(%subs) ^GLO("dd"##expression($s(%literalargs'=$lb(""):","_$LTS(%literalargs,","),1:"")))
#def1arg complexGlobalQE(%subs) ##quoteExp($$$complexGlobal(%subs))