This variable allows you to define which upper-case characters correspond to which lower-case characters, for characters outside of the standard ASCII character set (those whose underlying decimal values are 128 or larger).

You might find this useful if you are experiencing problems with the UPPER or LOWER option of the ACCEPT statement when non-standard characters are entered (such as an "e" with an accent above it). The ACUCOBOL-GT runtime system relies heavily on C library routines to handle conversions between upper-case and lower-case characters. On many machines, these routines do not handle characters outside of the standard ASCII character set correctly.

To specify corresponding characters, use UPPER_LOWER_MAP followed by pairs of characters, where the first character is the upper-case version and the second character is the lower-case version. Separate the characters by a space. Describe the characters either by typing them at the keyboard or by entering the decimal value that represents them.

For example, on a standard IBM PC, the video card represents an upper-case "U" with an umlaut (Ü) as character 154, and the lower-case "u" with an umlaut (ü) as 129. The upper-case "E" with an accent character is 144 (É) and the lower-case "e" with an accent is 130 (é). To express this in the configuration file, you would add the following line:

UPPER_LOWER_MAP  154 129 144 130

This could be extended to include all of the character pairs available.

By default, Windows systems come with the UPPER_LOWER_MAP defined to be the character pairs available on the standard video cards produced by IBM. Note that using code pages can change this, so the default may not work in all cases for these machines. For other machines, the default is empty (which means that C library routines are used for conversion). If you experience difficulties, UPPER_LOWER_MAP allows you to define a mapping that reflects your hardware configuration.

Only characters whose decimal values are 128 or greater may be mapped by this technique.

Note: This variable cannot be read with the ACCEPT FROM ENVIRONMENT statement.