;*********************************************************************** ;Licensed Materials - Property of IBM ; ;BI and PM: UDA ; ;(C) Copyright IBM Corp. 2005, 2020 ; ;U.S. Government Users Restricted Rights - Use, duplication, or disclosure ;by GSA ADP Schedule Contract with IBM Corp. ; ;Unless specifically authorized by IBM, you may not modify any part of this ;file. Where modification is authorized, you must reproduce any copyright ;notices contained in this file and specifically identify which ;modifications have been made by your organization. YOU ARE SOLELY ;RESPONSIBLE FOR DETERMINING THE APPROPRIATENESS OF ANY MODIFICATIONS TO ;THIS FILE AND ASSUME ALL RISKS ASSOCIATED WITH THE USE AND DISTRIBUTION ;OF THE MODIFIED FILE. IBM will not provide support relating to ;unauthorized changes you make to this file. ;*********************************************************************** ; $Header: //uda/main/prod/dmd/sgi/odbc35/sqlserver/cogdmms.ini#14 $ ; ; Module: ; cogdmms.ini ; ; Purpose: ; This module contains the Sybase gateway information for MS SQL Server6. ; ; Notes: ; Do NOT modify this file. Doing so could result in unknown behavior ; by the Sybase gateway, possibly resulting in application aborts. ; ; ************************************************************************ [Directives Session] First_Row_Pos=Append_End; Dop_Pos=Append; ; ; This option has been disabled for performance reasons (Trakker 460552). ; First_Row_Text=" OPTION(FAST 1) " First_Row_Text= Dop_Text="MAXDOP %d" Append_Pre_Text="OPTION(" Append_Post_Text=")" Directive_Separator="," ; Row Limit in MS/SQL Server is achieved by adding the following line ; TOP n ; Right after the first SELECT, or SELECT DISTINCT Query_Row_Limit_Pos=Append_Distinct Query_Row_Limit_Text=" TOP %d " ;[Expression Results] ; ; Operations supported and results of the supported operation. ; The format is; ; [Operator ] ; =,{:,} ; ; where ; ; LHS = data type of left hand side of operation ; RHS = data type of right hand side of operation ; RES = result data type of operation ; ; LHS, RHS and RES values may be one of: ; ; Name Abbreviation DMS Data Type ; CHAR CH sqlChar ; VARCHAR VC sqlVarChar ; LVARCHAR LC sqlLongVarChar ; NCHAR NC sqlNChar ; NVARCHAR NV sqlNVarChar ; BINARY BN sqlBinary ; VARBINARY VB sqlVarBinary ; BOOLEAN BO sqlBoolean ; SMALLINT SM sqlSmallInt ; INTEGER IT sqlInteger ; QUAD QD sqlQuad ; DECIMAL DM sqlDecimal ; NUMERIC NU sqlNumeric ; FLOAT FL sqlFloat ; DOUBLE DB sqlDouble ; DATE DT sqlDate ; TIME TM sqlTime ; TIMESTAMP TS sqlDateTime ; INTERVAL IV sqlInterval ; TIME_TZ TT sqlTimeTZ ; TIMESTAMP_TZ TZ sqlTimestampTZ ; INTERVAL_YM IY sqlIntervalYM ; ---- NA sqlUnknownType ; [Operator Addition] AD=AD,OK DT=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA TM=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA TS=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA IV=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA TT=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA TZ=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA IY=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA [Operator Subtraction] AD=AD,OK DT=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA TM=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA TS=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA IV=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA TT=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA TZ=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA IY=DT,NA:TM,NA:TS,NA:IV,NA:TT,NA:TZ,NA:IY,NA [Operator Comparison] AD=AD,OK TM=TT,NA TT=TM,NA [Operator Cast] IT=DT,NA SM=DT,NA NU=DT,NA DT=CH,CH:VC,VC:NC,NC:NV,NV TS=CH,CH:VC,VC:NC,NC:NV,NV CH=NV,NV:NC,NC:VC,VC:TS,CH VC=NV,NV:NC,NC:CH,CH:TS,VC NC=NV,NV:CH,CH:VC,VC:TS,NC NV=NC,NC:CH,CH:VC,VC:TS,NV AD=IV,NA:IY,NA:TT,NA [Operator Cast DATABASE:MICROSOFT SQL SERVER VERSION:09] AD=DT,NA:TM,NA:TZ,NA [Operator Cast DATABASE:MICROSOFT SQL SERVER VERSION:08] AD=DT,NA:TM,NA:TZ,NA [Operator Cast DRIVER:SQLSRV32.DLL] AD=DT,NA:TM,NA:TZ,NA [Datatype Mappings] TS="DATETIME" FL="REAL" [Exceptions Commands] Call="call " [Exceptions Clauses] [Exceptions Tables] Joined=T Derived=T Tbl_Ref_Limit="256" UniqueName_Prefix="coguda" SQL_MAX_TABLE_NAME_LEN="128" [Exceptions Tables DATABASE:MICROSOFT SQL SERVER VERSION:06] Joined=F Derived=F [Exceptions Joins] Cross=T Inner=T Left_Outer=T Right_Outer=T Full_Outer=T Nested_Outer=T Inner_Tbl_Restrict=F Outer_Syntax=T Optnl_Tbl_Restrict=F Left_Pre="" Left_Eql=" LEFT OUTER JOIN " Left_Post="" Right_Pre="" Right_Eql=" RIGHT OUTER JOIN " Right_Post="" Left_Nested=T Right_Nested=T Optnl_Tbl_Join_Restrict=F Two_Sided_Join_Restrict=F Optnl_Tbl_Join_Filter=T Optnl_Tbl_Filter=T Full_Non_Equi_Join=T Non_Equi_Joins=T On_Condition_Set_Functions=F On_Condition_Subqueries=T On_Condition_Not_Predicate=T On_Condition_In_Predicate=T On_Condition_Between_Predicate=T On_Condition_Like_Predicate=T On_Condition_IsNull_Predicate=T On_Condition_Or_Predicate=T Full_Syntax=" FULL OUTER JOIN " Cross_Syntax=" CROSS JOIN " Union_Syntax= Inner_Syntax=" INNER JOIN " Natural_Syntax= Full_Pre= Full_Post= Non_Join_Non_Equi_Expr=T [Exceptions Joins DATABASE:MICROSOFT SQL SERVER VERSION:06.50] ;There is a bug with nested outer joins in 6.5 (MS N: 18181) Left_Nested=F Nested_Outer=F Right_Nested=F [Exceptions Joins DATABASE:MICROSOFT SQL SERVER VERSION:06] Cross=F Cross_Syntax= Full_Outer=F Full_Non_Equi_Join=F Full_Post= Full_Pre= Full_Syntax= Inner=F Inner_Syntax= Inner_Tbl_Restrict=T Left_Eql=" *= " Left_Nested=T Left_Outer=T Natural_Syntax= Nested_Outer=T Non_Equi_Joins=F On_Condition_Between_Predicate=T On_Condition_In_Predicate=T On_Condition_IsNull_Predicate=T On_Condition_Like_Predicate=T On_Condition_Not_Predicate=T On_Condition_Set_Functions=F On_Condition_Subqueries=T Optnl_Tbl_Filter=F Optnl_Tbl_Join_Filter=T Optnl_Tbl_Join_Restrict=T Optnl_Tbl_Restrict=T Outer_Syntax=F Prsrv_Tbl_Join_Filter=F Right_Eql=" =* " Right_Nested=T Right_Outer=T Two_Sided_Join_Restrict=F Union_Syntax= Non_Join_Non_Equi_Expr=F [Exceptions Predicates] All="all" [Exceptions Predicates DATABASE:MICROSOFT SQL SERVER VERSION:06] All= [Exceptions Aggregates] Max="max" Min="min" Avg="avg" Sum="sum" Count="count_big" Count_Star="count(*)" Grouping="grouping" Stddev_Samp="stdev" Var_Samp="var" Stddev_Pop="stdevp" Var_Pop="varp" [Exceptions Aggregates DATABASE:MICROSOFT SQL SERVER VERSION:06] Stddev_Samp= Var_Samp= Grouping= [Exceptions OLAP Functions] ; Trakker 601014. Olap support via SQL Server is very slow, so disable it for now. ;Olap_Max="max" ;Olap_Min="min" ;Olap_Sum="sum" ;Olap_Avg="avg" ;Olap_Count="count" ;Olap_Count_Star="count(*)" ;Olap_Rank="rank" ;Olap_Dense_Rank="dense_rank" ;Olap_Row_Number="row_number" ;Olap_Ntile="ntile" ;Olap_Stddev_Pop="stdevp" ;Olap_Var_Pop="varp" ;Olap_Stddev_Samp="stdev" ;Olap_Var_Samp="var" [Exceptions OLAP Functions DATABASE:MICROSOFT SQL SERVER VERSION:08] Olap_Max= Olap_Min= Olap_Sum= Olap_Avg= Olap_Count= Olap_Count_Star= Olap_Rank= Olap_Dense_Rank= Olap_Row_Number= Olap_Ntile= Olap_Stddev_Pop= Olap_Var_Pop= Olap_Stddev_Samp= Olap_Var_Samp= [Exceptions Set Operators] Distinct="distinct" Union="union" Union_All=T Intersect="intersect" Except=" except " [Exceptions Set Operators DATABASE:MICROSOFT SQL SERVER VERSION:08] Intersect= Except= [Exceptions Set Operators DATABASE:MICROSOFT SQL SERVER VERSION:07] Intersect= Except= [Exceptions Set Operators DATABASE:MICROSOFT SQL SERVER VERSION:06] Intersect= Except= ; ;Microsoft SQL Server 7.0 is limited by number of byte. ;Currently, for Microsoft SQL Server 7.0 the maximum number ;of byte for order by/group by is set to 8060. ;Until RDS recognizes the number of byte limitation, by default ;is set to 'unlimited'. ; Order_By_Limit="16" [Exceptions Operators] Neq=" <> " [Exceptions General] Nulls_Sort_Last=F Group_By_Expr=T Multiple_Distinct=T Count_Non_Distinct=T Count_Value_Expr=T Count_Literal=T Count_Blob=F Subquery_Column_Alias=T Like_Value_Expr=T Is_Null_Value_Expr=T Is_Null_Value_Parm=T Subquery_In_Group_By=F ;MS case SRZ000209000457, Order by alias not always possible. Order_By_Alias=F ;Trakker 341141; duplicate names can't be specified in order by Order_By_Name=F Colseq_Default_Compatible=T Null_Order=F Order_By_In_Derived_Table=F Boolean_Comparison=F Having_Expr=F ;MS KB articles Q321842(ODBC), Q235053(OLE-DB); parameters in subqueries can not be described Subquery_With_Parameters=F ; ;MS document: "Problem Children" re: The Like clause problem, recommend to use varchar ; in parameter for like clause. In Trakker 531339, the column is defined as char. ; Both ODBC and UDA's ODBC interface described the parameter as char although UDA's ; OLEDB described as varchar OLEDB does not return the row. Like_With_Parameters=F ;MS returns wrong datatype for parameter that is in a having clause ;trakker# 569390 Parameter_In_Having=F ;MS SQL Server doesn't support ordering and window frame in window aggregate functions ( max, min, sum, avg, count, count(*)) ;Trakker# 573322 Olap_Window_Order_By=F Olap_Distinct=F [Exceptions Value Expressions] Case=T Extract=C Extract_Year=coguda#extract_year Extract_Month=coguda#extract_month Extract_Day=coguda#extract_day Extract_Hours=coguda#extract_hour Extract_Minutes=coguda#extract_minute Extract_Seconds=coguda#extract_second Floor=C Position=C Power=C Char_Length=C Octet_Length=C Bit_Length=F Substring=C Upper=T Lower=T StrCat=C Cast=C Coalesce=T Nullif=T Current_Date=C Current_Time=F Current_Timestamp=C LocalTime=F LocalTimestamp=C Abs=T Mod=C Ln=C Exp=T Power=T Sqrt=T Floor=T Ceiling=T Trim=F Trim_Both_Spaces=C Trim_Leading_Spaces=C Trim_Trailing_Spaces=C [Exceptions Value Expressions DATABASE:MICROSOFT SQL SERVER VERSION:09] Current_Timestamp=F [Exceptions Value Expressions DATABASE:MICROSOFT SQL SERVER VERSION:08] Current_Timestamp=F [Exceptions Value Expressions DRIVER:SQLSRV32.DLL] Current_Timestamp=F [Exceptions Value Expressions Version:DataDirect] ;DataDirect returns SQL_WVARCHAR as a return type for Current_Timestamp (i.e for sysdatetimeoffset()) ;causing uda to treat it as nvarchar. This causes the error as _first_of_month() is not accepting nvarchar as an argument. ;So disabling the Current_Timestamp for DataDirect. Current_Timestamp=F [Exceptions Blob Expressions] Blob_In_Substring=T [Exceptions Literals] Boolean_Literal=F True_Literal_Str= False_Literal_Str= Unknown_Literal_Str= Date_Literal=C Date_Format_Str="YYYY MM DD" Date_Literal_Str="convert(DATE, {d '%s-%s-%s'})" Alt_Date_Literal_Str="{d '%s-%s-%s'}" Interval_Literal=F IntervalYM_Literal=F Time_Literal=C Time_Format_Str="HH MM SS FFFFFFF" Time_Literal_Str="convert(TIME, '%s:%s:%s.%s')" TimeTZ_Literal=F TimeTZ_Format_Str= TimeTZ_Literal_Str= Timestamp_Literal=C Timestamp_Format_Str="YYYY MM DD HH MM SS FFFFFFFFFF" Timestamp_Literal_Str="convert(datetime2, '%s-%s-%s %s:%s:%s.%s')" TimestampTZ_Literal=C TimestampTZ_Format_Str="YYYY MM DD HH MM SS FFFFFFFFF HHMM" TimestampTZ_Literal_Str="convert(datetimeoffset, '%s-%s-%s %s:%s:%s.%s %s:%s')" Date_Add_Function_Str="dateadd(day,?2,?1)" Date_Sub_Function_Str="datediff(day,?2,?1)" Alt_Timestamp_Literal_Str="convert(datetime2, '%s-%s-%s %s:%s:%s.%s')" Alt_Date_Literal_Assignment=T Alt_Date_Literal_Between=T Alt_Date_Literal_Comparison=T Alt_Date_Literal_In=T Alt_Date_Literal_Insert_Value=T ; In MS SQL Server datetime value is rendered to accuracy of 1/300 seconds ; and value are rounded to increment of .000, .003 or .007 seconds as shown below: ; 1999-12-31 23:59:59.999 is rounded to 2000-01-01 00:00:00.000 ; 1999-12-31 23:59:59.998 is rounded to 1999-12-31 23:59:59.997 ; 1999-12-31 23:59:59.997 is rounded to 1999-12-31 23:59:59.997 ; 1999-12-31 23:59:59.996 is rounded to 1999-12-31 23:59:59.997 ; 1999-12-31 23:59:59.995 is rounded to 1999-12-31 23:59:59.997 ; 1999-12-31 23:59:59.994 is rounded to 1999-12-31 23:59:59.993 ; 1999-12-31 23:59:59.993 is rounded to 1999-12-31 23:59:59.993 ; 1999-12-31 23:59:59.992 is rounded to 1999-12-31 23:59:59.993 ; 1999-12-31 23:59:59.991 is rounded to 1999-12-31 23:59:59.990 ; 1999-12-31 23:59:59.990 is rounded to 1999-12-31 23:59:59.990 ; The value of EndDay_Timestamp_Literal_Str must be of the form ; of "YYYY-MM-DD HH:MM:SS.FFF", even though we don't care the ; actual value in the YYYY-MM-DD part. (Trakker#387399) EndDay_Timestamp_Literal_Str="0000-00-00 23:59:59.998" NChar_Literal=T ; The datetime datatype for SQL Server has a range starting at ; January 1, 1753 and ending at December 31, 9999. Timestamp_Range_Start="1753-01-01" Timestamp_Range_End="9999-12-31" [Exceptions Literals Version:DataDirect] TimestampTZ_Literal=F TimestampTZ_Format_Str= TimestampTZ_Literal_Str= [Exceptions Literals Expressions DATABASE:MICROSOFT SQL SERVER VERSION:09] Time_Literal=F Date_Literal=C Date_Format_Str="YYYY MM DD" Date_Literal_Str="convert(datetime, {d '%s-%s-%s'})" Timestamp_Literal=C Timestamp_Format_Str="YYYY MM DD HH MM SS FFF" Timestamp_Literal_Str="convert(datetime, {ts '%s-%s-%s %s:%s:%s.%-.3s'})" TimestampTZ_Literal=F TimestampTZ_Format_Str= TimestampTZ_Literal_Str= Alt_Timestamp_Literal_Str="{ts '%s-%s-%s %s:%s:%s.%-.3s'}" [Exceptions Literals DATABASE:MICROSOFT SQL SERVER VERSION:08] Time_Literal=F Date_Literal=C Date_Format_Str="YYYY MM DD" Date_Literal_Str="convert(datetime, {d '%s-%s-%s'})" Timestamp_Literal=C Timestamp_Format_Str="YYYY MM DD HH MM SS FFF" Timestamp_Literal_Str="convert(datetime, {ts '%s-%s-%s %s:%s:%s.%-.3s'})" TimestampTZ_Literal=F TimestampTZ_Format_Str= TimestampTZ_Literal_Str= Alt_Timestamp_Literal_Str="{ts '%s-%s-%s %s:%s:%s.%-.3s'}" [Exceptions Misc] No_And_Parentheses=F Collate_NChar_As_Char=F [Exceptions Delimiters] ; ; Specifies the delimiter character for each name part. ; ; If a delimiter is set to nothing, then the database does not support the ; delimiting of that name part; otherwise, the specified string is used to ; delimit the corresponding name part. ; ; NOTE: if Wholename specified and not empty then this indicates that fully ; qualified names are delimited with this character; ; For example, ; "myCatalog.mySchema.myTable.myColumn" ; ; NOTE: for a double quote (") entry, specifies "\"". ; Catalog_Delimiter="\"" Schema_Delimiter="\"" Table_Delimiter="\"" Column_Delimiter="\"" Procedure_Delimiter= Wholename_Delimiter= [Exceptions Separators] ; ; Specifies the name separator that follows the type of name. ; [][][][] ; [][][] ; Catalog_Separator="." Schema_Separator="." Table_Separator="." ; ; Microsoft functions equivalent to EE functions ; ; Ignore all type information associated with the following functions. ; They will be updated in future revisions. ; str function will returns by default 10 characters length. [Builtin Functions] n:cast_float(%1bcdints)=convert(float(53),%1); n:cast_real(%1bcdints)=convert(real,%1); n:cast_smallint(%1bcdints)=convert(smallint,%1); n:cast_integer(%1bcdints)=convert(int,%1); s:cast_timestamp(%1bcdints)=convert(datetime,%1); c:cast_char(%1bcxdints)=convert(char,%1); c:cast_varchar(%1bcxdints)=convert(varchar,%1); n:octet_length(%1cx)=datalength(%1); n:position(%1c,%2c)=charindex(%1,%2); n:size(%1cx)=datalength(%1); c:substring(%1c,%2n,%3n)=substring(%1,%2,%3); c:substring(%1c,%2n)=substring(%1,%2,LEN(%1)); x:substring(%1x,%2n,%3n)=substring(%1,%2,%3); x:substring(%1x,%2n)=substring(%1,%2,LEN(%1)); n:ln(%1n)=LOG(%1); n:mod(%1n,%2n)=( (%1) % (%2) ); n:char_length(%1cx)=LEN(%1); d:current_date()=convert(datetime, convert( char(8), current_timestamp, 112 ), 112); n:absolute(%1n)=abs(%1); c:concat(%1,%2)=%1 + %2; c:downshift(%1c)=lower(%1); n:index(%1c,%2c)=charindex(%2,%1); c:leftjustify(%1c)=ltrim(%1); c:truncate(%1c)=rtrim(%1); c:upshift(%1c)=upper(%1); n:ceiling(%1n)=ceiling(%1); n:floor(%1n)=floor(%1); n:power(%1n,%2n)=power(%1,%2); c:reverse(%1c)=reverse(%1); n:round(%1n, %2n)=round(%1, %2); n:ascii(%1c)=ascii(%1); s:localtimestamp({%1n})=CURRENT_TIMESTAMP; ; ; Functions required for EXTRACT function ; n:coguda#extract_year(%1ds)=datepart(year,%1); n:coguda#extract_month(%1ds)=datepart(month,%1); n:coguda#extract_day(%1ds)=datepart(day,%1); n:coguda#extract_hour(%1ts)=datepart(hour,%1); n:coguda#extract_minute(%1ts)=datepart(minute,%1); n:coguda#extract_second(%1ts)=datepart(second,%1); ; ; Cast functions ; ; Please note the following: ; - SQL Server does not support casting a string with fractional digits to ; and exact numeric, so the value is original casted to a decimal before ; being cast to an exact numeric. The entries related to this are ; cast_smallint, cast_integer, and cast_bigint ; - The CONVERT function is used to cast values of type DATETIME to a string ; as the ANSI standard output can be specified. ; - As date literals are pushed as CONVERT( datetime, {d 'date_literal'}), ; entries have been added for casting date value to strings. ; n:coguda#cast_float(%1)=CAST( %1 as REAL ); n:coguda#cast_real(%1)=CAST( %1 as REAL ); n:coguda#cast_double_precision(%1)=CAST( %1 AS DOUBLE PRECISION ); n:coguda#cast_bigint(%1c)=CAST( CAST( %1 AS DECIMAL(21,2) ) AS BIGINT ); n:coguda#cast_bigint(%1n)=CAST( %1 AS BIGINT ); n:coguda#cast_integer(%1c)=CAST( CAST(%1 AS DECIMAL(12,2)) AS INTEGER ); n:coguda#cast_integer(%1n)=CAST( %1 AS INTEGER ); n:coguda#cast_smallint(%1c)=CAST( CAST(%1 AS DECIMAL(7,2)) AS SMALLINT ); n:coguda#cast_smallint(%1n)=CAST( %1 AS SMALLINT ); c:coguda#cast_char(%1ncx,%2n)=CAST( %1 AS CHAR( %2 ) ); c:coguda#cast_char(%1tsz,%2n)=CONVERT( CHAR(%2), %1, 121 ); c:coguda#cast_char(%1d,%2n)=CAST( CONVERT( CHAR(10), %1, 121 ) AS CHAR(%2) ); c:coguda#cast_varchar(%1ncx,%2n)=CAST( %1 AS VARCHAR( %2 ) ); c:coguda#cast_varchar(%1tsz,%2n)=CONVERT( VARCHAR(%2), %1, 121 ); c:coguda#cast_varchar(%1d,%2n)=CAST( CONVERT( CHAR(10), %1, 121 ) AS VARCHAR(%2) ); c:coguda#cast_nchar(%1ncx,%2n)=CAST( %1 AS NCHAR( %2 ) ); c:coguda#cast_nchar(%1tsz,%2n)=CONVERT( NCHAR(%2), %1, 121 ); c:coguda#cast_nchar(%1d,%2n)=CAST( CONVERT( NCHAR(10), %1, 121 ) AS NCHAR(%2) ); c:coguda#cast_nvarchar(%1ncx,%2n)=CAST( %1 AS NVARCHAR( %2 ) ); c:coguda#cast_nvarchar(%1tsz,%2n)=CONVERT( NVARCHAR(%2), %1, 121 ); c:coguda#cast_nvarchar(%1d,%2n)=CAST( CONVERT( NCHAR(10), %1, 121 ) AS NVARCHAR(%2) ); s:coguda#cast_timestamp(%1cndtsz)=CAST( %1 AS DATETIME2 ); s:coguda#cast_timestampTZ(%1cndtsz)=CAST( %1 AS DATETIMEOFFSET ); ;Functions required to cast division of integer/numeric to a floating point n:coguda#cast_division_float(%1)=CAST( %1 as REAL ); n:coguda#cast_division_double_precision(%1)=CAST( %1 AS DOUBLE PRECISION ); ; ; Business Functions for Date Calculations ; d:_add_days(%1d,%2n)=DATEADD( DAY, %2, %1 ); s:_add_days(%1s,%2n)=DATEADD( DAY, %2, %1 ); d:_add_months(%1d,%2n)=DATEADD( MONTH, %2, %1 ); s:_add_months(%1s,%2n)=DATEADD( MONTH, %2, %1 ); d:_add_years(%1d,%2n)=DATEADD( YEAR, %2, %1 ); s:_add_years(%1s,%2n)=DATEADD( YEAR, %2, %1 ); n:_days_between(%1ds,%2ds)=DATEDIFF( DAY, %2, %1 ); ; ;_months_between mapping in readable form: ;(DATEPART(YEAR, %1) - DATEPART(YEAR, %2)) * 12 + ;DATEPART(MONTH, %1) - DATEPART(MONTH, %2) + ;CASE ;WHEN (%1) > (%2) THEN ; CASE ; WHEN (DATEPART(DAY, %1) < DATEPART(DAY, %2)) AND (DATEPART(DAY, DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1 - DATEPART(DAY, %1), %1)))) <> DATEPART(DAY, %1)) ; THEN -1 ; ELSE 0 END ;WHEN (%1) < (%2) THEN ; CASE ; WHEN (DATEPART(DAY, %2) < DATEPART(DAY, %1)) AND (DATEPART(DAY, DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1 - DATEPART(DAY, %2), %2)))) <> DATEPART(DAY, %2)) ; THEN 1 ; ELSE 0 END ;ELSE 0 END; n:_months_between(%1ds,%2ds)=( (DATEPART(YEAR, %1) - DATEPART(YEAR, %2)) * 12 + DATEPART(MONTH, %1) - DATEPART(MONTH, %2) + CASE WHEN (%1) > (%2) THEN CASE WHEN (DATEPART(DAY, %1) < DATEPART(DAY, %2)) AND (DATEPART(DAY, DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1 - DATEPART(DAY, %1), %1)))) <> DATEPART(DAY, %1)) THEN -1 ELSE 0 END WHEN (%1) < (%2) THEN CASE WHEN (DATEPART(DAY, %2) < DATEPART(DAY, %1)) AND (DATEPART(DAY, DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1 - DATEPART(DAY, %2), %2)))) <> DATEPART(DAY, %2)) THEN 1 ELSE 0 END ELSE 0 END ); n:_years_between(%1ds,%2ds)=( ((DATEPART(YEAR, %1) - DATEPART(YEAR, %2)) * 12 + DATEPART(MONTH, %1) - DATEPART(MONTH, %2) + CASE WHEN (%1) > (%2) THEN CASE WHEN (DATEPART(DAY, %1) < DATEPART(DAY, %2)) AND (DATEPART(DAY, DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1 - DATEPART(DAY, %1), %1)))) <> DATEPART(DAY, %1)) THEN -1 ELSE 0 END WHEN (%1) < (%2) THEN CASE WHEN (DATEPART(DAY, %2) < DATEPART(DAY, %1)) AND (DATEPART(DAY, DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1 - DATEPART(DAY, %2), %2)))) <> DATEPART(DAY, %2)) THEN 1 ELSE 0 END ELSE 0 END) / 12 ); n:_days_to_end_of_month(%1ds)=DATEDIFF( DAY, %1, DATEADD( DAY, -1, DATEADD( MONTH, 1, DATEADD( DAY, 1 - DATEPART( DAY, %1 ), %1 ) ) ) ); n:_age(%1d)=; d:_first_of_month(%1d)=DATEADD( DAY, -DAY( %1 ) + 1, %1 ); s:_first_of_month(%1s)=DATEADD( DAY, -DAY( %1 ) + 1, %1 ); d:_last_of_month(%1d)=DATEADD( DAY, -1, DATEADD( MONTH, 1, DATEADD( DAY, -DAY( %1 ) + 1, %1 ) ) ); s:_last_of_month(%1s)=DATEADD( DAY, -1, DATEADD( MONTH, 1, DATEADD( DAY, -DAY( %1 ) + 1, %1 ) ) ); s:_make_timestamp(%1n,%2n,%3n)=CONVERT( DATETIME, CONVERT( VARCHAR(8), ( (%1) * 10000 ) + ( (%2) * 100 ) + %3 ) ); n:_ymdint_between(%1ds,%2ds)=; n:_day_of_year(%1ds)=DATEPART( DAYOFYEAR, %1 ); n:_day_of_week(%1ds, %2n)=( ((DATEPART( WEEKDAY, %1 ) + @@DATEFIRST - 2) % 7 + 1 - %2 + 7) % 7 + 1 ); n:_round(%1n, %2n)=ROUND(%1, %2); ; ; _week_of_year ; compare current date against first iso day of the next, this and last year to find the ; year that the week is in. Then calculate the week of year. ; This is the expression in a more readable form: ;CASE ; WHEN DATEDIFF(DY,DATEADD(DY,3,DATEADD(YY,-1,DATENAME(YY,%1))),%1)+((DATEPART(DW,DATEADD(DY,3,DATEADD(YY,-1,DATENAME(YY,%1))))+5-@@DATEFIRST)% 7+7)% 7 >=0 ; THEN 1 ; WHEN DATEDIFF(DY,DATEADD(DY,3,DATENAME(YY,%1)),%1)+(DATEPART(DW,DATEADD(DY,3,DATENAME(YY,%1)))+5-@@DATEFIRST)% 7+7)% 7 >=0 ; THEN (DATEDIFF(DY,DATEADD(DY,3,DATENAME(YY,%1)),%1)+(DATEPART(DW,DATEADD(DY,3,DATENAME(YY,%1)))+5-@@DATEFIRST)% 7+7)% 7)/7+1 ; ELSE (DATEDIFF(DY,DATEADD(DY,3,DATEADD(YY,-1,DATENAME(YY,%1))),%1)+((DATEPART(DW,DATEADD(DY,3,DATEADD(YY,-1,DATENAME(YY,%1))))+5-@@DATEFIRST)% 7+7)% 7)/7+1 ;END ; n:_week_of_year(%1ds)=CASE WHEN DATEDIFF(DY,DATEADD(DY,3,DATEADD(YY,1,DATENAME(YY,%1))),%1)+((DATEPART(DW,DATEADD(DY,3,DATEADD(YY,1,DATENAME(YY,%1))))+5-@@DATEFIRST)% 7+7)% 7 >=0 THEN 1 WHEN DATEDIFF(DY,DATEADD(DY,3,DATENAME(YY,%1)),%1)+((DATEPART(DW,DATEADD(DY,3,DATENAME(YY,%1)))+5-@@DATEFIRST)% 7+7)% 7 >=0 THEN (DATEDIFF(DY,DATEADD(DY,3,DATENAME(YY,%1)),%1)+((DATEPART(DW,DATEADD(DY,3,DATENAME(YY,%1)))+5-@@DATEFIRST)% 7+7)% 7)/7+1 ELSE (DATEDIFF(DY,DATEADD(DY,3,DATEADD(YY,-1,DATENAME(YY,%1))),%1)+((DATEPART(DW,DATEADD(DY,3,DATEADD(YY,-1,DATENAME(YY,%1))))+5-@@DATEFIRST)% 7+7)% 7)/7+1 END; ; ; Additional Business Functions for Date Calculations ; s:_add_hours(%1s,%2n)=DATEADD( HOUR, %2, %1 ); t:_add_hours(%1t,%2n)=DATEADD( HOUR, %2, %1 ); s:_add_minutes(%1s,%2n)=DATEADD( MINUTE, %2, %1 ); t:_add_minutes(%1t,%2n)=DATEADD( MINUTE, %2, %1 ); s:_add_seconds(%1s,%2n)=DATEADD( SECOND, %2, %1 ); t:_add_seconds(%1t,%2n)=DATEADD( SECOND, %2, %1 ); n:_hours_between(%1ds,%2ds)=DATEDIFF( HOUR, %2, %1 ); n:_minutes_between(%1ds,%2ds)=DATEDIFF( MINUTE, %2, %1 ); n:_seconds_between(%1ds,%2ds)=DATEDIFF( SECOND, %2, %1 ); [Builtin Functions DATABASE:MICROSOFT SQL SERVER VERSION:09] c:coguda#cast_char(%1s,%2n)=CONVERT( CHAR(%2), %1, 121 ); c:coguda#cast_varchar(%1s,%2n)=CONVERT( VARCHAR(%2), %1, 121 ); c:coguda#cast_nchar(%1s,%2n)=CONVERT( NCHAR(%2), %1, 121 ); c:coguda#cast_nvarchar(%1s,%2n)=CONVERT( NVARCHAR(%2), %1, 121 ); s:coguda#cast_timestamp(%1cndtsz)=CAST( %1 AS DATETIME ); [Builtin Functions DATABASE:MICROSOFT SQL SERVER VERSION:08] c:coguda#cast_char(%1s,%2n)=CONVERT( CHAR(%2), %1, 121 ); c:coguda#cast_varchar(%1s,%2n)=CONVERT( VARCHAR(%2), %1, 121 ); c:coguda#cast_nchar(%1s,%2n)=CONVERT( NCHAR(%2), %1, 121 ); c:coguda#cast_nvarchar(%1s,%2n)=CONVERT( NVARCHAR(%2), %1, 121 ); s:coguda#cast_timestamp(%1cndtsz)=CAST( %1 AS DATETIME ); [Builtin Functions DRIVER:SQLSRV32.DLL] s:coguda#cast_timestamp(%1cndtsz)=CAST( %1 AS DATETIME ); ; ; Ignore all type information associated with the following functions. ; They will be updated in future revisions. ; [Database Functions] ; c:coguda#concat(%1,%2)=%1+%2; ; ; ***************************************** ; Microsoft specific character functions ; ***************************************** ; n:sy_ascii(%1c)=ascii(%1); c:sy_char(%1b)=char(%1); n:sy_right(%1c,%2n)=right(%1, %2); n:sy_soundex(%1c)=soundex(%1); ; ; ***************************************** ; Microsoft specific Numeric functions ; ***************************************** ; n:sy_rand(%1n)=rand(%1); n:sy_round(%1n,%2n)=round(%1,%2); ; ; ***************************************** ; Microsoft specific Date functions ; ***************************************** ; n:ms_year(%1c)=datepart(year,%1); n:ms_month(%1c)=datepart(month,%1); n:ms_day(%1c)=datepart(day,%1); n:ms_hours(%1c)=datepart(hour,%1); n:ms_minutes(%1c)=datepart(minute,%1); n:ms_seconds(%1c)=datepart(second,%1); ; ***************************************** ; Microsoft specific functions for TRIM ; ***************************************** c:trim_both_spaces(%1c)=LTRIM(RTRIM(%1)); c:trim_leading_spaces(%1c)=LTRIM(%1); c:trim_trailing_spaces(%1c)=RTRIM(%1); ; ; Conversion ; ; SQL Server supports several type conversions. The ones listed ; below are the ones we are interested in: ; ; - number to char ; - datetime to char ; ; - char to number ; ; - char to datetime ; - number to datetime ; ;bcdints:convert(%1c,%2bcdints {,%3n})=convert(%1,%2 {,%3}); c:date_to_varchar(%1s)=convert(varchar(8),%1,10); ; ; ******************************************** ; Aggregate and other functions, added in 7.0 ; and 8.0 ; ******************************************** [Database Functions] n:stdev_pop(%1n)=stdevp(%1); n:var_pop(%1n)=varp(%1); n:cast_decimal(%1cn {,%2n,%3n})=cast(%1 as decimal{(%2,%3)}); d:sysdate()=convert (date, sysdatetime(), 112); s:current_timestamp()= sysdatetimeoffset (); [Database Functions DATABASE:MICROSOFT SQL SERVER VERSION:09] d:sysdate()=; [Database Functions DATABASE:MICROSOFT SQL SERVER VERSION:08] d:sysdate()=; [Database Functions DATABASE:MICROSOFT SQL SERVER VERSION:06] n:stdev_pop(%1n)=; n:var_pop(%1n)=; n:cast_decimal(%1cn {,%2n,%3n})=; [Database Functions DATABASE:MICROSOFT SQL SERVER VERSION:06.50] n:stdev_pop(%1n)=; n:var_pop(%1n)=; n:cast_decimal(%1cn {,%2n,%3n})=; [Misc] ; ; If there are no entries found for 'MAXDBPROCS' and 'INACTDBPROCS' ; then the value of 'MAXDBPROCS' and 'INACTDBPROCS' will be set ; to default values, which are 25 and 5, respectively. ; ;The 'MAXDBPROCS' entry indicates to DB-Library to set the maximum ;number of simultaneously open DBPROCESSes to the 'MAXDBPROCS' value. ; MAXDBPROCS=25 ; ;The 'INACTDPROCS' entry indicates to the Sybase SGI Gateway to ;mark the open DBPROCESS as 'inactive' to the maximum value given ;by 'INACTDBPROCS' value. DBPROCESS exceeds the 'maximum value' will ;be closed at 'close' time, unless it is necessary to keep the ;DBPROCESS alive for later use, for example at 'commit' time. ; INACTDBPROCS=5 ; ; The entry 'Convert Money To Decimal' is used to changed Sybase's money ; datatype to sqlDecimal precision 19 and scale 4. This entry by default ; is set to 0, only for application that can not handle quad datatype ; this entry can be changed to 1. This entry is only supported in the ; code of Sybase gateway from r94c version and up. Convert Money To Decimal=0 ; ; The entry 'Max Length Of Text' is used as the maximum length of text ; that can be inserted/updated with UPDATETEXT Transact-SQL Statement. ; According to the manual the max.length is approximately 120K. ; The default value is set to 102400 ; Max Length Of Text=102400 ;; ; Optimizer hints to set in Attach time ; ; This attribute can take values 0 ( shorter query execution time ) or 1 ; ( fast first row ). 0 is the default. ;SQL_ATTRIB_DB_OPTIMIZER_GOAL=1 ;; ; This attribute can take values 0 ( server decides the join order ) ; or 1 ( joins are processed as in the query). 0 is the default. ;SQL_ATTRIB_DB_JOIN_ORDER=1 ;; ; use this maximum worker threads. If doesn't exist, system default is used. ;SQL_ATTRIB_DB_DOP=1 ; ; Default processing mode. Processing Mode=Limited Local ; Specifies which decimal conversion method to use Numeric_binding=C [UDA Misc] ; Set this entry to one of the following values to force the type of ; transformation performed on queries containing aggregates computed ; at different levels of granularity. A value other than 0 will cause ; a query to generated that is more materialized view friendly. ; ; 0 = default ; 1 = derived tables ; 2 = union ; Multigrain_Query_XForm_Strategy=0 [UDA USER OPTIONS] ;Concatenating a null value with a string yields the string itself against ;MS SQL Server on UNIX. To avoid this, CONCAT_NULL_YIELDS_NULL should ;be set to ON. Attach=SET CONCAT_NULL_YIELDS_NULL ON [DATABASE:MICROSOFT SQL SERVER] ; When connecting to Microsoft SQL Server read the DbInfo entries from ; the native Microsoft SQL Server ini file with no subtype DBINFO_SUBSECTIONS="DBNAM,DBMAJ,DBMIN,DRVNAM" Exec_JoinOrder_NoJoinOrder="SET FORCEPLAN OFF" Exec_JoinOrder_OrderedJoin="SET FORCEPLAN ON" Procedure Cursors="T" Unicode Literals="F" ;When using ODBC SQLProcedures, SQL Server append ';x' after a procedure/function name ;We'd discovered that for functions the number x is always 0 ;and for procedures the number x is always non-zero Function Name Suffix=";0" Bulk Insert Supported="T" ; This entry is used to specify whether the prepared statement will be closed ; when reaching the end of data, the connection occupied can be used by other ; statement. CLOSE_HSTMT_AT_EOD="T" ; When set to T, the sub connections held by the request will be free when release request. RELEASE_SUBCONNECTION="T" [DATABASE:MICROSOFT SQL SERVER VERSION:09] SQL_API_SQLPROCEDURES="TRUE:SELECT CATALOG, SCHEMAA, NAME, 0, 0, 0, '', TYPE FROM (SELECT SPECIFIC_CATALOG AS CATALOG, SPECIFIC_SCHEMA AS SCHEMAA, SPECIFIC_NAME AS NAME, ( CASE ROUTINE_TYPE WHEN 'PROCEDURE' THEN 1 WHEN 'FUNCTION' THEN 2 ELSE 0 END ) AS TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE IN ('FUNCTION', 'PROCEDURE') AND ( DATA_TYPE != 'TABLE' OR DATA_TYPE IS NULL ) UNION SELECT SPECIFIC_CATALOG AS CATALOG, SPECIFIC_SCHEMA AS SCHEMAA, SPECIFIC_NAME AS NAME, 3 AS TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE IN ('FUNCTION') AND DATA_TYPE = 'TABLE' ) AS T WHERE CATALOG ?1 AND SCHEMAA ?2 AND NAME ?3" Function Name Suffix= [DATABASE:MICROSOFT SQL SERVER VERSION:08] SQL_API_SQLPROCEDURES="TRUE:SELECT CATALOG, SCHEMAA, NAME, 0, 0, 0, '', TYPE FROM (SELECT SPECIFIC_CATALOG AS CATALOG, SPECIFIC_SCHEMA AS SCHEMAA, SPECIFIC_NAME AS NAME, ( CASE ROUTINE_TYPE WHEN 'PROCEDURE' THEN 1 WHEN 'FUNCTION' THEN 2 ELSE 0 END ) AS TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE IN ('FUNCTION', 'PROCEDURE') AND ( DATA_TYPE != 'TABLE' OR DATA_TYPE IS NULL ) UNION SELECT SPECIFIC_CATALOG AS CATALOG, SPECIFIC_SCHEMA AS SCHEMAA, SPECIFIC_NAME AS NAME, 3 AS TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE IN ('FUNCTION') AND DATA_TYPE = 'TABLE' ) AS T WHERE CATALOG ?1 AND SCHEMAA ?2 AND NAME ?3" Function Name Suffix= [DRIVER:SQLSRV.DLL] ; This driver only supports Microsoft SQL Server SQL_DBMS_NAME="MICROSOFT SQL SERVER" Cursor Type For Metadata="STATIC" Connection Access Mode Is Changeable="F" [DRIVER:SQLSRV32.DLL] ; This driver only supports Microsoft SQL Server SQL_DBMS_NAME="MICROSOFT SQL SERVER" Cursor Type For Metadata="STATIC" Connection Access Mode Is Changeable="F" ; The functions CURDATE and CURTIME have been removed as they both return ; VarChar instead of a Date and Time (respectively). SQL_TIMEDATE_FUNCTIONS="2096637" ; Trakkers 258739, 260583, 262219 SQL_API_SQLEXTENDEDFETCH="FALSE" SQL_API_SQLFETCHSCROLL="FALSE" Threaded Open="T" [DRIVER:SQLNCLI.DLL] ; This driver only supports Microsoft SQL Server SQL_DBMS_NAME="MICROSOFT SQL SERVER" Cursor Type For Metadata="STATIC" Connection Access Mode Is Changeable="F" ; The functions CURDATE and CURTIME have been removed as they both return ; VarChar instead of a Date and Time (respectively). SQL_TIMEDATE_FUNCTIONS="2096637" SQL_API_SQLEXTENDEDFETCH="FALSE" SQL_API_SQLFETCHSCROLL="FALSE" Threaded Open="T" [DRIVER:IVSS612.DLL] ; This driver only supports Microsoft SQL Server SQL_DBMS_NAME="MICROSOFT SQL SERVER" SQL_DBMS_VER="Format String:Microsoft SQL Server %4s" ;DataDirect 5.1 SQL Server Wire Protocol [DRIVER:IVMSSS21.SO] DBINFO_SUBTYPE="Version:DataDirect" ; This entries are redundant on MOST platforms but Linux where the ; datadirect driver reports these infos incorrectly. SQL_QUALIFIER_TERM="database" SQL_OWNER_TERM="owner" SQL_PROCEDURE_TERM="stored procedure" [DRIVER:IVMSSS21.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 5.3 SQL Server Wire Protocol [DRIVER:IVMSSS23.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVMSSS23.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 6.0 SQL Server Legacy Wire Protocol [DRIVER:IVMSSS24.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVMSSS24.SL] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDMSSS24.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDMSSS24.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 6.0 SQL Server Wire Protocol [DRIVER:IVSQLS24.S0] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVSQLS24.SL] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDSQLS24.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDSQLS24.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 6.1 SQL Server Legacy Wire Protocol [DRIVER:IVMSSS25.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVMSSS25.SL] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDMSSS25.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDMSSS25.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 6.1 SQL Server Wire Protocol [DRIVER:IVSQLS25.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVSQLS25.SL] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDSQLS25.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDSQLS25.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 7.0 SQL Server Legacy Wire Protocol [DRIVER:IVMSSS26.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVMSSS26.SL] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDMSSS26.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDMSSS26.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 7.0 SQL Server Wire Protocol [DRIVER:IVSQLS26.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVSQLS26.SL] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDSQLS26.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDSQLS26.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 7.1 SQL Server Legacy Wire Protocol [DRIVER:IVMSSS27.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVMSSS27.SL] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDMSSS27.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDMSSS27.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 7.1 SQL Server Wire Protocol [DRIVER:IVSQLS27.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVSQLS27.SL] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDSQLS27.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDSQLS27.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 8.0.2 SQL Server Legacy Wire Protocol [DRIVER:IVMSSS28.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVMSSS28.SL] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDMSSS28.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDMSSS28.SL] DBINFO_SUBTYPE="Version:DataDirect" ;DataDirect 8.0.2 SQL Server Wire Protocol [DRIVER:IVSQLS28.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:IVSQLS28.SL] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDSQLS28.SO] DBINFO_SUBTYPE="Version:DataDirect" [DRIVER:DDSQLS28.SL] DBINFO_SUBTYPE="Version:DataDirect" ; This section is used by the ODBC driver ; to map Data Direct encoding values to icu names ; The following mapping is for DataDirect ODBC driver ; version 5.0 and above (default) [I18N Encoding Mapping: DATADIRECT] ;ascii 3=US-ASCII ;No euro updates 4=iso-8859-1 ;Central Europe 5=iso-8859-2 ;Maltese Esperanto 6=iso-8859-3 ;Baltic 7=iso-8859-4 ;Cyrillic 8=iso-8859-5 ;Arabic 9=iso-8859-6 ;ISO Greek (w/o euro update) 10=iso-8859-7 ;hebrew 11=iso-8859-8 ;Turkish 12=iso-8859-9 ;UTF-8 106=utf-8 ;Latin9, with Euro updates 111=iso-8859-15 ;Japanese MS_Kanji 17=Shift_JIS ;Korean, same as cp1363 36=korean ;HP Latin1 2004=roman8 ;PRC Chinese 2025=GB2312 114=gb18030 ;Taiwan Chinese 2026=Big5 ;EBCDIC Germany 2030=CP273 ;windows-1252 2252=cp1252 ;Thai Industry Standard Institute 2259=TIS-620