/* f4int.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 f4assignInt( FIELD4 *field, const int iValue ) { CODE4 *c4 ; #ifdef S4VBASIC if ( c4parm_check( field, 3, E90514 ) ) return ; #endif #ifdef E4PARM_HIGH if ( field == 0 ) { error4( 0, e4parm_null, E90514 ) ; return ; } switch( field->type ) { case r4date: case r4log: case r4memo: case r4gen: #ifdef S4CLIENT_OR_FOX case r4dateTime: case r4system: case r4memoBin: #endif error4( field->data->codeBase, e4parm, E81409 ) ; return ; default: break ; } #endif #ifdef E4ANALYZE if ( field->data == 0 ) { error4( 0, e4struct, E90514 ) ; return ; } if ( field->data->codeBase == 0 ) { error4( 0, e4struct, E90514 ) ; return ; } #endif c4 = field->data->codeBase ; if ( error4code( c4 ) < 0 ) return ; #ifndef S4SERVER #ifndef S4OFF_ENFORCE_LOCK if ( c4->lockEnforce && field->data->recNum > 0L ) if ( d4lockTest( field->data, field->data->recNum ) != 1 ) { error4( c4, e4lock, E90514 ) ; return ; } #endif #endif #ifdef S4CLIENT_OR_FOX switch( field->type ) { case r4int: *((int *)f4assignPtr( field )) = iValue ; break ; case r4currency: case r4double: f4assignDouble( field, (double)iValue ) ; break ; default: #endif if ( field->dec == 0 ) c4ltoa45( (long)iValue, f4assignPtr( field ), field->len ) ; else f4assignDouble( field, (double)iValue ) ; #ifdef S4CLIENT_OR_FOX break ; } #endif } #endif int S4FUNCTION f4int( const FIELD4 *field ) { #ifdef S4CLIENT_OR_FOX const char *ptr ; #endif #ifdef S4VBASIC if ( c4parm_check( field, 3, E90515 ) ) return -1 ; #endif #ifdef E4PARM_HIGH if ( field == 0 ) { error4( 0, e4parm, E90515 ) ; return -1 ; } switch( field->type ) { case r4date: case r4log: case r4memo: case r4gen: #ifdef S4CLIENT_OR_FOX case r4dateTime: case r4system: case r4memoBin: #endif error4( field->data->codeBase, e4parm, E81409 ) ; return -1 ; default: break ; } #endif if ( error4code( field->data->codeBase ) < 0 ) return -1 ; /* Convert the field data into an 'int' */ #ifdef S4CLIENT_OR_FOX switch( field->type ) { case r4double: return (int)(*((double *)f4ptr( field ))) ; case r4int: return *((int *)f4ptr( field )) ; case r4currency: ptr = f4currency( field, 0 ) ; return c4atoi( ptr, strlen( ptr ) ) ; default: #endif return c4atoi( f4ptr( field ), field->len ) ; #ifdef S4CLIENT_OR_FOX } #endif }