home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Internet Business Development Kit / PRODUCT_CD.iso / sqlsvr / ptk / mips / samp.rc < prev    next >
Encoding:
Text File  |  1995-12-01  |  34.9 KB  |  635 lines

  1. /*
  2. ** SAMP.RC - This is the resource file for the ODS driver helper DLLs.
  3. **    Resources for sample resource DLL.
  4. **
  5. ** (C) Copyright 1992-1995 By Microsoft Corp.
  6. **
  7. */
  8.  
  9. #include <windows.h>
  10. #include "sql.h"
  11. #include "sqlext.h"
  12. #include "odbcmsg.h"            // ODBC resource defines
  13. #include "odbcss.h"
  14. #include "odsrc.h"
  15.  
  16. /*    All values are set for SQL Server 6.0 as an example */
  17.  
  18. STRINGTABLE
  19. BEGIN
  20.  
  21.     /*    SQLGetInfo values */
  22.  
  23.     IDS_INFO_OFFSET+SQL_ACTIVE_CONNECTIONS,            "0"  // Limit not known
  24.     IDS_INFO_OFFSET+SQL_FETCH_DIRECTION,            "1"  // SQL_FD_FETCH_NEXT
  25.     IDS_INFO_OFFSET+SQL_ROW_UPDATES,                "N"
  26.     IDS_INFO_OFFSET+SQL_SERVER_NAME,                   "select @@SERVERNAME"
  27.     IDS_INFO_OFFSET+SQL_SEARCH_PATTERN_ESCAPE,        "\\" /* Max 5 characters */
  28.     IDS_INFO_OFFSET+SQL_ODBC_SQL_CONFORMANCE,        "1" // SQL_OSC_CORE
  29.     IDS_INFO_OFFSET+SQL_DATABASE_NAME,                   "select DB_NAME()"
  30.     IDS_INFO_OFFSET+SQL_DBMS_NAME,                       "sp_server_info 1"
  31.     IDS_INFO_OFFSET+SQL_DBMS_VER,                      "sp_server_info 2"
  32.     IDS_INFO_OFFSET+SQL_ACCESSIBLE_TABLES,            "select 'Y'"
  33.     IDS_INFO_OFFSET+SQL_ACCESSIBLE_PROCEDURES,        "Y"
  34.     IDS_INFO_OFFSET+SQL_PROCEDURES,                      "Y"
  35.     IDS_INFO_OFFSET+SQL_CONCAT_NULL_BEHAVIOR,        "1" // SQL_CB_NON_NULL
  36.     IDS_INFO_OFFSET+SQL_CURSOR_COMMIT_BEHAVIOR,        "1" // SQL_CB_CLOSE
  37.     IDS_INFO_OFFSET+SQL_CURSOR_ROLLBACK_BEHAVIOR,    "1" // SQL_RB_CLOSE
  38.     IDS_INFO_OFFSET+SQL_DATA_SOURCE_READ_ONLY,        "select 'N'"
  39.     IDS_INFO_OFFSET+SQL_DEFAULT_TXN_ISOLATION,        "select 2"
  40.     IDS_INFO_OFFSET+SQL_EXPRESSIONS_IN_ORDERBY,        "Y"
  41.     IDS_INFO_OFFSET+SQL_IDENTIFIER_CASE,            "4" /* Mixed/Not sensitive */
  42.     IDS_INFO_OFFSET+SQL_IDENTIFIER_QUOTE_CHAR,        "\042" /* Max 5 characters */
  43.     IDS_INFO_OFFSET+SQL_MAX_COLUMN_NAME_LEN,        "30"
  44.     IDS_INFO_OFFSET+SQL_MAX_OWNER_NAME_LEN,            "30"
  45.     IDS_INFO_OFFSET+SQL_MAX_PROCEDURE_NAME_LEN,        "36"
  46.     IDS_INFO_OFFSET+SQL_MAX_QUALIFIER_NAME_LEN,        "30"
  47.     IDS_INFO_OFFSET+SQL_MAX_TABLE_NAME_LEN,            "30"
  48.     IDS_INFO_OFFSET+SQL_MULT_RESULT_SETS,            "Y"
  49.     IDS_INFO_OFFSET+SQL_MULTIPLE_ACTIVE_TXN,        "Y"
  50.     IDS_INFO_OFFSET+SQL_OUTER_JOINS,                "Y"
  51.     IDS_INFO_OFFSET+SQL_QUALIFIER_NAME_SEPARATOR,    "." /* Max 5 characters */
  52.     IDS_INFO_OFFSET+SQL_SCROLL_CONCURRENCY,            "1" // SQL_SCCO_READ_ONLY
  53.     IDS_INFO_OFFSET+SQL_SCROLL_OPTIONS,                "1" // SQL_SO_FORWARD_ONLY
  54.     IDS_INFO_OFFSET+SQL_TXN_CAPABLE,                "2" // SQL_TC_ALL
  55.     IDS_INFO_OFFSET+SQL_USER_NAME,                    "select USER_NAME()"
  56.     IDS_INFO_OFFSET+SQL_CONVERT_FUNCTIONS,            "1"
  57.     IDS_INFO_OFFSET+SQL_NUMERIC_FUNCTIONS,            "8388607"    /*0x7fffff*/
  58.     IDS_INFO_OFFSET+SQL_STRING_FUNCTIONS,            "523999"    /*0x7fedf*/
  59.     IDS_INFO_OFFSET+SQL_SYSTEM_FUNCTIONS,            "7"         /*0x7*/
  60.     IDS_INFO_OFFSET+SQL_TIMEDATE_FUNCTIONS,         "131071"    /*0x1ffff*/
  61.     IDS_INFO_OFFSET+SQL_CONVERT_BIGINT,                "0"         /*0x0*/
  62.     IDS_INFO_OFFSET+SQL_CONVERT_BINARY,                "273695"    /*0x42d1f*/
  63.     IDS_INFO_OFFSET+SQL_CONVERT_BIT,                "15743"        /*0x3d7f*/
  64.     IDS_INFO_OFFSET+SQL_CONVERT_CHAR,                "409471"    /*0x63f7f*/
  65.     IDS_INFO_OFFSET+SQL_CONVERT_DATE,                "0"         /*0x0*/
  66.     IDS_INFO_OFFSET+SQL_CONVERT_DECIMAL,            "15743"        /*0x3d7f*/
  67.     IDS_INFO_OFFSET+SQL_CONVERT_DOUBLE,             "0"         /*0x0*/
  68.     IDS_INFO_OFFSET+SQL_CONVERT_FLOAT,                "12671"        /*0x317f*/
  69.     IDS_INFO_OFFSET+SQL_CONVERT_INTEGER,            "15743"        /*0x3d7f*/
  70.     IDS_INFO_OFFSET+SQL_CONVERT_LONGVARCHAR,        "769"        /*0x301*/
  71.     IDS_INFO_OFFSET+SQL_CONVERT_NUMERIC,            "6"            /*0x6*/
  72.     IDS_INFO_OFFSET+SQL_CONVERT_REAL,                "12671"        /*0x317f*/
  73.     IDS_INFO_OFFSET+SQL_CONVERT_SMALLINT,            "15743"        /*0x3d7f*/
  74.     IDS_INFO_OFFSET+SQL_CONVERT_TIME,                "0"            /*0x0*/
  75.     IDS_INFO_OFFSET+SQL_CONVERT_TIMESTAMP,            "134401"    /*0x20d01*/
  76.     IDS_INFO_OFFSET+SQL_CONVERT_TINYINT,            "15743"        /*0x3d7f*/
  77.     IDS_INFO_OFFSET+SQL_CONVERT_VARBINARY,            "273695"    /*0x42d1f*/
  78.     IDS_INFO_OFFSET+SQL_CONVERT_VARCHAR,            "409471"    /*0x63f7f*/
  79.     IDS_INFO_OFFSET+SQL_CONVERT_LONGVARBINARY,        "265216"    /*0x40c00*/
  80.     IDS_INFO_OFFSET+SQL_TXN_ISOLATION_OPTION,        "select 15" //SQL_TXN_READ_UNCOMMITTED | SQL_TXN_READ_COMMITTED | SQL_TXN_REPEATABLE_READ | SQL_TXN_SERIALIZABLE
  81.     IDS_INFO_OFFSET+SQL_ODBC_SQL_OPT_IEF,            "Y"
  82.     IDS_INFO_OFFSET+SQL_CORRELATION_NAME,            "2" /* SQL_CN_ANY */
  83.     IDS_INFO_OFFSET+SQL_NON_NULLABLE_COLUMNS,        "1" /* SQL_NNC_NON_NULL */
  84.     IDS_INFO_OFFSET+SQL_LOCK_TYPES,                 "0"
  85.     IDS_INFO_OFFSET+SQL_POS_OPERATIONS,             "0"
  86.     IDS_INFO_OFFSET+SQL_POSITIONED_STATEMENTS,        "0"
  87.     IDS_INFO_OFFSET+SQL_GETDATA_EXTENSIONS,            "0"
  88.     IDS_INFO_OFFSET+SQL_BOOKMARK_PERSISTENCE,        "0"
  89.     IDS_INFO_OFFSET+SQL_STATIC_SENSITIVITY,         "0"
  90.     IDS_INFO_OFFSET+SQL_FILE_USAGE,                    "0"    // SQL_FILE_NOT_SUPPORTED
  91.     IDS_INFO_OFFSET+SQL_NULL_COLLATION,             "1" /* SQL_NC_LOW */
  92.     IDS_INFO_OFFSET+SQL_ALTER_TABLE,                "1"    // SQL_ADD_COLUMN
  93.     IDS_INFO_OFFSET+SQL_COLUMN_ALIAS,                "Y"
  94.     IDS_INFO_OFFSET+SQL_GROUP_BY,                    "2" // SQL_GB_GROUP_BY_CONTAINS_SELECT
  95.     IDS_INFO_OFFSET+SQL_ORDER_BY_COLUMNS_IN_SELECT,    "N"
  96.     IDS_INFO_OFFSET+SQL_OWNER_USAGE,                "31"// 0x0000001f
  97.     IDS_INFO_OFFSET+SQL_QUALIFIER_USAGE,            "7"    // 0x00000007
  98.     IDS_INFO_OFFSET+SQL_QUOTED_IDENTIFIER_CASE,     "4" // Mixed/Not sensitive
  99.     IDS_INFO_OFFSET+SQL_SPECIAL_CHARACTERS,         "#$└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷°∙·√ⁿ²■ "
  100.     IDS_INFO_OFFSET+SQL_SUBQUERIES,                 "31"// SQL_SQ_COMPARISON|SQL_SQ_EXISTS|SQL_SQ_IN|SQL_SQ_QUANTIFIED|SQL_SQ_CORRELATED_SUBQUERIES
  101.     IDS_INFO_OFFSET+SQL_UNION,                        "3" // SQL_U_UNION|SQL_U_UNION_ALL
  102.     IDS_INFO_OFFSET+SQL_MAX_COLUMNS_IN_GROUP_BY,    "16"
  103.     IDS_INFO_OFFSET+SQL_MAX_COLUMNS_IN_INDEX,        "16"
  104.     IDS_INFO_OFFSET+SQL_MAX_COLUMNS_IN_ORDER_BY,    "16"
  105.     IDS_INFO_OFFSET+SQL_MAX_COLUMNS_IN_SELECT,        "4000"
  106.     IDS_INFO_OFFSET+SQL_MAX_COLUMNS_IN_TABLE,        "250"
  107.     IDS_INFO_OFFSET+SQL_MAX_INDEX_SIZE,                "900"
  108.     IDS_INFO_OFFSET+SQL_MAX_ROW_SIZE_INCLUDES_LONG,    "N"
  109.     IDS_INFO_OFFSET+SQL_MAX_ROW_SIZE,                "1962"
  110.     IDS_INFO_OFFSET+SQL_MAX_STATEMENT_LEN,            "0"
  111.     IDS_INFO_OFFSET+SQL_MAX_TABLES_IN_SELECT,        "16"
  112.     IDS_INFO_OFFSET+SQL_MAX_USER_NAME_LEN,            "30"
  113.     IDS_INFO_OFFSET+SQL_MAX_CHAR_LITERAL_LEN,        "0"
  114.     IDS_INFO_OFFSET+SQL_TIMEDATE_ADD_INTERVALS,     "511"    // 0x000001ff
  115.     IDS_INFO_OFFSET+SQL_TIMEDATE_DIFF_INTERVALS,    "511"    // 0x000001ff
  116.     IDS_INFO_OFFSET+SQL_NEED_LONG_DATA_LEN,            "Y"
  117.     IDS_INFO_OFFSET+SQL_MAX_BINARY_LITERAL_LEN,     "0"
  118.     IDS_INFO_OFFSET+SQL_LIKE_ESCAPE_CLAUSE,         "N"
  119.     IDS_INFO_OFFSET+SQL_QUALIFIER_LOCATION,         "1" // SQL_OL_START
  120.     IDS_INFO_OFFSET+SQL_OJ_CAPABILITIES_NEW,        "127" // SQL_OJ_LEFT | SQL_OJ_RIGHT | SQL_OJ_FULL | SQL_OJ_NESTED | SQL_OJ_NOT_ORDERED | SQL_OJ_INNER | SQL_OJ_ALL_COMPARISON_OPS
  121.  
  122. #if (ODBCVER >= 0x0300)
  123. //    ODBC 3.0 extensions
  124.     IDS_INFO_OFFSET+SQL_CONVERT_INTERVAL_YEAR_MONTH,"0" // Intervals not supported
  125.     IDS_INFO_OFFSET+SQL_CONVERT_INTERVAL_DAY_TIME,    "0" // Intervals not supported
  126.     IDS_INFO_OFFSET+SQL_BATCH_ROW_COUNT,            "1"    // SQL_BRC_EXPLICIT
  127.     IDS_INFO_OFFSET+SQL_PARAM_ARRAY_ROW_COUNTS,     "0"    // SQL_PARC_BATCH
  128.     IDS_INFO_OFFSET+SQL_LOCATOR_PERSISTENCE,        "1"    // SQL_LP_HOLDABLE
  129.     IDS_INFO_OFFSET+SQL_CURSOR_ROW_COUNT,            "19" // SQL_CRC_STATIC_EXACT | SQL_CRC_KEYSET_EXACT | SQL_CRC_DYNAMIC_APPROXIMATE
  130.     IDS_INFO_OFFSET+SQL_INFO_SCHEMA_VIEWS,            "0"    // Info views not supported
  131.     IDS_INFO_OFFSET+SQL_LOCATOR_UPDATABILITY,        "2"    // SQL_LU_ALL
  132.     IDS_INFO_OFFSET+SQL_LOCATOR_SENSITIVITY,        "1"    // SQL_LS_DYNAMIC
  133.     IDS_INFO_OFFSET+SQL_PREDICATE_FIND,                "0"    // Predicate find not supported
  134.     IDS_INFO_OFFSET+SQL_BATCH_SUPPORT,                "15" // SQL_BS_SELECT_EXPLICIT | SQL_BS_ROW_COUNT_EXPLICIT | SQL_BS_SELECT_PROC | SQL_BS_ROW_COUNT_PROC
  135.     IDS_INFO_OFFSET+SQL_PARAM_ARRAY_SELECTS,        "0"    // SQL_PAS_BATCH
  136. //    XOpen extensions
  137.     IDS_INFO_OFFSET+SQL_XOPEN_CLI_YEAR,                "1995" //
  138.     IDS_INFO_OFFSET+SQL_CURSOR_SENSITIVITY,            "2" //
  139.     IDS_INFO_OFFSET+SQL_DESCRIBE_PARAMETER,            "Y" //
  140.     IDS_INFO_OFFSET+SQL_CATALOG_NAME,                "Y" //
  141.     IDS_INFO_OFFSET+SQL_COLLATION_SEQ,
  142.         "select t2.description from syscharsets t1, syscharsets t2, sysconfigures t3 where t1.csid=t2.id and t1.id=t3.value and t3.config=1123"
  143.     IDS_INFO_OFFSET+SQL_MAX_IDENTIFIER_LEN,            "30" //
  144.     IDS_INFO_OFFSET+SQL_MAX_COLUMNS_IN_FOREIGN_KEY, "16" //
  145.     IDS_INFO_OFFSET+SQL_MAX_COLUMNS_IN_INSERT,        "250" //
  146.     IDS_INFO_OFFSET+SQL_MAX_COLUMNS_IN_JOIN,        "" //
  147.     IDS_INFO_OFFSET+SQL_MAX_COLUMNS_IN_UPDATE,        "250" //
  148.     IDS_INFO_OFFSET+SQL_MAX_DDL_STATEMENT_SIZE,     "0" //
  149.     IDS_INFO_OFFSET+SQL_MAX_FOREIGN_KEY_SIZE,        "1962" //
  150.     IDS_INFO_OFFSET+SQL_MAX_GROUP_BY_SIZE,            "900" //
  151.     IDS_INFO_OFFSET+SQL_MAX_JOIN_COLUMNS_SIZE,        "900" //
  152.     IDS_INFO_OFFSET+SQL_MAX_ORDER_BY_SIZE,            "900" //
  153.     IDS_INFO_OFFSET+SQL_MAX_PREDICATES,                "0" //
  154.     IDS_INFO_OFFSET+SQL_MAX_SCHEMA_DEFINITION_LEN , "0" //
  155.     IDS_INFO_OFFSET+SQL_MAX_SUBQUERIES,                "15" //
  156.     IDS_INFO_OFFSET+SQL_MAX_SUBQUERY_NESTING,        "15" //
  157.     IDS_INFO_OFFSET+SQL_MAX_TABLES_IN_CATALOG,        "65535" //
  158.     IDS_INFO_OFFSET+SQL_MAX_UNIQUE_KEY_SIZE,        "1962" //
  159.     IDS_INFO_OFFSET+SQL_ASYNC_MODE,                    "0" //
  160.     IDS_INFO_OFFSET+SQL_LOB_LOCATOR,                "0" //
  161. //    IDS_INFO_OFFSET+SQL_ACCESSIBLE_PROCEDURES,        "Y" // defined above
  162. #endif
  163.  
  164.     IDS_AUX_KEYWORDS,
  165. "BREAK,BROWSE,BULK,CHECKPOINT,CLUSTERED,COMMITTED,COMPUTE,CONFIRM,CONTROLROW,DATABASE,DBCC,DISK,DUMMY,DUMP,ERRLVL,ERROREXIT,EXIT,FILE,FILLFACTOR,FLOPPY,HOLDLOCK,IDENTITY_INSERT,IDENTITYCOL,IF,KILL,LINENO,LOAD,MIRROREXIT,"
  166.     IDS_AUX_KEYWORDS+1,
  167. "NONCLUSTERED,OFF,OFFSETS,ONCE,OVER,PERM,PERMANENT,PLAN,PRINT,PROC,PROCESSEXIT,RAISERROR,READ,READTEXT,RECONFIGURE,REPEATABLE,RETURN,ROWCOUNT,RULE,SAVE,SERIALIZABLE,SETUSER,SHUTDOWN,STATISTICS,"
  168.     IDS_AUX_KEYWORDS+2,
  169. "TAPE,TEMP,TEXTSIZE,TRAN,TRIGGER,TRUNCATE,TSEQUEL,UNCOMMITTED,UPDATETEXT,USE,WAITFOR,WHILE,WRITETEXT"
  170.     IDS_AUX_KEYWORDS+3,        ""    //Empty string to terminate the keyword list
  171.  
  172.  
  173.     /*    String sent to gateway to set corresponding */
  174.     /*    ODBC transaction isolation level */
  175.     /*    An empty string means that that level is not supported */
  176.     /*    Used if IDS_FEATURE_HOLDLOCK_SUPPORT = 'N' */
  177.     IDS_ISOLATION_OFFSET+SQL_TXN_READ_UNCOMMITTED,     "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED"
  178.     IDS_ISOLATION_OFFSET+SQL_TXN_READ_COMMITTED,     "SET TRANSACTION ISOLATION LEVEL READ COMMITTED"
  179.     IDS_ISOLATION_OFFSET+SQL_TXN_REPEATABLE_READ,     "SET TRANSACTION ISOLATION LEVEL REPEATABLE READ"
  180.     IDS_ISOLATION_OFFSET+SQL_TXN_SERIALIZABLE,         "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE"
  181.     IDS_ISOLATION_OFFSET+SQL_TXN_VERSIONING,         ""
  182.  
  183.     /*    String sent to the gateway to set AUTOCOMMIT ON/OFF */
  184.     IDS_AUTOCOMMIT_OFFSET+SQL_AUTOCOMMIT_OFF,        "set implicit_transactions on"    /* AUTOCOMMIT OFF */
  185.     IDS_AUTOCOMMIT_OFFSET+SQL_AUTOCOMMIT_ON,        "set implicit_transactions off"    /* AUTOCOMMIT ON  */
  186.  
  187.     /*    String sent to the gateway to explicitly begin a transaction */
  188.     /*    An empty string requires the IDS_AUTOCOMMIT_OFFSET strings to be set */
  189.     IDS_BEGINTRAN,    ""        /* Start Transaction string MAX 30 char*/
  190.  
  191.     /*    String sent to the gateway to set ACCESS MODE */
  192.     IDS_ACCESS_MODE_OFFSET+SQL_MODE_READ_ONLY,    ""    /* Read Only */
  193.     IDS_ACCESS_MODE_OFFSET+SQL_MODE_READ_WRITE,    ""    /* Read Write */
  194.  
  195.     /*    String sent to the gateway to set COMMIT/ROLLBACK */
  196.     IDS_TRANSACT_OFFSET+SQL_COMMIT,        "IF @@TRANCOUNT > 0 COMMIT TRAN"    // COMMIT string
  197.     IDS_TRANSACT_OFFSET+SQL_ROLLBACK,    "IF @@TRANCOUNT > 0 ROLLBACK TRAN"    // ROLLBACK string
  198.  
  199.     IDS_AUX_SETROWCOUNT,"SET ROWCOUNT "
  200.     IDS_AUX_SETTEXTSIZE,"SET TEXTSIZE "
  201.     //    To have the ODBC canonical procedure invocation passed thru to the
  202.     //    gateway, set the following string to empty ("");
  203.     IDS_AUX_RPC_TEXT,    "EXEC " // Text before canonical procedure invocation
  204.     IDS_AUX_RPC_SEP,    " , "    // Separators for canonical procedure invocation
  205.                                 // ( -> 1st char; , -> 2nd char; ) -> 3rd char
  206.     IDS_AUX_USE,        "use "
  207.     IDS_AUX_LANGUAGE,    "set language "
  208.     IDS_LANGUAGE_QUERY, " select 'us_english' union select name from master..syslanguages";
  209.     IDS_DATABASE_QUERY, "select name from master..sysdatabases"
  210.     IDS_DEF_LANGUAGE_QUERY, "select ISNULL(language,'us_english') from master..syslogins where suid=SUSER_ID()"
  211.     IDS_DEF_DATABASE_QUERY, "select dbname from master..syslogins where suid=SUSER_ID()"
  212.  
  213.     IDS_AUX_ECODE_TEMPLATE_DATE,"'yyyymmdd'"
  214.     IDS_AUX_ECODE_TEMPLATE_TIME,"'hh:mm:ss'"
  215.     IDS_AUX_ECODE_TEMPLATE_TS,    "'yyyymmdd hh:mm:ss.000'"
  216. //    The following aren't used because EXEC doesn't allow functions as parameters
  217. //    IDS_AUX_ECODE_PARSE_INFO1,"\003'\002\004\022\003-\002\002\026\003-\002\002\030\003'"
  218. //    IDS_AUX_ECODE_PARSE_INFO2,"\003'\002\002\022\003:\002\002\025\003:\002\002\030\003'"
  219. //    IDS_AUX_ECODE_PARSE_INFO3,"\003'\002\004\022\003-\002\002\026\003-\002\002\030\002\002\033\003:\002\002\036\003:\002\002\041\004\041\003.\002\374\044\003'"
  220. //    IDS_AUX_ECODE_TEMPLATE_DATE,"convert(datetime,'yyyymmdd')"
  221. //    IDS_AUX_ECODE_TEMPLATE_TIME,"convert(datetime,'hh:mm:ss')"
  222. //    IDS_AUX_ECODE_TEMPLATE_TS,    "convert(datetime,'yyyymmdd hh:mm:ss.000')"
  223.  
  224.     /*    Used for wsprintf format when converting parameters to SQL_DATE, SQL_TIME or SQL_TIMESTAMP */
  225.     IDS_AUX_ECODE_FORMAT_DATE,    "'%04d%02u%02u'"
  226.     IDS_AUX_ECODE_FORMAT_TIME,    "'%02u:%02u:%02u'"
  227.     IDS_AUX_ECODE_FORMAT_TS,    "'%04d%02u%02u %02u:%02u:%02u.%03lu'"
  228. //    The following aren't used because EXEC doesn't allow functions as parameters
  229. //    IDS_AUX_ECODE_FORMAT_DATE,    "convert(datetime,'%04d%02u%02u')"
  230. //    IDS_AUX_ECODE_FORMAT_TIME,    "convert(datetime,'%02u:%02u:%02u')"
  231. //    IDS_AUX_ECODE_FORMAT_TS,    "convert(datetime,'%04d%02u%02u %02u:%02u:%02u.%03lu')"
  232.  
  233.     //    Used for wsprintf format when converting SQL_C_TIMESTAMP to
  234.     //    SQL_CHAR, SQL_VARCHAR or SQL_LONGVARCHAR
  235.     //    Only adjust the last digit (fraction value) to match the precision
  236.     //    of SQL_TIMESTAMP on the DBMS, since rest of format is ODBC defined.
  237.     //    SQL_TIME and SQL_DATE are also ODBC defined and embedded in driver.
  238.     IDS_AUX_FORMAT_TS,            "%04d-%02u-%02u %02u:%02u:%02u.%03lu"
  239.  
  240.     /*    Feature support flags.    The ODS driver uses these flags to determine */
  241.     /*    what the capability of the gateway to handle SQL server specific     */
  242.     /*    features. */
  243.     IDS_FEATURE_FMTONLY_SUPPORT,    "Y" // Gateway supports SET FMTONLY ON/OFF
  244.     IDS_FEATURE_NOEXEC_SUPPORT,     "Y" // Gateway supports SET NOEXEC ON/OFF
  245.     IDS_FEATURE_HOLDLOCK_SUPPORT,    "N" // Gateway supports HOLDLOCK on Select
  246.     IDS_FEATURE_NOTNULL_DEFAULT,    "N" // Gateway assumes NOT NULL on Create Table
  247. //    IDS_FEATURE_TEXTPTR_SUPPORT    values    // A - READ/WRITE/UPDATE
  248.                                         // B - READ/WRITE
  249.                                         // R - READ
  250.                                         // W - WRITE
  251.                                         // U - UPDATE
  252.                                         // N - no text pointer support
  253.     IDS_FEATURE_TEXTPTR_SUPPORT,    "A" // Gateway supports READ, WRITE and UPDATETEXT
  254. //    IDS_FEATURE_RPC_SUPPORT values        // N - RPC's not supported
  255.                                         // Y - Single RPC TDS stream supported
  256.                                         // B - Batched RPC TDS stream supported
  257.     IDS_FEATURE_RPC_SUPPORT,        "Y" // Gateway supports single RPC invocation
  258.     IDS_FEATURE_STRIP_SEPARATORS,    "Y" // Replace stmt separator w/blank
  259. //    IDS_FEATURE_TSQL_OJ_SUPPORT values    // N - Outer Joins not supported
  260.                                         // Y - Gateway supports SQL Server Outer Join Syntax
  261.                                         // A - Gateway supports ANSI 92 Outer Join Syntax
  262.     IDS_FEATURE_TSQL_OJ_SUPPORT,    "A" // Gateway supports ANSI 92 Outer Join Syntax
  263.     IDS_FEATURE_EXEC_THRU_PROC,     "Y" // Driver creates SPROC for PREPARE/EXEC
  264.     IDS_FEATURE_KEEP_PARM_MARKERS,    "N" // Driver keeps ? in SQL for NOEXEC ON/OFF
  265.     IDS_FEATURE_KEEP_AS_ALIAS,        "Y" // Driver keeps AS in SELECT stmt
  266.     IDS_FEATURE_KEEP_ASC_INDEX,     "N" // Driver keeps ASC/DESC in CREATE INDEX
  267.     IDS_FEATURE_SP_CURSOR_SUPPORT,    "N" // Gateway doesn't support sp_cursor stored procedures
  268.     IDS_FEATURE_DECNUM_SUPPORT,     "Y" // Gateway supports ODS decimal/numeric types
  269.     IDS_FEATURE_UDT_ODS_FORMAT,     "N" // Gateway doesn't support ODS UDT format
  270.  
  271.     IDS_HOSTDBMS,        "SQLServer"         // Used by driver for special coding cases
  272.     IDS_GTWYNAME,        "SQLServer Sample"    // Used by setup for list box selection text
  273. #if (ODBCVER >= 0x0300)
  274.     IDS_SPROC_VERSION,    "6.02.139"            // Used to check SPROC version
  275. #else
  276.     IDS_SPROC_VERSION,    "6.01.139"            // Used to check SPROC version
  277. #endif
  278.     IDS_HELP_FILENAME,    "ODSSAMP.HLP"        // Help file name for this gateway
  279.  
  280.     //    Initialization string definitions.    These SQL strings will be sent
  281.     //    to the gateway after each connection is made.
  282.     //    These strings must have sequential string IDs with no missing entries.
  283.     //    Commands should be batched for performance if gateway supports batchs,
  284.     //    Otherwise, each string is sent separately to the gateway
  285.     IDS_INITIALIZATION_OFFSET+0,    "set textsize 2147483647 set ansi_defaults on set cursor_close_on_commit off set implicit_transactions off"
  286.     IDS_INITIALIZATION_OFFSET+1,    ""    /*    Empty string at end */
  287.  
  288.     /*    Data Type definitions */
  289.     /*    The data corresponds to the output columns for the SQLGetTypeInfo */
  290.     /*    function, separated by semi-colons (;) */
  291.     /*    An empty data value will be treated as NULL */
  292.     /*    These strings must have sequential string IDs with no missing entries */
  293.     /*    These must be ordered by the value of ODBC DATA_TYPE, with base types first */
  294.     /*    Maximum of 50 data types are supported */
  295.  
  296. #if (ODBCVER >= 0x0300)
  297.     /*TYPE_NAME;DATA_TYPE;PRECISION;LITERAL_PREFIX;LITERAL_SUFFIX;
  298.     CREATE_PARAMS;NULLABLE;CASE_SENSITIVE;SEARCHABLE;UNSIGNED_ATTRIBUTE;
  299.     FIXED_PREC_SCALE;AUTO_INCREMENT;LOCAL_TYPE_NAME;MINIMUM_SCALE;
  300.     MAXIMUM_SCALE;SQL_DATE_TYPE;SQL_DATETIME_SUB;NUM_PREC_RADIX;USER_TYPE;*/
  301.  
  302.     IDS_DATATYPE_OFFSET+0    "bit;-7;1;;;;0;0;2;;0;;bit;0;0;-7;;;16;"
  303.     IDS_DATATYPE_OFFSET+1    "tinyint;-6;3;;;;1;0;2;1;0;0;tinyint;0;0;-6;;10;5;"
  304.     IDS_DATATYPE_OFFSET+2    "tinyint identity;-6;3;;;;0;0;2;1;0;1;tinyint identity;0;0;-6;;10;5;"
  305.     IDS_DATATYPE_OFFSET+3    "image;-4;2147483647;0x;;;1;0;0;;0;;image;;;-4;;;20;"
  306.     IDS_DATATYPE_OFFSET+4    "varbinary;-3;255;0x;;max length;1;0;2;;0;;varbinary;;;-3;;;4;"
  307.     IDS_DATATYPE_OFFSET+5    "binary;-2;255;0x;;max length;1;0;2;;0;;binary;;;-2;;;3;"
  308.     IDS_DATATYPE_OFFSET+6    "timestamp;-2;8;0x;;;0;0;2;;0;;timestamp;;;-2;;;80;"
  309.     IDS_DATATYPE_OFFSET+7    "text;-1;2147483647;';';;1;1;1;;0;;text;;;-1;;;19;"
  310.     IDS_DATATYPE_OFFSET+8    "char;1;255;';';max length;1;1;3;;0;;char;;;1;;;1;"
  311.     IDS_DATATYPE_OFFSET+9    "numeric;2;28;;;precision,scale;1;0;2;0;0;0;numeric;0;28;2;;10;10;"
  312.     IDS_DATATYPE_OFFSET+10    "numeric() identity;2;28;;;precision;0;0;2;0;0;1;numeric() identity;0;0;2;;10;10;"
  313.     IDS_DATATYPE_OFFSET+11    "decimal;3;28;;;precision,scale;1;0;2;0;0;0;decimal;0;28;3;;10;24;"
  314.     IDS_DATATYPE_OFFSET+12    "money;3;19;$;;;1;0;2;0;1;0;money;4;4;3;;10;11;"
  315.     IDS_DATATYPE_OFFSET+13    "smallmoney;3;10;$;;;1;0;2;0;1;0;smallmoney;4;4;3;;10;21;"
  316.     IDS_DATATYPE_OFFSET+14    "decimal() identity;3;28;;;precision;0;0;2;0;0;1;decimal() identity;0;0;3;;10;24;"
  317.     IDS_DATATYPE_OFFSET+15    "int;4;10;;;;1;0;2;0;0;0;int;0;0;4;;10;7;"
  318.     IDS_DATATYPE_OFFSET+16    "int identity;4;10;;;;0;0;2;0;0;1;int identity;0;0;4;;10;7;"
  319.     IDS_DATATYPE_OFFSET+17    "smallint;5;5;;;;1;0;2;0;0;0;smallint;0;0;5;;10;6;"
  320.     IDS_DATATYPE_OFFSET+18    "smallint identity;5;5;;;;0;0;2;0;0;1;smallint identity;0;0;5;;10;6;"
  321.     IDS_DATATYPE_OFFSET+19    "float;6;53;;;;1;0;2;0;0;0;float;;;6;;2;8;"
  322.     IDS_DATATYPE_OFFSET+20    "real;7;24;;;;1;0;2;0;0;0;real;;;7;;2;23;"
  323.     IDS_DATATYPE_OFFSET+21    "varchar;12;255;';';max length;1;1;3;;0;;varchar;;;12;;;2;"
  324.     IDS_DATATYPE_OFFSET+22    "sysname;12;30;';';;0;1;3;;0;;sysname;;;12;;;18;"
  325.     IDS_DATATYPE_OFFSET+23    "datetime;93;3;';';;1;0;3;;0;;datetime;3;3;9;3;;12;"
  326.     IDS_DATATYPE_OFFSET+24    "smalldatetime;93;0;';';;1;0;3;;0;;smalldatetime;0;0;9;3;;22;"
  327.     IDS_DATATYPE_OFFSET+25    ""    // Empty string at end
  328.  
  329. #else
  330.     /*TYPE_NAME;DATA_TYPE;PRECISION;LITERAL_PREFIX;LITERAL_SUFFIX;
  331.     CREATE_PARAMS;NULLABLE;CASE_SENSITIVE;SEARCHABLE;UNSIGNED_ATTRIBUTE;
  332.     MONEY;AUTO_INCREMENT;LOCAL_TYPE_NAME;MINIMUM_SCALE;MAXIMUM_SCALE;USER_TYPE;*/
  333.  
  334.     IDS_DATATYPE_OFFSET+0    "bit;-7;1;;;;0;0;2;;0;;bit;0;0;16;"
  335.     IDS_DATATYPE_OFFSET+1    "tinyint;-6;3;;;;1;0;2;1;0;0;tinyint;0;0;5;"
  336.     IDS_DATATYPE_OFFSET+2    "tinyint identity;-6;3;;;;0;0;2;1;0;1;tinyint identity;0;0;5;"
  337.     IDS_DATATYPE_OFFSET+3    "image;-4;2147483647;0x;;;1;0;0;;0;;image;;;20;"
  338.     IDS_DATATYPE_OFFSET+4    "varbinary;-3;255;0x;;max length;1;0;2;;0;;varbinary;;;4;"
  339.     IDS_DATATYPE_OFFSET+5    "binary;-2;255;0x;;max length;1;0;2;;0;;binary;;;3;"
  340.     IDS_DATATYPE_OFFSET+6    "timestamp;-2;8;0x;;;0;0;2;;0;;timestamp;;;80;"
  341.     IDS_DATATYPE_OFFSET+7    "text;-1;2147483647;';';;1;1;1;;0;;text;;;19;"
  342.     IDS_DATATYPE_OFFSET+8    "char;1;255;';';max length;1;1;3;;0;;char;;;1;"
  343.     IDS_DATATYPE_OFFSET+9    "numeric;2;28;;;precision,scale;1;0;2;0;0;0;numeric;0;28;10;"
  344.     IDS_DATATYPE_OFFSET+10    "numeric() identity;2;28;;;precision;0;0;2;0;0;1;numeric() identity;0;0;10;"
  345.     IDS_DATATYPE_OFFSET+11    "decimal;3;28;;;precision,scale;1;0;2;0;0;0;decimal;0;28;24;"
  346.     IDS_DATATYPE_OFFSET+12    "money;3;19;$;;;1;0;2;0;1;0;money;4;4;11;"
  347.     IDS_DATATYPE_OFFSET+13    "smallmoney;3;10;$;;;1;0;2;0;1;0;smallmoney;4;4;21;"
  348.     IDS_DATATYPE_OFFSET+14    "decimal() identity;3;28;;;precision;0;0;2;0;0;1;decimal() identity;0;0;24;"
  349.     IDS_DATATYPE_OFFSET+15    "int;4;10;;;;1;0;2;0;0;0;int;0;0;7;"
  350.     IDS_DATATYPE_OFFSET+16    "int identity;4;10;;;;0;0;2;0;0;1;int identity;0;0;7;"
  351.     IDS_DATATYPE_OFFSET+17    "smallint;5;5;;;;1;0;2;0;0;0;smallint;0;0;6;"
  352.     IDS_DATATYPE_OFFSET+18    "smallint identity;5;5;;;;0;0;2;0;0;1;smallint identity;0;0;6;"
  353.     IDS_DATATYPE_OFFSET+19    "float;6;15;;;;1;0;2;0;0;0;float;;;8;"
  354.     IDS_DATATYPE_OFFSET+20    "real;7;7;;;;1;0;2;0;0;0;real;;;23;"
  355.     IDS_DATATYPE_OFFSET+21    "datetime;11;23;';';;1;0;3;;0;;datetime;3;3;12;"
  356.     IDS_DATATYPE_OFFSET+22    "smalldatetime;11;16;';';;1;0;3;;0;;smalldatetime;0;0;22;"
  357.     IDS_DATATYPE_OFFSET+23    "varchar;12;255;';';max length;1;1;3;;0;;varchar;;;2;"
  358.     IDS_DATATYPE_OFFSET+24    "sysname;12;30;';';;0;1;3;;0;;sysname;;;18;"
  359.     IDS_DATATYPE_OFFSET+25    ""    // Empty string at end
  360. #endif
  361.  
  362. END
  363.  
  364. //    Canonical Date/Time models
  365. /*    Parsing method:
  366.  
  367.     Each token has a type and a copy location in the template.
  368.  
  369.     The types are defined by the following octal codes:
  370.         #define LEX_TK_NULL     000
  371.         #define LEX_TK_NAME     001
  372.         #define LEX_TK_NUMBER    002
  373.         #define LEX_TK_GENCHAR    003
  374.         #define LEX_TK_OPT_END    004
  375.  
  376.     The parse starts with a TYPE.  If the type is a GENCHAR, the type is
  377.     followed by the character constant.    Next is the location in the
  378.     template where the field is to be copied if the token is a NUMBER or
  379.     NAME token.  A NAME token will cause the alphabetic month to be inserted
  380.     rather than the numeric month.
  381.  
  382.     An example:
  383.  
  384.     // Template:
  385.     "convert(datetime,'yyyymmdd hh:mm:ss.000')"
  386.  
  387.     //    ParseInfo:
  388.     "\003'\002\004\022\003-\002\002\026\003-\002\002\030\002\002\033\003:\002\002\036\003:\002\002\041\004\041\003.\002\374\044\003'\000"
  389.  
  390.     "\003'                          //General Character Token "'"
  391.           \002\004                    //Number Token 4 long (year)
  392.                   \022                //Copy to template at position 18
  393.                       \003-         //General Character Token "-"
  394.      \002\002                        //Number Token 2 long (month)
  395.              \026                    //Copy to template at position 22
  396.                  \003-                //General Character Token "-"
  397.      \002\002                        //Number Token 2 long (day)
  398.              \030                    //Copy to template at position 24
  399.      \002\002                        //Number Token 2 long (hour)
  400.              \033                    //Copy to template at position 27
  401.                  \003:                //General Character Token ":"
  402.      \002\002                        //Number Token 2 long (minute)
  403.              \036                    //Copy to template at position 30
  404.                  \003:                //General Character Token ":"
  405.      \002\002                        //Number Token 2 long (second)
  406.              \041                    //Copy to template at position 33
  407.                  \004\041            //Optional End, count is ignored
  408.      \003.                            //General Character Token "."
  409.           \002\374                    //Number Token variable length (max 3 digits fraction in template)
  410.                   \044                //Copy to template at position 36
  411.                       \003'"        //General Character Token "'"
  412.      \000                            //End of ParseInfo
  413.  
  414.     So, a string containing:
  415.         { ts '1991-02-03 04:05:06.123' }
  416.     would become:
  417.         convert(datetime,'19910203 04:05:06.123')
  418.  
  419.     So, a string containing:
  420.         { ts '1991-02-03 04:05:06' }
  421.     would become:
  422.         convert(datetime,'19910203 04:05:06.000')
  423. */
  424.  
  425. // To have the ODBC canonical date/time forms passed thru to the gateway,
  426. // set the following 3 resources to empty ("").
  427. IDB_AUX_ECODE_PARSE_DATE RCDATA BEGIN "\003'\002\004\001\003-\002\002\005\003-\002\002\007\003'\000" END
  428. IDB_AUX_ECODE_PARSE_TIME RCDATA BEGIN "\003'\002\002\001\003:\002\002\004\003:\002\002\007\003'\000" END
  429. IDB_AUX_ECODE_PARSE_TS RCDATA BEGIN   "\003'\002\004\001\003-\002\002\005\003-\002\002\007\002\002\012\003:\002\002\015\003:\002\002\020\004\022\003.\002\374\023\003'\000" END
  430.  
  431. //    IDB_AUX_ECODE_PARSE_FUNC See IDB_AUX_FUN_PINFO
  432. // ODBC outer join conversion string
  433. // To have the ODBC canonical outer join form passed thru to the gateway,
  434. // set the following string to empty ("").
  435. //    OJ string is referenced by position in SQLCMISC.C.    Any changes must be reflected there.
  436. IDB_AUX_ECODE_PARSE_OJ RCDATA BEGIN"\004left\001,\005outer\001 \004join\001 \002on\007 WHERE \005where\005 AND(\005right\001,\004 *= \004 =* \005 AND \000" END
  437. //    IDB_AUX_ECODE_PARSE_CALL Coded in SQLCMISC.C
  438. //    IDB_AUX_ECODE_PARSE_ESC Coded in SQLCMISC.C
  439.  
  440. //    Canonical function models
  441. /*    Parsing method:
  442.     An empty string means that the canonical function has no
  443.     equivalent (or does not work the same)
  444.  
  445.     Each token has a type and a copy location in the template.
  446.  
  447.     The types are defined by the following octal codes:
  448.         #define LEX_TK_NULL     000
  449.         #define LEX_TK_NAME     001
  450.         #define LEX_TK_NUMBER    002
  451.         #define LEX_TK_GENCHAR    003
  452.         #define LEX_TK_OPT_END    004
  453.         #define LEX_TK_ARGUMENT 012
  454.         #define LEX_TK_OPT_ARG    013
  455.         #define LEX_TK_OPT_GCHR 014
  456.  
  457.     The actions are defined by the following octal codes:
  458.         #define SEM_ACTION_COPY         001
  459.         #define SEM_ACTION_REPLACE        002
  460.         #define SEM_ACTION_SKIP         003
  461.         #define SEM_ACTION_COPY_OR_DFLT 004
  462.         #define SEM_ACTION_CODE         005
  463.         #define SEM_ACTION_PASSTHRU        006
  464.  
  465.     The parse starts with a TYPE.  If the type is a NAME, the type is followed
  466.     by a character count, followed by the character constant.  If the type is
  467.     a GENCHAR or OPT_GCHR, the type is followed by the character
  468.     constant.  Next is the action to be taken on the preceding token.
  469.     If the type is OPT_ARG or OPT_GCHR, the action is followed by a character
  470.     count followed by the default character constant used if the optional
  471.     element was missing.
  472.  
  473.     An example:
  474.     "\001\011substring\001\003(\001\012\001\003,\001\012\001\014,\004\001,\013\004\003255\003)\001\000"
  475.  
  476.      \001                            //Type Name token
  477.          \011substring                //Length and name constant
  478.                       \001            //Action Copy token, copy 'substring'
  479.                           \003(     //Type General Character '('
  480.                                \001 //Action Copy token, copy the '('
  481.     \012                            //Type Argument token, ie, recurse
  482.         \001                        //Action Copy token, copy the argument
  483.             \003,                    //General Character ','
  484.                  \001                //Action Copy token, copy the ','
  485.                      \012            //Type Argument token, ie, recurse
  486.                          \001        //Action Copy token, copy the argument
  487.     \014,                            //Type Optional General Character
  488.          \004                        //Action Copy or Default,
  489.                                     //    copy the ',' if exists
  490.              \001,                    //    else, insert 1 character - ','
  491.                   \013                //Type Optional Argument
  492.                       \004            //Action Copy or Default,
  493.                                     //    copy the argument if exists
  494.                           \003255    //    else, insert 3 characters, '255'
  495.     \003)                            //General Character ')'
  496.          \001                        //Action Copy token, copy the ')'
  497.              \000                    //End of ParseInfo
  498.  
  499.     So, a string containing:
  500.         substring ( 'a', 'b', 3)
  501.     would become:
  502.         substring('a','b',3)
  503.  
  504.     So, a string containing:
  505.         substring ( 'a', 'b')
  506.     would become:
  507.         substring('a','b',255)
  508.  
  509.     To have the driver pass thru the function to the gateway with the ODBC
  510.     canonical prefix and suffix, simply use the SEM_ACTION_PASSTHRU as the
  511.     action after the name.    Example:
  512.     IDB_TAN RCDATA BEGIN           "\001\003tan\006\000" END
  513.     would have { fn tan (cola) } passed thru to the gateway unchanged.
  514. */
  515.  
  516. // Conversion functions
  517. //    Convert also has code in SQLCMISC to deal with its anomolies
  518. IDB_CONVERT RCDATA BEGIN        "\001\007convert\001\003(\001\012\005\003,\001\012\003\003)\001\000"                                            END
  519.  
  520. // String functions
  521. IDB_ASCII RCDATA BEGIN           "\001\005ascii\001\003(\001\012\001\003)\001\000"                                                                END
  522. IDB_CHAR RCDATA BEGIN           "\001\004char\001\003(\001\012\001\003)\001\000"                                                                 END
  523. IDB_CONCAT RCDATA BEGIN        "\001\006concat\003\003(\001\012\001\003,\002\001+\012\001\003)\001\000"                                         END
  524. IDB_DIFFERENCE RCDATA BEGIN    "\001\012difference\001\003(\001\012\001\003,\001\012\001\003)\001\000"                                            END
  525. IDB_INSERT RCDATA BEGIN        "\001\006insert\002\005stuff\003(\001\012\001\003,\001\012\001\003,\001\012\001\003,\001\012\001\003)\001\000"    END
  526. IDB_LEFT RCDATA BEGIN           "\001\004left\002\011substring\003(\001\012\001\003,\002\003,1,\012\001\003)\001\000"                            END
  527. IDB_LTRIM RCDATA BEGIN           "\001\005ltrim\001\003(\001\012\001\003)\001\000"                                                                END
  528. IDB_LENGTH RCDATA BEGIN        "\001\006length\002\020datalength(rtrim\003(\001\012\001\003)\002\002))\000"                                     END
  529. IDB_LOCATE RCDATA BEGIN        "\001\006locate\002\011charindex\003(\001\012\001\003,\001\012\001\003)\001\000"                                 END
  530. IDB_LCASE RCDATA BEGIN           "\001\005lcase\002\005lower\003(\001\012\001\003)\001\000"                                                        END
  531. IDB_REPEAT RCDATA BEGIN        "\001\006repeat\002\011replicate\003(\001\012\001\003,\001\012\001\003)\001\000"                                 END
  532. //IDB_REPLACE RCDATA BEGIN       ""                                                                                                                END
  533. IDB_RIGHT RCDATA BEGIN           "\001\005right\001\003(\001\012\001\003,\001\012\001\003)\001\000"                                    END
  534. IDB_RTRIM RCDATA BEGIN           "\001\005rtrim\001\003(\001\012\001\003)\001\000"                                                                END
  535. IDB_SOUNDEX RCDATA BEGIN       "\001\007soundex\001\003(\001\012\001\003)\001\000"                                                                END
  536. IDB_SPACE RCDATA BEGIN           "\001\005space\001\003(\001\012\001\003)\001\000"                                                                END
  537. IDB_SUBSTRING RCDATA BEGIN       "\001\011substring\001\003(\001\012\001\003,\001\012\001\003,\001\012\001\003)\001\000"                            END
  538. IDB_UCASE RCDATA BEGIN           "\001\005ucase\002\005upper\003(\001\012\001\003)\001\000"                                                        END
  539.  
  540. // Numeric functions
  541. IDB_ABS RCDATA BEGIN           "\001\003abs\001\003(\001\012\001\003)\001\000"                                                                    END
  542. IDB_ACOS RCDATA BEGIN           "\001\004acos\001\003(\001\012\001\003)\001\000"                                                                 END
  543. IDB_ASIN RCDATA BEGIN           "\001\004asin\001\003(\001\012\001\003)\001\000"                                                                 END
  544. IDB_ATAN RCDATA BEGIN           "\001\004atan\001\003(\001\012\001\003)\001\000"                                                                 END
  545. IDB_ATAN2 RCDATA BEGIN           "\001\005atan2\002\004atn2\003(\001\012\001\003,\001\012\001\003)\001\000"                                        END
  546. IDB_CEILING RCDATA BEGIN       "\001\007ceiling\001\003(\001\012\001\003)\001\000"                                                                END
  547. IDB_COS RCDATA BEGIN           "\001\003cos\001\003(\001\012\001\003)\001\000"                                                                    END
  548. IDB_COT RCDATA BEGIN           "\001\003cot\001\003(\001\012\001\003)\001\000"                                                                    END
  549. IDB_DEGREES RCDATA BEGIN       "\001\007degrees\001\003(\001\012\001\003)\001\000"                                                                END
  550. IDB_EXP RCDATA BEGIN           "\001\003exp\001\003(\001\012\001\003)\001\000"                                                                    END
  551. IDB_FLOOR RCDATA BEGIN           "\001\005floor\001\003(\001\012\001\003)\001\000"                                                                END
  552. IDB_LOG RCDATA BEGIN           "\001\003log\001\003(\001\012\001\003)\001\000"                                                                    END
  553. IDB_LOG10 RCDATA BEGIN           "\001\005log10\001\003(\001\012\001\003)\001\000"                                                                END
  554. IDB_MOD RCDATA BEGIN           "\001\003mod\003\003(\001\012\001\003,\002\001%\012\001\003)\001\000"                                            END
  555. IDB_PI RCDATA BEGIN            "\001\002pi\001\003(\001\003)\001\000"                                                                            END
  556. IDB_POWER RCDATA BEGIN           "\001\005power\001\003(\001\012\001\003,\001\012\001\003)\001\000"                                                END
  557. IDB_RADIANS RCDATA BEGIN       "\001\007radians\001\003(\001\012\001\003)\001\000"                                                                END
  558. IDB_RAND RCDATA BEGIN           "\001\004rand\001\003(\001\013\001\003)\001\000"                                                                 END
  559. IDB_ROUND RCDATA BEGIN           "\001\005round\001\003(\001\012\001\003,\001\012\001\003)\001\000"                                                END
  560. IDB_SIGN RCDATA BEGIN           "\001\004sign\001\003(\001\012\001\003)\001\000"                                                                 END
  561. IDB_SIN RCDATA BEGIN           "\001\003sin\001\003(\001\012\001\003)\001\000"                                                                    END
  562. IDB_SQRT RCDATA BEGIN           "\001\004sqrt\001\003(\001\012\001\003)\001\000"                                                                 END
  563. IDB_TAN RCDATA BEGIN           "\001\003tan\001\003(\001\012\001\003)\001\000"                                                                    END
  564. //IDB_TRUNCATE RCDATA BEGIN       ""                                                                                                                END
  565.  
  566. // Time/date functions
  567. IDB_NOW RCDATA BEGIN           "\001\003now\002\007getdate\003(\001\003)\001\000"                                                                END
  568. IDB_TIMESTAMPADD RCDATA BEGIN  "\001\014timestampadd\002\007dateadd\003(\001\012\005\003,\001\012\001\003,\001\012\001\003)\001\000"            END
  569. IDB_TIMESTAMPDIFF RCDATA BEGIN "\001\015timestampdiff\002\010datediff\003(\001\012\005\003,\001\012\001\003,\001\012\001\003)\001\000"            END
  570. IDB_CURDATE RCDATA BEGIN       "\001\007curdate\002\036convert(varchar,getdate(),111)\003(\003\003)\003\000"                                    END
  571. IDB_DAYOFMONTH RCDATA BEGIN    "\001\012dayofmonth\002\014datepart(dd,\003(\003\012\001\003)\001\000"                                            END
  572. IDB_DAYOFWEEK RCDATA BEGIN       "\001\011dayofweek\002\017(((datepart(dw,\003(\003\012\001\003)\002\026)+@@datefirst-1)%7)+1)\000"                END
  573. IDB_DAYOFYEAR RCDATA BEGIN       "\001\011dayofyear\002\014datepart(dy,\003(\003\012\001\003)\001\000"                                            END
  574. IDB_DAYNAME RCDATA BEGIN       "\001\007dayname\002\014datename(dw,\003(\003\012\001\003)\001\000"                                                END
  575. IDB_MONTH RCDATA BEGIN           "\001\005month\002\014datepart(mm,\003(\003\012\001\003)\001\000"                                                END
  576. IDB_MONTHNAME RCDATA BEGIN       "\001\011monthname\002\014datename(mm,\003(\003\012\001\003)\001\000"                                            END
  577. IDB_QUARTER RCDATA BEGIN       "\001\007quarter\002\014datepart(qq,\003(\003\012\001\003)\001\000"                                                END
  578. IDB_WEEK RCDATA BEGIN           "\001\004week\002\014datepart(wk,\003(\003\012\001\003)\001\000"                                                 END
  579. IDB_YEAR RCDATA BEGIN           "\001\004year\002\014datepart(yy,\003(\003\012\001\003)\001\000"                                                 END
  580. IDB_CURTIME RCDATA BEGIN       "\001\007curtime\002\034convert(varchar,getdate(),8)\003(\003\003)\003\000"                                        END
  581. IDB_HOUR RCDATA BEGIN           "\001\004hour\002\014datepart(hh,\003(\003\012\001\003)\001\000"                                                 END
  582. IDB_MINUTE RCDATA BEGIN        "\001\006minute\002\014datepart(mi,\003(\003\012\001\003)\001\000"                                                END
  583. IDB_SECOND RCDATA BEGIN        "\001\006second\002\014datepart(ss,\003(\003\012\001\003)\001\000"                                                END
  584.  
  585. // System functions
  586. IDB_USER RCDATA BEGIN           "\001\004user\002\011USER_NAME\003(\001\003)\001\000"                                                            END
  587. IDB_DATABASE RCDATA BEGIN       "\001\010database\002\007DB_NAME\003(\001\003)\001\000"                                                            END
  588. IDB_IFNULL RCDATA BEGIN        "\001\006ifnull\002\006isnull\003(\001\012\001\003,\001\012\001\003)\001\000"                                    END
  589.  
  590. #include "local.rc"
  591.  
  592. /* Version Info
  593. **
  594. */
  595. #include  <odbcver.h>
  596.  
  597. #ifdef WIN32
  598. #define VER_FILENAME_STR        "ODSSMP32.DLL\0"
  599. #define VER_NAME_STR            "ODSSMP32\0"
  600. #else    //    WIN32
  601. #define VER_FILENAME_STR        "ODSSAMP.DLL\0"
  602. #define VER_NAME_STR            "ODSSAMP\0"
  603. #endif    //    WIN32
  604.  
  605. VS_VERSION_INFO VERSIONINFO
  606. FILEVERSION     VER_FILEVERSION
  607. PRODUCTVERSION  VER_PRODUCTVERSION
  608. FILEFLAGSMASK   VER_FILEFLAGSMASK
  609. FILEFLAGS       VER_FILEFLAGS
  610. FILEOS          VER_FILEOS
  611. FILETYPE        VFT_DLL
  612. FILESUBTYPE     VFT2_UNKNOWN
  613. BEGIN
  614.   BLOCK "StringFileInfo"
  615.   BEGIN
  616.     BLOCK LANGUAGE_ANSI
  617.     BEGIN
  618.       VALUE "CompanyName",      VER_COMPANYNAME_STR
  619.       VALUE "FileDescription",  VER_FILEDESC_STR
  620.       VALUE "FileVersion",      VER_FILEVERSION_STR
  621.       VALUE "InternalName",     VER_NAME_STR
  622.       VALUE "LegalCopyright",   VER_LEGALCOPYRIGHT_STR
  623.       VALUE "LegalTrademarks",  VER_LEGALTRADEMARKS_STR
  624.       VALUE "OriginalFilename", VER_FILENAME_STR
  625.       VALUE "ProductName",      VER_PRODUCTNAME_STR
  626.       VALUE "ProductVersion",   VER_PRODUCTVERSION_STR
  627.     END
  628.   END
  629.  
  630.   BLOCK "VarFileInfo"
  631.   BEGIN
  632.     VALUE "Translation",  LANGUAGE_TRANS
  633.   END
  634. END
  635.