home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / CODE4-1.ZIP / SOURCE.ZIP / I4EVAL.C < prev    next >
Encoding:
C/C++ Source or Header  |  1989-10-14  |  1.1 KB  |  49 lines

  1. /*  i4eval.c   (c)Copyright Sequiter Software Inc., 1987, 1988, 1989.  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 "d4base.h"
  11. #include "u4error.h"
  12.  
  13. extern  INDEX *v4index ;
  14.  
  15.  
  16. char *i4eval( index_ref )
  17. int   index_ref ;
  18. {
  19.    INDEX  *index_ptr ;
  20.    char   *result ;
  21.  
  22.    index_ptr =  v4index + index_ref ;
  23.  
  24.    result =  (char *) e4exec ( index_ptr->compile ) ;
  25.  
  26.    if ( result == (char *)0) return( (char *) 0 ) ;
  27.  
  28.    #ifdef  CLIPPER
  29.       if ( e4type() == 'N' || e4type() == 'F' ) 
  30.       {
  31.      result= c4dtoa( *((double *)result), index_ptr->key_len, index_ptr->key_dec ) ;
  32.      c4clip( result, index_ptr->key_len ) ;
  33.       }
  34.    #else
  35.       /* Do conversions depending on returned type */
  36.       if ( e4type() == 'D' )
  37.       {
  38.      /* Date - Convert from CCYYMMDD format to Julian Double format */
  39.      if ( c4dt_index( (char *)result, (double *)result) == -1 )
  40.      {
  41.         u4error( E_DATE, result, (char *) 0 ) ;
  42.         return( (char *) 0) ;
  43.      }
  44.       }
  45.    #endif
  46.    return( result) ;
  47. }
  48.  
  49.