delphimvcframework/unittests/general/Several/bin32/firebird/udf/ib_udf2.sql

717 lines
19 KiB
SQL

/*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
* Revision 1.2 2000/11/28 06:47:52 fsg
* Changed declaration of ascii_char in ib_udf.sql
* to get correct result as proposed by Claudio Valderrama
* 2001.5.19 Claudio Valderrama, add the declaration of alternative
* substrlen function to handle string,start,length instead.
* 2004.9.1 Claudio Valderrama, changed some UDF's to be able to detect NULL
* and renamed the resulting file as ib_udf2.sql.
*
*/
/*****************************************
*
* a b s
*
*****************************************
*
* Functional description:
* Returns the absolute value of a
* number.
*
*****************************************
DECLARE EXTERNAL FUNCTION abs
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* a c o s
*
*****************************************
*
* Functional description:
* Returns the arccosine of a number
* between -1 and 1, if the number is
* out of bounds it returns NaN, as handled
* by the _matherr routine.
*
*****************************************
DECLARE EXTERNAL FUNCTION acos
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_acos' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* a s c i i _ c h a r
*
*****************************************
*
* Functional description:
* Returns the ASCII character corresponding
* with the value passed in.
*
*****************************************
DECLARE EXTERNAL FUNCTION ascii_char
INTEGER NULL
RETURNS CSTRING(1) FREE_IT
ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* a s c i i _ v a l
*
*****************************************
*
* Functional description:
* Returns the ascii value of the character
* passed in.
*
*****************************************
DECLARE EXTERNAL FUNCTION ascii_val
CHAR(1)
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_ascii_val' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* a s i n
*
*****************************************
*
* Functional description:
* Returns the arcsin of a number between
* -1 and 1, if the number is out of
* range NaN is returned.
*
*****************************************
DECLARE EXTERNAL FUNCTION asin
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_asin' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* a t a n
*
*****************************************
*
* Functional description:
* Returns the arctangent of a number.
*
*
*****************************************
DECLARE EXTERNAL FUNCTION atan
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_atan' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* a t a n 2
*
*****************************************
*
* Functional description:
* Returns the arctangent of the
* first param / the second param.
*
*****************************************
DECLARE EXTERNAL FUNCTION atan2
DOUBLE PRECISION, DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_atan2' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* b i n _ a n d
*
*****************************************
*
* Functional description:
* Returns the result of a binary AND
* operation performed on the two numbers.
*
*****************************************
DECLARE EXTERNAL FUNCTION bin_and
INTEGER, INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_bin_and' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* b i n _ o r
*
*****************************************
*
* Functional description:
* Returns the result of a binary OR
* operation performed on the two numbers.
*
*****************************************
DECLARE EXTERNAL FUNCTION bin_or
INTEGER, INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_bin_or' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* b i n _ x o r
*
*****************************************
*
* Functional description:
* Returns the result of a binary XOR
* operation performed on the two numbers.
*
*****************************************
DECLARE EXTERNAL FUNCTION bin_xor
INTEGER, INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_bin_xor' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* c e i l i n g
*
*****************************************
*
* Functional description:
* Returns a double value representing
* the smallest integer that is greater
* than or equal to the input value.
*
*****************************************
DECLARE EXTERNAL FUNCTION ceiling
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_ceiling' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* c o s
*
*****************************************
*
* Functional description:
* The cos function returns the cosine
* of x. If x is greater than or equal
* to 263, or less than or equal to -263,
* a loss of significance in the result
* of a call to cos occurs, in which case
* the function generates a _TLOSS error
* and returns an indefinite (same as a
* quiet NaN).
*
*****************************************
DECLARE EXTERNAL FUNCTION cos
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_cos' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* c o s h
*
*****************************************
*
* Functional description:
* The cosh function returns the hyperbolic cosine
* of x. If x is greater than or equal
* to 263, or less than or equal to -263,
* a loss of significance in the result
* of a call to cos occurs, in which case
* the function generates a _TLOSS error
* and returns an indefinite (same as a
* quiet NaN).
*
*****************************************
DECLARE EXTERNAL FUNCTION cosh
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_cosh' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* c o t
*
*****************************************
*
* Functional description:
* Returns 1 over the tangent of the
* input parameter.
*
*****************************************
DECLARE EXTERNAL FUNCTION cot
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_cot' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* d i v
*
*****************************************
*
* Functional description:
* Returns the quotient part of the division
* of the two input parameters.
*
*****************************************/
DECLARE EXTERNAL FUNCTION div
INTEGER, INTEGER
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_div' MODULE_NAME 'ib_udf';
/*****************************************
*
* f l o o r
*
*****************************************
*
* Functional description:
* Returns a floating-point value
* representing the largest integer that
* is less than or equal to x.
*
*****************************************
DECLARE EXTERNAL FUNCTION floor
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_floor' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* u d f _ f r a c
*
*****************************************
*
* Functional description:
* Returns a floating-point value
* representing the fractional part of x.
*
*****************************************/
DECLARE EXTERNAL FUNCTION udf_frac
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_frac' MODULE_NAME 'ib_udf';
/*****************************************
*
* l n
*
*****************************************
*
* Functional description:
* Returns the natural log of a number.
*
*****************************************
DECLARE EXTERNAL FUNCTION ln
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_ln' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* l o g
*
*****************************************
*
* Functional description:
* log (x,y) returns the logarithm
* base x of y.
*
*****************************************
DECLARE EXTERNAL FUNCTION log
DOUBLE PRECISION, DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_log' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* l o g 1 0
*
*****************************************
*
* Functional description:
* Returns the logarithm base 10 of the
* input parameter.
*
*****************************************
DECLARE EXTERNAL FUNCTION log10
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_log10' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* l o w e r
*
*****************************************
*
* Functional description:
* Returns the input string into lower
* case characters. Note: This function
* will not work with international and
* non-ascii characters.
* Note: This function is NOT limited to
* receiving and returning only 255 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************
DECLARE EXTERNAL FUNCTION "LOWER"
CSTRING(255) NULL
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_lower' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* l p a d
*
*****************************************
*
* Functional description:
* Appends the given character to beginning
* of the input string until length of the result
* string becomes equal to the given number.
* Note: This function is NOT limited to
* receiving and returning only 255 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************
DECLARE EXTERNAL FUNCTION lpad
CSTRING(255) NULL, INTEGER, CSTRING(1) NULL
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* l t r i m
*
*****************************************
*
* Functional description:
* Removes leading spaces from the input
* string.
* Note: This function is NOT limited to
* receiving and returning only 255 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION ltrim
CSTRING(255) NULL
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf';
/*****************************************
*
* m o d
*
*****************************************
*
* Functional description:
* Returns the remainder part of the
* division of the two input parameters.
*
*****************************************
DECLARE EXTERNAL FUNCTION mod
INTEGER, INTEGER
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* p i
*
*****************************************
*
* Functional description:
* Returns the value of pi = 3.14159...
*
*****************************************
DECLARE EXTERNAL FUNCTION pi
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_pi' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* r a n d
*
*****************************************
*
* Functional description:
* Returns a random number between 0
* and 1.
*
*
* Note: Use srand to seed the
* random number generator.
* This behavior has been changed.
*****************************************
DECLARE EXTERNAL FUNCTION rand
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* r p a d
*
*****************************************
*
* Functional description:
* Appends the given character to end
* of the input string until length of the result
* string becomes equal to the given number.
* Note: This function is NOT limited to
* receiving and returning only 255 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************
DECLARE EXTERNAL FUNCTION rpad
CSTRING(255) NULL, INTEGER, CSTRING(1) NULL
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_rpad' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* r t r i m
*
*****************************************
*
* Functional description:
* Removes trailing spaces from the input
* string.
* Note: This function is NOT limited to
* receiving and returning only 255 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION rtrim
CSTRING(255) NULL
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_rtrim' MODULE_NAME 'ib_udf';
/*****************************************
*
* s i g n
*
*****************************************
*
* Functional description:
* Returns 1, 0, or -1 depending on whether
* the input value is positive, zero or
* negative, respectively.
*
*****************************************
DECLARE EXTERNAL FUNCTION sign
DOUBLE PRECISION
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_sign' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* s i n
*
*****************************************
*
* Functional description:
* Returns the sine of x. If x is greater
* than or equal to 263, or less than or
* equal to -263, a loss of significance
* in the result occurs, in which case the
* function generates a _TLOSS error and
* returns an indefinite (same as a quiet NaN).
*
*****************************************
DECLARE EXTERNAL FUNCTION sin
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_sin' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* s i n h
*
*****************************************
*
* Functional description:
* Returns the hyperbolic sine of x. If x is greater
* than or equal to 263, or less than or
* equal to -263, a loss of significance
* in the result occurs, in which case the
* function generates a _TLOSS error and
* returns an indefinite (same as a quiet NaN).
*
*****************************************
DECLARE EXTERNAL FUNCTION sinh
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_sinh' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* s q r t
*
*****************************************
*
* Functional description:
* Returns the square root of a number.
*
*****************************************
DECLARE EXTERNAL FUNCTION sqrt
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_sqrt' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* s r a n d
*
*****************************************
*
* Functional description:
* Returns a random number between 0
* and 1. Note the random number
* generator is seeded using the current
* time.
*
*****************************************/
DECLARE EXTERNAL FUNCTION srand
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_srand' MODULE_NAME 'ib_udf';
/*****************************************
*
* s u b s t r
*
*****************************************
*
* Functional description:
* substr(s,m,n) returns the substring
* of s which starts at position m and
* ending at position n.
* Note: This function is NOT limited to
* receiving and returning only 255 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
* Change by Claudio Valderrama: when n>length(s),
* the result will be the original string instead
* of NULL as it was originally designed.
*
*****************************************/
DECLARE EXTERNAL FUNCTION substr
CSTRING(255) NULL, SMALLINT, SMALLINT
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
/*****************************************
*
* s u b s t r l e n
*
*****************************************
*
* Functional description:
* substrlen(s,i,l) returns the substring
* of s which starts at position i and
* ends at position i+l-1, being l the length.
* Note: This function is NOT limited to
* receiving and returning only 255 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION substrlen
CSTRING(255) NULL, SMALLINT, SMALLINT
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_substrlen' MODULE_NAME 'ib_udf';
/*****************************************
*
* s t r l e n
*
*****************************************
*
* Functional description:
* Returns the length of a given string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION strlen
CSTRING(32767) CHARACTER SET NONE
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';
/*****************************************
*
* t a n
*
*****************************************
*
* Functional description:
* Returns the tangent of x. If x is
* greater than or equal to 263, or less
* than or equal to -263, a loss of
* significance in the result occurs, in
* which case the function generates a
* _TLOSS error and returns an indefinite
* (same as a quiet NaN).
*
*****************************************
DECLARE EXTERNAL FUNCTION tan
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_tan' MODULE_NAME 'ib_udf'; */
/*****************************************
*
* t a n h
*
*****************************************
*
* Functional description:
* Returns the tangent of x. If x is
* greater than or equal to 263, or less
* than or equal to -263, a loss of
* significance in the result occurs, in
* which case the function generates a
* _TLOSS error and returns an indefinite
* (same as a quiet NaN).
*
*****************************************
DECLARE EXTERNAL FUNCTION tanh
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_tanh' MODULE_NAME 'ib_udf'; */