home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 January / Chip_2001-01_cd1.bin / tema / interb / InterBase_WI-V6.0-server.exe / server / examples / udf / ib_udf.sql next >
Text File  |  2000-06-23  |  17KB  |  605 lines

  1. /*
  2.  * The contents of this file are subject to the Interbase Public
  3.  * License Version 1.0 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy
  5.  * of the License at http://www.Interbase.com/IPL/
  6.  *
  7.  * Software distributed under the License is distributed on an
  8.  * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
  9.  * or implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  *
  12.  * The Original Code was created by Interbase Software Corporation
  13.  * and its successors. Portions created by Borland/Inprise are
  14.  * Copyright (C) 1992-1998 and 1999-2000 Borland/Inprise. Portions
  15.  * created by InterBase Software Corporation are Copyright (C)
  16.  * 1998-1999 InterBase Software Corporation.
  17.  *
  18.  * Copyright (C) 2000 InterBase Software Corporation
  19.  * All Rights Reserved.
  20.  * Contributor(s): ______________________________________.
  21.  */
  22. /*****************************************
  23.  *
  24.  *    a b s
  25.  *
  26.  *****************************************
  27.  *
  28.  * Functional description:
  29.  *     Returns the absolute value of a 
  30.  *     number.  
  31.  *
  32.  *****************************************/
  33. DECLARE EXTERNAL FUNCTION abs 
  34.     DOUBLE PRECISION
  35.     RETURNS DOUBLE PRECISION BY VALUE
  36.     ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf';
  37.  
  38. /*****************************************
  39.  *
  40.  *    a c o s
  41.  *
  42.  *****************************************
  43.  *
  44.  * Functional description:
  45.  *    Returns the arccosine of a number 
  46.  *    between -1 and 1, if the number is
  47.  *    out of bounds it returns NaN, as handled
  48.  *    by the _matherr routine.
  49.  *
  50.  *****************************************/
  51. DECLARE EXTERNAL FUNCTION acos 
  52.     DOUBLE PRECISION
  53.     RETURNS DOUBLE PRECISION BY VALUE
  54.     ENTRY_POINT 'IB_UDF_acos' MODULE_NAME 'ib_udf';
  55.  
  56. /*****************************************
  57.  *
  58.  *    a s c i i _ c h a r
  59.  *
  60.  *****************************************
  61.  *
  62.  * Functional description:
  63.  *    Returns the ASCII character corresponding
  64.  *    with the value passed in.
  65.  *
  66.  *****************************************/
  67. DECLARE EXTERNAL FUNCTION ascii_char
  68.     INTEGER
  69.     RETURNS CHAR(1) FREE_IT
  70.     ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf';
  71.  
  72. /*****************************************
  73.  *
  74.  *    a s c i i _ v a l
  75.  *
  76.  *****************************************
  77.  *
  78.  * Functional description:
  79.  *    Returns the ascii value of the character
  80.  *     passed in.
  81.  *
  82.  *****************************************/
  83. DECLARE EXTERNAL FUNCTION ascii_val
  84.     CHAR(1)
  85.     RETURNS INTEGER BY VALUE
  86.     ENTRY_POINT 'IB_UDF_ascii_val' MODULE_NAME 'ib_udf';
  87.  
  88. /*****************************************
  89.  *
  90.  *    a s i n
  91.  *
  92.  *****************************************
  93.  *
  94.  * Functional description:
  95.  *    Returns the arcsin of a number between
  96.  *    -1 and 1, if the number is out of
  97.  *    range NaN is returned.
  98.  *
  99.  *****************************************/
  100. DECLARE EXTERNAL FUNCTION asin 
  101.     DOUBLE PRECISION
  102.     RETURNS DOUBLE PRECISION BY VALUE
  103.     ENTRY_POINT 'IB_UDF_asin' MODULE_NAME 'ib_udf';
  104.  
  105. /*****************************************
  106.  *
  107.  *    a t a n
  108.  *
  109.  *****************************************
  110.  *
  111.  * Functional description:
  112.  *    Returns the arctangent of a number.
  113.  *    
  114.  *
  115.  *****************************************/
  116. DECLARE EXTERNAL FUNCTION atan 
  117.     DOUBLE PRECISION
  118.     RETURNS DOUBLE PRECISION BY VALUE
  119.     ENTRY_POINT 'IB_UDF_atan' MODULE_NAME 'ib_udf';
  120.  
  121. /*****************************************
  122.  *
  123.  *    a t a n 2
  124.  *
  125.  *****************************************
  126.  *
  127.  * Functional description:
  128.  *     Returns the arctangent of the
  129.  *    first param / the second param.
  130.  *
  131.  *****************************************/
  132. DECLARE EXTERNAL FUNCTION atan2 
  133.     DOUBLE PRECISION, DOUBLE PRECISION
  134.     RETURNS DOUBLE PRECISION BY VALUE
  135.     ENTRY_POINT 'IB_UDF_atan2' MODULE_NAME 'ib_udf';
  136.  
  137. /*****************************************
  138.  *
  139.  *    b i n _ a n d
  140.  *
  141.  *****************************************
  142.  *
  143.  * Functional description:
  144.  *    Returns the result of a binary AND 
  145.  *    operation performed on the two numbers.
  146.  *
  147.  *****************************************/
  148. DECLARE EXTERNAL FUNCTION bin_and 
  149.     INTEGER, INTEGER
  150.     RETURNS INTEGER BY VALUE
  151.     ENTRY_POINT 'IB_UDF_bin_and' MODULE_NAME 'ib_udf';
  152.  
  153. /*****************************************
  154.  *
  155.  *    b i n _ o r
  156.  *
  157.  *****************************************
  158.  *
  159.  * Functional description:
  160.  *    Returns the result of a binary OR 
  161.  *    operation performed on the two numbers.
  162.  *
  163.  *****************************************/
  164. DECLARE EXTERNAL FUNCTION bin_or 
  165.     INTEGER, INTEGER
  166.     RETURNS INTEGER BY VALUE
  167.     ENTRY_POINT 'IB_UDF_bin_or' MODULE_NAME 'ib_udf';
  168.  
  169. /*****************************************
  170.  *
  171.  *    b i n _ x o r
  172.  *
  173.  *****************************************
  174.  *
  175.  * Functional description:
  176.  *    Returns the result of a binary XOR 
  177.  *    operation performed on the two numbers.
  178.  *
  179.  *****************************************/
  180. DECLARE EXTERNAL FUNCTION bin_xor 
  181.     INTEGER, INTEGER
  182.     RETURNS INTEGER BY VALUE
  183.     ENTRY_POINT 'IB_UDF_bin_xor' MODULE_NAME 'ib_udf';
  184.  
  185. /*****************************************
  186.  *
  187.  *    c e i l i n g
  188.  *
  189.  *****************************************
  190.  *
  191.  * Functional description:
  192.  *    Returns a double value representing 
  193.  *    the smallest integer that is greater 
  194.  *    than or equal to the input value.
  195.  *
  196.  *****************************************/
  197. DECLARE EXTERNAL FUNCTION ceiling 
  198.     DOUBLE PRECISION
  199.     RETURNS DOUBLE PRECISION BY VALUE
  200.     ENTRY_POINT 'IB_UDF_ceiling' MODULE_NAME 'ib_udf';
  201.  
  202. /*****************************************
  203.  *
  204.  *    c o s
  205.  *
  206.  *****************************************
  207.  *
  208.  * Functional description:
  209.  *    The cos function returns the cosine 
  210.  *    of x. If x is greater than or equal 
  211.  *    to 263, or less than or equal to -263, 
  212.  *    a loss of significance in the result 
  213.  *    of a call to cos occurs, in which case 
  214.  *    the function generates a _TLOSS error 
  215.  *    and returns an indefinite (same as a 
  216.  *    quiet NaN).
  217.  *
  218.  *****************************************/
  219. DECLARE EXTERNAL FUNCTION cos 
  220.     DOUBLE PRECISION
  221.     RETURNS DOUBLE PRECISION BY VALUE
  222.     ENTRY_POINT 'IB_UDF_cos' MODULE_NAME 'ib_udf';
  223.  
  224. /*****************************************
  225.  *
  226.  *    c o s h
  227.  *
  228.  *****************************************
  229.  *
  230.  * Functional description:
  231.  *    The cosh function returns the hyperbolic cosine 
  232.  *    of x. If x is greater than or equal 
  233.  *    to 263, or less than or equal to -263, 
  234.  *    a loss of significance in the result 
  235.  *    of a call to cos occurs, in which case 
  236.  *    the function generates a _TLOSS error 
  237.  *    and returns an indefinite (same as a 
  238.  *    quiet NaN).
  239.  *
  240.  *****************************************/
  241. DECLARE EXTERNAL FUNCTION cosh 
  242.     DOUBLE PRECISION
  243.     RETURNS DOUBLE PRECISION BY VALUE
  244.     ENTRY_POINT 'IB_UDF_cosh' MODULE_NAME 'ib_udf';
  245.  
  246. /*****************************************
  247.  *
  248.  *    c o t
  249.  *
  250.  *****************************************
  251.  *
  252.  * Functional description:
  253.  *    Returns 1 over the tangent of the
  254.  *    input parameter.
  255.  *
  256.  *****************************************/
  257. DECLARE EXTERNAL FUNCTION cot 
  258.     DOUBLE PRECISION
  259.     RETURNS DOUBLE PRECISION BY VALUE
  260.     ENTRY_POINT 'IB_UDF_cot' MODULE_NAME 'ib_udf';
  261.  
  262. /*****************************************
  263.  *
  264.  *    d i v
  265.  *
  266.  *****************************************
  267.  *
  268.  * Functional description:
  269.  *    Returns the quotient part of the division
  270.  *    of the two input parameters.
  271.  *
  272.  *****************************************/
  273. DECLARE EXTERNAL FUNCTION div 
  274.     INTEGER, INTEGER
  275.     RETURNS DOUBLE PRECISION BY VALUE
  276.     ENTRY_POINT 'IB_UDF_div' MODULE_NAME 'ib_udf';
  277.  
  278. /*****************************************
  279.  *
  280.  *    f l o o r
  281.  *
  282.  *****************************************
  283.  *
  284.  * Functional description:
  285.  *     Returns a floating-point value 
  286.  *     representing the largest integer that 
  287.  *    is less than or equal to x    
  288.  *
  289.  *****************************************/
  290. DECLARE EXTERNAL FUNCTION floor 
  291.     DOUBLE PRECISION
  292.     RETURNS DOUBLE PRECISION BY VALUE
  293.     ENTRY_POINT 'IB_UDF_floor' MODULE_NAME 'ib_udf';
  294.  
  295. /*****************************************
  296.  *
  297.  *    l n
  298.  *
  299.  *****************************************
  300.  *
  301.  * Functional description:
  302.  *    Returns the natural log of a number.
  303.  *
  304.  *****************************************/
  305. DECLARE EXTERNAL FUNCTION ln 
  306.     DOUBLE PRECISION
  307.     RETURNS DOUBLE PRECISION BY VALUE
  308.     ENTRY_POINT 'IB_UDF_ln' MODULE_NAME 'ib_udf';
  309.  
  310. /*****************************************
  311.  *
  312.  *    l o g
  313.  *
  314.  *****************************************
  315.  *
  316.  * Functional description:
  317.  *    log (x,y) returns the logarithm 
  318.  *    base x of y.
  319.  *
  320.  *****************************************/
  321. DECLARE EXTERNAL FUNCTION log 
  322.     DOUBLE PRECISION, DOUBLE PRECISION
  323.     RETURNS DOUBLE PRECISION BY VALUE
  324.     ENTRY_POINT 'IB_UDF_log' MODULE_NAME 'ib_udf';
  325.  
  326. /*****************************************
  327.  *
  328.  *    l o g 1 0
  329.  *
  330.  *****************************************
  331.  *
  332.  * Functional description:
  333.  *    Returns the logarithm base 10 of the
  334.  *    input parameter.
  335.  *
  336.  *****************************************/
  337. DECLARE EXTERNAL FUNCTION log10 
  338.     DOUBLE PRECISION
  339.     RETURNS DOUBLE PRECISION BY VALUE
  340.     ENTRY_POINT 'IB_UDF_log10' MODULE_NAME 'ib_udf';
  341.  
  342. /*****************************************
  343.  *
  344.  *    l o w e r
  345.  *
  346.  *****************************************
  347.  *
  348.  * Functional description:
  349.  *    Returns the input string into lower 
  350.  *    case characters.  Note: This function
  351.  *    will not work with international and 
  352.  *    non-ascii characters.
  353.  *    Note: This function is NOT limited to
  354.  *    receiving and returning only 80 characters,
  355.  *    rather, it can use as long as 32767 
  356.  *     characters which is the limit on an 
  357.  *    INTERBASE character string.
  358.  *
  359.  *****************************************/
  360. DECLARE EXTERNAL FUNCTION lower 
  361.     CSTRING(80)
  362.     RETURNS CSTRING(80) FREE_IT
  363.     ENTRY_POINT 'IB_UDF_lower' MODULE_NAME 'ib_udf';
  364.  
  365. /*****************************************
  366.  *
  367.  *    l t r i m
  368.  *
  369.  *****************************************
  370.  *
  371.  * Functional description:
  372.  *    Removes leading spaces from the input
  373.  *    string.
  374.  *    Note: This function is NOT limited to
  375.  *    receiving and returning only 80 characters,
  376.  *    rather, it can use as long as 32767 
  377.  *     characters which is the limit on an 
  378.  *    INTERBASE character string.
  379.  *
  380.  *****************************************/
  381. DECLARE EXTERNAL FUNCTION ltrim 
  382.     CSTRING(80)
  383.     RETURNS CSTRING(80) FREE_IT
  384.     ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf';
  385.  
  386. /*****************************************
  387.  *
  388.  *    m o d
  389.  *
  390.  *****************************************
  391.  *
  392.  * Functional description:
  393.  *    Returns the remainder part of the 
  394.  *    division of the two input parameters.
  395.  *
  396.  *****************************************/
  397. DECLARE EXTERNAL FUNCTION mod 
  398.     INTEGER, INTEGER
  399.     RETURNS DOUBLE PRECISION BY VALUE
  400.     ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf';
  401.  
  402. /*****************************************
  403.  *
  404.  *    p i
  405.  *
  406.  *****************************************
  407.  *
  408.  * Functional description:
  409.  *    Returns the value of pi = 3.1459...
  410.  *
  411.  *****************************************/
  412. DECLARE EXTERNAL FUNCTION pi 
  413.     RETURNS DOUBLE PRECISION BY VALUE
  414.     ENTRY_POINT 'IB_UDF_pi' MODULE_NAME 'ib_udf';
  415.  
  416. /*****************************************
  417.  *
  418.  *    r a n d
  419.  *
  420.  *****************************************
  421.  *
  422.  * Functional description:
  423.  *    Returns a random number between 0 
  424.  *    and 1.  Note the random number
  425.  *    generator is seeded using the current 
  426.  *    time.
  427.  *
  428.  *****************************************/
  429. DECLARE EXTERNAL FUNCTION rand 
  430.     RETURNS DOUBLE PRECISION BY VALUE
  431.     ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf';
  432.  
  433. /*****************************************
  434.  *
  435.  *    r t r i m
  436.  *
  437.  *****************************************
  438.  *
  439.  * Functional description:
  440.  *    Removes trailing spaces from the input
  441.  *    string.
  442.  *    Note: This function is NOT limited to
  443.  *    receiving and returning only 80 characters,
  444.  *    rather, it can use as long as 32767 
  445.  *     characters which is the limit on an 
  446.  *    INTERBASE character string.
  447.  *
  448.  *****************************************/
  449. DECLARE EXTERNAL FUNCTION rtrim 
  450.     CSTRING(80)
  451.     RETURNS CSTRING(80) FREE_IT
  452.     ENTRY_POINT 'IB_UDF_rtrim' MODULE_NAME 'ib_udf';
  453.  
  454. /*****************************************
  455.  *
  456.  *    s i g n
  457.  *
  458.  *****************************************
  459.  *
  460.  * Functional description:
  461.  *    Returns 1, 0, or -1 depending on whether
  462.  *     the input value is positive, zero or 
  463.  *    negative, respectively.
  464.  *
  465.  *****************************************/
  466. DECLARE EXTERNAL FUNCTION sign 
  467.     DOUBLE PRECISION
  468.     RETURNS INTEGER BY VALUE
  469.     ENTRY_POINT 'IB_UDF_sign' MODULE_NAME 'ib_udf';
  470.  
  471. /*****************************************
  472.  *
  473.  *    s i n
  474.  *
  475.  *****************************************
  476.  *
  477.  * Functional description:
  478.  *    Returns the sine of x. If x is greater 
  479.  *    than or equal to 263, or less than or 
  480.  *    equal to -263, a loss of significance 
  481.  *    in the result occurs, in which case the 
  482.  *    function generates a _TLOSS error and 
  483.  *    returns an indefinite (same as a quiet NaN).
  484.  *
  485.  *****************************************/
  486. DECLARE EXTERNAL FUNCTION sin 
  487.     DOUBLE PRECISION
  488.     RETURNS DOUBLE PRECISION BY VALUE
  489.     ENTRY_POINT 'IB_UDF_sin' MODULE_NAME 'ib_udf';
  490.  
  491. /*****************************************
  492.  *
  493.  *    s i n h
  494.  *
  495.  *****************************************
  496.  *
  497.  * Functional description:
  498.  *    Returns the hyperbolic sine of x. If x is greater 
  499.  *    than or equal to 263, or less than or 
  500.  *    equal to -263, a loss of significance 
  501.  *    in the result occurs, in which case the 
  502.  *    function generates a _TLOSS error and 
  503.  *    returns an indefinite (same as a quiet NaN).
  504.  *
  505.  *****************************************/
  506. DECLARE EXTERNAL FUNCTION sinh 
  507.     DOUBLE PRECISION
  508.     RETURNS DOUBLE PRECISION BY VALUE
  509.     ENTRY_POINT 'IB_UDF_sinh' MODULE_NAME 'ib_udf';
  510.  
  511. /*****************************************
  512.  *
  513.  *    s q r t
  514.  *
  515.  *****************************************
  516.  *
  517.  * Functional description:
  518.  *    Returns the square root of a number.
  519.  *
  520.  *****************************************/
  521. DECLARE EXTERNAL FUNCTION sqrt 
  522.     DOUBLE PRECISION
  523.     RETURNS DOUBLE PRECISION BY VALUE
  524.     ENTRY_POINT 'IB_UDF_sqrt' MODULE_NAME 'ib_udf';
  525.  
  526. /*****************************************
  527.  *
  528.  *    s u b s t r
  529.  *
  530.  *****************************************
  531.  *
  532.  * Functional description:
  533.  *    substr(s,m,n) returns the substring 
  534.  *    of s which starts at position m and
  535.  *    ending at position n.
  536.  *    Note: This function is NOT limited to
  537.  *    receiving and returning only 80 characters,
  538.  *    rather, it can use as long as 32767 
  539.  *     characters which is the limit on an 
  540.  *    INTERBASE character string.
  541.  *
  542.  *****************************************/
  543. DECLARE EXTERNAL FUNCTION substr 
  544.     CSTRING(80), SMALLINT, SMALLINT
  545.     RETURNS CSTRING(80) FREE_IT
  546.     ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
  547.  
  548. /*****************************************
  549.  *
  550.  *    s t r l e n
  551.  *
  552.  *****************************************
  553.  *
  554.  * Functional description:
  555.  *    Returns the length of a given string.
  556.  *
  557.  *****************************************/
  558. DECLARE EXTERNAL FUNCTION strlen 
  559.     CSTRING(32767)
  560.     RETURNS INTEGER BY VALUE
  561.     ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';
  562.  
  563. /*****************************************
  564.  *
  565.  *    t a n
  566.  *
  567.  *****************************************
  568.  *
  569.  * Functional description:
  570.  *     Returns the tangent of x. If x is 
  571.  *    greater than or equal to 263, or less 
  572.  *    than or equal to -263, a loss of 
  573.  *    significance in the result occurs, in 
  574.  *    which case the function generates a 
  575.  *    _TLOSS error and returns an indefinite 
  576.  *    (same as a quiet NaN).
  577.  *
  578.  *****************************************/
  579. DECLARE EXTERNAL FUNCTION tan 
  580.     DOUBLE PRECISION
  581.     RETURNS DOUBLE PRECISION BY VALUE
  582.     ENTRY_POINT 'IB_UDF_tan' MODULE_NAME 'ib_udf';
  583.  
  584. /*****************************************
  585.  *
  586.  *    t a n h
  587.  *
  588.  *****************************************
  589.  *
  590.  * Functional description:
  591.  *     Returns the tangent of x. If x is 
  592.  *    greater than or equal to 263, or less 
  593.  *    than or equal to -263, a loss of 
  594.  *    significance in the result occurs, in 
  595.  *    which case the function generates a 
  596.  *    _TLOSS error and returns an indefinite 
  597.  *    (same as a quiet NaN).
  598.  *    
  599.  *****************************************/
  600. DECLARE EXTERNAL FUNCTION tanh 
  601.     DOUBLE PRECISION
  602.     RETURNS DOUBLE PRECISION BY VALUE
  603.     ENTRY_POINT 'IB_UDF_tanh' MODULE_NAME 'ib_udf';
  604.  
  605.