Invokes the VMS DECwindows UIL compiler to compile a User Interface Language (UIL) specification. A UIL specification is a description of the windowing interface to a VMS DECwindows application. The UIL command and the User Interface Language are described in detail in the "OSF/Motif Programmer's Guide". Format of UIL command line: UIL file_spec
1 /MOTIF
Directs the system to use the MOTIF Toolkit UIL compiler. This switch is provided for backward compability. the default is to use the MOTIF Toolkit UIL compiler.
1.1 /WIDGET_META_DESCRIPTION[=file-spec]
Directs the compiler to use a widget meta description file. The default file specification is DECW$SYSTEM_DEFAULTS:*.WMD. The default is to use the MOTIF Toolkit UIL compiler's internal tables.
2 /WIDGET_META_DESCRIPTION[=file-spec]
Directs the compiler to use a widget meta description file. The default file specification is DECW$SYSTEM_DEFAULTS:*.WMD. The default is to use the MOTIF Toolkit UIL compiler's internal tables when the /MOTIF qualifier is used.
3 /LOCALE
Directs the compiler to enable the use of setlocale and the creation of localized Compound Strings (-s option).
4 /LIST[=file-spec]
Negative form: /NOLIST Controls whether the compiler produces a listing file. The default output file type is .LIS. /LIST is the batch default and /NOLIST is the interactive default.
5 /MACHINE_CODE
Negative form: /NOMACHINE_CODE Controls whether the listing produced by the compiler includes the User Interface Description (UID) code generated during the compilation. You must include the /LIST qualifier with the /MACHINE_CODE qualifier on the command line. The default is /NOMACHINE_CODE.
6 /OUTPUT[=file-spec]
Negative form: /NOOUTPUT Controls whether the compiler produces a User Interface Description (UID) file. The default output file type is .UID. Specify /NOOUTPUT when you want to compile a specification to obtain only a listing, or when you want the compiler to check the specification for errors only and to display diagnostic messages. The default is /OUTPUT.
7 /WARNINGS[=(msg_type,...)]
Negative form: /NOWARNINGS Controls whether the compiler prints messages for diagnostic warnings. You can specify one or both of the following for msg_type: NOINFORMATIONALS Do not print informational messages NOWARNINGS Do not print warning messages The default is to print both informational and warning messages (/WARNINGS).
8 – Parameters
file-spec Specifies a single UIL specification file to be compiled. If you omit the file type, the UIL compiler uses the default file type .UIL.
9 – Compile Time Errors
9.1 – ARG_COUNT
ERROR: The declaration of the marked procedure specified a different number of arguments than are present in this procedure reference. USER ACTION: Check that you are calling the correct function. If you intend to call the procedure with a varying number of arguments, omit the argument list in the procedure declaration.
9.2 – ARG_TYPE
ERROR: The declaration of the marked procedure specified a different type of argument than is present in this procedure reference. USER ACTION: Check that you are passing the correct argument to the correct function. If you intend to call the procedure with varying argument types, declare the procedure specifying ANY for the type of the argument.
9.3 – BACKSLASH_IGNORED
ERROR: A backslash was followed by an unknown escape character. \ is the escape character in UIL. A selected set of single characters can follow a \ such as \n for newline or \\ to insert a \. The character following the \ was not one of the selected set. USER ACTION: If you want to add a backslash use \\. Otherwise consult the documentation for the supported escape sequences.
9.4 – BUG_CHECK
SEVERE: The compiler diagnosed an internal error. USER ACTION: Submit an SPR.
9.5 – CIRCULAR_DEF
ERROR: The indicated object is referenced as a descendant of itself, either within its own definition or within the definition of one of the objects in the widget hierarchy which it controls. USER ACTION: Change the definition of the indicated object so that it is not a descendant of itself.
9.6 – CONTROL_CHAR
ERROR: The compiler encountered a illegal control character in the specification file. The decimal value of the character is given between the \ \ characters. USER ACTION: Replace the character with the sequence specified in the message (for example, \3\ if the control character's internal value is 3). UIL provides several built-in control characters such as \n and \r for newline and carriage return. Consult the "VMS DECwindows User Interface Language Reference Manual" for a complete list of supported escape sequences.
9.7 – CREATE_PROC_INV
ERROR: You specified a creation procedure when referring to a widget. You can specify a creation procedure only when you declare the widget. USER ACTION: Remove the procedure clause following the widget type.
9.8 – CREATE_PROC_REQ
ERROR: When defining a user-defined widget, you must specify the name of the low-level creation routine for creating an instance of this widget. USER ACTION: Insert a procedure clause following the widget type in the widget declaration. You also need to declare the creation procedure using a procedure declaration. For example: procedure my_list_box_creation_proc(); object list_box1: user_defined procedure my_list_box_creation_proc() { arguments ... };
9.9 – CTX_REQ
ERROR: At the point marked in the specification, one type of object (such as a widget) is required and your specification supplied a different type of object (such as value). USER ACTION: Check for misspelling or that you have referred to the intended object.
9.10 – DUP_LETTER
ERROR: Each of the letters used to represent a color in a color table must be unique. If not, that letter in a icon would represent more than one color; each pixel can have only one color associated with it at a time. The letter marked has been assigned to more than one color. USER ACTION: Choose which color the letter is to represent and remove or assign a new character to any duplicates.
9.11 – DUP_LIST
ERROR: A widget or gadget declaration can have at most one arguments list, one callbacks list, and one controls list. USER ACTION: If you wish to specify multiple lists of arguments, controls, and callbacks, you can do so within one list. For example: arguments { arguments_list1; arguments_list2; };
9.12 – GADGET_NOT_SUP
WARNING: The indicated object type does not support a gadget variant; only a widget variant is supported for this object type. The UIL compiler ignores the gadget indication, and creates widgets of this object type. USER ACTION: Specify that this object type is a widget instead of a gadget.
9.13 – ICON_LETTER
ERROR: You have specified a color to be used in an icon that is not in that icon's color table. The invalid color is identified in the message by displaying the letter used to represent that color between \ \ . This letter was not defined in the specified color table. USER ACTION: Either add the color to the icon's color table or use a character representing a color in the color table. The default color table defines " " as background and "*" as foreground.
9.14 – ICON_WIDTH
ERROR: The icons supported by UIL are rectangular (that is, x pixels wide by y pixels high). As a result, each of the strings used to represent a row of pixels in an icon must have the same length. The specified row does not have the same length as the first row. USER ACTION: Make all the strings in the icon function the same length.
9.15 – INV_MODULE
ERROR: The structure of the module is incorrect. USER ACTION: If there are any syntax errors reported, fix them and recompile. If the error occurs before the first object declaration, check the syntax of the module header for unwanted ";" characters after the module clauses, for example. If the error occurs at the end of the module, check that the module concludes with the clause "end module;".
9.16 – LIST_ITEM
ERROR: The indicated list item is not of the type required by the list. Arguments lists must contain argument entries, callbacks lists must contain callback entries, and controls lists must contain control entries. USER ACTION: Check the syntax for the type of list entry that is required in this context and change the indicated list item.
9.17 – LISTING_OPEN
SEVERE: The compiler could not create the listing file noted in the message. USER ACTION: Check that you have write access to the directory you specified to hold the listing file.
9.18 – LISTING_WRITE
SEVERE: The compiler could not write a line into the listing file noted in the message. USER ACTION: Check to see that there is adequate space on the disk specified to hold the listing file.
9.19 – NAME_TOO_LONG
ERROR: The UIL compiler encountered a name longer than 31 characters. The compiler truncated the name to the leftmost 31 characters. USER ACTION: Shorten the name in the UIL module source.
9.20 – NAMES
ERROR: The case-sensitivity clause, if specified, must be the first clause following the module's name. You have inserted another module clause before this clause. USER ACTION: Reorder the module clauses so that the case-sensitivity clause is first.
9.21 – NEVER_DEF
ERROR: Certain UIL objects such as gadgets and widgets can be referred to before they are defined. The marked object is such an object, however, the compiler never found the object's declaration. USER ACTION: Check for misspelling. If the module is case-sensitive, the spellings of names in declarations and in references must match exactly.
9.22 – NO_UID
INFORMATIONAL: If the compiler reported error or severe diagnostics (that is, any of the diagnostic abbreviations starting with %UIL-E or %UIL-F), a UID file is not created. This diagnostic informs you that the compiler did not produce a UID file. USER ACTION: Fix the problems reported by the compiler.
9.23 – NONPVT
ERROR: A private value is one that is not imported or exported. In the context marked by the message, only a private value is legal. Situations where this message is issued include: defining one value in terms of another; and arguments to functions. In general, a value must be private when the compiler must know the value at compile time. Exported values are disallowed in these contexts, even though a value is present, because that value could be overridden at run time. USER ACTION: Change the value to be private.
9.24 – NOT_IMPL
ERROR: You are using a feature of UIL that has not been implemented. USER ACTION: Try an alternate technique.
9.25 – OBJ_TYPE
ERROR: Most arguments take values of a specific type. The value specified is not correct for this argument. USER ACTION: The message indicates the expected type of argument. Check that you have specified the intended value and that you specified the correct argument.
9.26 – OPERAND_TYPE
ERROR: The indicated operand is not of a type that is supported by this operator. USER ACTION: Check the definition of the operator and make sure the type of the operand you specify is supported by the operator.
9.27 – OUT_OF_MEMORY
SEVERE: The compiler ran out of virtual memory. USER ACTION: Reduce the size of your application.
9.28 – OUT_RANGE
ERROR: The value specified is outside the legal range of its type. USER ACTION: Change the UIL module source.
9.29 – PREV_ERROR
SEVERE: Errors encountered during the compilation have caused the compiler to abort. USER ACTION: Fix the errors already diagnosed by the compiler and recompile.
9.30 – PREVIOUS_DEF
ERROR: The name marked by the message was used in a previous declaration. UIL requires that the names of all objects declared within a module be unique. USER ACTION: Check for a misspelling. If the module is case-sensitive, the spellings of names in declarations and in references must match exactly.
9.31 – SINGLE_LETTER
ERROR: The string associated with each color in a color table must hold exactly one character. You have specified a string with either fewer or more characters. USER ACTION: Use a string exactly one character in length.
9.32 – SINGLE_OCCUR
ERROR: You have specified a particular clause more than once in a context where that clause can only occur once. For example, the version clause in the module can only occur once. USER ACTION: Choose the correct clause and delete the others.
9.33 – SRC_LIMIT
SEVERE: The compiler has a fixed limit for the number of source and include files that it can process. This number is reported in the message. USER ACTION: Use fewer include files.
9.34 – SRC_NULL_CHAR
ERROR: The specified source line contains a null character. The compiler ignores any text following the null character. USER ACTION: Replace each null character with the escape sequence \0\.
9.35 – SRC_OPEN
SEVERE: The compiler could not open the UIL specification file listed in the message. USER ACTION: Check that the file listed in the message is the one you want to compile, that it exists, and that you have read access to the file. If you are using a large number of include files, you may have exceeded your quota for open files.
9.36 – SRC_READ
SEVERE: The compiler could not read a line of the UIL specification file listed in the message. USER ACTION: In the listing file, this message should appear following the last line the compiler read successfully. First check that the file you are compiling is a UIL specification file. If it is, the file mostly likely contains corrupted records.
9.37 – SRC_TRUNCATE
ERROR: The compiler encountered a source line greater than 132 characters. Characters beyond the 132 character limit were ignored. USER ACTION: Break each source line longer than 132 characters into several source lines. Long string literals can be created using the concatenation operator.
9.38 – SUBMIT_SPR
SEVERE: The compiler diagnosed an internal error. USER ACTION: Get a listing and look where the error is being issued. Try fixing any faulty syntax in this area. If you are unable to prevent this error, submit an SPR.
9.39 – SUBNOTALL
SEVERE: Subqualifiers are not allowed for the negative form of this qualifier. For example, /NOWARNINGS is correct but /NOWARNINGS= NOINFORMATIONALS is not allowed. USER ACTION: Use the positive form of the qualifier. For example, /WARNINGS=NOINFORMATIONALS.
9.40 – SUMMARY
INFORMATIONAL: This message lists a summary of the diagnostics issued by the compiler, and appears only when diagnostics have been issued. USER ACTION: Fix the problems reported. You can use the /WARNINGS qualifier to suppress informational and warning diagnostics that you have determined to be harmless.
9.41 – SUPERSEDE
INFORMATIONAL: An argument or callback list has either a duplicate argument or duplicate reason. USER ACTION: This is not necessarily an error. The compiler is alerting you to make sure that you intended to override an prior argument's value. This informational message can be suppressed using the /WARNINGS qualifier.
9.42 – SYNTAX
ERROR: At the point marked in the module, the compiler found a construct such as a punctuation mark, name, or keyword when it was expecting a different construct. The compiler continued analyzing the module at the next occurrence of the construct stated in the message. USER ACTION: Check the syntax of your UIL module at the point marked by the compiler. If the module specifies case-sensitive names, check that your keywords are in lowercase characters.
9.43 – TOO_MANY
ERROR: You exceeded a compiler limit such as the number of fonts in a font table or the number of strings in a translation table. The message indicates the limit imposed by the compiler. USER ACTION: Restructure your UIL module.
9.44 – UID_OPEN
SEVERE: The compiler could not create the UID file noted in the message. A UID file holds the compiled user interface specification. USER ACTION: Check that you have write access to the directory you specified to hold the UID file. If you have a large number of source and include files, check that you have not exceeded your open file quota.
9.45 – UNDEFINED
ERROR: The object pointed to in the message was either never defined or not defined prior to this point in the module. The compiler requires the object to be defined before you refer to the object. USER ACTION: Check for a misspelling of the object's name, a missing declaration for the object, or declaring the object after its first reference. If names in the module are case-sensitive, the spellings of the name in the declaration and in the reference must match exactly.
9.46 – UNKNOWN_CHARSET
ERROR: The message is pointing to a context where a character set name is required. You have not specified the name of a character set in that context. USER ACTION: Check for misspelling. A list of the supported character sets is given in the "VMS DECwindows User Interface Language Reference Manual". If you specified case-sensitive names in the module, check that the character set name is in lowercase characters.
9.47 – UNKNOWN_SEQ
ERROR: The compiler detected a sequence of printable characters it did not understand. The compiler omitted the sequence of characters listed between the quotation marks (" "). USER ACTION: Fix the UIL module source.
9.48 – UNSUPPORTED
WARNING: Each widget or gadget supports a specific set of arguments, reasons, and children. The particular argument, reason, or child you specified is not supported for this widget or gadget. USER ACTION: See the UIL built-in tables in the "VMS DECwindows User Interface Language Reference Manual" for the arguments, reasons, and children supported for each object. If a low-level creation routine accepts an argument that UIL rejects, this does not necessarily indicate that the compiler is in error. Low-level routines ignore arguments that they do not support, without notifying you that the argument is being ignored.
9.49 – UNTERM_SEQ
ERROR: The compiler detected a sequence that was not properly terminated, such as a string literal without the closing quotation mark. USER ACTION: Insert the proper termination characters.
9.50 – WRONG_TYPE
ERROR: The indicated value is not of the specific type required by UIL in this context. USER ACTION: Check the definition of the function or clause.
10 – Using UIL
Using the User Interface Language (UIL) on VAX VMS is somewhat different from using most VAX VMS compiled languages. First, you describe a user interface by creating a UIL module with one of the editors available on VAX VMS (such as the VAX Language-Sensitive Editor), and you store this interface description in a file (called a UIL specification file). The default file type for a UIL specification file is .UIL. Next, you create the application program that uses this interface to invoke the application's functions. Your application must include Motif Resource Manager (MRM) routines to retrieve information from the compiled UIL module. If, for example, the file INTERFACE.UIL contains your UIL module and APPLICATION.C contains your application, the steps you follow to create and use an interface are as follows: 1. Create the specification in file INTERFACE.UIL. 2. Compile the specification with the UIL compiler, as follows: $ UIL/LIST INTERFACE This DCL command creates a User Interface Description (UID) file named INTERFACE.UID and a listing file named INTERFACE.LIS. 3. Create and compile the application program in file APPLICATION.C. 4. Link the application program APPLICATION.OBJ using the VMS Linker. 5. Run the application, using the following command: $ RUN APPLICATION The User Interface Description (UID) file, INTERFACE.UID, is read directly by the application and is NOT linked as part of the application. As a result, you can change the interface and recompile it with UIL compiler. To rerun the application with the new interface, you do NOT have to recompile or relink the application. The "VMS DECwindows Guide to Applications Programming" completely describes how to create a UIL module and how your application extracts information from the UIL module to build its interface. The MRM routines are fully described in the "VMS DECwindows Toolkit Routines Reference Manual".