EXERCICE GDL 6 : Création de versions spécialisées
Exercice
À l’aide de l’exercice 5, créez trois versions spécialisées de *POption pour *PFeature : PaperSize.
La première version est destinée aux options Papersize avec instance noms de « Lettre », « Légal » et « A4 ». Ces options auront leur comportement actuel.
La deuxième version est destinée aux options Papersize avec instance noms de « Personnalisé » et reconnaît les attributs supplémentaires suivants : *MinSize et *MaxSize.
La troisième version couvrira d’autres options de format papier qui seront considérées comme définies par OEM et reconnaîtront l’attribut supplémentaire : *OEM_Info.
Apportez cette modification sans supprimer ou modifier aucun des modèles précédemment définis. Créez un fichier de données GDL simple pour vérifier la modélisation correcte des entrées.
Solution
L’exemple de code suivant montre une réponse possible.
*Template: MIN_SIZE
{
*Name: "*MinSize"
*Type: ATTRIBUTE
*ValueType: PAGE_DIM
}
*Template: MAX_SIZE
{
*Name: "*MaxSize"
*Type: ATTRIBUTE
*ValueType: PAGE_DIM
}
*Template: OEM_INFO
{
*Name: "*OEM_Info"
*Type: ATTRIBUTE
*ValueType: NORMAL_STRING
}
*Template: OEM_PAPERSIZE_OPTION
{
*Inherits: PAPERSIZE_OPTION2
*Members: (OEM_INFO)
*Instances: <ANY>
}
*Template: CUST_PAPERSIZE_OPTION
{
*Inherits: PAPERSIZE_OPTION2
*Members: (MIN_SIZE, MAX_SIZE)
*Instances: Custom
}
*Template: PREDEFINED_PAPERSIZE_OPTION
{
*Inherits: PAPERSIZE_OPTION2
*Instances: (Letter, Legal, A4)
}
L’exemple de code suivant montre un exemple de fichier de données GDL à des fins de vérification.
*PFeature: random
{
*Name: "Generic Feature"
*DefaultOption: First
*POption: First
{
*Name: "First Option"
*Command: "Select me"
}
}
*PFeature: PaperSize
{
*Name: "Paper Size"
*DefaultOption: Letter
*POption: Letter
{
*Name: "Letter"
*Command: "Select Letter"
*PaperSize: PAIR(8.5, 11) , inches
}
*POption: Legal
{
*Name: "Legal"
*Command: "Select Legal"
*PaperSize: PAIR(8.5, 14) , inches
}
*POption: A4
{
*Name: "A4"
*Command: "Select A4"
*PaperSize: PAIR(205, 317), mm
}
*POption: OEMName_Special_size
{
*Name: "OEMName size"
*Command: "Select OEMName size"
*PaperSize: PAIR(365, 487), mm
*OEM_Info: "<83 d4 93 ae>"
}
*POption: Custom
{
*Name: "Custom Size"
*Command: "Select Custom"
*MaxSize: PAIR(400, 500), mm
*MinSize: PAIR(100, 150), mm
}
}
*PFeature: InputTray
{
*Name: "Paper Source"
*DefaultOption: Upper
*POption: Upper
{
*Name: "Upper Tray"
*Command: "Select Upper Tray"
*Capacity: 2000 *% sheets
}
*POption: Lower
{
*Name: "Lower Tray"
*Command: "Select Lower Tray"
*Capacity: 500 *% sheets
}
}