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)