Project

General

Profile

ternary_really_returns_bdt_with_buffer_value.p

Greg Shah, 03/21/2013 09:48 AM

Download (67.6 KB)

 
1
def temp-table tt1 field fi as int
2
                   field fd as dec
3
                   field fi64 as int64
4
                   field fda as date
5
                   field fdt as datetime
6
                   field fdtz as datetime-tz
7
                   field fbool as log
8
                   field fh as handle
9
                   field fch as char
10
                   field fr1 as recid
11
                   field fr2 as rowid
12
                   field fm2 as raw
13
                   field na as char.
14

    
15
function bothIndeterminate returns int (input bogus as int) forward.
16
function op1Indeterminate returns int (input bogus as int) forward.
17
function op2Indeterminate returns int (input bogus as int) forward.
18

    
19
def var i as int init 14.
20
def var d as dec init 30.0.
21
def var i64 as int64 init 9.
22
def var da as date init today.
23
def var dt as datetime init ?. 
24
def var dtz as datetime-tz init ?.
25
def var bool as log init true.
26
def var h as handle.
27
def var h2 as handle.
28
def var ch as char init "99".
29
def var lch as longchar init "99999".
30
def var r1 as recid.
31
def var r2 as rowid.
32
def var m1 as memptr.
33
def var ptr as memptr.
34
def var m2 as raw.
35

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

    
38
create tt1.
39

    
40
set-size(ptr) = 128.
41

    
42
h = buffer tt1:handle.
43

    
44
bothIndeterminate(?).
45
bothIndeterminate(14).
46
op1Indeterminate(?).
47
op1Indeterminate(14).
48
op2Indeterminate(?).
49
op2Indeterminate(14).
50

    
51
function bothIndeterminate returns int (input bogus as int):
52
   
53
   message "bothIndeterminate(" + (if bogus = ? then "?" else string(bogus)) + ")".
54
   
55
   /* both operands may be non-typable */
56
   /* all data types can be assigned but there can be runtime errors depending on the contents of the field */
57
   /* the example here is the use of a character field and "" empty string works for most types except logical and memptr */
58
   /* the type of the field is not known at compile time in the 4GL, failures occur at runtime */
59
   
60
   tt1.na = "".
61
   
62
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
63
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
64
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
65
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
66
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
67
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
68
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
69
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
70
   dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
71
   tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
72
   dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
73
   tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
74
   
75
   /* both of these will generate a runtime error if the input string is not a valid logical */
76
   tt1.na = "yes".
77
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value. 
78
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
79
   tt1.na = "".
80
   
81
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
82
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
83
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
84
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
85
   lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
86
   r1        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
87
   tt1.fr1   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
88
   r2        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
89
   tt1.fr2   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
90
   
91
   /* always a runtime error with a character field, so we use raw here, but the assigned to var will become broken */
92
   m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else h:buffer-field("fm2"):buffer-value.
93
   
94
   m2        = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
95
   tt1.fm2   = if bogus <> ? then h:buffer-field("na"):buffer-value else h:buffer-field("na"):buffer-value.
96
   
97
   return bogus.
98
end.
99

    
100
function op1Indeterminate returns int (input bogus as int):
101

    
102
   message "op1Indeterminate(" + (if bogus = ? then "?" else string(bogus)) + ")".
103
   
104
   /* when op1 is non-typable, op2 will depend on the type being assigned to */
105
   
106
   tt1.na = "".
107
   set-size(ptr) = 128.
108
   put-long(ptr, 1) = 30.
109
   
110
   /* integer/int64 assignment can have op2 as int, int64, dec, handle, recid, memptr (runtime */
111
   /* error whether or not it is initialized) or unknown value literal */
112
   
113
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
114
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
115
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
116
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
117
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
118
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
119
   i         = if bogus <> ? then h:buffer-field("na"):buffer-value else r1.
120
   
121
   /* compiles but always creates a runtime error */
122
   if bypass-runtime-error then
123
      i         = if bogus <> ? then h:buffer-field("na"):buffer-value else ptr.
124
   
125
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
126
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
127
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
128
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
129
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
130
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
131
   tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else r1.
132
   
133
   /* compiles but always creates a runtime error */
134
   if bypass-runtime-error then
135
      tt1.fi    = if bogus <> ? then h:buffer-field("na"):buffer-value else ptr.
136
   
137
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
138
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
139
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
140
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
141
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
142
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
143
   i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else r1.
144
   
145
   /* compiles but always creates a runtime error */
146
   if bypass-runtime-error then
147
      i64       = if bogus <> ? then h:buffer-field("na"):buffer-value else ptr.
148
   
149
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
150
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
151
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
152
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
153
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
154
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
155
   tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else r1.
156
   
157
   /* compiles but always creates a runtime error */
158
   if bypass-runtime-error then
159
      tt1.fi64  = if bogus <> ? then h:buffer-field("na"):buffer-value else ptr.
160
   
161
   /* decimal assignment can have op2 as int, int64, dec or unknown value literal */
162
   
163
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
164
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
165
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
166
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
167
   d         = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
168
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
169
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
170
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
171
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else d.
172
   tt1.fd    = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
173
   
174
   /* date/datetime/datetime-tz assignment can have op2 as date, datetime, datetime-tz or unknown value literal */
175
   /* date can also have int, int64 as op2 */
176
   /* datetime/datetime-tz can compile with int, int64 as op2, but they generate runtime errors */  
177
   
178
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
179
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
180
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
181
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
182
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
183
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
184
   da        = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
185
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
186
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
187
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
188
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
189
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
190
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
191
   tt1.fda   = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
192
   dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
193
   
194
   /* compiles but always creates a runtime error */
195
   if bypass-runtime-error then
196
   do:   
197
      dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
198
      dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
199
      dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
200
   end.
201
   
202
   dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
203
   dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
204
   dt        = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
205
   tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
206
   
207
   /* compiles but always creates a runtime error */
208
   if bypass-runtime-error then
209
   do:   
210
      tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
211
      tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
212
      tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
213
   end.
214
   
215
   tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
216
   tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
217
   tt1.fdt   = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
218
   dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
219
   
220
   /* compiles but always creates a runtime error */
221
   if bypass-runtime-error then
222
   do:   
223
      dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
224
      dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
225
      dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
226
   end.
227
   
228
   dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
229
   dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
230
   dtz       = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
231
   tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
232
   
233
   /* compiles but always creates a runtime error */
234
   if bypass-runtime-error then
235
   do:   
236
      tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
237
      tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
238
      tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
239
   end.
240
   
241
   tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else da.
242
   tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else dt.
243
   tt1.fdtz  = if bogus <> ? then h:buffer-field("na"):buffer-value else dtz.
244
   
245
   /* logical assignment can have op2 as logical, integer, int64 or unknown value literal */
246
   
247
   tt1.na = "yes".
248
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
249
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
250
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
251
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
252
   bool      = if bogus <> ? then h:buffer-field("na"):buffer-value else bool.
253
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
254
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
255
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
256
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
257
   tt1.fbool = if bogus <> ? then h:buffer-field("na"):buffer-value else bool.
258
   tt1.na = "".
259
   
260
   /* handle assignment can have op2 as handle, integer, int64 or unknown value literal */
261
   
262
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
263
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
264
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
265
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
266
   h2        = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
267
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
268
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
269
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
270
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
271
   tt1.fh    = if bogus <> ? then h:buffer-field("na"):buffer-value else h.
272
   
273
   /* character assignment can have op2 as character, longchar, integer, int64 or unknown value literal */
274
   
275
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
276
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
277
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
278
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
279
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else ch.
280
   ch        = if bogus <> ? then h:buffer-field("na"):buffer-value else lch.
281
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
282
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
283
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
284
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
285
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else ch.
286
   tt1.fch   = if bogus <> ? then h:buffer-field("na"):buffer-value else lch.
287
   
288
   /* longchar assignment can have op2 as character, longchar, integer, int64 (the numerics cause a runtime error) or unknown value literal */
289
   
290
   lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else ?.
291
   
292
   /* compiles but creates a runtime error */
293
   if bypass-runtime-error then
294
   do:   
295
      lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else 0.
296
      lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else i.
297
      lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else i64.
298
   end.
299
   
300
   lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else ch.
301
   lch       = if bogus <> ? then h:buffer-field("na"):buffer-value else lch.
302
   
303
   /* memptr assignment can have op2 as memptr, raw, integer, int64 or unknown value literal */
304
   /* the numerics and the unknown value literal cause runtime errors */
305
   
306
   /* compiles but creates a runtime error */
307
   if bypass-runtime-error then
308
   do:
309
      m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ?.
310
      m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else 0.
311
      m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i.
312
      m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i64.
313
   end.
314
   
315
   m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ptr.
316
   m1        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else m2.
317
   
318
   /* raw assignment can have op2 as memptr, raw, integer, int64 or unknown value literal */
319
   /* the numerics cause runtime errors */
320
   
321
   m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ?.
322
   
323
   /* compiles but creates a runtime error */
324
   if bypass-runtime-error then
325
   do:
326
      m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else 0.
327
      m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i.
328
      m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i64.
329
   end.
330
   
331
   m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ptr.
332
   m2        = if bogus <> ? then h:buffer-field("fm2"):buffer-value else m2.
333
   
334
   tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ?.
335
   
336
   /* compiles but creates a runtime error */
337
   if bypass-runtime-error then
338
   do:   
339
      tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else 0.
340
      tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i.
341
      tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else i64.
342
   end.
343
   
344
   tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else ptr.
345
   tt1.fm2   = if bogus <> ? then h:buffer-field("fm2"):buffer-value else m2.
346
   
347
   /* recid assignment can have op2 as recid, integer, int64 or unknown value literal */
348
   
349
   r1        = if bogus <> ? then h:buffer-field("fr1"):buffer-value else ?.
350
   r1        = if bogus <> ? then h:buffer-field("fr1"):buffer-value else 0.
351
   r1        = if bogus <> ? then h:buffer-field("fr1"):buffer-value else i.
352
   r1        = if bogus <> ? then h:buffer-field("fr1"):buffer-value else i64.
353
   r1        = if bogus <> ? then h:buffer-field("fr1"):buffer-value else r1.
354
   
355
   tt1.fr1   = if bogus <> ? then h:buffer-field("fr1"):buffer-value else ?.
356
   tt1.fr1   = if bogus <> ? then h:buffer-field("fr1"):buffer-value else 0.
357
   tt1.fr1   = if bogus <> ? then h:buffer-field("fr1"):buffer-value else i.
358
   tt1.fr1   = if bogus <> ? then h:buffer-field("fr1"):buffer-value else i64.
359
   tt1.fr1   = if bogus <> ? then h:buffer-field("fr1"):buffer-value else r1.
360
      
361
   /* rowid assignment can have op2 as rowid, integer, int64 or unknown value literal */
362
   /* the numerics cause runtime errors */
363
   
364
   r2        = if bogus <> ? then h:buffer-field("fr2"):buffer-value else ?.
365
   
366
   /* compiles but creates a runtime error */
367
   if bypass-runtime-error then
368
   do:
369
      r2        = if bogus <> ? then h:buffer-field("fr2"):buffer-value else 0.
370
      r2        = if bogus <> ? then h:buffer-field("fr2"):buffer-value else i.
371
      r2        = if bogus <> ? then h:buffer-field("fr2"):buffer-value else i64.
372
   end.
373
   
374
   r2        = if bogus <> ? then h:buffer-field("fr2"):buffer-value else r2.
375
   
376
   tt1.fr2   = if bogus <> ? then h:buffer-field("fr2"):buffer-value else ?.
377
   
378
   /* compiles but creates a runtime error */
379
   if bypass-runtime-error then
380
   do:
381
      tt1.fr2   = if bogus <> ? then h:buffer-field("fr2"):buffer-value else 0.
382
      tt1.fr2   = if bogus <> ? then h:buffer-field("fr2"):buffer-value else i.
383
      tt1.fr2   = if bogus <> ? then h:buffer-field("fr2"):buffer-value else i64.
384
   end.
385
   
386
   tt1.fr2   = if bogus <> ? then h:buffer-field("fr2"):buffer-value else r2.
387
   
388
   return bogus.
389
end.
390

    
391
function op2Indeterminate returns int (input bogus as int):
392

    
393
   message "op2Indeterminate(" + (if bogus = ? then "?" else string(bogus)) + ")".
394
   
395
   /* when op2 is non-typable, op1 can be anything but there can be runtime errors depending in the types and contents */
396
   /* some assignments cannot occur without runtime errors */
397
   
398
   /* integer/int64 can take all types but longchar, rowid, memptr and raw cause runtime errors */
399
   
400
   i         = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
401
   i         = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
402
   i         = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
403
   i         = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
404
   i         = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
405
   i         = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
406
   i         = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
407
   i         = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
408
   i         = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
409
   i         = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
410
   i         = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
411
   i         = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
412
   i         = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
413
   
414
   /* compiles but always creates a runtime error */
415
   if bypass-runtime-error then
416
      i         = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
417
   
418
   i         = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
419
   i         = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
420
   
421
   /* compiles but always creates a runtime error */
422
   if bypass-runtime-error then
423
   do:   
424
      i         = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
425
      i         = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
426
      i         = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
427
   end.
428
   
429
   tt1.fi    = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
430
   tt1.fi    = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
431
   tt1.fi    = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
432
   tt1.fi    = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
433
   tt1.fi    = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
434
   tt1.fi    = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
435
   tt1.fi    = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
436
   tt1.fi    = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
437
   tt1.fi    = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
438
   tt1.fi    = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
439
   tt1.fi    = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
440
   tt1.fi    = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
441
   tt1.fi    = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
442
   
443
   /* compiles but always creates a runtime error */
444
   if bypass-runtime-error then
445
      tt1.fi    = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
446
   
447
   tt1.fi    = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
448
   tt1.fi    = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
449
   
450
   /* compiles but always creates a runtime error */
451
   if bypass-runtime-error then
452
   do:   
453
      tt1.fi    = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
454
      tt1.fi    = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
455
      tt1.fi    = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
456
   end.
457
   
458
   i64       = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
459
   i64       = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
460
   i64       = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
461
   i64       = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
462
   i64       = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
463
   i64       = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
464
   i64       = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
465
   i64       = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
466
   i64       = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
467
   i64       = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
468
   i64       = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
469
   i64       = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
470
   i64       = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
471
   
472
   
473
   /* compiles but always creates a runtime error */
474
   if bypass-runtime-error then
475
      i64       = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
476
   
477
   i64       = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
478
   i64       = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
479
   
480
   /* compiles but always creates a runtime error */
481
   if bypass-runtime-error then
482
   do:   
483
      i64       = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
484
      i64       = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
485
      i64       = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
486
   end.
487
   
488
   tt1.fi64  = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
489
   tt1.fi64  = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
490
   tt1.fi64  = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
491
   tt1.fi64  = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
492
   tt1.fi64  = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
493
   tt1.fi64  = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
494
   tt1.fi64  = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
495
   tt1.fi64  = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
496
   tt1.fi64  = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
497
   tt1.fi64  = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
498
   tt1.fi64  = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
499
   tt1.fi64  = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
500
   tt1.fi64  = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
501
   
502
   /* compiles but always creates a runtime error */
503
   if bypass-runtime-error then
504
      tt1.fi64  = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
505
   
506
   tt1.fi64  = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
507
   tt1.fi64  = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
508
   
509
   /* compiles but always creates a runtime error */
510
   if bypass-runtime-error then
511
   do:   
512
      tt1.fi64  = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
513
      tt1.fi64  = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
514
      tt1.fi64  = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
515
   end.
516
   
517
   /* decimal can take all types but longchar, rowid, memptr and raw cause runtime errors */
518
   
519
   d         = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
520
   d         = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
521
   d         = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
522
   d         = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
523
   d         = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
524
   d         = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
525
   d         = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
526
   d         = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
527
   d         = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
528
   d         = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
529
   d         = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
530
   d         = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
531
   d         = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
532
   
533
   /* compiles but always creates a runtime error */
534
   if bypass-runtime-error then
535
      d         = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
536
      
537
   d         = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
538
   d         = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
539
   
540
   /* compiles but always creates a runtime error */
541
   if bypass-runtime-error then
542
   do:   
543
      d         = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
544
      d         = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
545
      d         = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
546
   end.
547
   
548
   tt1.fd    = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
549
   tt1.fd    = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
550
   tt1.fd    = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
551
   tt1.fd    = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
552
   tt1.fd    = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
553
   tt1.fd    = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
554
   tt1.fd    = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
555
   tt1.fd    = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
556
   tt1.fd    = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
557
   tt1.fd    = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
558
   tt1.fd    = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
559
   tt1.fd    = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
560
   tt1.fd    = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
561
   
562
   /* compiles but always creates a runtime error */
563
   if bypass-runtime-error then
564
      tt1.fd    = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
565
   
566
   tt1.fd    = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
567
   tt1.fd    = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
568
   
569
   /* compiles but always creates a runtime error */
570
   if bypass-runtime-error then
571
   do:   
572
      tt1.fd    = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
573
      tt1.fd    = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
574
      tt1.fd    = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
575
   end.
576
   
577
   /* date can take all types but longchar, rowid, memptr and raw cause runtime errors */
578
   
579
   da        = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
580
   da        = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
581
   da        = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
582
   da        = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
583
   da        = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
584
   da        = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
585
   da        = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
586
   da        = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
587
   da        = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
588
   da        = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
589
   da        = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
590
   da        = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
591
   da        = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
592
   
593
   /* compiles but always creates a runtime error */
594
   if bypass-runtime-error then
595
      da        = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
596
   
597
   da        = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
598
   da        = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
599
   
600
   /* compiles but always creates a runtime error */
601
   if bypass-runtime-error then
602
   do:   
603
      da        = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
604
      da        = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
605
      da        = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
606
   end.
607
   
608
   tt1.fda   = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
609
   tt1.fda   = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
610
   tt1.fda   = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
611
   tt1.fda   = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
612
   tt1.fda   = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
613
   tt1.fda   = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
614
   tt1.fda   = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
615
   tt1.fda   = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
616
   tt1.fda   = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
617
   tt1.fda   = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
618
   tt1.fda   = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
619
   tt1.fda   = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
620
   tt1.fda   = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
621
   
622
   /* compiles but always creates a runtime error */
623
   if bypass-runtime-error then
624
      tt1.fda   = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
625
   
626
   tt1.fda   = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
627
   tt1.fda   = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
628
   
629
   /* compiles but always creates a runtime error */
630
   if bypass-runtime-error then
631
   do:   
632
      tt1.fda   = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
633
      tt1.fda   = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
634
      tt1.fda   = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
635
   end.
636
      
637
   /* datetime/datetime-tz can take all types but integer, int64, logical, handle, */
638
   /* longchar, recid, rowid, memptr and raw cause runtime errors; only the date types, */
639
   /* character and unknown value literals don't cause runtime errors */
640
   
641
   dt        = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
642
      
643
   /* compiles but always creates a runtime error */
644
   if bypass-runtime-error then
645
   do:   
646
      dt        = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
647
      dt        = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
648
      dt        = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
649
      dt        = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
650
   end.
651
   
652
   dt        = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
653
   dt        = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
654
   dt        = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
655
   
656
   /* compiles but always creates a runtime error */
657
   if bypass-runtime-error then
658
   do:   
659
      dt        = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
660
      dt        = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
661
      dt        = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
662
      dt        = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
663
   end.
664
   
665
   dt        = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
666
   
667
   /* compiles but always creates a runtime error */
668
   if bypass-runtime-error then
669
      dt        = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
670
   
671
   dt        = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
672
   
673
   /* compiles but always creates a runtime error */
674
   if bypass-runtime-error then
675
   do:   
676
      dt        = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
677
      dt        = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
678
      dt        = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
679
      dt        = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
680
   end.
681
      
682
   tt1.fdt   = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
683
      
684
   /* compiles but always creates a runtime error */
685
   if bypass-runtime-error then
686
   do:   
687
      tt1.fdt   = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
688
      tt1.fdt   = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
689
      tt1.fdt   = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
690
      tt1.fdt   = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
691
   end.
692
   
693
   tt1.fdt   = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
694
   tt1.fdt   = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
695
   tt1.fdt   = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
696
   
697
   /* compiles but always creates a runtime error */
698
   if bypass-runtime-error then
699
   do:   
700
      tt1.fdt   = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
701
      tt1.fdt   = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
702
      tt1.fdt   = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
703
      tt1.fdt   = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
704
   end.
705
   
706
   tt1.fdt   = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
707
   
708
   /* compiles but always creates a runtime error */
709
   if bypass-runtime-error then
710
      tt1.fdt   = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
711
   
712
   tt1.fdt   = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
713
   
714
   /* compiles but always creates a runtime error */
715
   if bypass-runtime-error then
716
   do:   
717
      tt1.fdt   = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
718
      tt1.fdt   = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
719
      tt1.fdt   = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
720
      tt1.fdt   = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
721
   end.
722
   
723
   dtz       = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
724
   
725
   /* compiles but always creates a runtime error */
726
   if bypass-runtime-error then
727
   do:   
728
      dtz       = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
729
      dtz       = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
730
      dtz       = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
731
      dtz       = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
732
   end.
733
   
734
   dtz       = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
735
   dtz       = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
736
   dtz       = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
737
   
738
   /* compiles but always creates a runtime error */
739
   if bypass-runtime-error then
740
   do:   
741
      dtz       = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
742
      dtz       = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
743
      dtz       = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
744
      dtz       = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
745
   end.
746
   
747
   dtz       = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
748
   
749
   /* compiles but always creates a runtime error */
750
   if bypass-runtime-error then
751
      dtz       = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
752
   
753
   dtz       = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
754
   
755
   /* compiles but always creates a runtime error */
756
   if bypass-runtime-error then
757
   do:   
758
      dtz       = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
759
      dtz       = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
760
      dtz       = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
761
      dtz       = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
762
   end.
763
   
764
   tt1.fdtz  = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
765
      
766
   /* compiles but always creates a runtime error */
767
   if bypass-runtime-error then
768
   do:   
769
      tt1.fdtz  = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
770
      tt1.fdtz  = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
771
      tt1.fdtz  = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
772
      tt1.fdtz  = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
773
   end.
774
   
775
   tt1.fdtz  = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
776
   tt1.fdtz  = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
777
   tt1.fdtz  = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
778
   
779
   /* compiles but always creates a runtime error */
780
   if bypass-runtime-error then
781
   do:   
782
      tt1.fdtz  = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
783
      tt1.fdtz  = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
784
      tt1.fdtz  = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
785
      tt1.fdtz  = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
786
   end.
787
   
788
   tt1.fdtz  = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
789
   
790
   /* compiles but always creates a runtime error */
791
   if bypass-runtime-error then
792
      tt1.fdtz  = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
793
   
794
   tt1.fdtz  = if bogus <> ? then ""    else h:buffer-field("na"):buffer-value.
795
   
796
   /* compiles but always creates a runtime error */
797
   if bypass-runtime-error then
798
   do:   
799
      tt1.fdtz  = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
800
      tt1.fdtz  = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
801
      tt1.fdtz  = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
802
      tt1.fdtz  = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
803
   end.
804
   
805
   /* logical can take all types but longchar, rowid, memptr and raw cause runtime errors */
806
   
807
   tt1.na = "yes".
808
   ch = "yes".
809
   bool      = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
810
   bool      = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
811
   bool      = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
812
   bool      = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
813
   bool      = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
814
   bool      = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
815
   bool      = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
816
   bool      = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
817
   bool      = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
818
   bool      = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
819
   bool      = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
820
   bool      = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
821
   bool      = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
822
   
823
   /* compiles but always creates a runtime error */
824
   if bypass-runtime-error then
825
      bool      = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
826
   
827
   bool      = if bogus <> ? then "yes" else h:buffer-field("na"):buffer-value.
828
   bool      = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
829
   
830
   /* compiles but always creates a runtime error */
831
   if bypass-runtime-error then
832
   do:   
833
      bool      = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
834
      bool      = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
835
      bool      = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
836
   end.
837
   
838
   tt1.fbool = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
839
   tt1.fbool = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
840
   tt1.fbool = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
841
   tt1.fbool = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
842
   tt1.fbool = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
843
   tt1.fbool = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
844
   tt1.fbool = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
845
   tt1.fbool = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
846
   tt1.fbool = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
847
   tt1.fbool = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
848
   tt1.fbool = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
849
   tt1.fbool = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
850
   tt1.fbool = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
851
   
852
   /* compiles but always creates a runtime error */
853
   if bypass-runtime-error then
854
      tt1.fbool = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
855
   
856
   tt1.fbool = if bogus <> ? then "yes" else h:buffer-field("na"):buffer-value.
857
   tt1.fbool = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
858
   
859
   /* compiles but always creates a runtime error */
860
   if bypass-runtime-error then
861
   do:   
862
      tt1.fbool = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
863
      tt1.fbool = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
864
      tt1.fbool = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
865
   end.
866
   tt1.na = "".
867
   ch = "".
868
   
869
   /* handle can take all types but longchar, rowid, memptr and raw cause runtime errors */
870
   
871
   h2        = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
872
   h2        = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
873
   h2        = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
874
   h2        = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
875
   h2        = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
876
   h2        = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
877
   h2        = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
878
   h2        = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
879
   h2        = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
880
   h2        = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
881
   h2        = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
882
   h2        = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
883
   h2        = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
884
   
885
   /* compiles but always creates a runtime error */
886
   if bypass-runtime-error then
887
      h2        = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
888
   
889
   h2        = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
890
   h2        = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
891
   
892
   /* compiles but always creates a runtime error */
893
   if bypass-runtime-error then
894
   do:   
895
      h2        = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
896
      h2        = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
897
      h2        = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
898
   end.
899
   
900
   tt1.fh    = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
901
   tt1.fh    = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
902
   tt1.fh    = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
903
   tt1.fh    = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
904
   tt1.fh    = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
905
   tt1.fh    = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
906
   tt1.fh    = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
907
   tt1.fh    = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
908
   tt1.fh    = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
909
   tt1.fh    = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
910
   tt1.fh    = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
911
   tt1.fh    = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
912
   tt1.fh    = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
913
   
914
   /* compiles but always creates a runtime error */
915
   if bypass-runtime-error then
916
   do:   
917
      tt1.fh    = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
918
   end.
919
   
920
   tt1.fh    = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
921
   tt1.fh    = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
922
   
923
   /* compiles but always creates a runtime error */
924
   if bypass-runtime-error then
925
   do:   
926
      tt1.fh    = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
927
      tt1.fh    = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
928
      tt1.fh    = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
929
   end.
930
   
931
   /* character can take all types but rowid, memptr and raw cause runtime errors */
932
   
933
   ch        = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
934
   ch        = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
935
   ch        = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
936
   ch        = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
937
   ch        = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
938
   ch        = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
939
   ch        = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
940
   ch        = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
941
   ch        = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
942
   ch        = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
943
   ch        = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
944
   ch        = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
945
   ch        = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
946
   ch        = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
947
   ch        = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
948
   ch        = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
949
   
950
   /* compiles but always creates a runtime error */
951
   if bypass-runtime-error then
952
   do:   
953
      ch        = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
954
      ch        = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
955
      ch        = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
956
   end.
957
   
958
   tt1.fch   = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
959
   tt1.fch   = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
960
   tt1.fch   = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
961
   tt1.fch   = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
962
   tt1.fch   = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
963
   tt1.fch   = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
964
   tt1.fch   = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
965
   tt1.fch   = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
966
   tt1.fch   = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
967
   tt1.fch   = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
968
   tt1.fch   = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
969
   tt1.fch   = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
970
   tt1.fch   = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
971
   tt1.fch   = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
972
   tt1.fch   = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
973
   tt1.fch   = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
974
   
975
   /* compiles but always creates a runtime error */
976
   if bypass-runtime-error then
977
   do:   
978
      tt1.fch   = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
979
      tt1.fch   = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
980
      tt1.fch   = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
981
   end.
982
   
983
   /* longchar can take all types but anyting except character, longchar and unknown */
984
   /* value literal cause runtime errors */
985
      
986
   lch       = if bogus <> ? then ?     else h:buffer-field("na"):buffer-value.
987
   
988
   /* compiles but always creates a runtime error */
989
   if bypass-runtime-error then
990
   do:   
991
      lch       = if bogus <> ? then 0     else h:buffer-field("na"):buffer-value.
992
      lch       = if bogus <> ? then i     else h:buffer-field("na"):buffer-value.
993
      lch       = if bogus <> ? then d     else h:buffer-field("na"):buffer-value.
994
      lch       = if bogus <> ? then i64   else h:buffer-field("na"):buffer-value.
995
      lch       = if bogus <> ? then da    else h:buffer-field("na"):buffer-value.
996
      lch       = if bogus <> ? then dt    else h:buffer-field("na"):buffer-value.
997
      lch       = if bogus <> ? then dtz   else h:buffer-field("na"):buffer-value.
998
      lch       = if bogus <> ? then bool  else h:buffer-field("na"):buffer-value.
999
      lch       = if bogus <> ? then true  else h:buffer-field("na"):buffer-value.
1000
      lch       = if bogus <> ? then false else h:buffer-field("na"):buffer-value.
1001
      lch       = if bogus <> ? then h     else h:buffer-field("na"):buffer-value.
1002
   end.
1003
   
1004
   lch       = if bogus <> ? then ch    else h:buffer-field("na"):buffer-value.
1005
   lch       = if bogus <> ? then lch   else h:buffer-field("na"):buffer-value.
1006
   lch       = if bogus <> ? then "14"  else h:buffer-field("na"):buffer-value.
1007
   
1008
   /* compiles but always creates a runtime error */
1009
   if bypass-runtime-error then
1010
   do:
1011
      lch       = if bogus <> ? then r1    else h:buffer-field("na"):buffer-value.
1012
      lch       = if bogus <> ? then r2    else h:buffer-field("na"):buffer-value.
1013
      lch       = if bogus <> ? then m1    else h:buffer-field("na"):buffer-value.
1014
      lch       = if bogus <> ? then m2    else h:buffer-field("na"):buffer-value.
1015
   end.
1016
   
1017
   /* memptr can take all types but anyting except memptr, raw and unknown value literal */
1018
   /* cause runtime errors */
1019
   
1020
   m1        = if bogus <> ? then ?     else h:buffer-field("fm2"):buffer-value.
1021
   
1022
   /* compiles but always creates a runtime error */
1023
   if bypass-runtime-error then
1024
   do:   
1025
      m1        = if bogus <> ? then 0     else h:buffer-field("fm2"):buffer-value.
1026
      m1        = if bogus <> ? then i     else h:buffer-field("fm2"):buffer-value.
1027
      m1        = if bogus <> ? then d     else h:buffer-field("fm2"):buffer-value.
1028
      m1        = if bogus <> ? then i64   else h:buffer-field("fm2"):buffer-value.
1029
      m1        = if bogus <> ? then da    else h:buffer-field("fm2"):buffer-value.
1030
      m1        = if bogus <> ? then dt    else h:buffer-field("fm2"):buffer-value.
1031
      m1        = if bogus <> ? then dtz   else h:buffer-field("fm2"):buffer-value.
1032
      m1        = if bogus <> ? then bool  else h:buffer-field("fm2"):buffer-value.
1033
      m1        = if bogus <> ? then true  else h:buffer-field("fm2"):buffer-value.
1034
      m1        = if bogus <> ? then false else h:buffer-field("fm2"):buffer-value.
1035
      m1        = if bogus <> ? then h     else h:buffer-field("fm2"):buffer-value.
1036
      m1        = if bogus <> ? then ch    else h:buffer-field("fm2"):buffer-value.
1037
      m1        = if bogus <> ? then lch   else h:buffer-field("fm2"):buffer-value.
1038
      m1        = if bogus <> ? then "14"  else h:buffer-field("fm2"):buffer-value.
1039
      m1        = if bogus <> ? then r1    else h:buffer-field("fm2"):buffer-value.
1040
      m1        = if bogus <> ? then r2    else h:buffer-field("fm2"):buffer-value.
1041
   end.
1042

    
1043
   m1        = if bogus <> ? then ptr   else h:buffer-field("fm2"):buffer-value.
1044
   m1        = if bogus <> ? then m2    else h:buffer-field("fm2"):buffer-value.
1045
   
1046
   /* raw can take all types but anyting except memptr, raw and unknown value literal */
1047
   /* cause runtime errors */
1048
   
1049
   m2        = if bogus <> ? then ?     else h:buffer-field("fm2"):buffer-value.
1050
   
1051
   /* compiles but always creates a runtime error */
1052
   if bypass-runtime-error then
1053
   do:   
1054
      m2        = if bogus <> ? then 0     else h:buffer-field("fm2"):buffer-value.
1055
      m2        = if bogus <> ? then i     else h:buffer-field("fm2"):buffer-value.
1056
      m2        = if bogus <> ? then d     else h:buffer-field("fm2"):buffer-value.
1057
      m2        = if bogus <> ? then i64   else h:buffer-field("fm2"):buffer-value.
1058
      m2        = if bogus <> ? then da    else h:buffer-field("fm2"):buffer-value.
1059
      m2        = if bogus <> ? then dt    else h:buffer-field("fm2"):buffer-value.
1060
      m2        = if bogus <> ? then dtz   else h:buffer-field("fm2"):buffer-value.
1061
      m2        = if bogus <> ? then bool  else h:buffer-field("fm2"):buffer-value.
1062
      m2        = if bogus <> ? then true  else h:buffer-field("fm2"):buffer-value.
1063
      m2        = if bogus <> ? then false else h:buffer-field("fm2"):buffer-value.
1064
      m2        = if bogus <> ? then h     else h:buffer-field("fm2"):buffer-value.
1065
      m2        = if bogus <> ? then ch    else h:buffer-field("fm2"):buffer-value.
1066
      m2        = if bogus <> ? then lch   else h:buffer-field("fm2"):buffer-value.
1067
      m2        = if bogus <> ? then "14"  else h:buffer-field("fm2"):buffer-value.
1068
      m2        = if bogus <> ? then r1    else h:buffer-field("fm2"):buffer-value.
1069
      m2        = if bogus <> ? then r2    else h:buffer-field("fm2"):buffer-value.
1070
   end.
1071

    
1072
   m2        = if bogus <> ? then ptr   else h:buffer-field("fm2"):buffer-value.
1073
   m2        = if bogus <> ? then m2    else h:buffer-field("fm2"):buffer-value.
1074
   
1075
   tt1.fm2   = if bogus <> ? then ?     else h:buffer-field("fm2"):buffer-value.
1076
   
1077
   /* compiles but always creates a runtime error */
1078
   if bypass-runtime-error then
1079
   do:   
1080
      tt1.fm2   = if bogus <> ? then 0     else h:buffer-field("fm2"):buffer-value.
1081
      tt1.fm2   = if bogus <> ? then i     else h:buffer-field("fm2"):buffer-value.
1082
      tt1.fm2   = if bogus <> ? then d     else h:buffer-field("fm2"):buffer-value.
1083
      tt1.fm2   = if bogus <> ? then i64   else h:buffer-field("fm2"):buffer-value.
1084
      tt1.fm2   = if bogus <> ? then da    else h:buffer-field("fm2"):buffer-value.
1085
      tt1.fm2   = if bogus <> ? then dt    else h:buffer-field("fm2"):buffer-value.
1086
      tt1.fm2   = if bogus <> ? then dtz   else h:buffer-field("fm2"):buffer-value.
1087
      tt1.fm2   = if bogus <> ? then bool  else h:buffer-field("fm2"):buffer-value.
1088
      tt1.fm2   = if bogus <> ? then true  else h:buffer-field("fm2"):buffer-value.
1089
      tt1.fm2   = if bogus <> ? then false else h:buffer-field("fm2"):buffer-value.
1090
      tt1.fm2   = if bogus <> ? then h     else h:buffer-field("fm2"):buffer-value.
1091
      tt1.fm2   = if bogus <> ? then ch    else h:buffer-field("fm2"):buffer-value.
1092
      tt1.fm2   = if bogus <> ? then lch   else h:buffer-field("fm2"):buffer-value.
1093
      tt1.fm2   = if bogus <> ? then "14"  else h:buffer-field("fm2"):buffer-value.
1094
      tt1.fm2   = if bogus <> ? then r1    else h:buffer-field("fm2"):buffer-value.
1095
      tt1.fm2   = if bogus <> ? then r2    else h:buffer-field("fm2"):buffer-value.
1096
   end.
1097

    
1098
   tt1.fm2    = if bogus <> ? then ptr   else h:buffer-field("fm2"):buffer-value.
1099
   tt1.fm2    = if bogus <> ? then m2    else h:buffer-field("fm2"):buffer-value.
1100
   
1101
   /* recid can take all types but longchar, memptr, raw and unknown value literal */
1102
   /* cause runtime errors */
1103
   
1104
   r1        = if bogus <> ? then ?     else h:buffer-field("fr1"):buffer-value.
1105
   r1        = if bogus <> ? then 0     else h:buffer-field("fr1"):buffer-value.
1106
   r1        = if bogus <> ? then i     else h:buffer-field("fr1"):buffer-value.
1107
   r1        = if bogus <> ? then d     else h:buffer-field("fr1"):buffer-value.
1108
   r1        = if bogus <> ? then i64   else h:buffer-field("fr1"):buffer-value.
1109
   r1        = if bogus <> ? then da    else h:buffer-field("fr1"):buffer-value.
1110
   r1        = if bogus <> ? then dt    else h:buffer-field("fr1"):buffer-value.
1111
   r1        = if bogus <> ? then dtz   else h:buffer-field("fr1"):buffer-value.
1112
   r1        = if bogus <> ? then bool  else h:buffer-field("fr1"):buffer-value.
1113
   r1        = if bogus <> ? then true  else h:buffer-field("fr1"):buffer-value.
1114
   r1        = if bogus <> ? then false else h:buffer-field("fr1"):buffer-value.
1115
   r1        = if bogus <> ? then h     else h:buffer-field("fr1"):buffer-value.
1116
   r1        = if bogus <> ? then ch    else h:buffer-field("fr1"):buffer-value.
1117
   
1118
   /* compiles but always creates a runtime error */
1119
   if bypass-runtime-error then
1120
      r1        = if bogus <> ? then lch   else h:buffer-field("fr1"):buffer-value.
1121
   
1122
   r1        = if bogus <> ? then "14"  else h:buffer-field("fr1"):buffer-value.
1123
   r1        = if bogus <> ? then r1    else h:buffer-field("fr1"):buffer-value.
1124
   r1        = if bogus <> ? then r2    else h:buffer-field("fr1"):buffer-value.
1125
   
1126
   /* compiles but always creates a runtime error */
1127
   if bypass-runtime-error then
1128
   do:   
1129
      r1        = if bogus <> ? then ptr   else h:buffer-field("fr1"):buffer-value.
1130
      r1        = if bogus <> ? then m2    else h:buffer-field("fr1"):buffer-value.
1131
   end.
1132
   
1133
   tt1.fr1    = if bogus <> ? then ?     else h:buffer-field("fr1"):buffer-value.
1134
   tt1.fr1    = if bogus <> ? then 0     else h:buffer-field("fr1"):buffer-value.
1135
   tt1.fr1    = if bogus <> ? then i     else h:buffer-field("fr1"):buffer-value.
1136
   tt1.fr1    = if bogus <> ? then d     else h:buffer-field("fr1"):buffer-value.
1137
   tt1.fr1    = if bogus <> ? then i64   else h:buffer-field("fr1"):buffer-value.
1138
   tt1.fr1    = if bogus <> ? then da    else h:buffer-field("fr1"):buffer-value.
1139
   tt1.fr1    = if bogus <> ? then dt    else h:buffer-field("fr1"):buffer-value.
1140
   tt1.fr1    = if bogus <> ? then dtz   else h:buffer-field("fr1"):buffer-value.
1141
   tt1.fr1    = if bogus <> ? then bool  else h:buffer-field("fr1"):buffer-value.
1142
   tt1.fr1    = if bogus <> ? then true  else h:buffer-field("fr1"):buffer-value.
1143
   tt1.fr1    = if bogus <> ? then false else h:buffer-field("fr1"):buffer-value.
1144
   tt1.fr1    = if bogus <> ? then h     else h:buffer-field("fr1"):buffer-value.
1145
   tt1.fr1    = if bogus <> ? then ch    else h:buffer-field("fr1"):buffer-value.
1146
   
1147
   /* compiles but always creates a runtime error */
1148
   if bypass-runtime-error then
1149
      tt1.fr1    = if bogus <> ? then lch   else h:buffer-field("fr1"):buffer-value.
1150
   
1151
   tt1.fr1    = if bogus <> ? then "14"  else h:buffer-field("fr1"):buffer-value.
1152
   tt1.fr1    = if bogus <> ? then r1    else h:buffer-field("fr1"):buffer-value.
1153
   tt1.fr1    = if bogus <> ? then r2    else h:buffer-field("fr1"):buffer-value.
1154
   
1155
   /* compiles but always creates a runtime error */
1156
   if bypass-runtime-error then
1157
   do:   
1158
      tt1.fr1    = if bogus <> ? then ptr   else h:buffer-field("fr1"):buffer-value.
1159
      tt1.fr1    = if bogus <> ? then m2    else h:buffer-field("fr1"):buffer-value.
1160
   end.
1161
   
1162
   /* rowid can take all types but everything except datetime, datetime-tz, */
1163
   /* character, recid, rowid and unknown value literal cause runtime errors */
1164
   
1165
   r2        = if bogus <> ? then ?     else h:buffer-field("fr2"):buffer-value.
1166
   
1167
   /* compiles but always creates a runtime error */
1168
   if bypass-runtime-error then
1169
   do:
1170
      r2        = if bogus <> ? then 0     else h:buffer-field("fr2"):buffer-value.
1171
      r2        = if bogus <> ? then i     else h:buffer-field("fr2"):buffer-value.
1172
      r2        = if bogus <> ? then d     else h:buffer-field("fr2"):buffer-value.
1173
      r2        = if bogus <> ? then i64   else h:buffer-field("fr2"):buffer-value.
1174
      r2        = if bogus <> ? then da    else h:buffer-field("fr2"):buffer-value.
1175
   end.
1176
   
1177
   r2        = if bogus <> ? then dt    else h:buffer-field("fr2"):buffer-value.
1178
   r2        = if bogus <> ? then dtz   else h:buffer-field("fr2"):buffer-value.
1179
   
1180
   /* compiles but always creates a runtime error */
1181
   if bypass-runtime-error then
1182
   do:
1183
      r2        = if bogus <> ? then bool  else h:buffer-field("fr2"):buffer-value.
1184
      r2        = if bogus <> ? then true  else h:buffer-field("fr2"):buffer-value.
1185
      r2        = if bogus <> ? then false else h:buffer-field("fr2"):buffer-value.
1186
      r2        = if bogus <> ? then h     else h:buffer-field("fr2"):buffer-value.
1187
   end.
1188
   
1189
   r2        = if bogus <> ? then ch    else h:buffer-field("fr2"):buffer-value.
1190
   
1191
   /* compiles but always creates a runtime error */
1192
   if bypass-runtime-error then
1193
      r2        = if bogus <> ? then lch   else h:buffer-field("fr2"):buffer-value.
1194
   
1195
   r2        = if bogus <> ? then "14"  else h:buffer-field("fr2"):buffer-value.
1196
   r2        = if bogus <> ? then r1    else h:buffer-field("fr2"):buffer-value.
1197
   r2        = if bogus <> ? then r2    else h:buffer-field("fr2"):buffer-value.
1198
   
1199
   /* compiles but always creates a runtime error */
1200
   if bypass-runtime-error then
1201
   do:   
1202
      r2        = if bogus <> ? then ptr   else h:buffer-field("fr2"):buffer-value.
1203
      r2        = if bogus <> ? then m2    else h:buffer-field("fr2"):buffer-value.
1204
   end.
1205
   
1206
   tt1.fr2    = if bogus <> ? then ?     else h:buffer-field("fr2"):buffer-value.
1207
   
1208
   /* compiles but always creates a runtime error */
1209
   if bypass-runtime-error then
1210
   do:
1211
      tt1.fr2    = if bogus <> ? then 0     else h:buffer-field("fr2"):buffer-value.
1212
      tt1.fr2    = if bogus <> ? then i     else h:buffer-field("fr2"):buffer-value.
1213
      tt1.fr2    = if bogus <> ? then d     else h:buffer-field("fr2"):buffer-value.
1214
      tt1.fr2    = if bogus <> ? then i64   else h:buffer-field("fr2"):buffer-value.
1215
      tt1.fr2    = if bogus <> ? then da    else h:buffer-field("fr2"):buffer-value.
1216
   end.
1217
   
1218
   tt1.fr2    = if bogus <> ? then dt    else h:buffer-field("fr2"):buffer-value.
1219
   tt1.fr2    = if bogus <> ? then dtz   else h:buffer-field("fr2"):buffer-value.
1220
   
1221
   /* compiles but always creates a runtime error */
1222
   if bypass-runtime-error then
1223
   do:
1224
      tt1.fr2    = if bogus <> ? then bool  else h:buffer-field("fr2"):buffer-value.
1225
      tt1.fr2    = if bogus <> ? then true  else h:buffer-field("fr2"):buffer-value.
1226
      tt1.fr2    = if bogus <> ? then false else h:buffer-field("fr2"):buffer-value.
1227
      tt1.fr2    = if bogus <> ? then h     else h:buffer-field("fr2"):buffer-value.
1228
   end.
1229
   
1230
   tt1.fr2    = if bogus <> ? then ch    else h:buffer-field("fr2"):buffer-value.
1231
   
1232
   /* compiles but always creates a runtime error */
1233
   if bypass-runtime-error then
1234
      tt1.fr2    = if bogus <> ? then lch   else h:buffer-field("fr2"):buffer-value.
1235
   
1236
   tt1.fr2    = if bogus <> ? then "14"  else h:buffer-field("fr2"):buffer-value.
1237
   tt1.fr2    = if bogus <> ? then r1    else h:buffer-field("fr2"):buffer-value.
1238
   tt1.fr2    = if bogus <> ? then r2    else h:buffer-field("fr2"):buffer-value.
1239
   
1240
   /* compiles but always creates a runtime error */
1241
   if bypass-runtime-error then
1242
   do:   
1243
      tt1.fr2    = if bogus <> ? then ptr   else h:buffer-field("fr2"):buffer-value.
1244
      tt1.fr2    = if bogus <> ? then m2    else h:buffer-field("fr2"):buffer-value.
1245
   end.
1246
   
1247
   return bogus.
1248
end.