home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c160 / 1.ddi / SOURCE / I4EVAL.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-06-22  |  1.1 KB  |  48 lines

  1. /*  i4eval.c   (c)Copyright Sequiter Software Inc., 1987-1990.  All rights reserved.
  2.  
  3.     Evaluates the key expression of an index file.
  4.  
  5.     Returns
  6.        0 -  SUCCESS
  7.       -1 -  ERROR
  8. */
  9.  
  10. #include "d4all.h"
  11. #include "u4error.h"
  12.  
  13. extern  INDEX *v4index ;
  14.  
  15.  
  16. char *i4eval( int index_ref )
  17. {
  18.    INDEX  *index_ptr ;
  19.    char   *result ;
  20.  
  21.    index_ptr =  v4index + index_ref ;
  22.  
  23.    result =  (char *) e4exec ( index_ptr->compile ) ;
  24.  
  25.    if ( result == (char *)0) return( (char *) 0 ) ;
  26.  
  27.    #ifdef  CLIPPER
  28.       if ( e4type() == 'N' || e4type() == 'F' ) 
  29.       {
  30.      result= c4dtoa( *((double *)result), index_ptr->key_len, index_ptr->key_dec ) ;
  31.      c4clip( result, index_ptr->key_len ) ;
  32.       }
  33.    #else
  34.       /* Do conversions depending on returned type */
  35.       if ( e4type() == 'D' )
  36.       {
  37.      /* Date - Convert from CCYYMMDD format to Julian Double format */
  38.      if ( c4dt_julian( (char *)result, (double *)result) == -1 )
  39.      {
  40.         u4error( E_DATE, result, (char *) 0 ) ;
  41.         return( (char *) 0) ;
  42.      }
  43.       }
  44.    #endif
  45.    return( result) ;
  46. }
  47.  
  48.