vbscript: Added error object stub implementation.
[wine] / dlls / vbscript / global.c
1 /*
2  * Copyright 2011 Jacek Caban for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #include "vbscript.h"
20 #include "vbscript_defs.h"
21
22 #include "wine/debug.h"
23
24 WINE_DEFAULT_DEBUG_CHANNEL(vbscript);
25
26 static HRESULT Global_CCur(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
27 {
28     FIXME("\n");
29     return E_NOTIMPL;
30 }
31
32 static HRESULT Global_CInt(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
33 {
34     FIXME("\n");
35     return E_NOTIMPL;
36 }
37
38 static HRESULT Global_CLng(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
39 {
40     FIXME("\n");
41     return E_NOTIMPL;
42 }
43
44 static HRESULT Global_CBool(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
45 {
46     FIXME("\n");
47     return E_NOTIMPL;
48 }
49
50 static HRESULT Global_CByte(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
51 {
52     FIXME("\n");
53     return E_NOTIMPL;
54 }
55
56 static HRESULT Global_CDate(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
57 {
58     FIXME("\n");
59     return E_NOTIMPL;
60 }
61
62 static HRESULT Global_CDbl(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
63 {
64     FIXME("\n");
65     return E_NOTIMPL;
66 }
67
68 static HRESULT Global_CSng(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
69 {
70     FIXME("\n");
71     return E_NOTIMPL;
72 }
73
74 static HRESULT Global_CStr(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
75 {
76     FIXME("\n");
77     return E_NOTIMPL;
78 }
79
80 static HRESULT Global_Hex(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
81 {
82     FIXME("\n");
83     return E_NOTIMPL;
84 }
85
86 static HRESULT Global_Oct(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
87 {
88     FIXME("\n");
89     return E_NOTIMPL;
90 }
91
92 static HRESULT Global_VarType(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
93 {
94     FIXME("\n");
95     return E_NOTIMPL;
96 }
97
98 static HRESULT Global_IsDate(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
99 {
100     FIXME("\n");
101     return E_NOTIMPL;
102 }
103
104 static HRESULT Global_IsEmpty(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
105 {
106     FIXME("\n");
107     return E_NOTIMPL;
108 }
109
110 static HRESULT Global_IsNull(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
111 {
112     FIXME("\n");
113     return E_NOTIMPL;
114 }
115
116 static HRESULT Global_IsNumeric(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
117 {
118     FIXME("\n");
119     return E_NOTIMPL;
120 }
121
122 static HRESULT Global_IsArray(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
123 {
124     FIXME("\n");
125     return E_NOTIMPL;
126 }
127
128 static HRESULT Global_IsObject(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
129 {
130     TRACE("(%s)\n", debugstr_variant(arg));
131
132     if(V_VT(arg) == (VT_VARIANT|VT_BYREF))
133         arg = V_VARIANTREF(arg);
134
135     if(res) {
136         V_VT(res) = VT_BOOL;
137         V_BOOL(res) = V_VT(arg) == VT_DISPATCH ? VARIANT_TRUE : VARIANT_FALSE;
138     }
139     return S_OK;
140 }
141
142 static HRESULT Global_Ant(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
143 {
144     FIXME("\n");
145     return E_NOTIMPL;
146 }
147
148 static HRESULT Global_Cos(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
149 {
150     FIXME("\n");
151     return E_NOTIMPL;
152 }
153
154 static HRESULT Global_Sin(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
155 {
156     FIXME("\n");
157     return E_NOTIMPL;
158 }
159
160 static HRESULT Global_Tan(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
161 {
162     FIXME("\n");
163     return E_NOTIMPL;
164 }
165
166 static HRESULT Global_Exp(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
167 {
168     FIXME("\n");
169     return E_NOTIMPL;
170 }
171
172 static HRESULT Global_Log(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
173 {
174     FIXME("\n");
175     return E_NOTIMPL;
176 }
177
178 static HRESULT Global_Sqr(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
179 {
180     FIXME("\n");
181     return E_NOTIMPL;
182 }
183
184 static HRESULT Global_Randomize(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
185 {
186     FIXME("\n");
187     return E_NOTIMPL;
188 }
189
190 static HRESULT Global_Rnd(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
191 {
192     FIXME("\n");
193     return E_NOTIMPL;
194 }
195
196 static HRESULT Global_Timer(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
197 {
198     FIXME("\n");
199     return E_NOTIMPL;
200 }
201
202 static HRESULT Global_LBound(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
203 {
204     FIXME("\n");
205     return E_NOTIMPL;
206 }
207
208 static HRESULT Global_UBound(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
209 {
210     FIXME("\n");
211     return E_NOTIMPL;
212 }
213
214 static HRESULT Global_RGB(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
215 {
216     FIXME("\n");
217     return E_NOTIMPL;
218 }
219
220 static HRESULT Global_Len(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
221 {
222     FIXME("\n");
223     return E_NOTIMPL;
224 }
225
226 static HRESULT Global_LenB(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
227 {
228     FIXME("\n");
229     return E_NOTIMPL;
230 }
231
232 static HRESULT Global_Left(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
233 {
234     FIXME("\n");
235     return E_NOTIMPL;
236 }
237
238 static HRESULT Global_LeftB(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
239 {
240     FIXME("\n");
241     return E_NOTIMPL;
242 }
243
244 static HRESULT Global_Right(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
245 {
246     FIXME("\n");
247     return E_NOTIMPL;
248 }
249
250 static HRESULT Global_RightB(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
251 {
252     FIXME("\n");
253     return E_NOTIMPL;
254 }
255
256 static HRESULT Global_Mid(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
257 {
258     FIXME("\n");
259     return E_NOTIMPL;
260 }
261
262 static HRESULT Global_MidB(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
263 {
264     FIXME("\n");
265     return E_NOTIMPL;
266 }
267
268 static HRESULT Global_StrComp(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
269 {
270     FIXME("\n");
271     return E_NOTIMPL;
272 }
273
274 static HRESULT Global_LCase(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
275 {
276     FIXME("\n");
277     return E_NOTIMPL;
278 }
279
280 static HRESULT Global_UCase(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
281 {
282     FIXME("\n");
283     return E_NOTIMPL;
284 }
285
286 static HRESULT Global_LTrim(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
287 {
288     FIXME("\n");
289     return E_NOTIMPL;
290 }
291
292 static HRESULT Global_RTrim(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
293 {
294     FIXME("\n");
295     return E_NOTIMPL;
296 }
297
298 static HRESULT Global_Trim(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
299 {
300     FIXME("\n");
301     return E_NOTIMPL;
302 }
303
304 static HRESULT Global_Space(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
305 {
306     FIXME("\n");
307     return E_NOTIMPL;
308 }
309
310 static HRESULT Global_String(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
311 {
312     FIXME("\n");
313     return E_NOTIMPL;
314 }
315
316 static HRESULT Global_InStr(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
317 {
318     FIXME("\n");
319     return E_NOTIMPL;
320 }
321
322 static HRESULT Global_InStrB(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
323 {
324     FIXME("\n");
325     return E_NOTIMPL;
326 }
327
328 static HRESULT Global_AscB(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
329 {
330     FIXME("\n");
331     return E_NOTIMPL;
332 }
333
334 static HRESULT Global_ChrB(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
335 {
336     FIXME("\n");
337     return E_NOTIMPL;
338 }
339
340 static HRESULT Global_Asc(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
341 {
342     FIXME("\n");
343     return E_NOTIMPL;
344 }
345
346 static HRESULT Global_Chr(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
347 {
348     FIXME("\n");
349     return E_NOTIMPL;
350 }
351
352 static HRESULT Global_AscW(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
353 {
354     FIXME("\n");
355     return E_NOTIMPL;
356 }
357
358 static HRESULT Global_ChrW(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
359 {
360     FIXME("\n");
361     return E_NOTIMPL;
362 }
363
364 static HRESULT Global_Abs(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
365 {
366     FIXME("\n");
367     return E_NOTIMPL;
368 }
369
370 static HRESULT Global_Fix(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
371 {
372     FIXME("\n");
373     return E_NOTIMPL;
374 }
375
376 static HRESULT Global_Int(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
377 {
378     FIXME("\n");
379     return E_NOTIMPL;
380 }
381
382 static HRESULT Global_Sgn(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
383 {
384     FIXME("\n");
385     return E_NOTIMPL;
386 }
387
388 static HRESULT Global_Now(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
389 {
390     FIXME("\n");
391     return E_NOTIMPL;
392 }
393
394 static HRESULT Global_Date(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
395 {
396     FIXME("\n");
397     return E_NOTIMPL;
398 }
399
400 static HRESULT Global_Time(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
401 {
402     FIXME("\n");
403     return E_NOTIMPL;
404 }
405
406 static HRESULT Global_Day(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
407 {
408     FIXME("\n");
409     return E_NOTIMPL;
410 }
411
412 static HRESULT Global_Month(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
413 {
414     FIXME("\n");
415     return E_NOTIMPL;
416 }
417
418 static HRESULT Global_Weekday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
419 {
420     FIXME("\n");
421     return E_NOTIMPL;
422 }
423
424 static HRESULT Global_Year(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
425 {
426     FIXME("\n");
427     return E_NOTIMPL;
428 }
429
430 static HRESULT Global_Hour(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
431 {
432     FIXME("\n");
433     return E_NOTIMPL;
434 }
435
436 static HRESULT Global_Minute(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
437 {
438     FIXME("\n");
439     return E_NOTIMPL;
440 }
441
442 static HRESULT Global_Second(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
443 {
444     FIXME("\n");
445     return E_NOTIMPL;
446 }
447
448 static HRESULT Global_DateValue(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
449 {
450     FIXME("\n");
451     return E_NOTIMPL;
452 }
453
454 static HRESULT Global_TimeValue(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
455 {
456     FIXME("\n");
457     return E_NOTIMPL;
458 }
459
460 static HRESULT Global_DateSerial(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
461 {
462     FIXME("\n");
463     return E_NOTIMPL;
464 }
465
466 static HRESULT Global_TimeSerial(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
467 {
468     FIXME("\n");
469     return E_NOTIMPL;
470 }
471
472 static HRESULT Global_InputBox(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
473 {
474     FIXME("\n");
475     return E_NOTIMPL;
476 }
477
478 static HRESULT Global_MsgBox(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
479 {
480     FIXME("\n");
481     return E_NOTIMPL;
482 }
483
484 static HRESULT Global_CreateObject(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
485 {
486     FIXME("\n");
487     return E_NOTIMPL;
488 }
489
490 static HRESULT Global_GetObject(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
491 {
492     FIXME("\n");
493     return E_NOTIMPL;
494 }
495
496 static HRESULT Global_DateAdd(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
497 {
498     FIXME("\n");
499     return E_NOTIMPL;
500 }
501
502 static HRESULT Global_DateDiff(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
503 {
504     FIXME("\n");
505     return E_NOTIMPL;
506 }
507
508 static HRESULT Global_DatePart(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
509 {
510     FIXME("\n");
511     return E_NOTIMPL;
512 }
513
514 static HRESULT Global_TypeName(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
515 {
516     FIXME("\n");
517     return E_NOTIMPL;
518 }
519
520 static HRESULT Global_Array(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
521 {
522     FIXME("\n");
523     return E_NOTIMPL;
524 }
525
526 static HRESULT Global_Erase(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
527 {
528     FIXME("\n");
529     return E_NOTIMPL;
530 }
531
532 static HRESULT Global_Filter(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
533 {
534     FIXME("\n");
535     return E_NOTIMPL;
536 }
537
538 static HRESULT Global_Join(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
539 {
540     FIXME("\n");
541     return E_NOTIMPL;
542 }
543
544 static HRESULT Global_Split(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
545 {
546     FIXME("\n");
547     return E_NOTIMPL;
548 }
549
550 static HRESULT Global_Replace(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
551 {
552     FIXME("\n");
553     return E_NOTIMPL;
554 }
555
556 static HRESULT Global_StrReverse(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
557 {
558     FIXME("\n");
559     return E_NOTIMPL;
560 }
561
562 static HRESULT Global_InStrRev(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
563 {
564     FIXME("\n");
565     return E_NOTIMPL;
566 }
567
568 static HRESULT Global_LoadPicture(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
569 {
570     FIXME("\n");
571     return E_NOTIMPL;
572 }
573
574 static HRESULT Global_ScriptEngine(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
575 {
576     FIXME("\n");
577     return E_NOTIMPL;
578 }
579
580 static HRESULT Global_ScriptEngineMajorVersion(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
581 {
582     FIXME("\n");
583     return E_NOTIMPL;
584 }
585
586 static HRESULT Global_ScriptEngineMinorVersion(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
587 {
588     FIXME("\n");
589     return E_NOTIMPL;
590 }
591
592 static HRESULT Global_ScriptEngineBuildVersion(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
593 {
594     FIXME("\n");
595     return E_NOTIMPL;
596 }
597
598 static HRESULT Global_FormatNumber(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
599 {
600     FIXME("\n");
601     return E_NOTIMPL;
602 }
603
604 static HRESULT Global_FormatCurrency(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
605 {
606     FIXME("\n");
607     return E_NOTIMPL;
608 }
609
610 static HRESULT Global_FormatPercent(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
611 {
612     FIXME("\n");
613     return E_NOTIMPL;
614 }
615
616 static HRESULT Global_FormatDateTime(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
617 {
618     FIXME("\n");
619     return E_NOTIMPL;
620 }
621
622 static HRESULT Global_WeekdayName(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
623 {
624     FIXME("\n");
625     return E_NOTIMPL;
626 }
627
628 static HRESULT Global_MonthName(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
629 {
630     FIXME("\n");
631     return E_NOTIMPL;
632 }
633
634 static HRESULT Global_Round(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
635 {
636     FIXME("\n");
637     return E_NOTIMPL;
638 }
639
640 static HRESULT Global_Escape(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
641 {
642     FIXME("\n");
643     return E_NOTIMPL;
644 }
645
646 static HRESULT Global_Unescape(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
647 {
648     FIXME("\n");
649     return E_NOTIMPL;
650 }
651
652 static HRESULT Global_Eval(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
653 {
654     FIXME("\n");
655     return E_NOTIMPL;
656 }
657
658 static HRESULT Global_Execute(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
659 {
660     FIXME("\n");
661     return E_NOTIMPL;
662 }
663
664 static HRESULT Global_ExecuteGlobal(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
665 {
666     FIXME("\n");
667     return E_NOTIMPL;
668 }
669
670 static HRESULT Global_GetRef(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
671 {
672     FIXME("\n");
673     return E_NOTIMPL;
674 }
675
676 static HRESULT Global_vbUseSystem(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
677 {
678     FIXME("\n");
679     return E_NOTIMPL;
680 }
681
682 static HRESULT Global_vbUseSystemDayOfWeek(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
683 {
684     FIXME("\n");
685     return E_NOTIMPL;
686 }
687
688 static HRESULT Global_vbSunday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
689 {
690     FIXME("\n");
691     return E_NOTIMPL;
692 }
693
694 static HRESULT Global_vbMonday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
695 {
696     FIXME("\n");
697     return E_NOTIMPL;
698 }
699
700 static HRESULT Global_vbTuesday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
701 {
702     FIXME("\n");
703     return E_NOTIMPL;
704 }
705
706 static HRESULT Global_vbWednesday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
707 {
708     FIXME("\n");
709     return E_NOTIMPL;
710 }
711
712 static HRESULT Global_vbThursday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
713 {
714     FIXME("\n");
715     return E_NOTIMPL;
716 }
717
718 static HRESULT Global_vbFriday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
719 {
720     FIXME("\n");
721     return E_NOTIMPL;
722 }
723
724 static HRESULT Global_vbSaturday(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
725 {
726     FIXME("\n");
727     return E_NOTIMPL;
728 }
729
730 static HRESULT Global_vbFirstJan1(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
731 {
732     FIXME("\n");
733     return E_NOTIMPL;
734 }
735
736 static HRESULT Global_vbFirstFourDays(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
737 {
738     FIXME("\n");
739     return E_NOTIMPL;
740 }
741
742 static HRESULT Global_vbFirstFullWeek(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
743 {
744     FIXME("\n");
745     return E_NOTIMPL;
746 }
747
748 static HRESULT Global_vbOKOnly(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
749 {
750     FIXME("\n");
751     return E_NOTIMPL;
752 }
753
754 static HRESULT Global_vbOKCancel(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
755 {
756     FIXME("\n");
757     return E_NOTIMPL;
758 }
759
760 static HRESULT Global_vbAbortRetryIgnore(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
761 {
762     FIXME("\n");
763     return E_NOTIMPL;
764 }
765
766 static HRESULT Global_vbYesNoCancel(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
767 {
768     FIXME("\n");
769     return E_NOTIMPL;
770 }
771
772 static HRESULT Global_vbYesNo(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
773 {
774     FIXME("\n");
775     return E_NOTIMPL;
776 }
777
778 static HRESULT Global_vbRetryCancel(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
779 {
780     FIXME("\n");
781     return E_NOTIMPL;
782 }
783
784 static HRESULT Global_vbCritical(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
785 {
786     FIXME("\n");
787     return E_NOTIMPL;
788 }
789
790 static HRESULT Global_vbQuestion(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
791 {
792     FIXME("\n");
793     return E_NOTIMPL;
794 }
795
796 static HRESULT Global_vbExclamation(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
797 {
798     FIXME("\n");
799     return E_NOTIMPL;
800 }
801
802 static HRESULT Global_vbInformation(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
803 {
804     FIXME("\n");
805     return E_NOTIMPL;
806 }
807
808 static HRESULT Global_vbDefaultButton1(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
809 {
810     FIXME("\n");
811     return E_NOTIMPL;
812 }
813
814 static HRESULT Global_vbDefaultButton2(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
815 {
816     FIXME("\n");
817     return E_NOTIMPL;
818 }
819
820 static HRESULT Global_vbDefaultButton3(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
821 {
822     FIXME("\n");
823     return E_NOTIMPL;
824 }
825
826 static HRESULT Global_vbDefaultButton4(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
827 {
828     FIXME("\n");
829     return E_NOTIMPL;
830 }
831
832 static HRESULT Global_vbApplicationModal(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
833 {
834     FIXME("\n");
835     return E_NOTIMPL;
836 }
837
838 static HRESULT Global_vbSystemModal(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
839 {
840     FIXME("\n");
841     return E_NOTIMPL;
842 }
843
844 static HRESULT Global_vbOK(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
845 {
846     FIXME("\n");
847     return E_NOTIMPL;
848 }
849
850 static HRESULT Global_vbCancel(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
851 {
852     FIXME("\n");
853     return E_NOTIMPL;
854 }
855
856 static HRESULT Global_vbAbort(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
857 {
858     FIXME("\n");
859     return E_NOTIMPL;
860 }
861
862 static HRESULT Global_vbRetry(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
863 {
864     FIXME("\n");
865     return E_NOTIMPL;
866 }
867
868 static HRESULT Global_vbIgnore(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
869 {
870     FIXME("\n");
871     return E_NOTIMPL;
872 }
873
874 static HRESULT Global_vbYes(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
875 {
876     FIXME("\n");
877     return E_NOTIMPL;
878 }
879
880 static HRESULT Global_vbNo(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
881 {
882     FIXME("\n");
883     return E_NOTIMPL;
884 }
885
886 static HRESULT Global_vbEmpty(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
887 {
888     FIXME("\n");
889     return E_NOTIMPL;
890 }
891
892 static HRESULT Global_vbNull(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
893 {
894     FIXME("\n");
895     return E_NOTIMPL;
896 }
897
898 static HRESULT Global_vbInteger(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
899 {
900     FIXME("\n");
901     return E_NOTIMPL;
902 }
903
904 static HRESULT Global_vbLong(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
905 {
906     FIXME("\n");
907     return E_NOTIMPL;
908 }
909
910 static HRESULT Global_vbSingle(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
911 {
912     FIXME("\n");
913     return E_NOTIMPL;
914 }
915
916 static HRESULT Global_vbDouble(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
917 {
918     FIXME("\n");
919     return E_NOTIMPL;
920 }
921
922 static HRESULT Global_vbCurrency(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
923 {
924     FIXME("\n");
925     return E_NOTIMPL;
926 }
927
928 static HRESULT Global_vbDate(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
929 {
930     FIXME("\n");
931     return E_NOTIMPL;
932 }
933
934 static HRESULT Global_vbString(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
935 {
936     FIXME("\n");
937     return E_NOTIMPL;
938 }
939
940 static HRESULT Global_vbObject(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
941 {
942     FIXME("\n");
943     return E_NOTIMPL;
944 }
945
946 static HRESULT Global_vbError(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
947 {
948     FIXME("\n");
949     return E_NOTIMPL;
950 }
951
952 static HRESULT Global_vbBoolean(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
953 {
954     FIXME("\n");
955     return E_NOTIMPL;
956 }
957
958 static HRESULT Global_vbVariant(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
959 {
960     FIXME("\n");
961     return E_NOTIMPL;
962 }
963
964 static HRESULT Global_vbDataObject(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
965 {
966     FIXME("\n");
967     return E_NOTIMPL;
968 }
969
970 static HRESULT Global_vbDecimal(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
971 {
972     FIXME("\n");
973     return E_NOTIMPL;
974 }
975
976 static HRESULT Global_vbByte(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
977 {
978     FIXME("\n");
979     return E_NOTIMPL;
980 }
981
982 static HRESULT Global_vbArray(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
983 {
984     FIXME("\n");
985     return E_NOTIMPL;
986 }
987
988 static HRESULT Global_vbTrue(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
989 {
990     FIXME("\n");
991     return E_NOTIMPL;
992 }
993
994 static HRESULT Global_vbFalse(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
995 {
996     FIXME("\n");
997     return E_NOTIMPL;
998 }
999
1000 static HRESULT Global_vbUseDefault(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1001 {
1002     FIXME("\n");
1003     return E_NOTIMPL;
1004 }
1005
1006 static HRESULT Global_vbBinaryCompare(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1007 {
1008     FIXME("\n");
1009     return E_NOTIMPL;
1010 }
1011
1012 static HRESULT Global_vbTextCompare(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1013 {
1014     FIXME("\n");
1015     return E_NOTIMPL;
1016 }
1017
1018 static HRESULT Global_vbDatabaseCompare(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1019 {
1020     FIXME("\n");
1021     return E_NOTIMPL;
1022 }
1023
1024 static HRESULT Global_vbGeneralDate(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1025 {
1026     FIXME("\n");
1027     return E_NOTIMPL;
1028 }
1029
1030 static HRESULT Global_vbLongDate(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1031 {
1032     FIXME("\n");
1033     return E_NOTIMPL;
1034 }
1035
1036 static HRESULT Global_vbShortDate(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1037 {
1038     FIXME("\n");
1039     return E_NOTIMPL;
1040 }
1041
1042 static HRESULT Global_vbLongTime(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1043 {
1044     FIXME("\n");
1045     return E_NOTIMPL;
1046 }
1047
1048 static HRESULT Global_vbShortTime(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1049 {
1050     FIXME("\n");
1051     return E_NOTIMPL;
1052 }
1053
1054 static HRESULT Global_vbObjectError(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1055 {
1056     FIXME("\n");
1057     return E_NOTIMPL;
1058 }
1059
1060 static HRESULT Global_vbBlack(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1061 {
1062     FIXME("\n");
1063     return E_NOTIMPL;
1064 }
1065
1066 static HRESULT Global_vbBlue(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1067 {
1068     FIXME("\n");
1069     return E_NOTIMPL;
1070 }
1071
1072 static HRESULT Global_vbCyan(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1073 {
1074     FIXME("\n");
1075     return E_NOTIMPL;
1076 }
1077
1078 static HRESULT Global_vbGreen(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1079 {
1080     FIXME("\n");
1081     return E_NOTIMPL;
1082 }
1083
1084 static HRESULT Global_vbMagenta(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1085 {
1086     FIXME("\n");
1087     return E_NOTIMPL;
1088 }
1089
1090 static HRESULT Global_vbRed(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1091 {
1092     FIXME("\n");
1093     return E_NOTIMPL;
1094 }
1095
1096 static HRESULT Global_vbWhite(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1097 {
1098     FIXME("\n");
1099     return E_NOTIMPL;
1100 }
1101
1102 static HRESULT Global_vbYellow(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1103 {
1104     FIXME("\n");
1105     return E_NOTIMPL;
1106 }
1107
1108 static HRESULT Global_vbCr(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1109 {
1110     FIXME("\n");
1111     return E_NOTIMPL;
1112 }
1113
1114 static HRESULT Global_vbCrLf(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1115 {
1116     FIXME("\n");
1117     return E_NOTIMPL;
1118 }
1119
1120 static HRESULT Global_vbNewLine(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1121 {
1122     FIXME("\n");
1123     return E_NOTIMPL;
1124 }
1125
1126 static HRESULT Global_vbFormFeed(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1127 {
1128     FIXME("\n");
1129     return E_NOTIMPL;
1130 }
1131
1132 static HRESULT Global_vbLf(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1133 {
1134     FIXME("\n");
1135     return E_NOTIMPL;
1136 }
1137
1138 static HRESULT Global_vbNullChar(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1139 {
1140     FIXME("\n");
1141     return E_NOTIMPL;
1142 }
1143
1144 static HRESULT Global_vbNullString(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1145 {
1146     FIXME("\n");
1147     return E_NOTIMPL;
1148 }
1149
1150 static HRESULT Global_vbTab(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1151 {
1152     FIXME("\n");
1153     return E_NOTIMPL;
1154 }
1155
1156 static HRESULT Global_vbVerticalTab(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1157 {
1158     FIXME("\n");
1159     return E_NOTIMPL;
1160 }
1161
1162 static HRESULT Global_vbMsgBoxHelpButton(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1163 {
1164     FIXME("\n");
1165     return E_NOTIMPL;
1166 }
1167
1168 static HRESULT Global_vbMsgBoxSetForeground(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1169 {
1170     FIXME("\n");
1171     return E_NOTIMPL;
1172 }
1173
1174 static HRESULT Global_vbMsgBoxRight(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1175 {
1176     FIXME("\n");
1177     return E_NOTIMPL;
1178 }
1179
1180 static HRESULT Global_vbMsgBoxRtlReading(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res)
1181 {
1182     FIXME("\n");
1183     return E_NOTIMPL;
1184 }
1185
1186 static const builtin_prop_t global_props[] = {
1187     {DISPID_GLOBAL_VBUSESYSTEM,        Global_vbUseSystem, BP_GET},
1188     {DISPID_GLOBAL_USESYSTEMDAYOFWEEK, Global_vbUseSystemDayOfWeek, BP_GET},
1189     {DISPID_GLOBAL_VBSUNDAY,           Global_vbSunday, BP_GET},
1190     {DISPID_GLOBAL_VBMONDAY,           Global_vbMonday, BP_GET},
1191     {DISPID_GLOBAL_VBTUESDAY,          Global_vbTuesday, BP_GET},
1192     {DISPID_GLOBAL_VBWEDNESDAY,        Global_vbWednesday, BP_GET},
1193     {DISPID_GLOBAL_VBTHURSDAY,         Global_vbThursday, BP_GET},
1194     {DISPID_GLOBAL_VBFRIDAY,           Global_vbFriday, BP_GET},
1195     {DISPID_GLOBAL_VBSATURDAY,         Global_vbSaturday, BP_GET},
1196     {DISPID_GLOBAL_VBFIRSTJAN1,        Global_vbFirstJan1, BP_GET},
1197     {DISPID_GLOBAL_VBFIRSTFOURDAYS,    Global_vbFirstFourDays, BP_GET},
1198     {DISPID_GLOBAL_VBFIRSTFULLWEEK,    Global_vbFirstFullWeek, BP_GET},
1199     {DISPID_GLOBAL_VBOKONLY,           Global_vbOKOnly, BP_GET},
1200     {DISPID_GLOBAL_VBOKCANCEL,         Global_vbOKCancel, BP_GET},
1201     {DISPID_GLOBAL_VBABORTRETRYIGNORE, Global_vbAbortRetryIgnore, BP_GET},
1202     {DISPID_GLOBAL_VBYESNOCANCEL,      Global_vbYesNoCancel, BP_GET},
1203     {DISPID_GLOBAL_VBYESNO,            Global_vbYesNo, BP_GET},
1204     {DISPID_GLOBAL_VBRETRYCANCEL,      Global_vbRetryCancel, BP_GET},
1205     {DISPID_GLOBAL_VBCRITICAL,         Global_vbCritical, BP_GET},
1206     {DISPID_GLOBAL_VBQUESTION,         Global_vbQuestion, BP_GET},
1207     {DISPID_GLOBAL_VBEXCLAMATION,      Global_vbExclamation, BP_GET},
1208     {DISPID_GLOBAL_VBINFORMATION,      Global_vbInformation, BP_GET},
1209     {DISPID_GLOBAL_VBDEFAULTBUTTON1,   Global_vbDefaultButton1, BP_GET},
1210     {DISPID_GLOBAL_VBDEFAULTBUTTON2,   Global_vbDefaultButton2, BP_GET},
1211     {DISPID_GLOBAL_VBDEFAULTBUTTON3,   Global_vbDefaultButton3, BP_GET},
1212     {DISPID_GLOBAL_VBDEFAULTBUTTON4,   Global_vbDefaultButton4, BP_GET},
1213     {DISPID_GLOBAL_VBAPPLICATIONMODAL, Global_vbApplicationModal, BP_GET},
1214     {DISPID_GLOBAL_VBSYSTEMMODAL,      Global_vbSystemModal, BP_GET},
1215     {DISPID_GLOBAL_VBOK,               Global_vbOK, BP_GET},
1216     {DISPID_GLOBAL_VBCANCEL,           Global_vbCancel, BP_GET},
1217     {DISPID_GLOBAL_VBABORT,            Global_vbAbort, BP_GET},
1218     {DISPID_GLOBAL_VBRETRY,            Global_vbRetry, BP_GET},
1219     {DISPID_GLOBAL_VBIGNORE,           Global_vbIgnore, BP_GET},
1220     {DISPID_GLOBAL_VBYES,              Global_vbYes, BP_GET},
1221     {DISPID_GLOBAL_VBNO,               Global_vbNo, BP_GET},
1222     {DISPID_GLOBAL_VBEMPTY,            Global_vbEmpty, BP_GET},
1223     {DISPID_GLOBAL_VBNULL,             Global_vbNull, BP_GET},
1224     {DISPID_GLOBAL_VBINTEGER,          Global_vbInteger, BP_GET},
1225     {DISPID_GLOBAL_VBLONG,             Global_vbLong, BP_GET},
1226     {DISPID_GLOBAL_VBSINGLE,           Global_vbSingle, BP_GET},
1227     {DISPID_GLOBAL_VBDOUBLE,           Global_vbDouble, BP_GET},
1228     {DISPID_GLOBAL_VBCURRENCY,         Global_vbCurrency, BP_GET},
1229     {DISPID_GLOBAL_VBDATE,             Global_vbDate, BP_GET},
1230     {DISPID_GLOBAL_VBSTRING,           Global_vbString, BP_GET},
1231     {DISPID_GLOBAL_VBOBJECT,           Global_vbObject, BP_GET},
1232     {DISPID_GLOBAL_VBERROR,            Global_vbError, BP_GET},
1233     {DISPID_GLOBAL_VBBOOLEAN,          Global_vbBoolean, BP_GET},
1234     {DISPID_GLOBAL_VBVARIANT,          Global_vbVariant, BP_GET},
1235     {DISPID_GLOBAL_VBDATAOBJECT,       Global_vbDataObject, BP_GET},
1236     {DISPID_GLOBAL_VBDECIMAL,          Global_vbDecimal, BP_GET},
1237     {DISPID_GLOBAL_VBBYTE,             Global_vbByte, BP_GET},
1238     {DISPID_GLOBAL_VBARRAY,            Global_vbArray, BP_GET},
1239     {DISPID_GLOBAL_VBTRUE,             Global_vbTrue, BP_GET},
1240     {DISPID_GLOBAL_VBFALSE,            Global_vbFalse, BP_GET},
1241     {DISPID_GLOBAL_VBUSEDEFAULT,       Global_vbUseDefault, BP_GET},
1242     {DISPID_GLOBAL_VBBINARYCOMPARE,    Global_vbBinaryCompare, BP_GET},
1243     {DISPID_GLOBAL_VBTEXTCOMPARE,      Global_vbTextCompare, BP_GET},
1244     {DISPID_GLOBAL_VBDATABASECOMPARE,  Global_vbDatabaseCompare, BP_GET},
1245     {DISPID_GLOBAL_VBGENERALDATE,      Global_vbGeneralDate, BP_GET},
1246     {DISPID_GLOBAL_VBLONGDATE,         Global_vbLongDate, BP_GET},
1247     {DISPID_GLOBAL_VBSHORTDATE,        Global_vbShortDate, BP_GET},
1248     {DISPID_GLOBAL_VBLONGTIME,         Global_vbLongTime, BP_GET},
1249     {DISPID_GLOBAL_VBSHORTTIME,        Global_vbShortTime, BP_GET},
1250     {DISPID_GLOBAL_VBOBJECTERROR,      Global_vbObjectError, BP_GET},
1251     {DISPID_GLOBAL_VBBLACK,            Global_vbBlack, BP_GET},
1252     {DISPID_GLOBAL_VBBLUE,             Global_vbBlue, BP_GET},
1253     {DISPID_GLOBAL_VBCYAN,             Global_vbCyan, BP_GET},
1254     {DISPID_GLOBAL_VBGREEN,            Global_vbGreen, BP_GET},
1255     {DISPID_GLOBAL_VBMAGENTA,          Global_vbMagenta, BP_GET},
1256     {DISPID_GLOBAL_VBRED,              Global_vbRed, BP_GET},
1257     {DISPID_GLOBAL_VBWHITE,            Global_vbWhite, BP_GET},
1258     {DISPID_GLOBAL_VBYELLOW,           Global_vbYellow, BP_GET},
1259     {DISPID_GLOBAL_VBCR,               Global_vbCr, BP_GET},
1260     {DISPID_GLOBAL_VBCRLF,             Global_vbCrLf, BP_GET},
1261     {DISPID_GLOBAL_VBNEWLINE,          Global_vbNewLine, BP_GET},
1262     {DISPID_GLOBAL_VBFORMFEED,         Global_vbFormFeed, BP_GET},
1263     {DISPID_GLOBAL_VBLF,               Global_vbLf, BP_GET},
1264     {DISPID_GLOBAL_VBNULLCHAR,         Global_vbNullChar, BP_GET},
1265     {DISPID_GLOBAL_VBNULLSTRING,       Global_vbNullString, BP_GET},
1266     {DISPID_GLOBAL_VBTAB,              Global_vbTab, BP_GET},
1267     {DISPID_GLOBAL_VBVERTICALTAB,      Global_vbVerticalTab, BP_GET},
1268     {DISPID_GLOBAL_CCUR,                      Global_CCur, 0, 1},
1269     {DISPID_GLOBAL_CINT,                      Global_CInt, 0, 1},
1270     {DISPID_GLOBAL_CLNG,                      Global_CLng, 0, 1},
1271     {DISPID_GLOBAL_CBOOL,                     Global_CBool, 0, 1},
1272     {DISPID_GLOBAL_CBYTE,                     Global_CByte, 0, 1},
1273     {DISPID_GLOBAL_CDATE,                     Global_CDate, 0, 1},
1274     {DISPID_GLOBAL_CDBL,                      Global_CDbl, 0, 1},
1275     {DISPID_GLOBAL_CSNG,                      Global_CSng, 0, 1},
1276     {DISPID_GLOBAL_CSTR,                      Global_CStr, 0, 1},
1277     {DISPID_GLOBAL_HEX,                       Global_Hex, 0, 1},
1278     {DISPID_GLOBAL_OCT,                       Global_Oct, 0, 1},
1279     {DISPID_GLOBAL_VARTYPE,                   Global_VarType, 0, 1},
1280     {DISPID_GLOBAL_ISDATE,                    Global_IsDate, 0, 1},
1281     {DISPID_GLOBAL_ISEMPTY,                   Global_IsEmpty, 0, 1},
1282     {DISPID_GLOBAL_ISNULL,                    Global_IsNull, 0, 1},
1283     {DISPID_GLOBAL_ISNUMERIC,                 Global_IsNumeric, 0, 1},
1284     {DISPID_GLOBAL_ISARRAY,                   Global_IsArray, 0, 1},
1285     {DISPID_GLOBAL_ISOBJECT,                  Global_IsObject, 0, 1},
1286     {DISPID_GLOBAL_ATN,                       Global_Ant, 0, 1},
1287     {DISPID_GLOBAL_COS,                       Global_Cos, 0, 1},
1288     {DISPID_GLOBAL_SIN,                       Global_Sin, 0, 1},
1289     {DISPID_GLOBAL_TAN,                       Global_Tan, 0, 1},
1290     {DISPID_GLOBAL_EXP,                       Global_Exp, 0, 1},
1291     {DISPID_GLOBAL_LOG,                       Global_Log, 0, 1},
1292     {DISPID_GLOBAL_SQR,                       Global_Sqr, 0, 1},
1293     {DISPID_GLOBAL_RANDOMIZE,                 Global_Randomize, 0, 1},
1294     {DISPID_GLOBAL_RND,                       Global_Rnd, 0, 1},
1295     {DISPID_GLOBAL_TIMER,                     Global_Timer, 0, 0},
1296     {DISPID_GLOBAL_LBOUND,                    Global_LBound, 0, 1},
1297     {DISPID_GLOBAL_UBOUND,                    Global_UBound, 0, 1},
1298     {DISPID_GLOBAL_RGB,                       Global_RGB, 0, 3},
1299     {DISPID_GLOBAL_LEN,                       Global_Len, 0, 1},
1300     {DISPID_GLOBAL_LENB,                      Global_LenB, 0, 1},
1301     {DISPID_GLOBAL_LEFT,                      Global_Left, 0, 2},
1302     {DISPID_GLOBAL_LEFTB,                     Global_LeftB, 0, 2},
1303     {DISPID_GLOBAL_RIGHT,                     Global_Right, 0, 2},
1304     {DISPID_GLOBAL_RIGHTB,                    Global_RightB, 0, 2},
1305     {DISPID_GLOBAL_MID,                       Global_Mid, 0, 2, 3},
1306     {DISPID_GLOBAL_MIDB,                      Global_MidB, 0, 2, 3},
1307     {DISPID_GLOBAL_STRCOMP,                   Global_StrComp, 0, 2, 3},
1308     {DISPID_GLOBAL_LCASE,                     Global_LCase, 0, 1},
1309     {DISPID_GLOBAL_UCASE,                     Global_UCase, 0, 1},
1310     {DISPID_GLOBAL_LTRIM,                     Global_LTrim, 0, 1},
1311     {DISPID_GLOBAL_RTRIM,                     Global_RTrim, 0, 1},
1312     {DISPID_GLOBAL_TRIM,                      Global_Trim, 0, 1},
1313     {DISPID_GLOBAL_SPACE,                     Global_Space, 0, 1},
1314     {DISPID_GLOBAL_STRING,                    Global_String, 0, 0, 2},
1315     {DISPID_GLOBAL_INSTR,                     Global_InStr, 0, 3, 4},
1316     {DISPID_GLOBAL_INSTRB,                    Global_InStrB, 0, 3, 4},
1317     {DISPID_GLOBAL_ASCB,                      Global_AscB, 0, 1},
1318     {DISPID_GLOBAL_CHRB,                      Global_ChrB, 0, 1},
1319     {DISPID_GLOBAL_ASC,                       Global_Asc, 0, 1},
1320     {DISPID_GLOBAL_CHR,                       Global_Chr, 0, 1},
1321     {DISPID_GLOBAL_ASCW,                      Global_AscW, 0, 1},
1322     {DISPID_GLOBAL_CHRW,                      Global_ChrW, 0, 1},
1323     {DISPID_GLOBAL_ABS,                       Global_Abs, 0, 1},
1324     {DISPID_GLOBAL_FIX,                       Global_Fix, 0, 1},
1325     {DISPID_GLOBAL_INT,                       Global_Int, 0, 1},
1326     {DISPID_GLOBAL_SGN,                       Global_Sgn, 0, 1},
1327     {DISPID_GLOBAL_NOW,                       Global_Now, 0, 0},
1328     {DISPID_GLOBAL_DATE,                      Global_Date, 0, 0},
1329     {DISPID_GLOBAL_TIME,                      Global_Time, 0, 0},
1330     {DISPID_GLOBAL_DAY,                       Global_Day, 0, 1},
1331     {DISPID_GLOBAL_MONTH,                     Global_Month, 0, 1},
1332     {DISPID_GLOBAL_WEEKDAY,                   Global_Weekday, 0, 1, 2},
1333     {DISPID_GLOBAL_YEAR,                      Global_Year, 0, 1},
1334     {DISPID_GLOBAL_HOUR,                      Global_Hour, 0, 1},
1335     {DISPID_GLOBAL_MINUTE,                    Global_Minute, 0, 1},
1336     {DISPID_GLOBAL_SECOND,                    Global_Second, 0, 1},
1337     {DISPID_GLOBAL_DATEVALUE,                 Global_DateValue, 0, 1},
1338     {DISPID_GLOBAL_TIMEVALUE,                 Global_TimeValue, 0, 1},
1339     {DISPID_GLOBAL_DATESERIAL,                Global_DateSerial, 0, 3},
1340     {DISPID_GLOBAL_TIMESERIAL,                Global_TimeSerial, 0, 3},
1341     {DISPID_GLOBAL_INPUTBOX,                  Global_InputBox, 0, 1, 7},
1342     {DISPID_GLOBAL_MSGBOX,                    Global_MsgBox, 0, 1, 5},
1343     {DISPID_GLOBAL_CREATEOBJECT,              Global_CreateObject, 0, 1},
1344     {DISPID_GLOBAL_GETOBJECT,                 Global_GetObject, 0, 0, 2},
1345     {DISPID_GLOBAL_DATEADD,                   Global_DateAdd, 0, 3},
1346     {DISPID_GLOBAL_DATEDIFF,                  Global_DateDiff, 0, 3, 5},
1347     {DISPID_GLOBAL_DATEPART,                  Global_DatePart, 0, 2, 4},
1348     {DISPID_GLOBAL_TYPENAME,                  Global_TypeName, 0, 1},
1349     {DISPID_GLOBAL_ARRAY,                     Global_Array, 0, 1},
1350     {DISPID_GLOBAL_ERASE,                     Global_Erase, 0, 1},
1351     {DISPID_GLOBAL_FILTER,                    Global_Filter, 0, 2, 4},
1352     {DISPID_GLOBAL_JOIN,                      Global_Join, 0, 1, 2},
1353     {DISPID_GLOBAL_SPLIT,                     Global_Split, 0, 1, 4},
1354     {DISPID_GLOBAL_REPLACE,                   Global_Replace, 0, 3, 6},
1355     {DISPID_GLOBAL_STRREVERSE,                Global_StrReverse, 0, 1},
1356     {DISPID_GLOBAL_INSTRREV,                  Global_InStrRev, 0, 2, 4},
1357     {DISPID_GLOBAL_LOADPICTURE,               Global_LoadPicture, 0, 1},
1358     {DISPID_GLOBAL_SCRIPTENGINE,              Global_ScriptEngine, 0, 0},
1359     {DISPID_GLOBAL_SCRIPTENGINEMAJORVERSION,  Global_ScriptEngineMajorVersion, 0, 0},
1360     {DISPID_GLOBAL_SCRIPTENGINEMINORVERSION,  Global_ScriptEngineMinorVersion, 0, 0},
1361     {DISPID_GLOBAL_SCRIPTENGINEBUILDVERSION,  Global_ScriptEngineBuildVersion, 0, 0},
1362     {DISPID_GLOBAL_FORMATNUMBER,              Global_FormatNumber, 0, 1, 5},
1363     {DISPID_GLOBAL_FORMATCURRENCY,            Global_FormatCurrency, 0, 1, 5},
1364     {DISPID_GLOBAL_FORMATPERCENT,             Global_FormatPercent, 0, 1, 5},
1365     {DISPID_GLOBAL_FORMATDATETIME,            Global_FormatDateTime, 0, 1, 2},
1366     {DISPID_GLOBAL_WEEKDAYNAME,               Global_WeekdayName, 0, 3},
1367     {DISPID_GLOBAL_MONTHNAME,                 Global_MonthName, 0, 1, 2},
1368     {DISPID_GLOBAL_ROUND,                     Global_Round, 0, 1, 2},
1369     {DISPID_GLOBAL_ESCAPE,                    Global_Escape, 0, 1},
1370     {DISPID_GLOBAL_UNESCAPE,                  Global_Unescape, 0, 1},
1371     {DISPID_GLOBAL_EVAL,                      Global_Eval, 0, 1},
1372     {DISPID_GLOBAL_EXECUTE,                   Global_Execute, 0, 1},
1373     {DISPID_GLOBAL_EXECUTEGLOBAL,             Global_ExecuteGlobal, 0, 1},
1374     {DISPID_GLOBAL_GETREF,                    Global_GetRef, 0, 1},
1375     {DISPID_GLOBAL_VBMSGBOXHELPBUTTON,     Global_vbMsgBoxHelpButton, BP_GET},
1376     {DISPID_GLOBAL_VBMSGBOXSETFOREGROUND,  Global_vbMsgBoxSetForeground, BP_GET},
1377     {DISPID_GLOBAL_VBMSGBOXRIGHT,          Global_vbMsgBoxRight, BP_GET},
1378     {DISPID_GLOBAL_VBMSGBOXRTLREADING,     Global_vbMsgBoxRtlReading, BP_GET}
1379 };
1380
1381 HRESULT init_global(script_ctx_t *ctx)
1382 {
1383     HRESULT hres;
1384
1385     ctx->global_desc.ctx = ctx;
1386     ctx->global_desc.builtin_prop_cnt = sizeof(global_props)/sizeof(*global_props);
1387     ctx->global_desc.builtin_props = global_props;
1388
1389     hres = get_typeinfo(GlobalObj_tid, &ctx->global_desc.typeinfo);
1390     if(FAILED(hres))
1391         return hres;
1392
1393     hres = create_vbdisp(&ctx->global_desc, &ctx->global_obj);
1394     if(FAILED(hres))
1395         return hres;
1396
1397     ctx->script_desc.ctx = ctx;
1398     hres = create_vbdisp(&ctx->script_desc, &ctx->script_obj);
1399     if(FAILED(hres))
1400         return hres;
1401
1402     return init_err(ctx);
1403 }