/*
**
** Licensed Materials - Property of IBM  1.4
**
** (C) COPYRIGHT International Business Machines Corp. 1995, 1999
** All Rights Reserved.
**
** US Government Users Restricted Rights - Use, duplication or
** disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
**
** For more information about these samples see the README file.
**
** For more information on programming in CLI see the:
**     - "Building CLI Applications" section of the Application Building Guide, and the
**     - CLI Guide and Reference.
**
** For more information on the SQL language see the SQL Reference.
**
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <sqludf.h>

void SQL_API_FN price( SQLUDF_CHAR     * uprice,
                       SQLUDF_CHAR     * units,
                       SQLUDF_CHAR     * num_units,
                       SQLUDF_CHAR     * price,
                       SQLUDF_SMALLINT * upriceNullInd,
                       SQLUDF_SMALLINT * unitsNullInd,
                       SQLUDF_SMALLINT * num_unitsNullInd,
                       SQLUDF_SMALLINT * priceNullInd,
                       SQLUDF_TRAIL_ARGS
                     ) {

    double new_price ;
    int switch_ch ;

    switch_ch = ( int ) units[ 0 ] ;

    switch ( switch_ch ) {

       case 'k':
       case 'l':
       case 'm':
         new_price = ceil( ( ceil( atof( num_units ) * 100 ) * .01 ) * atof( uprice ) * 100 ) * .01 ;
         break ;

       default:
         new_price = ceil( atof( num_units ) * atof( uprice ) * 100 ) * .01 ;
         break ;

    }

    sprintf( price, "%12.2lf", new_price ) ;

}        /* end of UDF : price */