Macro: Global$Scalar
#IF (!0>0)
#CHECK !2 _RT
#IFSAME !1 STRING
// strings are treated as special because they have a set of values.
#IF (!0>2)
#IFDEF !3
#CHECK !3 _VSWDF
#STR V$ !3
#REPLACE !2 |VS!v
#IF (!0>3)
Global$Scalar !1 !4 !5 !6 !7 !8 !9
#ENDIF
#ELSE
#STR V$ 80
#REPLACE !2 |VS!v
Global$Scalar !1 !3 !4 !5 !6 !7 !8 !9
#ENDIF
#ELSE
#STR V$ 80
#REPLACE !2 |VS!v
#ENDIF
#ELSE
#IFSAME !1 INTEGER
#REPLACE !2 |VI!D
#ELSE
#IFSAME !1 DATE
#NUM V$
#REPLACE !2 |VD!v
#ELSE
#IFSAME !1 NUMBER
#NUM V$
#REPLACE !2 |VN!v
#ELSE
#IFSAME !1 REAL
#REAL V$
#REPLACE !2 |VR!v
#ELSE
#IFSAME !1 ADDRESS
#ADDRESS V$
#REPLACE !2 |VX!v
#ELSE
#IFSAME !1 BIGINT
#BIGINT V$
#REPLACE !2 |VH!v
#ELSE
#IFSAME !1 TIME
#TIME V$
#REPLACE !2 |VT!v
#ELSE
#IFSAME !1 DATETIME
#STAM V$
#REPLACE !2 |VM!v
#ELSE
#IFSAME !1 FLOAT
#FLOAT V$
#REPLACE !2 |VF!v
#ELSE
#IFSAME !1 CHAR
#CHAR V$
#REPLACE !2 |VY!v
#ELSE
#IFSAME !1 UCHAR
#UCHAR V$
#REPLACE !2 |VC!v
#ELSE
#IFSAME !1 SHORT
#SHORT V$
#REPLACE !2 |VW!v
#ELSE
#IFSAME !1 USHORT
#USHORT V$
#REPLACE !2 |VU!v
#ELSE
#IFSAME !1 UINTEGER
#ULONG V$
#REPLACE !2 |VV!v
#ELSE
#IFSAME !1 BOOLEAN
#BIT V$
#REPLACE !2 |VZ!v
#ELSE
#IFSAME !1 UBIGINT
#BIGU V$
#REPLACE !2 |VG!v
#ELSE
#IFSAME !1 CURRENCY
#CURR V$
#REPLACE !2 |VO!v
#ELSE
#IFSAME !1 TIMESPAN
#SPAN V$
#REPLACE !2 |VP!v
#ELSE
#IFSAME !1 DECIMAL
#BIGN V$
#REPLACE !2 |VQ!v
#ELSE
#IFSAME !1 VARIANT
#VRNT V$
#REPLACE !2 |VJ!v
#ELSE
#IFSAME !1 ROWID
#ROWI V$
#REPLACE !2 |V@!v
#ELSE
#PUSH !h
#STRG H$ !1
#IF !h
#STRV V$ !h
#REPLACE !2 |VK!vV!h
#ELSE
#ERROR DFERR_COMP_INVALID_DATATYPE (!1)
#ENDIF
#POP H$
#ENDIF // RowID
#ENDIF // Variant
#ENDIF // Decimal
#ENDIF // TimeSpan
#ENDIF // Currenct
#ENDIF // UBigInt
#ENDIF // Boolean
#ENDIF // UInteger
#ENDIF // UShort
#ENDIF // Short
#ENDIF // UChar
#ENDIF // Char
#ENDIF // Float
#ENDIF // TimeDate
#ENDIF // Time
#ENDIF // BigInt
#ENDIF // address
#ENDIF // real
#ENDIF // number
#ENDIF // date
#ENDIF // integer
#IF (!0>2)
Global$Scalar !1 !3 !4 !5 !6 !7 !8 !9
#ENDIF
#ENDIF // end of string
#ENDIF // if there are parameters