Extended Country Info Block

 This topic covers the ExtCountryInfoRec returned by fn 6501H.  See
 CountryInfoRec for the subset of this structure obtained via the older
 fn 38H.

ExtCountryInfoRec
  Offset Size Contents
  ▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   +0      1  bRecID       Information ID (01H on calls to fn 6501H)
   +1      2  wRecLen      size of information
   +3      2  wCountryID   Country Code
   +5      2  wCodePgID    Code Page
   +7      2  wDateFormat  date format
   +9      5  szCrncySymb  currency symbol (ASCIIZ)
  +0eH     2  szThouSep    thousands separator (ASCIIZ)
  +10H     2  szDecSep     decimal separator (ASCIIZ)
  +12H     2  szDateSep    date separator (ASCIIZ)
  +14H     2  szTimeSep    time separator (ASCIIZ)
  +16H     1  bCrncyFlags  currency format flags
  +17H     1  bCrncyDigits decimals digits in currency
  +18H     1  bTimeFormat  time format
  +19H     4  pfCasemap    Casemap FAR call address
  +1dH     2  szDataSep    data list separator (ASCIIZ)
  +1fH    10  res          reserved zeros
          41               length of return buffer

      bRecID  The record ID, as used in all 3.3+ NLS fns.
     wRecLen  The size of the following information.  Be suer to check this,
              to avoid the chance that DOS returns a truncated record.
  wCountryID  Country ID
   wCodePgID  Code Page ID
 wDateFormat  How to print a date: 0000H = MM/DD/YY (as in USA)
                                   0001H = DD/MM/YY (as in Europe)
                                   0002H = YY/MM/DD (as in Japan)
 szCrncySymb  ASCIIZ char(s) used for printing currency amounts
   szThouSep  ASCIIZ  char used to separate 1000 place (e.g., comma)
    szDecSep  ASCIIZ  char used to separate number from decimal (e.g.,
              period)
   szDateSep  ASCIIZ  char used to separate elements of a date
   szTimeSep  ASCIIZ  char used to separate elements hours from minutes
 bCrncyFlags  currency format code, e.g.:  0="$123.00";  1="123.00$";
                                         2="$ 123.00"; 3="123.00 $"
bCrncyDigits  The number of places that appear to the right of the decimal
              point when printing currency amounts.
 bTimeFormat  time format:  0=12-hour clock, 1=24-hour clock
   pfCasemap  CaseMap FAR Call address (see note)
   szDataSep  ASCIIZ  char used to separate elements of a list (e.g., comma)

   Notes: ■ The CaseMap call can be used to assign ASCII weights to
            characters above 80H.  For instance, the DOS SORT command uses
            the CaseMap to assign â,ä,à,å,Ä,Å,æ,and á the same ASCII weight
            as 'A' and 'a' for sorting purposes.  Different CaseMaps exist
            for countries with different alphabets.

              To use the CaseMap address:
                1. Place a byte to 'weigh' into AL
                2. Make a FAR CALL to the indicated address
                3. The weight value is returned in AL
                   All register values (except AL) are preserved

            Note: DOS 3.3+ provides easy-to-use case-mapping via fn 65H.

          ■ When running under DOS version 2.0 through 3.2, DOS returns a
            structure containing some of this information, but in a
            different layout.  See CountryInfoRec.  Be sure you know which
            version of DOS is active (see fn 30H).

See Also: National Language Support
          Data Structures
                                    -♦-