## Display Device Driver Reference for OS/2

[prev][next][parent][TOC]

### Constants, String-Literals, Identifiers, and Keywords

.PMI constants are 32-bit integer constants, either in decimal or hexadecimal format.

    <digit>  ::= '0'..'9'
    <hexdigit> ::= <digit>  |  'a'..'f'
    <character> ::= 'a'..'z' |  'A'..  'Z'|  '_' |  '.'
    <decimal number>  ::= <digit>  |  <decimal number> <digit>
    <hexadecimal number>  ::= '0x' <hexdigit>  |
                             <hexadecimal number>  <hexdigit>
    <constant>  ::= <decimal number>  |  <hexadecimal number>

Any combination of printable ASCII characters in quotes is considered a string-literal. String-literals are not parsed in any way. They are stored in their uppercase format and are passed on query-style calls, converting both source and target to uppercase. String-literals are limited to 128 characters in length, including 0 at the end. Binary strings are also limited to 128 bits (4 doublewords).

    <string>  ::= "<ASCII character> [<string>.]"
    <binary-string>  ::= " <'0'|'1'> | <'0'|1'> [<binary-string>.]"

An Identifier, or a name, is a sequence of letters and digits. The first character must be a letter. The underscore (_) and point (.) count as a letter, but point (.) cannot be used in the first position. Maximum length of an identifier is 32 characters.

    <name>  ::= <character>  <token>
    <token>  ::= {<character>  |  [<digit> <token>.]}

Reserved identifiers are called keywords. Keywords are divided into three groups:

.PMI keyvariables, which are keywords representing configuration and mode parameters

.PMI constants, backed by system-wide definitions

All other reserved identifiers

All of the PMI keyvariables are available through the VIDEOPMI programming interface as fields of the video instance structure. They are also available to all of the PMI sections and functions and can be used in conditional statements or expressions. At run time, during a SetMode, some of the ModeInfo PMI keyvariables could differ from the values assigned by the .PMI file. These PMI keyvariables can be modified at the user or system level and are therefore regarded as Dynamic. Others are called Static. At the procedural level, static PMI keyvariables are fixed to the values specified in the .PMI file and cannot be changed for a given mode. Some dynamic variables have a limited set of possible values; others are valid in a range that should be verified by dedicated sections. See [ ModeInfo], [Hardware] and [TuneDisplay] in PMI Sections for more information on dynamic vs. static keyvariables.

Not all of the PMI keyvariables have to be defined. See [ModeInfo] and [ Hardware] in PMI Sections for further explanations.