📄 nfxget.ec
字号:
/*****************************************************************************//* Database Public Function For Informix *//* ------------------------------------------------------------------------- *//* Author : Shih Ho *//* Date : March 27, 1998 *//*****************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <memory.h>$include sqlca.h;$include sqltypes.h;$include decimal.h;$include "dblib.h";$include "nfxprv.h";/*===========================================================================*//* Public Funciton - Get Data From Buffer *//*---------------------------------------------------------------------------*/int GetDataBuffer( Descriptor, Buffer )EXEC SQL BEGIN DECLARE SECTION;char *Descriptor;char *Buffer;EXEC SQL END DECLARE SECTION;{ int r, p; EXEC SQL BEGIN DECLARE SECTION; long c, i, t, l, f; union{ short *s; long *l; float *f; double *d; char *c; } ValPtr; dec_t DecVal; EXEC SQL END DECLARE SECTION; EXEC SQL GET DESCRIPTOR :Descriptor :c = COUNT; if( ( r = sqlca.sqlcode ) == SQLOK ){ p = 0; for( i = 1; i <= c; i ++ ){ EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :t = TYPE, :l = LENGTH, :f = INDICATOR; if( ( r = sqlca.sqlcode ) != SQLOK ) break; switch( t ){ case SQLVCHAR: case SQLCHAR: p = StructOffset( p, sizeof( char ) ); ValPtr.c = ( char * ) ( Buffer + p ); p += l + 1; if( f != 0 ) memset( ValPtr.c, 0, l + 1 ); else{ EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :ValPtr.c = DATA; if( ( r = sqlca.sqlcode ) == SQLOK ){ for( l --; l >= 0; l -- ) if( ValPtr.c[l] != 0 && ValPtr.c[l] != ' ' ) break; if( l < 0 || ValPtr.c[l] != 0 ) ValPtr.c[l + 1] = 0; } } break; case SQLSMINT: p = StructOffset( p, sizeof( short ) ); ValPtr.s = ( short * ) ( Buffer + p ); p += sizeof( short ); if( f != 0 ) *ValPtr.s = 0; else{ EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :*ValPtr.s = DATA; r = sqlca.sqlcode; } break; case SQLINT: case SQLSERIAL: case SQLDATE: p = StructOffset( p, sizeof( long ) ); ValPtr.l = ( long * ) ( Buffer + p ); p += sizeof( long ); if( f != 0 ) *ValPtr.l = 0; else{ EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :*ValPtr.l = DATA; r = sqlca.sqlcode; } break; case SQLSMFLOAT: p = StructOffset( p, sizeof( float ) ); ValPtr.f = ( float * ) ( Buffer + p ); p += sizeof( float ); if( f != 0 ) *ValPtr.f = 0; else{ EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :*ValPtr.f = DATA; r = sqlca.sqlcode; } break; case SQLFLOAT: p = StructOffset( p, sizeof( double ) ); ValPtr.d = ( double * ) ( Buffer + p ); p += sizeof( double ); if( f != 0 ) *ValPtr.d = 0; else{ EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :*ValPtr.d = DATA; r = sqlca.sqlcode; } break; case SQLDECIMAL: case SQLMONEY: p = StructOffset( p, sizeof( double ) ); ValPtr.d = ( double * ) ( Buffer + p ); p += sizeof( double ); if( f != 0 ) *ValPtr.d = 0; else{ EXEC SQL GET DESCRIPTOR :Descriptor VALUE :i :DecVal = DATA; if( ( r = sqlca.sqlcode ) == SQLOK ) dectodbl( &DecVal, ValPtr.d ); } break; default: r = -1; } if( r != 0 ) break; } } return( r );}/*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -