GDL 块宏
块宏 用于表示一个或多个 GDL 条目。 它们在 *BlockMacros 构造中定义。
*BlockMacros 构造的实例名称将成为块宏的名称,包含在 *BlockMacros 构造的大括号中的条目将成为该块宏的内容。 宏名称必须是符号名称类型。 块宏定义中包含的条目必须完整。
如果有任何构造条目,则必须在宏定义中完成它们。 换句话说,块宏定义的内容不能更改嵌套级别。
除常规数据条目外,块宏还可以包含其他块或值宏定义和命名空间指令。 嵌套宏定义和命名空间指令会立即计算,并且不会显示在块宏的内容中。
块宏可以包含对其他块宏或值宏 的引用。 *BlockMacros 构造的实例名称可以后跟带括号的正式参数列表。 对此块宏定义主体中任何形式参数的任何引用都将以符号方式替换为实际引用块宏时传入的相应参数。
注意 用于传递值宏引用的参数的声明和引用以等号 (=) 为前缀,表示参数类型为值宏。 所有对值宏的引用还带有等号的前缀,表示引用是值宏而不是块宏。
对块宏的引用可将参数列表嵌套为任意深度。 块宏使用 *InsertBlock: NameOfBlockMacro 进行引用。 块宏的名称不带等号前缀,因为它不是对值宏的引用。 此语法不同于 GPD 语法。
下面的代码示例演示如何使用块宏。
*Macros:
{
LetterName: Letter
Quote: <BeginValue:Q>"<EndValue:Q>
}
*BlockMacro: LetterSize
{
*Name: =Quote=LetterName=Quote
*PaperDimension: PAIR(8.5 , 11)
}
*BlockMacro: PaperOption(PaperSize, =PaperName)
{
*Option: =PaperName
{
*InsertBlock: PaperSize
}
}
*InsertBlock: PaperOption(LetterSize, =LetterName)