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

  1.         
  2. /* (c)Copyright Sequiter Software Inc., 1987-1990.  All rights reserved.
  3.  
  4.    f4replace.c
  5. */
  6.  
  7. #include "d4base.h"
  8. #include "p4misc.h"
  9. #include <string.h>
  10.  
  11. extern  BASE  *v4base ;
  12.  
  13. /* f4replace
  14.  
  15.    Assigns a value to a field.
  16. */
  17.  
  18. int f4replace( long field_ref, void *ptr ) 
  19. {
  20.    int     width, len ;
  21.    double  doub_val ;
  22.    char   *f_ptr, *static_ptr, f_type ;
  23.  
  24.    if ( ((char *) ptr) == ((char *) 0) )  return( -4 ) ;
  25.  
  26.    width =  f4width( field_ref ) ;
  27.    f_ptr =  f4ptr(   field_ref ) ;
  28.  
  29.    f_type =  f4type( field_ref ) ;
  30.  
  31.    if ( f_type != 'N' && f_type != 'F' ) {
  32.       len   =  (int) strlen( (char *) ptr ) ;
  33.       if ( len > width )  len =  width ;
  34.    }
  35.  
  36.    switch( f_type )
  37.    {
  38.       case 'C':
  39.      memset( f_ptr, (int) ' ', (size_t) width ) ;
  40.      memcpy( f_ptr, (char *) ptr, (size_t) len ) ;
  41.      break ;
  42.  
  43.       case 'D':
  44.      memset( f_ptr, (int) ' ', (size_t) width ) ;
  45.      if ( len != 8 )  return( -2 ) ;  /* Illegal Date */
  46.      if (c4dt_julian((char *) ptr, &doub_val) < 0)  return( -2 ) ;
  47.      memcpy( f_ptr, (char *) ptr, 8 ) ;
  48.      break ;
  49.  
  50.       case 'N':
  51.       case 'F':
  52.      static_ptr = c4dtoa( *((double*) ptr), width, f4decimals(field_ref) ) ;
  53.      memcpy( f_ptr, static_ptr, (size_t) width ) ;
  54.      if ( *f_ptr == '*' )  return( -3 ) ;
  55.      break ;
  56.  
  57.       case 'L':
  58.      if ( *((int *)ptr) )
  59.         f_ptr[0] = 'Y' ;
  60.      else
  61.         f_ptr[0] = 'N' ;
  62.      break ;
  63.  
  64.       default:
  65.      return( -5 ) ;
  66.    }
  67.    return( 0 ) ;
  68. }
  69.  
  70.  
  71.