def temp-table tt1 field fi as int
                   field fd as dec
                   field fi64 as int64
                   field fda as date
                   field fdt as datetime
                   field fdtz as datetime-tz
                   field fbool as log
                   field fh as handle
                   field fch as char
                   field fr1 as recid
                   field fr2 as rowid
                   field fm2 as raw
                   field na as char.

function bothIndeterminate returns int (input bogus as int) forward.
function op1Indeterminate returns int (input bogus as int) forward.
function op2Indeterminate returns int (input bogus as int) forward.

def var i as int init 14.
def var d as dec init 30.0.
def var i64 as int64 init 9.
def var da as date init today.
def var dt as datetime init ?. 
def var dtz as datetime-tz init ?.
def var bool as log init true.
def var h as handle.
def var h2 as handle.
def var ch as char init "99".
def var lch as longchar init "99999".
def var r1 as recid.
def var r2 as rowid.
def var m1 as memptr.
def var ptr as memptr.
def var m2 as raw.

def var bypass-runtime-error as logical init false.

create tt1.

set-size(ptr) = 128.

h = buffer tt1:handle.

bothIndeterminate(?).
bothIndeterminate(14).
op1Indeterminate(?).
op1Indeterminate(14).
op2Indeterminate(?).
op2Indeterminate(14).

function bothIndeterminate returns int (input bogus as int):
   
   message "bothIndeterminate(" + (if bogus = ? then "?" else string(bogus)) + ")".
   
   /* both operands may be non-typable */
   /* all data types can be assigned but there can be runtime errors depending on the contents of the field */
   /* the example here is the use of a character field and "" empty string works for most types except logical and memptr */
   /* the type of the field is not known at compile time in the 4GL, failures occur at runtime */
   
   tt1.na = "".
   
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   
   /* both of these will generate a runtime error if the input string is not a valid logical */
   tt1.na = "yes".
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value. 
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.na = "".
   
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   r1        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fr1   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   r2        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fr2   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   
   /* always a runtime error with a character field, so we use raw here, but the assigned to var will become broken */
   m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else h:buffer-field("fm2"):buffer-value.
   
   m2        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   tt1.fm2   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
   
   return bogus.
end.

function op1Indeterminate returns int (input bogus as int):

   message "op1Indeterminate(" + (if bogus = ? then "?" else string(bogus)) + ")".
   
   /* when op1 is non-typable, op2 will depend on the type being assigned to */
   
   tt1.na = "".
   set-size(ptr) = 128.
   put-long(ptr, 1) = 30.
   
   /* integer/int64 assignment can have op2 as int, int64, dec, handle, recid, memptr (runtime */
   /* error whether or not it is initialized) or unknown value literal */
   
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else r1.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      i         = if bogus <> ? then h:buffer-field("na"):buffer-value else ptr.
   
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else r1.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else ptr.
   
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else r1.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else ptr.
   
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else r1.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else ptr.
   
   /* decimal assignment can have op2 as int, int64, dec or unknown value literal */
   
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   
   /* date/datetime/datetime-tz assignment can have op2 as date, datetime, datetime-tz or unknown value literal */
   /* date can also have int, int64 as op2 */
   /* datetime/datetime-tz can compile with int, int64 as op2, but they generate runtime errors */  
   
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
   dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
      dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
      dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   end.
   
   dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
   dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
   dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
   tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
      tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
      tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   end.
   
   tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
   tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
   tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
   dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
      dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
      dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   end.
   
   dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
   dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
   dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
   tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
      tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
      tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   end.
   
   tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
   tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
   tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
   
   /* logical assignment can have op2 as logical, integer, int64 or unknown value literal */
   
   tt1.na = "yes".
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else bool.
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else bool.
   tt1.na = "".
   
   /* handle assignment can have op2 as handle, integer, int64 or unknown value literal */
   
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
   
   /* character assignment can have op2 as character, longchar, integer, int64 or unknown value literal */
   
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else ch.
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else lch.
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else ch.
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else lch.
   
   /* longchar assignment can have op2 as character, longchar, integer, int64 (the numerics cause a runtime error) or unknown value literal */
   
   lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
   
   /* compiles but creates a runtime error */
   if bypass-runtime-error then
   do:   
      lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
      lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
      lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
   end.
   
   lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else ch.
   lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else lch.
   
   /* memptr assignment can have op2 as memptr, raw, integer, int64 or unknown value literal */
   /* the numerics and the unknown value literal cause runtime errors */
   
   /* compiles but creates a runtime error */
   if bypass-runtime-error then
   do:
      m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ?.
      m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else 0.
      m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i.
      m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i64.
   end.
   
   m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ptr.
   m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else m2.
   
   /* raw assignment can have op2 as memptr, raw, integer, int64 or unknown value literal */
   /* the numerics cause runtime errors */
   
   m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ?.
   
   /* compiles but creates a runtime error */
   if bypass-runtime-error then
   do:
      m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else 0.
      m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i.
      m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i64.
   end.
   
   m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ptr.
   m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else m2.
   
   tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ?.
   
   /* compiles but creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else 0.
      tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i.
      tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i64.
   end.
   
   tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ptr.
   tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else m2.
   
   /* recid assignment can have op2 as recid, integer, int64 or unknown value literal */
   
   r1        = if bogus <> ? then h:buffer-field("fr1"):buffer-value else ?.
   r1        = if bogus <> ? then h:buffer-field("fr1"):buffer-value else 0.
   r1        = if bogus <> ? then h:buffer-field("fr1"):buffer-value else i.
   r1        = if bogus <> ? then h:buffer-field("fr1"):buffer-value else i64.
   r1        = if bogus <> ? then h:buffer-field("fr1"):buffer-value else r1.
   
   tt1.fr1   = if bogus <> ? then h:buffer-field("fr1"):buffer-value else ?.
   tt1.fr1   = if bogus <> ? then h:buffer-field("fr1"):buffer-value else 0.
   tt1.fr1   = if bogus <> ? then h:buffer-field("fr1"):buffer-value else i.
   tt1.fr1   = if bogus <> ? then h:buffer-field("fr1"):buffer-value else i64.
   tt1.fr1   = if bogus <> ? then h:buffer-field("fr1"):buffer-value else r1.
      
   /* rowid assignment can have op2 as rowid, integer, int64 or unknown value literal */
   /* the numerics cause runtime errors */
   
   r2        = if bogus <> ? then h:buffer-field("fr2"):buffer-value else ?.
   
   /* compiles but creates a runtime error */
   if bypass-runtime-error then
   do:
      r2        = if bogus <> ? then h:buffer-field("fr2"):buffer-value else 0.
      r2        = if bogus <> ? then h:buffer-field("fr2"):buffer-value else i.
      r2        = if bogus <> ? then h:buffer-field("fr2"):buffer-value else i64.
   end.
   
   r2        = if bogus <> ? then h:buffer-field("fr2"):buffer-value else r2.
   
   tt1.fr2   = if bogus <> ? then h:buffer-field("fr2"):buffer-value else ?.
   
   /* compiles but creates a runtime error */
   if bypass-runtime-error then
   do:
      tt1.fr2   = if bogus <> ? then h:buffer-field("fr2"):buffer-value else 0.
      tt1.fr2   = if bogus <> ? then h:buffer-field("fr2"):buffer-value else i.
      tt1.fr2   = if bogus <> ? then h:buffer-field("fr2"):buffer-value else i64.
   end.
   
   tt1.fr2   = if bogus <> ? then h:buffer-field("fr2"):buffer-value else r2.
   
   return bogus.
end.

function op2Indeterminate returns int (input bogus as int):

   message "op2Indeterminate(" + (if bogus = ? then "?" else string(bogus)) + ")".
   
   /* when op2 is non-typable, op1 can be anything but there can be runtime errors depending in the types and contents */
   /* some assignments cannot occur without runtime errors */
   
   /* integer/int64 can take all types but longchar, rowid, memptr and raw cause runtime errors */
   
   i         = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      i         = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   i         = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   i         = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      i         = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      i         = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      i         = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fi    = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fi    = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   tt1.fi    = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   tt1.fi    = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fi    = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      tt1.fi    = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      tt1.fi    = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   i64       = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      i64       = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   i64       = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   i64       = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      i64       = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      i64       = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      i64       = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fi64  = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fi64  = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   tt1.fi64  = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   tt1.fi64  = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fi64  = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      tt1.fi64  = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      tt1.fi64  = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   /* decimal can take all types but longchar, rowid, memptr and raw cause runtime errors */
   
   d         = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      d         = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
      
   d         = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   d         = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      d         = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      d         = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      d         = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fd    = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fd    = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   tt1.fd    = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   tt1.fd    = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fd    = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      tt1.fd    = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      tt1.fd    = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   /* date can take all types but longchar, rowid, memptr and raw cause runtime errors */
   
   da        = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      da        = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   da        = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
   da        = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      da        = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      da        = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      da        = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fda   = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fda   = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   tt1.fda   = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
   tt1.fda   = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fda   = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      tt1.fda   = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      tt1.fda   = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
      
   /* datetime/datetime-tz can take all types but integer, int64, logical, handle, */
   /* longchar, recid, rowid, memptr and raw cause runtime errors; only the date types, */
   /* character and unknown value literals don't cause runtime errors */
   
   dt        = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
      
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      dt        = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
      dt        = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
      dt        = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
      dt        = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   end.
   
   dt        = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   dt        = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   dt        = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      dt        = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
      dt        = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
      dt        = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
      dt        = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   end.
   
   dt        = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      dt        = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   dt        = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      dt        = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
      dt        = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      dt        = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      dt        = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
      
   tt1.fdt   = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
      
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fdt   = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
      tt1.fdt   = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
      tt1.fdt   = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
      tt1.fdt   = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fdt   = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   tt1.fdt   = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   tt1.fdt   = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fdt   = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
      tt1.fdt   = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
      tt1.fdt   = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
      tt1.fdt   = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fdt   = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fdt   = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   tt1.fdt   = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fdt   = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
      tt1.fdt   = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      tt1.fdt   = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      tt1.fdt   = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   dtz       = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      dtz       = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
      dtz       = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
      dtz       = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
      dtz       = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   end.
   
   dtz       = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   dtz       = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   dtz       = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      dtz       = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
      dtz       = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
      dtz       = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
      dtz       = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   end.
   
   dtz       = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      dtz       = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   dtz       = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      dtz       = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
      dtz       = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      dtz       = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      dtz       = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fdtz  = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
      
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fdtz  = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
      tt1.fdtz  = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
      tt1.fdtz  = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
      tt1.fdtz  = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fdtz  = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   tt1.fdtz  = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   tt1.fdtz  = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fdtz  = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
      tt1.fdtz  = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
      tt1.fdtz  = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
      tt1.fdtz  = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fdtz  = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fdtz  = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   tt1.fdtz  = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fdtz  = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
      tt1.fdtz  = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      tt1.fdtz  = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      tt1.fdtz  = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   /* logical can take all types but longchar, rowid, memptr and raw cause runtime errors */
   
   tt1.na = "yes".
   ch = "yes".
   bool      = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      bool      = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   bool      = if bogus <> ? then "yes" else h:buffer-field("na"):buffer-value.
   bool      = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      bool      = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      bool      = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      bool      = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fbool = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fbool = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   tt1.fbool = if bogus <> ? then "yes" else h:buffer-field("na"):buffer-value.
   tt1.fbool = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fbool = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      tt1.fbool = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      tt1.fbool = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   tt1.na = "".
   ch = "".
   
   /* handle can take all types but longchar, rowid, memptr and raw cause runtime errors */
   
   h2        = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      h2        = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   
   h2        = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   h2        = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      h2        = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      h2        = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      h2        = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fh    = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fh    = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fh    = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   tt1.fh    = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fh    = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      tt1.fh    = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      tt1.fh    = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   /* character can take all types but rowid, memptr and raw cause runtime errors */
   
   ch        = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   ch        = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      ch        = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      ch        = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      ch        = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   tt1.fch   = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   tt1.fch   = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fch   = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      tt1.fch   = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      tt1.fch   = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   /* longchar can take all types but anyting except character, longchar and unknown */
   /* value literal cause runtime errors */
      
   lch       = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      lch       = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
   end.
   
   lch       = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
   lch       = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
   lch       = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:
      lch       = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
      lch       = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
   end.
   
   /* memptr can take all types but anyting except memptr, raw and unknown value literal */
   /* cause runtime errors */
   
   m1        = if bogus <> ? then ?     else h:buffer-field("fm2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      m1        = if bogus <> ? then 0     else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then i     else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then d     else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then i64   else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then da    else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then dt    else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then dtz   else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then bool  else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then true  else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then false else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then h     else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then ch    else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then lch   else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then "14"  else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then r1    else h:buffer-field("fm2"):buffer-value.
      m1        = if bogus <> ? then r2    else h:buffer-field("fm2"):buffer-value.
   end.

   m1        = if bogus <> ? then ptr   else h:buffer-field("fm2"):buffer-value.
   m1        = if bogus <> ? then m2    else h:buffer-field("fm2"):buffer-value.
   
   /* raw can take all types but anyting except memptr, raw and unknown value literal */
   /* cause runtime errors */
   
   m2        = if bogus <> ? then ?     else h:buffer-field("fm2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      m2        = if bogus <> ? then 0     else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then i     else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then d     else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then i64   else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then da    else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then dt    else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then dtz   else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then bool  else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then true  else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then false else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then h     else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then ch    else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then lch   else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then "14"  else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then r1    else h:buffer-field("fm2"):buffer-value.
      m2        = if bogus <> ? then r2    else h:buffer-field("fm2"):buffer-value.
   end.

   m2        = if bogus <> ? then ptr   else h:buffer-field("fm2"):buffer-value.
   m2        = if bogus <> ? then m2    else h:buffer-field("fm2"):buffer-value.
   
   tt1.fm2   = if bogus <> ? then ?     else h:buffer-field("fm2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fm2   = if bogus <> ? then 0     else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then i     else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then d     else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then i64   else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then da    else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then dt    else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then dtz   else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then bool  else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then true  else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then false else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then h     else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then ch    else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then lch   else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then "14"  else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then r1    else h:buffer-field("fm2"):buffer-value.
      tt1.fm2   = if bogus <> ? then r2    else h:buffer-field("fm2"):buffer-value.
   end.

   tt1.fm2    = if bogus <> ? then ptr   else h:buffer-field("fm2"):buffer-value.
   tt1.fm2    = if bogus <> ? then m2    else h:buffer-field("fm2"):buffer-value.
   
   /* recid can take all types but longchar, memptr, raw and unknown value literal */
   /* cause runtime errors */
   
   r1        = if bogus <> ? then ?     else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then 0     else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then i     else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then d     else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then i64   else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then da    else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then dt    else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then dtz   else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then bool  else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then true  else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then false else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then h     else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then ch    else h:buffer-field("fr1"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      r1        = if bogus <> ? then lch   else h:buffer-field("fr1"):buffer-value.
   
   r1        = if bogus <> ? then "14"  else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then r1    else h:buffer-field("fr1"):buffer-value.
   r1        = if bogus <> ? then r2    else h:buffer-field("fr1"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      r1        = if bogus <> ? then ptr   else h:buffer-field("fr1"):buffer-value.
      r1        = if bogus <> ? then m2    else h:buffer-field("fr1"):buffer-value.
   end.
   
   tt1.fr1    = if bogus <> ? then ?     else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then 0     else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then i     else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then d     else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then i64   else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then da    else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then dt    else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then dtz   else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then bool  else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then true  else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then false else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then h     else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then ch    else h:buffer-field("fr1"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fr1    = if bogus <> ? then lch   else h:buffer-field("fr1"):buffer-value.
   
   tt1.fr1    = if bogus <> ? then "14"  else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then r1    else h:buffer-field("fr1"):buffer-value.
   tt1.fr1    = if bogus <> ? then r2    else h:buffer-field("fr1"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fr1    = if bogus <> ? then ptr   else h:buffer-field("fr1"):buffer-value.
      tt1.fr1    = if bogus <> ? then m2    else h:buffer-field("fr1"):buffer-value.
   end.
   
   /* rowid can take all types but everything except datetime, datetime-tz, */
   /* character, recid, rowid and unknown value literal cause runtime errors */
   
   r2        = if bogus <> ? then ?     else h:buffer-field("fr2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:
      r2        = if bogus <> ? then 0     else h:buffer-field("fr2"):buffer-value.
      r2        = if bogus <> ? then i     else h:buffer-field("fr2"):buffer-value.
      r2        = if bogus <> ? then d     else h:buffer-field("fr2"):buffer-value.
      r2        = if bogus <> ? then i64   else h:buffer-field("fr2"):buffer-value.
      r2        = if bogus <> ? then da    else h:buffer-field("fr2"):buffer-value.
   end.
   
   r2        = if bogus <> ? then dt    else h:buffer-field("fr2"):buffer-value.
   r2        = if bogus <> ? then dtz   else h:buffer-field("fr2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:
      r2        = if bogus <> ? then bool  else h:buffer-field("fr2"):buffer-value.
      r2        = if bogus <> ? then true  else h:buffer-field("fr2"):buffer-value.
      r2        = if bogus <> ? then false else h:buffer-field("fr2"):buffer-value.
      r2        = if bogus <> ? then h     else h:buffer-field("fr2"):buffer-value.
   end.
   
   r2        = if bogus <> ? then ch    else h:buffer-field("fr2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      r2        = if bogus <> ? then lch   else h:buffer-field("fr2"):buffer-value.
   
   r2        = if bogus <> ? then "14"  else h:buffer-field("fr2"):buffer-value.
   r2        = if bogus <> ? then r1    else h:buffer-field("fr2"):buffer-value.
   r2        = if bogus <> ? then r2    else h:buffer-field("fr2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      r2        = if bogus <> ? then ptr   else h:buffer-field("fr2"):buffer-value.
      r2        = if bogus <> ? then m2    else h:buffer-field("fr2"):buffer-value.
   end.
   
   tt1.fr2    = if bogus <> ? then ?     else h:buffer-field("fr2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:
      tt1.fr2    = if bogus <> ? then 0     else h:buffer-field("fr2"):buffer-value.
      tt1.fr2    = if bogus <> ? then i     else h:buffer-field("fr2"):buffer-value.
      tt1.fr2    = if bogus <> ? then d     else h:buffer-field("fr2"):buffer-value.
      tt1.fr2    = if bogus <> ? then i64   else h:buffer-field("fr2"):buffer-value.
      tt1.fr2    = if bogus <> ? then da    else h:buffer-field("fr2"):buffer-value.
   end.
   
   tt1.fr2    = if bogus <> ? then dt    else h:buffer-field("fr2"):buffer-value.
   tt1.fr2    = if bogus <> ? then dtz   else h:buffer-field("fr2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:
      tt1.fr2    = if bogus <> ? then bool  else h:buffer-field("fr2"):buffer-value.
      tt1.fr2    = if bogus <> ? then true  else h:buffer-field("fr2"):buffer-value.
      tt1.fr2    = if bogus <> ? then false else h:buffer-field("fr2"):buffer-value.
      tt1.fr2    = if bogus <> ? then h     else h:buffer-field("fr2"):buffer-value.
   end.
   
   tt1.fr2    = if bogus <> ? then ch    else h:buffer-field("fr2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
      tt1.fr2    = if bogus <> ? then lch   else h:buffer-field("fr2"):buffer-value.
   
   tt1.fr2    = if bogus <> ? then "14"  else h:buffer-field("fr2"):buffer-value.
   tt1.fr2    = if bogus <> ? then r1    else h:buffer-field("fr2"):buffer-value.
   tt1.fr2    = if bogus <> ? then r2    else h:buffer-field("fr2"):buffer-value.
   
   /* compiles but always creates a runtime error */
   if bypass-runtime-error then
   do:   
      tt1.fr2    = if bogus <> ? then ptr   else h:buffer-field("fr2"):buffer-value.
      tt1.fr2    = if bogus <> ? then m2    else h:buffer-field("fr2"):buffer-value.
   end.
   
   return bogus.
end.
