* (all files)
* stripped svn header
* minor cleanups
; use following command to find out the history of files:
git log
git log --follow
git blame
git annotate
108 lines
3.1 KiB
Plaintext
108 lines
3.1 KiB
Plaintext
/*
|
|
* Author....: David Husnian
|
|
* CIS ID....: ?
|
|
*
|
|
* This is an original work by David Husnian and is placed in the
|
|
* public domain.
|
|
*
|
|
* Modification history:
|
|
* ---------------------
|
|
*
|
|
* Rev 1.2 15 Aug 1991 23:02:46 GLENN
|
|
* Forest Belt proofread/edited/cleaned up doc
|
|
*
|
|
* Rev 1.1 14 Jun 1991 19:50:54 GLENN
|
|
* Minor edit to file header
|
|
*
|
|
* Rev 1.0 01 Apr 1991 01:00:34 GLENN
|
|
* Nanforum Toolkit
|
|
*
|
|
*/
|
|
|
|
#define CASE_AT( x, y, z ) z[ At( x, y ) + 1 ]
|
|
#define NULL ""
|
|
#define EARLIEST_DATE hb_SToD( "01000101" )
|
|
#define BLANK_DATE hb_SToD()
|
|
|
|
#define _XTOC( x ) CASE_AT( ValType( x ), "CNDLM", ;
|
|
{ NULL, ;
|
|
x, ;
|
|
iif( HB_ISNUMERIC( x ), ;
|
|
hb_ntos( x ), ;
|
|
NULL ), ;
|
|
iif( HB_ISDATE( x ), DToC( x ), NULL ), ;
|
|
iif( HB_ISLOGICAL( x ), ;
|
|
iif( x, ".T.", ".F." ), ;
|
|
NULL ), ;
|
|
x } )
|
|
|
|
FUNCTION ft_XToY( xValueToConvert, cTypeToConvertTo, lWantYesNo )
|
|
|
|
__defaultNIL( @lWantYesNo, .F. )
|
|
|
|
DO CASE
|
|
|
|
CASE cTypeToConvertTo == "C" .AND. ; // They Want a Character String
|
|
! HB_ISSTRING( xValueToConvert )
|
|
|
|
xValueToConvert := _XTOC( xValueToConvert )
|
|
|
|
CASE cTypeToConvertTo == "D" .AND. ; // They Want a Date
|
|
! HB_ISDATE( xValueToConvert )
|
|
|
|
xValueToConvert := iif( HB_ISSTRING( xValueToConvert ), ;
|
|
; // Convert from a Character
|
|
CToD( xValueToConvert ), ;
|
|
iif( HB_ISNUMERIC( xValueToConvert ), ;
|
|
; // Convert from a Number
|
|
xValueToConvert + EARLIEST_DATE, ;
|
|
iif( HB_ISLOGICAL( xValueToConvert ), ;
|
|
; // Convert from a Logical
|
|
iif( xValueToConvert, Date(), BLANK_DATE ), ;
|
|
; // Unsupported Type
|
|
BLANK_DATE ) ) )
|
|
|
|
CASE cTypeToConvertTo == "N" .AND. ; // They Want a Number
|
|
! HB_ISNUMERIC( xValueToConvert )
|
|
|
|
xValueToConvert := iif( HB_ISSTRING( xValueToConvert ), ;
|
|
; // Convert from a Character
|
|
Val( xValueToConvert ), ;
|
|
iif( HB_ISDATE( xValueToConvert ), ;
|
|
; // Convert from a Date
|
|
xValueToConvert - EARLIEST_DATE, ;
|
|
iif( HB_ISLOGICAL( xValueToConvert ), ;
|
|
; // Convert from a Logical
|
|
iif( xValueToConvert, 1, 0 ), ;
|
|
; // Unsupported Type
|
|
0 ) ) )
|
|
|
|
CASE cTypeToConvertTo == "L" .AND. ; // They Want a Logical
|
|
! HB_ISLOGICAL( xValueToConvert )
|
|
|
|
xValueToConvert := iif( HB_ISSTRING( xValueToConvert ), ;
|
|
; // Convert from a Character
|
|
Upper( xValueToConvert ) == iif( lWantYesNo, "Y", ".T." ), ;
|
|
iif( HB_ISDATE( xValueToConvert ), ;
|
|
; // Convert from a Date
|
|
! Empty( xValueToConvert ), ;
|
|
iif( HB_ISNUMERIC( xValueToConvert ), ;
|
|
; // Convert from a Number
|
|
xValueToConvert != 0, ;
|
|
; // Unsupported Type
|
|
.F. ) ) )
|
|
|
|
CASE cTypeToConvertTo == "A" .AND. ; // They Want an Array
|
|
! HB_ISARRAY( xValueToConvert )
|
|
|
|
xValueToConvert := { xValueToConvert }
|
|
|
|
CASE cTypeToConvertTo == "B" .AND. ; // They Want a Code Block
|
|
! HB_ISBLOCK( xValueToConvert )
|
|
|
|
xValueToConvert := {|| xValueToConvert }
|
|
|
|
ENDCASE
|
|
|
|
RETURN xValueToConvert
|