📄 nfxput.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";#define INFORMIX70/*===========================================================================*//* Public Funciton - Put Data To Buffer *//*---------------------------------------------------------------------------*/int PutDataBuffer( Descriptor, Buffer )EXEC SQL BEGIN DECLARE SECTION;char *Descriptor;char *Buffer;EXEC SQL END DECLARE SECTION;{ int r, p; EXEC SQL BEGIN DECLARE SECTION; char n[81]; long c, i, t, l, f, g; 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 = NULLABLE, :n = NAME; 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 && ValPtr.c[0] == 0 ){ ValPtr.c[0] = ' '; ValPtr.c[1] = 0; g = 1; } else g = 0;#ifdef INFORMIX70 EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :ValPtr.c;#else l++; EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :ValPtr.c, TYPE = :t, LENGTH = :l; l--; EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i LENGTH = :l;#endif r = sqlca.sqlcode; if( g != 0 ) ValPtr.c[0] = 0; break; case SQLSMINT: p = StructOffset( p, sizeof( short ) ); ValPtr.s = ( short * ) ( Buffer + p ); p += sizeof( short ); EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :*ValPtr.s;/* TYPE = :t, LENGTH = :l;*/ r = sqlca.sqlcode; break; case SQLINT: case SQLSERIAL: case SQLDATE: p = StructOffset( p, sizeof( long ) ); ValPtr.l = ( long * ) ( Buffer + p ); p += sizeof( long ); if( t==SQLSERIAL ) *ValPtr.l = 0L; EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :*ValPtr.l; r = sqlca.sqlcode; break; case SQLSMFLOAT: p = StructOffset( p, sizeof( float ) ); ValPtr.f = ( float * ) ( Buffer + p ); p += sizeof( float ); EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :*ValPtr.f; r = sqlca.sqlcode; break; case SQLFLOAT: p = StructOffset( p, sizeof( double ) ); ValPtr.d = ( double * ) ( Buffer + p ); p += sizeof( double ); EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :*ValPtr.d; r = sqlca.sqlcode; break; case SQLDECIMAL: case SQLMONEY: p = StructOffset( p, sizeof( double ) ); ValPtr.d = ( double * ) ( Buffer + p ); deccvdbl( *ValPtr.d, &DecVal ); p += sizeof( double ); EXEC SQL SET DESCRIPTOR :Descriptor VALUE :i DATA = :DecVal; r = sqlca.sqlcode; break; default: r = -1; } if( r != 0 ) break; } } return( r );}/*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -