home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / bpos2i.zip / NLS.PAS < prev    next >
Pascal/Delphi Source File  |  1994-05-31  |  6KB  |  126 lines

  1. (* ====================================================== *)
  2. (*                          NLS.PAS                       *)
  3. (*       Implementation of the functions of NLS.DLL       *)
  4. (*               »National Language Support«              *)
  5. (*        Translation to Pascal by jb/toolbox mag         *)
  6. (* ====================================================== *)
  7. {$IFNDEF OS2}
  8.   Error: Wrong target/Compiler not patched
  9. {$ENDIF}
  10.  
  11. UNIT Nls;
  12.  
  13. INTERFACE
  14.  
  15. USES
  16.   Os2Def;
  17.  
  18. (* A collating sequence table is essentially a table mapping characters *)
  19. (* in the order they should be collated. *)
  20.  
  21. TYPE
  22.   CollateTable = ARRAY [#0..#255] OF CHAR;
  23.  
  24. (* Get a table specifying the collating sequence for a country *)
  25. (* casemap (?) a string *)
  26. TYPE
  27.   CountryCode = RECORD
  28.     Country    : WORD;     (* the country *)
  29.     codepage   : WORD;     (* code page for the country *)
  30.   END;
  31.  
  32. (* The record returned by DosGetCountryInfo *)
  33.  
  34.   CountryInfo = RECORD
  35.     Country             : WORD;     (* the country code *)
  36.     codepage            : WORD;     (* must be zero *)
  37.     fsDateFmt           : WORD;     (* 0 -> mm/dd/yy *)
  38.                                         (* 1 -> dd/mm/yy *)
  39.                                         (* 2 -> yy/mm/dd *)
  40.     szCurrency          : ARRAY [0..4] OF CHAR; (* ASCIIZ currency sign *)
  41.     szThousandsSeparator: ARRAY [0..1] OF CHAR; (* ASCIIZ thousands separator *)
  42.     szDecimalSeparator  : ARRAY [0..1] OF CHAR; (* ASCIIZ decimal separator  *)
  43.     szDateSeparator     : ARRAY [0..1] OF CHAR; (* ASCIIZ date separator *)
  44.     szTimeSeparator     : ARRAY [0..1] OF CHAR; (* ASCIIZ time separator *)
  45.     fsCurrencyFmt       : BYTE;         (* bit 0 -> currency indicator follows*)
  46.                                         (* bit 1 -> space between *)
  47.                                         (* bit 2 -> replaces decimal point *)
  48.     cDecimalPlace       : BYTE;         (* decimal places used in currency *)
  49.     fsTimeFmt           : BYTE;         (* bit 0:  0 -> 12 hour with a or p *)
  50.                                         (*         1 -> 24 hour format *)
  51.     abReserved1         : ARRAY [0..1] OF WORD; (* must be zero *)
  52.     szDataSeparator     : ARRAY [0..1] OF CHAR; (* null terminated *)
  53.     abReserved2         : ARRAY [0..4] OF WORD; (* must be zero *)
  54.   END;
  55.  
  56. FUNCTION DosCaseMap(    Length  : WORD;        (* length of the string *)
  57.                     VAR Country : CountryCode; (* pointer to a country code *)
  58.                     VAR pChStr  : CHAR
  59.                               ) : WORD;
  60. FUNCTION Dos16CaseMap(    Length  : WORD;        (* length of the string *)
  61.                       VAR Country : CountryCode; (* pointer to a country code *)
  62.                       VAR pChStr  : CHAR
  63.                                 ) : WORD;
  64.  
  65. FUNCTION DosGetCollate(    Length       : WORD;         (* length of data area *)
  66.                        VAR Country      : CountryCode;  (* the country and code page *)
  67.                        VAR MemoryBuffer : CollateTable; (* returned collating table *)
  68.                        VAR  DataLength  : WORD          (* length of table returned *)
  69.                                       ) : WORD;
  70. FUNCTION Dos16GetCollate(    Length       : WORD;         (* length of data area *)
  71.                          VAR Country      : CountryCode;  (* the country and code page *)
  72.                          VAR MemoryBuffer : CollateTable; (* returned collating table *)
  73.                          VAR  DataLength  : WORD          (* length of table returned *)
  74.                                         ) : WORD;
  75.  
  76. (* Get list of code pages available in the system *)
  77. FUNCTION DosGetCtryInfo(    Length       : WORD;         (* length of the buffer *)
  78.                         VAR CountryCode  : CountryCode;  (* the country code to return info *)
  79.                         VAR MemoryBuffer : CountryInfo;  (* address of buffer to return info *)
  80.                         VAR DataLength   : WORD          (* length of returned info *)
  81.                                        ) : WORD;
  82. FUNCTION Dos16GetCtryInfo(    Length       : WORD;         (* length of the buffer *)
  83.                           VAR CountryCode  : CountryCode;  (* the country code to return info *)
  84.                           VAR MemoryBuffer : CountryInfo;  (* address of buffer to return info *)
  85.                           VAR DataLength   : WORD          (* length of returned info *)
  86.                                          ) : WORD;
  87.  
  88. (* Get the DBCS environmental vector for a specified country code *)
  89. (* Returns a list of pairs of words:  StartValue, EndValue with two *)
  90. (* zeros terminating *)
  91.  
  92. FUNCTION DosGetDBCSEv(Length       : WORD;         (* length of buffer passed *)
  93.                       Country      : CountryCode;  (* the country code to get Ev for *)
  94.                       MemoryBuffer : Pointer       (* address of buffer *)
  95.                                  ) : WORD;
  96. FUNCTION Dos16GetDBCSEv(Length       : WORD;         (* length of buffer passed *)
  97.                         Country      : CountryCode;  (* the country code to get Ev for *)
  98.                         MemoryBuffer : Pointer       (* address of buffer *)
  99.                                    ) : WORD;
  100.  
  101. IMPLEMENTATION
  102.  
  103.   FUNCTION DosCaseMap;       EXTERNAL 'NLS' INDEX 1;
  104.   FUNCTION Dos16CaseMap;     EXTERNAL 'NLS' INDEX 1;
  105.  
  106.   FUNCTION DosGetCollate;    EXTERNAL 'NLS' INDEX 2;
  107.   FUNCTION Dos16GetCollate;  EXTERNAL 'NLS' INDEX 2;
  108.  
  109.   FUNCTION DosGetCtryInfo;   EXTERNAL 'NLS' INDEX 3;
  110.   FUNCTION Dos16GetCtryInfo; EXTERNAL 'NLS' INDEX 3;
  111.  
  112.   FUNCTION DosGetDBCSEv;     EXTERNAL 'NLS' INDEX 4;
  113.   FUNCTION Dos16GetDBCSEv;   EXTERNAL 'NLS' INDEX 4;
  114.  
  115. (* ====================================================== *)
  116. (*                        32 Bit                          *)
  117. {
  118.   FUNCTION Dos32QueryCtryInfo;  External 'NLS' INDEX 5;
  119.   FUNCTION Dos32QueryDBCSEnv;   External 'NLS' INDEX 6;
  120.   FUNCTION Dos32MapCase;        External 'NLS' INDEX 7;
  121.   FUNCTION Dos32QueryCollate;   External 'NLS' INDEX 8;
  122. }
  123. END.
  124.  
  125. (* ====================================================== *)
  126.