static int hb_woy( long lDate, HB_BOOL fISO ) { int iYear, iMonth, iDay; HB_TRACE( HB_TR_DEBUG, ( "hb_woy(%ld, %d)", lDate, ( int ) fISO ) ); hb_dateDecode( lDate, &iYear, &iMonth, &iDay ); if( fISO ) hb_dateDecode( lDate + 3 - ( hb_dateDOW( iYear, iMonth, iDay ) + 5 ) % 7, &iYear, &iMonth, &iDay ); return ( hb_doy( iYear, iMonth, iDay ) - 1 ) / 7 + 1; }
static int ct_doy( long lDate ) { int iYear, iMonth, iDay; long lFirst; hb_dateDecode( lDate, &iYear, &iMonth, &iDay ); lFirst = hb_dateEncode( iYear, 1, 1 ); return ( int ) ( lDate - lFirst + 1 ); }
void hb_timeStampUnpack( double dTimeStamp, int * piYear, int * piMonth, int * piDay, int * piHour, int * piMinutes, int * piSeconds, int * piMSec ) { long lJulian, lMilliSec; HB_TRACE( HB_TR_DEBUG, ( "hb_timeStampUnpack(%f, %p, %p, %p, %p, %p, %p, %p)", dTimeStamp, piYear, piMonth, piDay, piHour, piMinutes, piSeconds, piMSec ) ); hb_timeStampUnpackDT( dTimeStamp, &lJulian, &lMilliSec ); hb_dateDecode( lJulian, piYear, piMonth, piDay ); hb_timeDecode( lMilliSec, piHour, piMinutes, piSeconds, piMSec ); }
/* This function always closes the time with a zero byte. * It needs a 24 character long buffer for full datetime representation * "YYYY-MM-DD hh:mm:ss.fff" */ char * hb_timeStampStr( char * szDateTime, long lJulian, long lMilliSec ) { int iYear, iMonth, iDay, iHour, iMinutes, iSeconds, iMSec; HB_TRACE( HB_TR_DEBUG, ( "hb_timeStampStr(%p, %ld, %ld)", szDateTime, lJulian, lMilliSec ) ); hb_dateDecode( lJulian, &iYear, &iMonth, &iDay ); hb_timeDecode( lMilliSec, &iHour, &iMinutes, &iSeconds, &iMSec ); hb_snprintf( szDateTime, 24, "%04d-%02d-%02d %02d:%02d:%02d.%03d", iYear, iMonth, iDay, iHour, iMinutes, iSeconds, iMSec ); szDateTime[ 23 ] = '\0'; return szDateTime; }
/* This function always closes the time with a zero byte, so it needs a * 18 character long buffer to store time in format "YYYYMMDDhhmmssfff" * with trailing 0 byte. */ char * hb_timeStampStrRawPut( char * szDateTime, long lJulian, long lMilliSec ) { int iYear, iMonth, iDay, iHour, iMinutes, iSeconds, iMSec; HB_TRACE( HB_TR_DEBUG, ( "hb_timeStampStrRawPut(%p, %ld, %ld)", szDateTime, lJulian, lMilliSec ) ); hb_dateDecode( lJulian, &iYear, &iMonth, &iDay ); hb_dateStrPut( szDateTime, iYear, iMonth, iDay ); hb_timeDecode( lMilliSec, &iHour, &iMinutes, &iSeconds, &iMSec ); hb_snprintf( szDateTime + 8, 10, "%02d%02d%02d%03d", iHour, iMinutes, iSeconds, iMSec ); return szDateTime; }
void hb_timeStampUnpackD( double dTimeStamp, int * piYear, int * piMonth, int * piDay, int * piHour, int * piMinutes, double * pdSeconds ) { long lJulian, lMilliSec; int iSeconds, iMSec; HB_TRACE( HB_TR_DEBUG, ( "hb_timeStampUnpackD(%f, %p, %p, %p, %p, %p, %p)", dTimeStamp, piYear, piMonth, piDay, piHour, piMinutes, pdSeconds ) ); hb_timeStampUnpackDT( dTimeStamp, &lJulian, &lMilliSec ); hb_dateDecode( lJulian, piYear, piMonth, piDay ); hb_timeDecode( lMilliSec, piHour, piMinutes, &iSeconds, &iMSec ); if( pdSeconds ) *pdSeconds = ( double ) iSeconds + ( double ) iMSec / 1000; }
char * hb_dateDecStr( char * szDate, long lJulian ) { int iYear, iMonth, iDay; HB_TRACE( HB_TR_DEBUG, ( "hb_dateDecStr(%p, %ld)", szDate, lJulian ) ); if( lJulian <= 0 ) { memset( szDate, ' ', 8 ); } else { hb_dateDecode( lJulian, &iYear, &iMonth, &iDay ); hb_dateStrPut( szDate, iYear, iMonth, iDay ); } szDate[ 8 ] = '\0'; return szDate; }
BOOL sql_item2str( sql_item_arg *pItemArg, SQLSYS_INFO *pSysInfo ) { ULONG lSize = 0L; /* For Temporary values */ char *szText = NULL; /* Temporary buffer */ BOOL bFree = TRUE; if (!pItemArg) { HB_TRACE(HB_TR_DEBUG,(" Invalid Argument -> %p", pItemArg )); return FALSE; } if (!pSysInfo) { pSysInfo = (SQLSYS_INFO *) SQLSYS_GETINFO( 0 ); // Valid driver? It has been correctly loaded into memory? if (!SR_ISVALID_DRIVER(pSysInfo)) { HB_TRACE(HB_TR_DEBUG,(" Invalid driver !!" )); return FALSE; } } HB_TRACE(HB_TR_DEBUG,(" ARGUMENT => '%s'", hb_itemTypeStr( pItemArg->pItem ) )); switch( hb_itemType( pItemArg->pItem ) ) { case HB_IT_MEMO: case HB_IT_STRING: { HB_TRACE(HB_TR_DEBUG,(" As Text => '%s'", hb_itemGetCPtr( pItemArg->pItem ) )); lSize = hb_itemGetCLen( pItemArg->pItem ); szText = (*pSysInfo->EscapeString) ( hb_itemGetCPtr( pItemArg->pItem ), &lSize, 0 ); /* char *szTemp, *szBuff; szTemp = (*pSysInfo->EscapeString) ( hb_itemGetCPtr( pItemArg->pItem ), &lSize, 0 ); if (szTemp) { szText = (char *) hb_xgrab( lSize + 3L ); // chr(0) + 2 separators szBuff = szText; *szText = pSysInfo->FieldDelim; szText ++; memcpy( szText, szTemp, lSize ); szText += lSize; *szText = pSysInfo->FieldDelim; szText ++; *szText = '\0'; hb_xfree( szTemp ); } /***/ break; } case HB_IT_LOGICAL: HB_TRACE(HB_TR_DEBUG,(" As BOOL => %d", (int) hb_itemGetL( pItemArg->pItem ) )); szText = (hb_itemGetL( pItemArg->pItem ) ? pSysInfo->BoolTrue : pSysInfo->BoolFalse); lSize = strlen( szText ); bFree = FALSE; break; case HB_IT_DATE: { int iYear, iMonth, iDay; hb_dateDecode( hb_itemGetDL( pItemArg->pItem ), &iYear, &iMonth, &iDay ); HB_TRACE(HB_TR_DEBUG,(" As DATE => %04d/%02d/%02d", iYear, iMonth, iDay )); if (pSysInfo->DateFormat == ESCAPE_FORMAT_DATE_ISO) { szText = SQLSYS_DATETOISO( (char *) hb_xgrab(13), iYear, iMonth, iDay, TRUE ); lSize = 12L; } break; } case HB_IT_INTEGER: case HB_IT_DOUBLE: case HB_IT_LONG: { szText = hb_itemStr( pItemArg->pItem, NULL, NULL ); HB_TRACE(HB_TR_DEBUG,(" As Number => %s", szText )); if( szText ) { ULONG nToSkip = 0L; while( szText[ nToSkip] == ' ' ) ++nToSkip; /* Rever isto aqui de perto */ if( nToSkip ) memmove( szText, szText + nToSkip, strlen( szText + nToSkip ) + 1 ); lSize = strlen( szText ); HB_TRACE(HB_TR_DEBUG,(" As Text => '%s' -- %lu", szText, lSize )); } break; } default: { szText = (char *) hb_xgrab(5); *szText = '\0'; strcat( szText, "NULL" ); lSize = strlen( szText ); break; } } if (!szText) { HB_TRACE(HB_TR_DEBUG,(" Impossivel converter este valor:" )); HB_TRACE_ARGS( pItemArg->pItem ); return FALSE; } pItemArg->szResult = szText; pItemArg->ulSize = lSize; pItemArg->bDestroy = bFree; return TRUE; }