/* f4ass_f.c (c)Copyright Sequiter Software Inc., 1988-1996. All rights reserved. */ #include "d4all.h" #ifndef S4UNIX #ifdef __TURBOC__ #pragma hdrstop #endif #endif #ifndef S4OFF_WRITE void S4FUNCTION f4assignField( FIELD4 *fieldTo, const FIELD4 *fieldFrom ) { #ifdef E4PARM_HIGH if ( fieldTo == 0 || fieldFrom == 0 ) { error4( 0, e4parm_null, E90501 ) ; return ; } #endif if ( error4code( fieldTo->data->codeBase ) < 0 ) return ; #ifndef S4SERVER #ifndef S4OFF_ENFORCE_LOCK if ( fieldTo->data->codeBase->lockEnforce && fieldTo->data->recNum > 0L ) if ( d4lockTest( fieldTo->data, fieldTo->data->recNum ) != 1 ) { error4( fieldTo->data->codeBase, e4lock, E90501 ) ; return ; } #endif #endif switch( fieldTo->type ) { case r4str: f4assignN( fieldTo, f4ptr( fieldFrom ), fieldFrom->len ) ; break ; case r4num: case r4float: if( fieldFrom->len == fieldTo->len && fieldFrom->dec == fieldTo->dec && (fieldFrom->type == r4num || fieldFrom->type == r4float) ) memcpy( f4assignPtr( fieldTo ), f4ptr( fieldFrom ), fieldTo->len ) ; else f4assignDouble( fieldTo, f4double( fieldFrom ) ) ; break ; case r4log: if( fieldFrom->type == r4log ) *f4assignPtr( fieldTo ) = *f4ptr( fieldFrom ) ; break ; case r4date: #ifdef S4CLIENT_OR_FOX case r4currency: case r4dateTime: case r4int: case r4double: #endif if( fieldFrom->type == fieldTo->type ) memcpy( f4assignPtr( fieldTo ), f4ptr( fieldFrom ), fieldTo->len ) ; break ; default: error4( fieldTo->data->codeBase, e4info, E80501 ) ; } } #endif /* S4OFF_WRITE */