EXTCOUNTRYINFO

EXTCOUNTRYINFO STRUC

eciLength dw ? ;size of the structure, in bytes

eciCountryCode dw ? ;country code

eciCodePageID dw ? ;code-page identifier

eciDateFormat dw ? ;date format

eciCurrency db 5 dup (?) ;currency symbol (ASCIIZ)

eciThousands db 2 dup (?) ;thousands separator (ASCIIZ)

eciDecimal db 2 dup (?) ;decimal separator (ASCIIZ)

eciDateSep db 2 dup (?) ;date separator (ASCIIZ)

eciTimeSep db 2 dup (?) ;time separator (ASCIIZ)

eciBitField db ? ;currency format

eciCurrencyPlaces db ? ;places after decimal point

eciTimeFormat db ? ;12- or 24-hour format

eciCaseMap dd ? ;address of case-mapping routine

eciDataSep db 2 dup (?) ;data-list separator (ASCIIZ)

eciReserved db 10 dup (?) ;reserved

EXTCOUNTRYINFO ENDS

The EXTCOUNTRYINFO structure contains country-specific information that programs use to format dates, times, currency, and other information.

Fields

eciLength

Specifies the length of the structure, in bytes, not including this field.

eciCountryCode

Specifies the country code for the given information. It can be one of the following:

Value Meaning

001 United States
002 Canadian-French
003 Latin America
031 Netherlands
032 Belgium
033 France
034 Spain
036 Hungary
038 Yugoslavia
039 Italy
041 Switzerland
042 Czechoslovakia
044 United Kingdom
045 Denmark
046 Sweden
047 Norway
048 Poland
049 Germany
055 Brazil
061 International (English)
351 Portugal
358 Finland

eciCodePageID

Identifies the code page for the information given. This field can be one of the following values:

Value Meaning

437 United States
850 Multilingual (Latin I)
852 Slavic (Latin II)
860 Portuguese
863 Canadian-French
865 Nordic

eciDateFormat

Specifies the format for the date. This field can be one of the following values:

Value Meaning

DATE_USA (0000h) Month/day/year
DATE_EUROPE (0001h) Day/month/year
DATE_JAPAN (0002h) Year/month/day

eciCurrency

Specifies a zero-terminated ASCII (ASCIIZ) string containing the currency symbol.

eciThousands

Specifies an ASCIIZ string containing the thousands separator.

eciDecimal

Specifies an ASCIIZ string containing the decimal separator.

eciDateSep

Specifies an ASCIIZ string containing the date separator.

eciTimeSep

Specifies an ASCIIZ string containing the time separator.

eciBitField

Specifies the format for currency. This field can be a combination of the following settings:

Bit Meaning

0 0 = Currency symbol precedes amount
  1 = Currency symbol follows amount
1 0 = No space between currency symbol and amount
  1 = One space between currency symbol and amount

All other bits in eciBitField are undefined.

eciCurrencyPlaces

Specifies the number of digits that appear after the decimal place in currency format.

eciTimeFormat

Specifies the format for time. This field can be one of the following values:

Value Meaning

TIME_12HOUR (00h) 12-hour time format
TIME_24HOUR (01h) 24-hour time format

eciCaseMap

Contains the 32-bit address (segment:offset) of the case-conversion routine. The routine performs lowercase-to-uppercase mapping (country-specific) for character values in the range 80h through 0FFh and does not convert characters with values less than 80h.

eciDataSep

Specifies an ASCIIZ string containing the data-list separator.

eciReserved

Reserved; do not use.

Comments

To convert a character using the case-conversion routine, the program copies the character value to the AL register and calls the routine, using the address in the eciCaseMap field. If there is a matching uppercase character, the routine returns its value in the AL register. Otherwise, the routine returns the initial value unchanged. The AL and FLAGS registers are the only altered registers.

See Also

Interrupt 21h Function 6501h Get Extended Country Information