1#REM DataFlex standard MACROs 2#REM Copyright 1987-2001 Data Access Corporation, Miami FL, USA 3#REM All Rights reserved. 4#REM THIS IS THE FILE THAT DEFINES THE COMMANDS IN DATAFLEX VERSION 3.1 5#REM IT MUST BE PACKed INTO FLEX.CFL WITH THE COMMAND "DFPACK FMAC" 6#REM THIS SUPPORTS FMACS FOR BOTH 3.1 AND 4.0 (WINDOWS). THE COMPILER 7#REM VARIABLE IS$WINDOWS DETERMINES IF THIS IS CHARACTER MODE OR GUI. 8 9#REM 3/10/2001 mg - Using VDF7 service pack 1 fmac. Converted to allow character mode. 10#REM To set for windows define IS$WINDOWS.Separated messages by purpose (VDF, WAS, XML) 11#REM so that they can be turned on or off depending on a compiler variable. This has 12#REM not yet been implemented, so everything is on. 13#REM This FMAC needs to be checked against the FMAC that John sent in Feb 2001 for 14#REM changes. 15 16#REM Changes 5/20/98 -JJT 17#REM Changes in many commands to make this friendlier for VDF5.1 18#REM Changed syntax/Better error checking. Most commands are 19#REM added to the end. Note we now use !Zk, !Zl, !Zm, !Zn, !Zo 20#REM 1. All changes marked JJT-5.1 21 22 23#REM GENERAL FORMAT OF AN ICODE LINE: 24 25#REM !A [] $000 ARG1 ARG2 26#REM !A Generates the next line number 27#REM [] is a place holder for the indicators 28#REM $000 is a hex number that calls the appropriate 'C' routine 29#REM arg1, arg2 - two arguments of any type/class 30#REM can be passed to the routine. 31 32#REM THE FOLLOWING ARE THE COMPILE-TIME VARIABLES USED 33#REM UPPERCASE WILL AUTO-INCREMENT (FIRST); 34#REM LOWER CASE WILL NOT. THEN SUBSTITUTE TO AN INTEGER VALUE. 35 36#REM !A - Next line number 37#REM !B - Reserved 38#REM !C - Next indicator number 39#REM !D - Next integer number 40#REM !E - Autopage, window # 41#REM !F - Autopage, page # 42#REM G,H,I,J,K,L,M - You may use these 43#REM !N - Static nesting level 44#REM !O - Used by ?ET*ATTRIBUTE 45#REM !P - Used by report 46#REM !Q - Low level temporary 47#REM !R - Static structure number (Begin/End) 48#REM !S - Temporary used by end/loop/until 49#REM !T,!U - Reserved 50#REM !V - Next variable number. 51#REM !W - Reserved 52#REM !X - Temporary for enter & report - file numbers. 53#REM !Y - Temporary for keyproc 54#REM !Z - Reserved 55 56#REM Type checking in command args use negative logic and 57#REM conform to the following: 58 59#REM C - Constant V - Memory variable 60#REM F - File element G - Group 61#REM W - Window 62#REM S - String E - Expression 63#REM N - Number L - Label 64#REM D - Date O - Group options 65#REM I - Integer B - Group indicators 66#REM # - Indicator . - No more arguments 67#REM X - Not an indicator R - Argument required 68#REM T - Error if typed $ - Changes window to string 69#REM U - Error if untyped "constant" - Must be constant 70 71#REM 72#REM Types from Runtime. Command 73#REM ARGSTR = 0, S String 74#REM ARGNUM = 1, N Number 75#REM ARGDATE = 2, D Date 76#REM ARGINT = 3, I Integer 77#REM ARGBIGINT = 4, H BigInt 78#REM ARGREAL = 5, R Real 79#REM ARGBOOL = 6, B Logical - this is actually only used for indicators 80#REM ARGMEM = 7, X Binary 81#REM ARGTIME = 8, T Time 82#REM ARGTIMESTAMP = 9, M DateTime 83#REM ARGFLOAT = 10, F Float 84#REM ARGBYTE = 11, Y Char 85#REM ARGUBYTE = 12 C UChar 86#REM ARGSHORT = 13, W Short 87#REM ARGUSHORT = 14, U UShort 88#REM ARGULONG = 15, V UInteger 89#REM ARGBIT = 16, Z Boolean (This is what you use for boolean) 90#REM ARGBIGUINT = 17, G UBigInt 91#REM ARGSQLNUMERIC = 18, O Currency (Visual Basic Decimal) 92#REM ARGCSTRING = 19, K Struct 93#REM ARGTIMESPAN = 20, P Timepsan (PERIOD) 94#REM ARGUNICODE = 21, A Array 95#REM ARGSUPERBCD = 22, Q Decimal (Very large decimal) 96#REM J Variant 97#REM ARG_UNUSED 98#REM 99#REM Classes from Runtime. 100#REM ARGNOTHING, 101#REM ARGFLDSTR, Field (string) F 102#REM ARGFLDNUM, Field (BCD, Integer or Date) F 103#REM ARGWNDSTR, Window (string) W 104#REM ARGWNDNUM, Window (BCD, Integer or Date) W 105#REM ARGDATSTR, String or Expression CV 106#REM ARGDATNUM, BCD or Numeric CV 107#REM ARGCONINT, Int or Long CV 108#REM ARGSYSINT, System Integers 109#REM ARGSYSDATE, System Date 110#REM ARGSYSTIME, System Time 111#REM ARGDATREAL, Reals CV 112#REM ARGEXP, Expression E 113#REM ARGWNDRL, Window Real W 114#REM ARGSTACK, Stack S 115#REM ARGHEAP, Global Heap Address H 116#REM ARGPROC Pointer into shared memory P (for process) 117#REM 118 119#REM Method Overloading 120#REM NOTE: As of 15.0 we are deprecating the use of Overloaded messages. The existing technology will 121#REM continue to be supported as-is and it will not be extended 122#REM 123#REM Function Foo Overloaded Integer i Integer j Returns Integer 124#REM Function Foo Overloaded Integer i 125#REM 126#REM Set Entry_Msg To (Get_Foo(Integer, Integer)) 127#REM Move (Foo(self,10)) To windowindex 128#REM 129#REM Overloaded types create mangled symbol: 130#REM 131#REM Get_Foo@2 132#REM Get_Foo@1 133#REM Also defines symbol Get_Foo_Overloaded 134#REM 135#REM Non-Overloaded types create non-mangled symbol: 136#REM 137#REM Get_Foo 138#REM 139#REM Rules 140#REM 1. Overloaded and non-overloaded messages may not have the same name (compiler error) 141#REM 2. Global procedures and functions cannot be overloaded (compiler error)...only class methods 142#REM 3. Class methods (regular and overloaded), global proc/funcs, and object name (when function) cannot 143#REM have the same name. The first "type" to use the name locks it for that type. 144#REM 145#REM Fixups: 146#REM 147#REM When compiling, FREFs are created for code fixups. At that point, it 148#REM is unclear how the method name will be declared (overloaded or non-overloaded), 149#REM so a mangled name is created. When fixups are processed, method identifiers 150#REM are resolved in this order: 151#REM 152#REM 1. Non-overloaded method (class or global) 153#REM 2. Object overloaded Method 154#REM Since there can be no overlap of naming across types, the order or resolution does not matter 155#REM 156#REM 157#REM Object names: 158#REM 159#REM Object access methods are not overloaded. 160#REM 161#REM Properties: 162#REM 163#REM Properties are not overloaded. 164#REM 165 166#REM Example: #COMMAND EXAMPLE SND means arg1 cannot be string,number,or date 167 168#COMMAND ABORT &. 169 !A [] $040 170#ENDCOMMAND 171 172#COMMAND ACCEPT #L #L #LUC #LUWFC . 173 #SET Q$ !0 174 #IF !q=0 175 AUTO2$ ACCEPT PAGE!f 176 #ELSE 177 #IF !q=1 178 #IFCLASS !1 "G" 179 AUTO2$ ACCEPT PAGE!f !1 180 #ELSE 181 #CHECK !1 _CVFG#L 182 !A [] $1C1 !1 |CI0 183 #ENDIF 184 #ELSE 185 #IF !q=2 186 #IFCLASS !2 "G" 187 #FORMAT !1 !2 188 #CHECK !1 _CVFG#L 189 !A [] $1C1 !1 |CI0 190 #ELSE 191 AUTO2$ ACCEPT PAGE!f TO !2 192 #ENDIF 193 #ELSE 194 #IF !q>2 195 #IFCLASS !3 "G" 196 #CHECK !1 "TO" 197 AUTO2$ ACCEPT PAGE!f TO !2 !3 198 #ELSE 199 #IFCLASS !4 "G" 200 #FORMAT !1 !4 201 #ENDIF 202 #CHECK !1 _CVFG#L 203 #CHECK !2 "TO" 204 #CHECK !3 _CG#LE 205 !A [] $1C1 !1 !3 206 #ENDIF 207 #ENDIF 208 #ENDIF 209 #ENDIF 210 #ENDIF 211#ENDCOMMAND 212 213#COMMAND APPEND #LGULCE$ #LGULR$ 214 !A [] $243 !1 !2 215 #IF !0>2 216 APPEND !1 !3 !4 !5 !6 !7 !8 !9 217 #ENDIF 218#ENDCOMMAND 219 220#COMMAND ASCII &#GRLU "TO" #UGRLCE . 221 !A [] $247 !1 !3 222#ENDCOMMAND 223 224#REM The AUTO commands are used internally to generate the 225#REM next AUTOPAGE window number at compile time. 226 227#COMMAND AUTO2$ 228 !1 !2.!E !3 !4 !5 229 #CHECK !2.!e _RUCVF#L 230#ENDCOMMAND 231 232#COMMAND AUTO3$ 233 !1 !2 !3.!E !4 !5 234 #CHECK !3.!e _RUCVF#L 235#ENDCOMMAND 236 237#COMMAND AUTO4$ 238 !1 !2 !3 !4.!E !5 239 #CHECK !4.!e _RUCVF#L 240#ENDCOMMAND 241 242#COMMAND AUTOPAGE &T %USNVLE# . 243 #CHECK !1.N _WFVSG#LU 244 #SET F$ !1.N 245 #SET E$ !2 246 #IF !e>0 247 #SET E$ !e-1 248 #ENDIF 249#ENDCOMMAND 250 251#REM BACKFIELD can only be used in a KEY PROCedure. It returns to the 252#REM window (COMMAND) PRIOR to the one that called it. 253 254#COMMAND BACKFIELD &. 255 !A [] $288 256#ENDCOMMAND 257 258#COMMAND BEGIN &. 259 #SET N$ !N 260 #PUSH !R 261 #XPUSH !n $INIT // Init IF/ELSE stack at this nesting level. 262 #IFIND //INCLUDE JUMPS IF INDICATORS ON LINE. 263 // GOTO BEGIN$!r 264 !A [] $041 |CI0 265 #FREF BEGIN$!r !a 266 #$ !A 0 0 0 $041 |CL0 267 #FREF END$!r !a 268 #ENDIF 269 #$ BEGIN$!r: 270#ENDCOMMAND 271 272#COMMAND BLANKFORM &%CVFG#EL "THRU""THROUGH""" %CVFG#LUE . 273 #IF !0>0 274 #IFDEF !1 275 !A [] $1C4 !1 !3 276 #ELSE 277 #CHECK !1.N _#RLGVU 278 !A [] $1C4 !1.N 279 #ENDIF 280 #ELSE 281 !A [] $1C4 |CI0 282 #ENDIF 283#ENDCOMMAND 284 285#COMMAND BREAK$ // does breakpoint for all 286 #IF (!0>0) 287 #IFCLASS !1 _F 288 BREAKPOINT |CI!P !1 289 #ELSE 290 #CHECK !1 _LGBCVWIEOU# 291 #ENDIF 292 #ENDIF 293 #IF (!0>1) 294 BREAK$ !2 !3 !4 !5 !6 !7 !8 !9 295 #ENDIF 296#ENDCOMMAND 297 298#COMMAND BREAK$DOWN R // does gosub to break 299 #IF !x>0 // sections from N to 0 300 #IF !0>1 301 // GOSUB !1!x 302 !A [] $42 |CL0 303 #FREF !1!x !a 304 #ELSE 305 //[!x] GOSUB !1!x 306 !A [!x] $42 |CL0 307 #FREF !1!x !a 308 #ENDIF 309 #ENDIF 310 #SET X$ !x-1 311 #IF !x>0 312 BREAK$DOWN !1 !2 313 #ENDIF 314#ENDCOMMAND 315 316#COMMAND BREAK$PRT // prints all SUBHEADERs 317 #IF !x<!p // for page 318 #IFDEF !1!X.N 319 !A [~ !x] $202 !1!x.N // OUTPUT 320 #ENDIF 321 BREAK$PRT !1 !2 322 #ENDIF 323#ENDCOMMAND 324 325#COMMAND BREAK$T3 326 #IF !x<!p // makes unused sections defined 327 MAKEDEF$ RPT.SUBHEADER!X RPT.SUBTOTAL!x 328 BREAK$T3 329 #ENDIF 330#ENDCOMMAND 331 332#COMMAND BREAK$UP // does GOSUB to break 333 #IF !x<!p // sections from 0 to N 334 #IF !0=1 335 //[!X] GOSUB !1!x 336 !A [!X] $42 |CL0 337 #FREF !1!x !a 338 #ELSE 339 // GOSUB !1!X 340 !A [] $42 |CL0 341 #FREF !1!X !a 342 #ENDIF 343 BREAK$UP !1 !2 344 #ENDIF 345#ENDCOMMAND 346 347#COMMAND BREAKINIT &. // set up breakpoints for REPORT 348 !A [] $207 349#ENDCOMMAND 350 351#COMMAND BREAKPOINT &UVFW UCI // test breakpoint and set indicators 352 !A [] $204 !1 !2 353#ENDCOMMAND 354 355#COMMAND CALCULATE &#ULG "TO" #UCLGER . 356 #IFTYPE !3 "R" 357 !A [] $085 !1 !3 //MOVE REAL 358 #ELSE 359 !A [] $081 !1 !3 //MOVE NUM 360 #ENDIF 361#ENDCOMMAND 362 363#COMMAND CHAIN RNDIG#L NDG#L 364 #SET Q$ 0 365 #IFSAME !1 WAIT 366 CHAIN$HELP !3 !4 !5 !6 !7 !8 !9 367 !A [] $049 !2 |CI!q 368 #ELSE 369 #CHECK !1 _U 370 CHAIN$HELP !2 !3 !4 !5 !6 !7 !8 !9 371 !A [] $045 !1 |CI!q 372 #ENDIF 373#ENDCOMMAND 374 375#COMMAND CHAIN$HELP UVNDEG#L 376 #IF (!0>0) 377 #SET Q$ (!q+!1) 378 CHAIN$HELP !2 !3 !4 !5 !6 !7 !8 !9 379 #ENDIF 380#ENDCOMMAND 381 382#COMMAND CHARACTER &#%GULD "TO" #GRULCE . 383 !A [] $248 !1 !3 384#ENDCOMMAND 385 386#COMMAND CLEAR_OPTION #LGRE . // Clears window options which 387 #IFCLASS !1 _C // have been set ON by set option 388 #SET Q$ !1 // or by dfsetup. 389 !A [] $04B |CI!q |CI0 // CLEAR_OPTION AUTORETURN 390 #ELSE 391 !A [] $04B !1 |CI0 // THIS COMMAND IS FOR INTERNAL USE. 392 #ENDIF 393#ENDCOMMAND 394 395#COMMAND CLEARFORM &%CVFG#LE "THRU""THROUGH""" %CVFG#LUE . 396 #IF !0>0 397 #IFDEF !1 398 !A [] $1C3 !1 !3 |CI0 399 #ELSE 400 #CHECK !1.N _R#LGVU 401 !A [] $1C3 !1.N |CI0 402 #ENDIF 403 #ELSE 404 !A [] $1C3 |CI0 405 #ENDIF 406#ENDCOMMAND 407 408#COMMAND CLEARSCREEN & . 409 !A [] $144 !1 410#ENDCOMMAND 411 412#COMMAND CLEARWARNING &. 413 !A [] $048 414#ENDCOMMAND 415 416#COMMAND CLEARXY &%#USGL %#USGLR . 417 !A [] $146 !1 !2 418#ENDCOMMAND 419 420#COMMAND CLOSE_INPUT 421 #IFSAME !1 CHANNEL 422 !A [] $10A |CI0 !2 423 #ENDIF 424 !A [] $100 |CS'CON:' 425#ENDCOMMAND 426 427#COMMAND CLOSE_OUTPUT 428 #IFSAME !1 CHANNEL 429 !A [] $10A |CI1 !2 430 #ENDIF 431 !A [] $101 |CS'LST:' 432#ENDCOMMAND 433 434#COMMAND CMDLINE &#RLUGE . 435 !A [] $24A !1 |CS'' 436#ENDCOMMAND 437 438// With the name mangling code, we need a way to define external C messages. 439// The CMSG command does just that. It uses the #FGEN command to parse over a special syntax 440// that defines a prototype in this form: 441// 442// Example: CMSG I GET_AUX_VALUE |CI$31 I 443// 444// This generates in !? a name GET_AUX_VALUE@I if we mangle on the parameter list types 445// This generates in !? a name GET_AUX_VALUE@I@I if we mangle on the parameter list and return type 446// This generates in !? a name GET_AUX_VALUE@1 if we mangle on the number of the parameters 447// 448// CMSG V GET_FOO |CI$099 V 449// 450// Returns GET_FOO_# and receives a variable argument list. 451// 452 453//#IFDEF MANGLE_NAMES 454 #COMMAND CMSG RIND RIND RSND 455 #IFNDEF !2 456 #REPLACE !2 !3 457 #ENDIF 458 #ENDCOMMAND 459//#ENDIF 460 461#COMMAND COPYFILE &#LGU "TO" R#LGU . 462 !A [] $2C5 !1 !3 463#ENDCOMMAND 464 465#COMMAND CONSTRAINT_SAVE_INIT . 466 !A [] $0DE 467#ENDCOMMAND 468 469#COMMAND CONSTRAINT_SET R#LG """DELETE""CLEAR" 470 #IFSAME !2 DELETE 471 !A [] $0DA !1 // DELETE 472 #ELSE 473 #IFSAME !2 CLEAR 474 !A [] $0DA !1 // DELETE FIRST 475 #ENDIF 476 !A [] $0D0 !1 // QUERY ID 477 #ENDIF 478#ENDCOMMAND 479 480#COMMAND CONSTRAINT_VALIDATE . 481 !A [] $0DF 482#ENDCOMMAND 483 484#COMMAND CONSTRAINT_INIT r r "BY" r // mode file by index 485 #IFSAME !1 $0 $1 $2 $3 $4 $5 486 #SET Q$ !1 487 MOVE |CI!q TO INDEX_NUMBER 488 #ELSE 489 MOVE !1 TO INDEX_NUMBER 490 #ENDIF 491 #IFDEF !2 492 !A [] $0D6 !2 !4 // VARIABLE FILE NUMBER 493 #ELSE 494 #SET Q$ !2.FILE_NUMBER // FILE NAME ONLY 495 !A [] $0D6 |CI!q !4 496 #ENDIF 497#ENDCOMMAND 498 499#COMMAND CONSTRAINED_CLEAR 500 #IF !0>0 501 CONSTRAINT_INIT !1 !2 !3 !4 502 #ENDIF 503 !A [] $DC // Find clear 504#ENDCOMMAND 505 506#COMMAND CONSTRAINED_FIND // MODE FILE by INDEX 507 #IFSAME !1 NEXT 508 #IF !0>1 509 !A [] $0D0 !2 // QUERY ID 510 #ENDIF 511 !A [] $D8 // find NEXT 512 #ELSE 513 #IFSAME !1 FIRST 514 CONSTRAINED_CLEAR GE !2 !3 !4 515 #ELSE 516 #IFSAME !1 LAST 517 CONSTRAINED_CLEAR LE !2 !3 !4 518 #ELSE 519 #IF !0>0 520 CONSTRAINT_INIT !1 !2 !3 !4 521 #ENDIF 522 // THIS USES RB DATA ,IT DOES NOT CLEAR THE rb. 523 #ENDIF 524 #ENDIF 525 !A [] $D7 |CI0 // find init, sets found on status of constrained relates. 526 !A [FOUND] $D8 // find NEXT (first) 527 #ENDIF 528#ENDCOMMAND 529 530// JJT-5.1 531//#COMMAND DATE TR 532// #NUM V$ 533// #REPLACE !1 |VD!v 534// #IF (!0>1) 535// DATE !2 !3 !4 !5 !6 !7 !8 !9 536// #ENDIF 537//#ENDCOMMAND 538 539#COMMAND DEBUG &. 540 !A [] $044 541#ENDCOMMAND 542 543#COMMAND DECREMENT #ELCRUG . 544 #IFTYPE !1 "IV" 545 !A [] $087 !1 |CI0 546 #ELSE 547 Move (!1 - 1) to !1 548 #ENDIF 549#ENDCOMMAND 550 551#COMMAND DESPOOL &. // O/S dependent function 552 !A [] $2C6 553#ENDCOMMAND 554 555#COMMAND DIRECTORY &R#LGU . 556 !A [] $2C4 !1 557#ENDCOMMAND 558 559#COMMAND DIRECT_INPUT 560 #IFSAME !1 CHANNEL 561 !A [] $10A |CI0 !2 562 #IF !0>2 563 DIRECT_INPUT !3 !4 564 #ENDIF 565 #ELSE 566 #IFSAME !1 RESOURCE 567 #IFDEF !2 // allow variable string for resource name/id 568 DIRECT_INPUT ('!1:' + string(!2)) !3 !4 !5 !6 !7 !8 !9 569 #ELSE 570 #SET Q$ !2.RSC 571 !A [] $100 |CS"!1:!q" 572 #ENDIF 573 #ELSE 574 #IFSAME !1 DBMS IMAGE 575 #IFSAME !1 IMAGE 576 #IFDEF !2 // allow variable for image number 577 DIRECT_INPUT ('!1:' + string(!2)) !3 !4 !5 !6 !7 !8 !9 578 #ELSE 579 #SET Q$ !2.N 580 !A [] $100 |CS"!1:!q" 581 #ENDIF 582 #ELSE 583 #IFCLASS !2 "F" // if field ref, use as is 584 !A [] $100 |CS"!1:!2" 585 #ELSE 586 #IFDEF !2 // for all classes/types, assume variable string for field ref 587 DIRECT_INPUT ('!1:' + string(!2)) !3 !4 !5 !6 !7 !8 !9 588 #ELSE 589 #CHECK !2 _U // force cannot be untyped error. 590 #ENDIF 591 #ENDIF 592 #ENDIF 593 #ELSE 594 #CHECK !2 . 595 !A [] $100 !1 596 #ENDIF 597 #ENDIF 598 #ENDIF 599#ENDCOMMAND 600 601#COMMAND DIRECT_OUTPUT 602 #IFSAME !1 CHANNEL 603 !A [] $10A |CI1 !2 604 #IF !0>2 605 DIRECT_OUTPUT !3 !4 606 #ENDIF 607 #ELSE 608 #IFSAME !1 DBMS IMAGE 609 #IFSAME !1 IMAGE 610 #IFDEF !2 // allow variable for image number 611 DIRECT_OUTPUT ('!1:' + string(!2)) !3 !4 !5 !6 !7 !8 !9 612 #ELSE 613 #SET Q$ !2.N 614 !A [] $101 |CS"!1:!q" 615 #ENDIF 616 #ELSE 617 #IFCLASS !2 "F" // if field ref, use as is 618 !A [] $101 |CS"!1:!2" 619 #ELSE 620 #IFDEF !2 // for all classes/types, assume variable string for field ref 621 DIRECT_OUTPUT ('!1:' + string(!2)) !3 !4 !5 !6 !7 !8 !9 622 #ELSE 623 #CHECK !2 _U // force cannot be untyped error. 624 #ENDIF 625 #ENDIF 626 #ENDIF 627 #ELSE 628 #CHECK !2 . 629 !A [] $101 !1 630 #ENDIF 631 #ENDIF 632#ENDCOMMAND 633 634#COMMAND APPEND_OUTPUT 635 #IFSAME !1 CHANNEL 636 !A [] $10A |CI1 !2 637 #IF !0>2 638 APPEND_OUTPUT !3 !4 639 #ENDIF 640 #ELSE 641 #IFSAME !1 DBMS IMAGE 642 #IFSAME !1 IMAGE 643 #IFDEF !2 // allow variable for image number 644 APPEND_OUTPUT ('!1:' + string(!2)) !3 !4 !5 !6 !7 !8 !9 645 #ELSE 646 #SET Q$ !2.N 647 !A [] $101 |CS"!1:!q" |CI2 648 #ENDIF 649 #ELSE 650 #IFCLASS !2 "F" // if field ref, use as is 651 !A [] $101 |CS"!1:!2" |CI2 652 #ELSE 653 #IFDEF !2 // for all classes/types, assume variable string for field ref 654 APPEND_OUTPUT ('!1:' + string(!2)) !3 !4 !5 !6 !7 !8 !9 655 #ELSE 656 #CHECK !2 _U // force cannot be untyped error. 657 #ENDIF 658 #ENDIF 659 #ENDIF 660 #ELSE 661 #CHECK !2 . 662 !A [] $101 !1 |CI2 663 #ENDIF 664 #ENDIF 665#ENDCOMMAND 666 667#COMMAND DISKFREE #LIDNRUG "TO" #LDRCUGE . 668 !A [] $2d5 !3 !1 669#ENDCOMMAND 670 671#COMMAND DISPLAY RUG#L 672 #IF !0>2 673 #CHECK !2 "TO" 674 #CHECK !3 _RGC#LE 675 !A [] $1C2 !1 !3 676 #IF !0>3 677 #CHECK !4 _#LWFCV 678 #FORMAT !3 !4 679 #ENDIF 680 #ELSE 681 AUTO4$ DISPLAY !1 TO PAGE!f !2 682 #ENDIF 683#ENDCOMMAND 684 685#COMMAND ELSE 686 #$ !A [] $41 |CI0 //jump over else code. 687 #XPOP !n S$ // GET GOTO LINE NUMBER FROM LAST IF. 688 #XPUSH 1 !a // Save line number of ELSE jump. 689 #XPUSH 0 !n // Save static nest level. 690 #FREF (!a+1) !s // Modify goto line number with ELSE command 691 !1 !2 !3 !4 !5 !6 !7 !8 !9 692 #XPOP 0 Q$ // Restore static nest level to Q. 693 #XPOP 1 S$ // Restore line number of else jump. 694 #IF (!n>!q) 695 #FREF END$!r !s // Modify ELSE jump to after BEGIN block. 696 #ELSE 697 #FREF (!a+1) !s // Modify ELSE jump to after the ELSE command. 698 #ENDIF 699#ENDCOMMAND 700 701#COMMAND END &. 702 #POP S$ 703 #IFDEF WHILE$!s 704 !A [] $041 WHILE$!s 705 #ENDIF 706 END$!s: 707 #SET N$ !n-1 708#ENDCOMMAND 709 710#COMMAND ENDGROUP &. 711 //ENTUPDATE // update record buffer 712 !A [] $280 |CI0 713 //GOTO ENT$END!x 714 !A [] $41 |CL0 715 #FREF ENT$END!x !a 716 //RETURN // RETURN stops entry command list 717 !A [] $43 |CI0 718 ENT$END!x: 719#ENDCOMMAND 720 721#COMMAND ENT$KEY 722 ENT$DISP: 723 IF ENTER$DISPLAY NE 0 BEGIN 724 !A [FOUND] $042 ENTER$DISPLAY 725 END 726 ELSE BEGIN 727 [FOUND] ENTDISPLAY // JUST DO AN ENTDISPLAY 728 END 729 // ENTAGAIN 730 !A [] $287 731 // RETURN 732 !A [] $43 |CL0 733 734 //<<<<<<< STANDARD KEY PROCEDURES FOR ENTER GROUP >>>>>>>>>> 735 //KEYPROC KEY.FIND 736 ENTER$.FIND: 737 // ENTFIND GE // no, FIND 738 !A [] $281 |CI3 739 #KEYPROC 7 !a 740 // GOTO ENT$DISP 741 !A [] $41 ENT$DISP 742 743 //KEYPROC KEY.NEXT // FIND next record 744 ENTER$.NEXT: 745 // ENTFIND GT 746 !A [] $281 |CI4 747 #KEYPROC 15 !a 748 // GOTO ENT$DISP 749 !A [] $41 ENT$DISP 750 751 //KEYPROC KEY.PREVIOUS // FIND prv record 752 ENTER$.PREVIOUS: 753 // ENTFIND LT 754 !A [] $281 |CI0 755 #KEYPROC 14 !a 756 // GOTO ENT$DISP 757 !A [] $41 ENT$DISP 758 //KEYPROC KEY.UP 759 //KEYPROC KEY.FIELD // BACK FIELD 760 ENTER$.FIELD: 761 // BACKFIELD 762 !A [] $288 763 #KEYPROC 16 !a 764 #KEYPROC 6 !a 765 // RETURN 766 !A [] $43 |CI0 767 //KEYPROC KEY.CLEAR // CLEAR SCREEN 768 ENTER$.CLEAR: 769 // INDICATE ERR FALSE 770 !A [] $4028 |CI0 |CI0 |127 771 #KEYPROC 13 !a 772 !A [] $284 // ENTCLEAR 773 // RETURN 774 !A [] $43 |CI0 775 //KEYPROC KEY.SAVE 776 ENTER$.SAVE: 777 !A [] $285 // ENTSKIP 778 #KEYPROC 9 !a 779 // RETURN 780 !A [] $43 |CI0 781 //KEYPROC KEY.HELP 782 ENTER$.HELP: 783 //HELP 784 !A [] $1C5 |CI0 785 #KEYPROC 18 !a 786 //ENTAGAIN 787 !A [] $287 788 //RETURN 789 !A [] $43 |CI0 790 791 // KEYPROC KEY.PRINT 792 ENTER$.PRINT: 793 // output current page 794 !A [] $202 |VI9 795 #KEYPROC 2 !a 796 //ENTAGAIN and RETURN 797 !A [] $287 798 !A [] $43 |CI0 799#ENDCOMMAND 800 801#REM ENTAGAIN can only be used in a KEY PROCedure. It returns to the 802#REM same window (COMMAND) that called the KEY PROCedure. 803 804#COMMAND ENTAGAIN &. 805 !A [] $287 806#ENDCOMMAND 807 808// only works with recnum tables. Command not used in VDF 809#COMMAND ENTDISPLAY &TVWG#LE . // Display all entries for a file 810 #IF (!0>0) 811 //RELATE !1 812 !A [] $C4 !1.RECNUM // only works with recnum (obsolete) 813 #ENDIF 814 //display from entry section 815 !A [] $283 816#ENDCOMMAND 817 818// This command has Not been changed to support file_number instead of recnum. This is not a VDF command and I 819// cannot imagine how it could be used. However, if someone is using this, they can only use recnum tables. Updating this 820// command would somehow imply that this command is supported in vdf -- it's not. 821#COMMAND ENTER CVWSRL#E 822 // INDICATE CONTINUE TRUE 823 #REPLACE CONTINUE |!C 824 !A [] $4028 |CI0 |CI0 CONTINUE~ 825 // INDICATE ENT$QUERY FALSE 826 #REPLACE ENT$QUERY |9 827 !A [] $4028 |CI0 |CI0 |9 828 #IF !0>0 // ENT$QUERY tells us if 829 #SET X$ !1.RECNUM // we are in QUERY(SUPERFIND) mode 830 #ELSE 831 #SET X$ 0 832 #ENDIF 833 //MOVEINT |CI!x TO |VI8 // set ENTMFILE (ENTER's main file variable) 834 !A [] $82 |CI!x |VI8 // to main file for ENTSFIND 835 ENT$LP: // start of enter loop 836 // GOSUB ENTRYSEC // do ENTRY section 837 !A [] $042 |CL0 838 #FREF ENTRYSEC !a 839 //[KEY.ESCAPE] GOTO END_ENTER // dropped thru 840 !A [|103] $041 |CL0 841 #FREF END_ENTER !a 842 // INDICATE ERR FALSE // set error false 843 !A [] $4028 |CI0 |CI0 |127 844 // temp disable ON ERROR 845 !A [] $82 |VI31 |VI32 846 !A [] $82 |CI0 |VI31 847 // REREAD command 848 !A [] $0C9 849 //[ENT$QUERY] GOSUB ENTER.EDIT // user procedure 850 !A [|9] $042 |CL0 851 #FREF ENTER.EDIT !a 852 //[NOT ERR] ENTUPDATE // update files from ENTRY 853 !A [~|127] $280 |CI0 854 //[NOT ERR] GOSUB ENTER.SAVE // user procedure 855 !A [~|127] $042 |CL0 856 #FREF ENTER.SAVE !a 857 [NOT ERR] MULTIBACK$ SAVE !1 !2 !3 !4 !5 !6 !7 !8 !9 // save 858 // UNLOCK command 859 !A [] $0C8 860 //[NOT ERR] GOSUB ENT$CLEAR // clear screen 861 !A [~ |127] $042 |CL0 862 #FREF ENT$CLEAR !a 863 // RE ENABLE ON ERROR 864 !A [] $82 |VI32 |VI31 865 //[CONTINUE] GOTO ENT$LP // loop 866 !A [CONTINUE] $041 ENT$LP 867 // GOTO END_ENTER // end if NOT CONTINUE 868 !A [] $041 |CL0 869 #FREF END_ENTER !a 870 // this clears the screen and all data files 871 ENT$CLEAR: MULTIBACK$ CLEAR !1 !2 !3 !4 !5 !6 !7 !8 !9 872 // INDICATE ENT$QUERY FALSE 873 !A [] $4028 |CI0 |CI0 |9 874 // ENTCLEAR - clear ENTRY section 875 !A [] $284 876 // RETURN 877 !A [] $043 |CI0 878 //<<<<<<< STANDARD KEY PROCEDURES FOR ENTER >>>>>>>>>> 879 //KEYPROC KEY.SAVE 880 ENTER$.SAVE: 881 !A [] $285 //ENTSKIP (skip rest of entries) 882 #KEYPROC 9 !a 883 // RETURN 884 !A [] $043 |CI0 885 //KEYPROC KEY.DELETE 886 // INDICATE ERR FALSE //default 887 ENTER$.DELETE: 888 !A [] $4028 |CI0 |CI0 |127 889 #KEYPROC 10 !a 890 // DISABLE ON ERROR 891 !A [] $82 |VI31 |VI32 892 !A [] $82 |CI0 |VI31 893 // REREAD 894 !A [] $C9 895 //[NOT ENT$QUERY] ERROR 71 // check for active record 896 !A [~|9] $47 |CI71 897 //[NOT ERR] GOSUB ENTER.DELETE // user procedure 898 !A [~|127] $042 |CL0 899 #FREF ENTER.DELETE !a 900 //[NOT ERR] GOSUB ENTER.EDIT // user procedure 901 !A [~|127] $042 |CL0 902 #FREF ENTER.EDIT !a 903 //[NOT ERR] DELETE !1 // delete records 904 !A [~|127] $C3 !1.RECNUM 905 [NOT ERR] MULTIBACK$ SAVE !2 !3 !4 !5 !6 !7 !8 !9 // related 906 // UNLOCK 907 !A [] $C8 908 //[NOT ERR] GOSUB ENT$CLEAR // clear systems 909 !A [~|127] $042 ENT$CLEAR 910 // enable ON ERROR 911 !A [] $82 |VI32 |VI31 912 // RETURN ENTRYSEC 913 !A [] $43 914 #FREF ENTRYSEC !a 915 // will GOSUB here for all find keys // 916 // INDICATE WAS$QUERY GROUP ANY [ENT$QUERY] 917 ENTER$.FIND: 918 #REPLACE WAS$QUERY |!C 919 !A [] $4020 |GB[|9] |GB[0] WAS$QUERY IN$GLANY |3 920 #KEYPROC 8 !a // SUPERFIND 921 #KEYPROC 7 !a // FIND 922 #KEYPROC 15 !a // NEXT 923 #KEYPROC 14 !a // PREVIOUS 924 //[KEY.SFIND] INDICATE ENT$QUERY TRUE 925 !A [|108] $4028 |CI0 |CI0 |9~ 926 //[NOT ENT$QUERY] INDICATE ENT$QUERY AS |CI!x EQ |VI15 // query mode? 927 !A [~ |9] $4008 |CI!x |VI15 |9 |2 928 //[KEY.SFIND] ENTSFIND GE 929 !A [|108] $282 |CI3 930 //[KEY.FIND][ENT$QUERY][ENT$PERMISSIVE] ENTFIND GE 931 !A [|107 |9 |10] $281 |CI3 932 //[KEY.FIND][ENT$QUERY][NOT ENT$PERMISSIVE] ENTSFIND GE // yes, SUPERFIND 933 !A [|107 |9 ~ |10] $282 |CI3 934 //[KEY.FIND][NOT ENT$QUERY] ENTFIND GE // no, FIND 935 !A [|107 ~ |9] $281 |CI3 936 //[KEY.NEXT][ENT$QUERY] ENTSFIND GT // yes, SUPERFIND 937 !A [|115 |9] $282 |CI4 938 //[KEY.NEXT][NOT ENT$QUERY] ENTFIND GT // no, FIND 939 !A [|115 ~ |9] $281 |CI4 940 //[KEY.PREVIOUS][ENT$QUERY] ENTSFIND LT // yes, SUPERFIND 941 !A [|114 |9] $282 |CI0 942 //[KEY.PREVIOUS][NOT ENT$QUERY] ENTFIND LT // no, FIND 943 !A [|114 ~ |9] $281 |CI0 944 [FINDERR] INDCT$GROUP ENT$QUERY GROUP ANY [WAS$QUERY] 945 //!A [FOUND] $283 // display records 946 !A [FOUND] $042 ENTER$DISPLAY 947 // ENTAGAIN // same window 948 !A [] $287 949 // RETURN 950 !A [] $43 |CI0 951 ////// define ENTER's KEY PROCedures //////////// 952 // KEYPROC BACKFIELD 953 // BACKFIELD 954 ENTER$.FIELD: 955 !A [] $288 956 #KEYPROC 16 !a 957 #KEYPROC 6 !a 958 ENTXRET:// RETURN 959 !A [] $43 |CL0 960 // KEYPROC CLEARSCREEN 961 ENTER$.CLEAR: 962 // INDICATE ERR FALSE 963 !A [] $4028 |CI0 |CI0 |127 964 #KEYPROC 13 !a 965 // GOSUB ENTER.CLEAR 966 !A [] $042 |CL0 967 #FREF ENTER.CLEAR !a 968 //[NOT ERR] GOSUB ENT$CLEAR 969 !A [~ |127] $042 ENT$CLEAR 970 // RETURN ENTRYSEC 971 !A [] $043 972 #FREF ENTRYSEC !a 973 // KEYPROC ESCAPE key 974 ENTER$.ESCAPE: 975 // INDICATE ERR FALSE 976 !A [] $4028 |CI0 |CI0 |127 977 #KEYPROC 3 !a 978 // GOSUB ENTER.EXIT 979 !A [] $42 |CL0 980 #FREF ENTER.EXIT !a 981 //[NOT ERR] RETURN ENTXRET 982 !A [~ |127] $43 ENTXRET 983 // RETURN 984 !A [] $43 |CI0 985 //KEYPROC KEY.HELP 986 //HELP 987 ENTER$.HELP: 988 !A [] $1C5 |CI0 989 #KEYPROC 18 !a 990 //ENTAGAIN 991 !A [] $287 992 //RETURN 993 !A [] $43 |CI0 994 //KEYPROC KEY.PRINT 995 //output current page 996 ENTER$.PRINT: 997 !A [] $202 |VI9 998 #KEYPROC 2 !a 999 //ENTAGAIN and RETURN 1000 !A [] $287 1001 !A [] $43 |CI0 1002 1003 ENTRYSEC:// ENTERMODE // start entry section 1004 !A [] $82 |CI!a |VI14 1005 !A [] $286 1006#ENDCOMMAND 1007 1008#COMMAND ENTEREND // end of ENTER 1009 MAKEDEF$ ENTER.SAVE ENTER.EDIT ENTER.DELETE ENTER.CLEAR ENTER.EXIT 1010 //RETURN 1011 !A [] $43 |CI0 1012 #IFDEF ENTER.DISPLAY 1013 #ELSE 1014 ENTER.DISPLAY: 1015 ENTDISPLAY 1016 !A [] $43 |CI0 1017 #ENDIF 1018 END_ENTER: 1019 // CLEARSCREEN 1020 !A [] $144 1021#ENDCOMMAND 1022 1023#COMMAND ENTERGROUP . // independent entry section 1024 #IFDEF ENT$DISP 1025 #ELSE 1026 //INTEGER ENT$START 1027 INTEGER ENT$END 1028 //#$ GOTO ENTK$END 1029 #$ !A [] $41 |CL0 1030 #FREF ENTK$END !a 1031 #$ ENT$KEY 1032 #SET X$ 0 1033 ENTK$END: 1034 #ENDIF 1035 1036 ENTRYSEC!X:// ENTERMODE // start entry section 1037 !A [] $82 |CI!a |VI14 1038 !A [] $286 1039 // INDICATE ENT$QUERY FALSE 1040 !A [] $4028 |CI0 |CI0 |9 1041#ENDCOMMAND 1042 1043#REM ENTERMODE defines the top of the ENTRY section. 1044 1045#COMMAND ENTERMODE &. 1046 //set start of ENTRY section 1047 !A [] $082 |CI!a |VI14 1048 //clear SAVE key 1049 !A [] $286 1050#ENDCOMMAND 1051 1052#REM ENTFIND FINDs a record based on the file/field of the last executed 1053#REM ENTRY command, and displays the results on a FIND. THE FIND mode 1054#REM is the only argument. 1055#REM ENTFIND also maintains the ENT$QUERY indicator. 1056 1057#COMMAND ENTFIND &"$0""$1""$2""$3""$4""$5" 1058 !A [] $281 |CI!1 1059#ENDCOMMAND 1060 1061#COMMAND ENTRY RWV#LUG UVC#LF UFVW#BC 1062 #IF !0=1 1063 AUTO3$ ENTRY !1 PAGE!f 1064 #ELSE 1065 #IFTYPE !2 "O" 1066 AUTO3$ ENTRY !1 PAGE!f !2 1067 #ELSE 1068 #CHECK !2 _RVCLE 1069 #IFCLASS !1 "E" 1070 !A [] $8000 !1 !2 {$C002,$C003 !3 1071 #ELSE 1072 !A [] $8000 !1 !2 !3 1073 #ENDIF 1074 #ENDIF 1075 #ENDIF 1076#ENDCOMMAND 1077 1078#REM ENTSFIND (SUPERFIND) FINDs a record in the main file, based on the 1079#REM file/field of the last ENTRY command, and displays the results. 1080#REM This depends on the main file number being in SYSINT 8 (|VI8). 1081 1082#COMMAND ENTSFIND &"$0""$1""$2""$3""$4""$5" . 1083 !A [] $282 |CI!1 1084#ENDCOMMAND 1085 1086#REM ENTUPDATE moves all changed windows from the 1087#REM window buffer to the record buffer 1088 1089// only works with recnum tables. Command not used in VDF 1090#COMMAND ENTUPDATE &T . 1091 #IF !0>0 1092 !A [] $280 !1.RECNUM // only works with recnum tables (obsolete command) 1093 #ELSE 1094 !A [] $280 |CI0 1095 #ENDIF 1096#ENDCOMMAND 1097 1098#COMMAND ERASEFILE &R#LGU . 1099 !A [] $2C1 !1 1100#ENDCOMMAND 1101 1102#COMMAND ERROR &#L%RGU #LUG . 1103 !A [] $047 !1 !2 1104#ENDCOMMAND 1105 1106#COMMAND ERROR_REPORT SU#LGO . 1107 #IF !0>0 1108 !A [] $04C !1 1109 #ELSE 1110 !A [] $04C |CI0 1111 #ENDIF 1112#ENDCOMMAND 1113 1114#COMMAND FIELD_DEF _E U#LG "TO" #LGUCE #LGRUEC . 1115 #IFDEF !1 1116 !A [] $82 !1 FILENUMBER 1117 #ELSE 1118 #CHECK !1.FILE_NUMBER _U 1119 #SET Q$ !1.FILE_NUMBER 1120 !A [] $82 |CI!q FILENUMBER 1121 #ENDIF 1122 !A [] $82 !2 FIELDNUMBER 1123 !A [] $345 !4 !5 1124#ENDCOMMAND 1125 1126#COMMAND FILELIST &R#%LG "TO""" #LUGCE #LUCGE . 1127 #IFSAME !1 NEXT 1128 !A [] $301 !3 !4 1129 #ELSE 1130 #IFSAME !1 PATHNAME 1131 !A [] $302 !3 !4 1132 #ELSE 1133 #CHECK !1 _U 1134 !A [] $82 !1 FILENUMBER 1135 !A [] $300 !3 !4 1136 #ENDIF 1137 #ENDIF 1138#ENDCOMMAND 1139 1140#REM Put back into FILELIST. The file number must be in "FILENUMBER" 1141#REM Three values are: ROOT NAME, DISPLAY NAME, LOGICAL NAME. 1142 1143#COMMAND FILELIST$PUT &#LRU #LRU #LU 1144 #IF !0>2 1145 !A [] $309 !3 1146 #ENDIF 1147 !A [] $30A !1 !2 1148#ENDCOMMAND 1149 1150#COMMAND FILE$MODE$HELP R "READ_ONLY""SINGLE_USER""ALIAS""MASTER_ALIAS""DEFAULT" . 1151// #CHECK !1.RECNUM _CVWLR#GU 1152 #IFSAME !2 READ_ONLY 1153 SET_ATTRIBUTE DF_FILE_ALIAS OF FILENUMBER TO DF_FILE_ALIAS_DEFAULT 1154 !A [] $0CB INDIRECT_FILE.RECNUM |CI91 1155 #ELSE 1156 #IFSAME !2 SINGLE_USER 1157 SET_ATTRIBUTE DF_FILE_ALIAS OF FILENUMBER TO DF_FILE_ALIAS_DEFAULT 1158 !A [] $0CB INDIRECT_FILE.RECNUM |CI7 1159 #ELSE 1160 #IFSAME !2 DEFAULT 1161 !A [] $0CB INDIRECT_FILE.RECNUM |CI0 1162 SET_ATTRIBUTE DF_FILE_ALIAS OF FILENUMBER TO DF_FILE_ALIAS_DEFAULT 1163 #ELSE 1164 #IFSAME !2 ALIAS 1165 !A [] $0CB INDIRECT_FILE.RECNUM |CI130 1166 SET_ATTRIBUTE DF_FILE_ALIAS OF FILENUMBER TO DF_FILE_IS_ALIAS 1167 #ELSE 1168 #IFSAME !2 MASTER_ALIAS 1169 !A [] $0CB INDIRECT_FILE.RECNUM |CI128 1170 SET_ATTRIBUTE DF_FILE_ALIAS OF FILENUMBER TO DF_FILE_IS_MASTER 1171 #ENDIF 1172 #ENDIF 1173 #ENDIF 1174 #ENDIF 1175 #ENDIF 1176#ENDCOMMAND 1177 1178#COMMAND FILE_MODE 1179 //#IFSAME !1 |FS0,0& |FN0,0& |FD0,0& 1180 // This supports both Indirect_file and Indirect_file.Recnum -JJT 1181 #IFSAME !1.FILE_NUMBER |FS0,0& |FN0,0& |FD0,0& |FS0,0&.RECNUM 1182 #ELSE 1183 #SET Q$ !1.FILE_NUMBER 1184 !A [] $82 |CI!q FILENUMBER 1185 #ENDIF 1186 FILE$MODE$HELP !1 !2 !3 !4 !5 !6 !7 !8 !9 1187#ENDCOMMAND 1188 1189#REM FILE$MODE <FILE> <MODE NUMBER> 1190#REM MODE VALUES (VALUES ARE ADDITIVE) 1191#REM 1 NO AUTOMATIC REREAD OF RECORD BUFFERS. 1192#REM 2 NO LOCKS (LOCK OR REREAD) 1193#REM 4 NO RE-READ OF BLOCK ZERO OF DATA FILE OR INDEXES 1194#REM 8 NO EDITS OF ACTIVE RECORDS (ERROR 66) 1195#REM 16 NO DELETES OF RECORDS (ERROR 63) 1196#REM 32 NO FINDS (ERROR 64) 1197#REM 64 NO CREATES OF NEW RECORDS. (ERROR 65) 1198#REM 128 ALWAYS RE_READ BLOCK 0 1199#REM Warning; Improper combinations of the above could disable 1200#REM multiuser checking and destroy the data base. 1201#REM 8 Thru 64 are non destructive and can be used in applications. 1202#REM FOR EXPERTS ONLY! 1203 1204// see Old_open command for notes on this removal 1205//#COMMAND FILE$MODE RT #LGSU . 1206// #CHECK !1.RECNUM _RULG 1207// !A [] $0CB !1.RECNUM !2 1208//#ENDCOMMAND 1209 1210#COMMAND FILE_SIZE R#LGSD "TO" R#LGE #LUGE #LGUE . 1211 #IFDEF !1 // SET FILE SIZE 1212 #CHECK !3.FILE_NUMBER _RU 1213 #SET Q$ !3.FILE_NUMBER 1214 !A [] $343 |CI!q !1 1215 #ELSE 1216 #CHECK !1.FILE_NUMBER _U 1217 #SET Q$ !1.FILE_NUMBER 1218 !A [] $82 |CI!q FILENUMBER 1219 !A [] $341 !3 !4 1220 !A [] $82 STRMARK !5 1221 #ENDIF 1222#ENDCOMMAND 1223 1224#COMMAND FIND &"$0""$1""$2""$3""$4""$5" R "BY""" % . 1225 #IFCLASS !2 "F" 1226 #CHECK !2 _U#LGWV 1227 #CHECK !3 . 1228 !A [] $0C0 !2 |CI!1 1229 #ELSE 1230 #CHECK !2.FILE_NUMBER _U#LGWV 1231 #CHECK !4 _RUL#GVFW 1232 #SET Q$ !2.FILE_NUMBER 1233 #SET Y$ !4 1234 !A [] $0C6 |FS!q.!y |CI!1 1235 #ENDIF 1236#ENDCOMMAND 1237 1238#COMMAND FIND$PAGE "AT""COLORS""" #LUG U#LG . 1239 #IF !0>0 1240 #IFSAME !1 AT 1241 !A [] $1C8 !2 !3 1242 #ELSE 1243 #IFSAME !1 COLORS 1244 !A [] $1C9 !2 !3 1245 #ENDIF 1246 #ENDIF 1247 #ENDIF 1248#ENDCOMMAND 1249 1250#REM FLEX$INIT - STANDARD REPLACES 1251#REM These are the standard symbols that are required for the compiler 1252#REM This procedure will be automatically executed 1253#REM when the compiler starts 1254 1255#COMMAND FLEX$INIT &. 1256 #REPLACE CALC CALCULATE 1257 #REPLACE LT $0 // internal value for the find/indicate modes. 1258 #REPLACE LE $1 1259 #REPLACE EQ $2 1260 #REPLACE GE $3 1261 #REPLACE GT $4 1262 #REPLACE NE $5 1263// #REPLACE TRUE $1 1264// #REPLACE FALSE $0 1265 #REPLACE TRUE |CZ1 // changed to bit constants so we can use true or false in 1266 #REPLACE FALSE |CZ0 // any command (e.g. move true to bStat). Also required change in indicate 1267 #REPLACE NOT ~ 1268 #SET C$ 11 1269 #REPLACE LASTIF |!C 1270 #REPLACE ENT$PERMISSIVE |10 1271 #REPLACE IN$0 $4000 1272 #REPLACE IN$1 $4004 1273 #REPLACE IN$2 $4008 1274 #REPLACE IN$3 $400C 1275 #REPLACE IN$4 $4010 1276 #REPLACE IN$5 $4014 1277 #REPLACE IN$GLANY |0 1278 #REPLACE IN$GLALL |4 1279 #REPLACE IN$GRANY |0 1280 #REPLACE IN$GRALL |2 1281 #REPLACE IN$GMOR |0 1282 #REPLACE IN$GMAND |1 1283 #REPLACE ERR |127 1284 #REPLACE ERRLINE |VI6 1285 #REPLACE LAST_CRIT_ERR |VI102 1286 #REPLACE EXT_CRIT_ERR |VI103 1287 #REPLACE CONSTRAIN_TESTS_COUNT |VI106 1288 #REPLACE CONSTRAIN_FOUND_COUNT |VI107 1289 #REPLACE FINDERR |126 1290 #REPLACE SEQEOF |125 1291 #REPLACE SEQEOL |121 1292 #REPLACE MULTIUSER |120 1293 #REPLACE FIELDINDEX |VI1 1294 #REPLACE WINDOWINDEX |VI2 1295 #REPLACE LASTERR |VI5 1296 #REPLACE KEYPRESS |123 1297 #REPLACE TERMCHAR |VI3 1298 #REPLACE FLEXKEY |VI4 1299 #REPLACE SCREENEND |VI17 1300 #REPLACE MEMAVAIL |VI18 1301 #REPLACE LASTENTRY |VI19 1302 #REPLACE FLX_REVISION |VI36 1303 #REPLACE ENTER$DISPLAY |VI38 1304 #REPLACE NOKEYCHECK |VI80 1305 #REPLACE CHAIN_DEPTH |VI81 1306 #REPLACE CURSOR_SET |VI82 // THESE ARE USED BY AUTOBACK 1307 #REPLACE CURSOR_RETURN |VI83 1308 #REPLACE MINIMUM_MEMORY |VI86 1309 #REPLACE INDEX_NUMBER |VI90 1310 #REPLACE SCREEN_WIDTH |VI91 1311 #REPLACE KEY.ANY |100 1312 #REPLACE KEY.RETURN |101 1313 #REPLACE KEY.PRINT |102 1314 #REPLACE KEY.ESCAPE |103 1315 #REPLACE KEY.LEFT |104 1316 #REPLACE KEY.RIGHT |105 1317 #REPLACE KEY.FIELD |106 1318 #REPLACE KEY.FIND |107 1319 #REPLACE KEY.SFIND |108 1320 #REPLACE KEY.SAVE |109 1321 #REPLACE KEY.DELETE |110 1322 #REPLACE KEY.CALCULATE |111 1323 #REPLACE KEY.USER |112 1324 #REPLACE KEY.CLEAR |113 1325 #REPLACE KEY.NEXT |115 1326 #REPLACE KEY.PREVIOUS |114 1327 #REPLACE KEY.UP |116 1328 #REPLACE KEY.DOWN |117 1329 #REPLACE KEY.HELP |118 1330 #REPLACE KEY.USER2 |119 1331 #REPLACE NUMPAGE |VI28 1332 #REPLACE NUMWINDOW |VI29 1333 #REPLACE #$ 1334 #SET F$ 1 1335 #REPLACE NEXT_MENU |VI127 1336 #REPLACE CURRENT_IMAGE |VI9 1337 #REPLACE CURRENT_WINDOW |VI7 1338 #REPLACE LAST_GOSUB |VI0 1339 #REPLACE FOUND |254 1340 #REPLACE STRMARK |VI12 1341 #REPLACE STRLEN |VI13 1342 // ENTER & REPORT DEF'S 1343 #REPLACE LINECOUNT |VI10 1344 #REPLACE PAGECOUNT |VI11 1345 #REPLACE PAGEEND |VI25 1346 #REPLACE PAGEFEED |VI26 1347 #SET D$ 128 // INTEGERS NOW START HERE. 1348 #SET P$ 0 1349 #REPLACE AUTOFIND $C000 1350 #REPLACE AUTOFIND_GE $C000,$C008 1351 #REPLACE FINDREQ $C001 1352 #REPLACE NOPUT $C002 1353 #REPLACE NOENTER $C003 1354 #REPLACE SKIPFOUND $C004 1355 #REPLACE RETAINALL $C005 1356 #REPLACE RETAIN $C006 1357 #REPLACE FORCEPUT $C007 1358 #REPLACE DISPLAYONLY $C002,$C003 1359 #REPLACE CAPSLOCK $C023 1360 #REPLACE ZERO_SUPPRESS $C024 1361 #REPLACE THOUSANDS $C025 1362 #REPLACE SUPPRESS $C040='' 1363 #REPLACE FLOAT$ $C026 1364 #REPLACE UPPER $C023 1365 #REPLACE SIGNRT $C027 1366 #REPLACE CHECK $C012 1367 #REPLACE RANGE $C013 1368 #REPLACE REQUIRED $C022 1369 #REPLACE AUTORETURN $C028 1370 #REPLACE AUTOBACK $C029 1371 #REPLACE NO_CALC $C02B // Disable Calculate (internal) 1372 #REPLACE MODAL_INSERT $C02A // Change insert style (internal) 1373 #REPLACE AUTOCLEAR $C02D 1374 #REPLACE WP_BACKSP $C02E 1375 #REPLACE PAGEBREAK |124 1376 #REPLACE FILL $C040 1377 #REPLACE POINTS $C080 1378 #REPLACE FILENUMBER |VI15 1379 #REPLACE FIELDNUMBER |VI16 1380 #REPLACE INDEX.1 |CI1 // the indexes are just integers. 1381 #REPLACE INDEX.2 |CI2 1382 #REPLACE INDEX.3 |CI3 1383 #REPLACE INDEX.4 |CI4 1384 #REPLACE INDEX.5 |CI5 1385 #REPLACE INDEX.6 |CI6 1386 #REPLACE INDEX.7 |CI7 1387 #REPLACE INDEX.8 |CI8 1388 #REPLACE INDEX.9 |CI9 1389 #REPLACE INDEX.10 |CI10 1390 #REPLACE INDEX.11 |CI11 1391 #REPLACE INDEX.12 |CI12 1392 #REPLACE INDEX.13 |CI13 1393 #REPLACE INDEX.14 |CI14 1394 #REPLACE INDEX.15 |CI15 1395 #REPLACE INDEX.BATCH |CI10 1396 #REPLACE RECNUM |CI0 1397 #REPLACE EXPORT_FILES 1 1398 #REPLACE EXPORT_ONLY 2 1399 #REPLACE SEQ_EXPORT 4 1400 #REPLACE INDIRECT_FILE.RECNUM |FS0,0& 1401 // note we are defining indirect_file.file_number so one can use indirect_file directly. Note that this 1402 // technique (any use of indirect_file in any form) is not a recommended technique because there are API commands 1403 // to do anything it does. Therefore, we will not create yet another way to use indirect_file. 1404 #REPLACE INDIRECT_FILE.FILE_NUMBER |FS0,0& 1405 #REPLACE DESKTOP |CI2 1406 #REPLACE END_FUNCTION END_PROCEDURE 1407 #REPLACE PROCEDURE_RETURN FUNCTION_RETURN 1408 1409 #REPLACE TOTAL_RESOURCES |VI104 1410 1411 // video related replaces 1412 #REPLACE BW40 0 1413 #REPLACE C40 1 1414 #REPLACE BW80 2 1415 #REPLACE C80 3 1416 #REPLACE MONO 7 1417 #REPLACE EXTENDED_EGAVGA 64 1418 #REPLACE EXTENDED_VGA 128 1419 1420 // API Constants 1421 #REPLACE DFERR_ERROR |CI-1 1422 #REPLACE DF_SUCCESS |CI0 1423 #REPLACE DFFALSE |CI0 1424 #REPLACE DFTRUE |CI1 1425 1426 // DataFlex driver specific constants 1427 #REPLACE FLEX_SET_MAX_SORT_BUFFER |CI1 1428 #REPLACE FLEX_GET_MAX_SORT_BUFFER |CI2 1429 #REPLACE FLEX_REPAIR_FILE |CI3 1430 #REPLACE FLEX_GET_REPAIRS_NEEDED |CI4 1431 #REPLACE FLEX_SET_INDEX_OPT |CI5 1432 #REPLACE FLEX_GET_INDEX_OPT |CI6 1433 #REPLACE FLEX_GET_STRICT_TRANSACTIONS |CI7 1434 #REPLACE FLEX_SET_STRICT_TRANSACTIONS |CI8 1435 1436 // DataFlex specific file damage types 1437 #REPLACE FLEX_HEADER_OK |CI0 1438 #REPLACE FLEX_BLOCK0_BAD |CI1 1439 #REPLACE FLEX_HEADER_BAD |CI2 1440 #REPLACE FLEX_HEADER_INTEGRITY_OFF |CI4 1441 #REPLACE FLEX_HEADER_UNREADABLE |CI8 1442 1443 // Index optimization modes 1444 #REPLACE FLEX_INDEX_OPT_ON |CI1 1445 #REPLACE FLEX_INDEX_OPT_PERMISSIVE |CI2 1446 #REPLACE FLEX_INDEX_OPT_OFF |CI3 1447 1448 // Flex revision codes (for use with DF_FILE_REVISION) 1449 #REPLACE FLEX_REVISION_23 |CS"2.3B" 1450 #REPLACE FLEX_REVISION_30 |CS"3.0" 1451 1452 1453 // Attributes: Runtime 1454 #REPLACE DF_RUNTIME_PROGRESS_FREQUENCY |CI4097 1455 1456 // Attributes: Global 1457 #REPLACE DF_LOCK_DELAY |CI1 1458 #REPLACE DF_LOCK_TIMEOUT |CI2 1459 #REPLACE DF_OPEN_PATH |CI3 1460 #REPLACE DF_DATE_FORMAT |CI4 1461 #REPLACE DF_DATE_SEPARATOR |CI5 1462 #REPLACE DF_DECIMAL_SEPARATOR |CI6 1463 #REPLACE DF_THOUSANDS_SEPARATOR |CI7 1464 #REPLACE DF_ALL_FILES_TOUCHED |CI8 1465 #REPLACE DF_HIGH_DATA_INTEGRITY |CI9 1466 #REPLACE DF_TRAN_COUNT |CI10 1467 #REPLACE DF_TRANSACTION_ABORT |CI11 1468 #REPLACE DF_REREAD_REQUIRED |CI12 1469 #REPLACE DF_FILELIST_NAME |CI13 1470 #REPLACE DF_REPORT_UNSUPPORTED_ATTRIBUTES |CI14 1471 #REPLACE DF_STRICT_ATTRIBUTES |CI15 1472 #REPLACE DF_NUMBER_DRIVERS |CI16 1473 #REPLACE DF_DRIVER_NAME |CI17 1474 #REPLACE DF_DRIVER_NUMBER_SERVERS |CI18 1475 #REPLACE DF_DRIVER_SERVER_NAME |CI19 1476 #REPLACE DF_API_DISABLED |CI20 1477 #REPLACE DF_API_DISABLED_ERROR |CI21 1478 #REPLACE DF_TRANABORT_ONERROR |CI22 1479 #REPLACE DF_OPEN_FILE_COUNT |CI23 1480 #REPLACE DF_DATE_4_STATE |CI24 1481 #REPLACE DF_EPOCH_VALUE |CI25 1482 #REPLACE DF_SYSDATE_4_STATE |CI26 1483 #REPLACE DF_NUMBER_FILES_SUPPORTED |CI27 1484 1485 1486 1487 // Attributes: File 1488 #REPLACE DF_FILE_STATUS |CI101 1489 #REPLACE DF_FILE_MODE |CI102 1490 #REPLACE DF_FILE_MAX_RECORDS |CI103 1491 #REPLACE DF_FILE_RECORDS_USED |CI104 1492 #REPLACE DF_FILE_TYPE |CI105 1493 #REPLACE DF_FILE_MULTIUSER |CI106 1494 #REPLACE DF_FILE_REUSE_DELETED |CI107 1495 #REPLACE DF_FILE_NUMBER |CI108 1496 #REPLACE DF_FILE_COMPRESSION |CI109 1497 #REPLACE DF_FILE_LAST_INDEX_NUMBER |CI110 1498 #REPLACE DF_FILE_NUMBER_FIELDS |CI111 1499 #REPLACE DF_FILE_LOGICAL_NAME |CI112 1500 #REPLACE DF_FILE_ROOT_NAME |CI113 1501 #REPLACE DF_FILE_CHANGED |CI114 1502 #REPLACE DF_FILE_ALIAS |CI115 1503 #REPLACE DF_FILE_TOUCHED |CI116 1504 #REPLACE DF_FILE_TRANSACTION |CI117 1505 #REPLACE DF_FILE_OPENED |CI118 1506 #REPLACE DF_FILE_DISPLAY_NAME |CI119 1507 #REPLACE DF_FILE_PHYSICAL_NAME |CI120 1508 #REPLACE DF_FILE_NEXT_OPENED |CI121 1509 #REPLACE DF_FILE_NEXT_USED |CI122 1510 #REPLACE DF_FILE_NEXT_EMPTY |CI123 1511 #REPLACE DF_FILE_RECORD_LENGTH |CI124 1512 #REPLACE DF_FILE_RESTRUCTURE |CI125 1513 #REPLACE DF_FILE_OPEN_MODE |CI126 1514 #REPLACE DF_FILE_INTEGRITY_CHECK |CI127 1515 #REPLACE DF_FILE_OWNER |CI128 1516 #REPLACE DF_FILE_IS_SYSTEM_FILE |CI129 1517 #REPLACE DF_FILE_LOCK_TYPE |CI130 1518 #REPLACE DF_FILE_COMMITTED |CI131 1519 #REPLACE DF_FILE_DRIVER |CI132 1520 #REPLACE DF_FILE_RECORD_LENGTH_USED |CI133 1521 #REPLACE DF_FILE_HANDLE_TYPE |CI134 1522 #REPLACE DF_FILE_RECORD_IDENTITY |CI135 1523 #REPLACE DF_FILE_LOGIN |CI136 1524 #REPLACE DF_FILE_RECORD_PRIVILEGE |CI137 // PRIVATE, DO NOT USE 1525 #REPLACE DF_FILE_PRIVILEGE |CI138 // PRIVATE, DO NOT USE 1526 #REPLACE DF_FILE_CREATION_SERIAL |CI139 // PRIVATE, DO NOT USE 1527 #REPLACE DF_FILE_REVISION |CI140 1528 #REPLACE DF_FILE_RELATED_COUNT |CI141 // PRIVATE, DO NOT USE 1529 #REPLACE DF_FILE_RELATED_FIELDS |CI142 // PRIVATE, DO NOT USE 1530 #REPLACE DF_FILE_SYSTEM_FILE |CI143 1531 #REPLACE DF_FILE_SYSTEM_FIELD |CI144 1532 #REPLACE DF_FILE_RECORD_REREAD |CI145 1533 #REPLACE DF_FILE_RECNUM_TABLE |CI1401 1534 #REPLACE DF_FILE_PRIMARY_INDEX |CI1402 1535 1536 1537 // Attributes: Fields 1538 1539 #REPLACE DF_FIELD_NUMBER |CI201 1540 #REPLACE DF_FIELD_TYPE |CI202 1541 #REPLACE DF_FIELD_LENGTH |CI203 1542 #REPLACE DF_FIELD_PRECISION |CI204 1543 #REPLACE DF_FIELD_RELATED_FILE |CI205 1544 #REPLACE DF_FIELD_RELATED_FIELD |CI206 1545 #REPLACE DF_FIELD_NAME |CI207 1546 #REPLACE DF_FIELD_INDEX |CI208 1547 #REPLACE DF_FIELD_OFFSET |CI209 1548 #REPLACE DF_FIELD_OLD_NUMBER |CI210 1549 #REPLACE DF_FIELD_OVERLAP |CI211 1550 #REPLACE DF_FIELD_NATIVE_LENGTH |CI212 1551 1552 // Attributes: Index 1553 #REPLACE DF_INDEX_NUMBER_SEGMENTS |CI301 1554 #REPLACE DF_INDEX_NUMBER_BUFFERS |CI302 1555 #REPLACE DF_INDEX_TYPE |CI303 1556 #REPLACE DF_INDEX_LEVELS |CI304 1557 #REPLACE DF_INDEX_KEY_LENGTH |CI305 1558 1559 // Attributes: Index Segments 1560 #REPLACE DF_INDEX_SEGMENT_DIRECTION |CI401 1561 #REPLACE DF_INDEX_SEGMENT_CASE |CI402 1562 #REPLACE DF_INDEX_SEGMENT_FIELD |CI403 1563 // Attributes: Driver 1564 #REPLACE DF_DRIVER_CONFORMANCE |CI1201 1565 1566 1567 // Date types 1568 #REPLACE DF_DATE_USA |CI0 1569 #REPLACE DF_DATE_EUROPEAN |CI1 1570 #REPLACE DF_DATE_MILITARY |CI2 1571 1572 // Callback Types 1573 #REPLACE DF_MESSAGE_TEXT |CI0 1574 #REPLACE DF_MESSAGE_HEADING_1 |CI1 1575 #REPLACE DF_MESSAGE_HEADING_2 |CI2 1576 #REPLACE DF_MESSAGE_HEADING_3 |CI3 1577 #REPLACE DF_MESSAGE_HEADING_4 |CI4 1578 #REPLACE DF_MESSAGE_HEADING_5 |CI5 1579 #REPLACE DF_MESSAGE_WARNING |CI6 1580 #REPLACE DF_MESSAGE_PROGRESS_TITLE |CI7 1581 #REPLACE DF_MESSAGE_PROGRESS_VALUE |CI8 1582 1583 // Aux file types 1584 #REPLACE DF_AUX_FILE_FD |CI0 1585 #REPLACE DF_AUX_FILE_DEF |CI1 1586 1587 // File status values 1588 #REPLACE DF_FILE_INACTIVE |CI0 1589 #REPLACE DF_FILE_ACTIVE |CI1 1590 #REPLACE DF_FILE_ACTIVE_CHANGED |CI2 1591 1592 // File user values 1593 #REPLACE DF_FILE_USER_SINGLE |CI0 1594 #REPLACE DF_FILE_USER_MULTI |CI1 1595 1596 // File deleted values 1597 #REPLACE DF_FILE_DELETED_NOREUSE |CI0 1598 #REPLACE DF_FILE_DELETED_REUSE |CI1 1599 1600 // Compressions types 1601 #REPLACE DF_FILE_COMPRESS_NONE |CI0 1602 #REPLACE DF_FILE_COMPRESS_FAST |CI1 1603 #REPLACE DF_FILE_COMPRESS_STANDARD |CI2 1604 #REPLACE DF_FILE_COMPRESS_CUSTOM |CI3 1605 1606 // File alias 1607 #REPLACE DF_FILE_ALIAS_DEFAULT |CI0 1608 #REPLACE DF_FILE_IS_MASTER |CI1 1609 #REPLACE DF_FILE_IS_ALIAS |CI2 1610 1611 // File handle types 1612 #REPLACE DF_FILE_HANDLE_BAD |CI0 1613 #REPLACE DF_FILE_HANDLE_CLOSED |CI1 1614 #REPLACE DF_FILE_HANDLE_OPENED |CI2 1615 #REPLACE DF_FILE_HANDLE_EXISTING_RESTRUCTURE |CI3 1616 #REPLACE DF_FILE_HANDLE_NEW_RESTRUCTURE |CI4 1617 1618 // File transaction types 1619 #REPLACE DF_FILE_TRANSACTION_NONE |CI0 1620 #REPLACE DF_FILE_TRANSACTION_CLIENT_ATOMIC |CI1 1621 #REPLACE DF_FILE_TRANSACTION_SERVER_ATOMIC |CI2 1622 #REPLACE DF_FILE_TRANSACTION_SERVER_LOGGED |CI3 1623 1624 // Types of restructure required 1625 #REPLACE DF_NO_RESTRUCTURE |CI0 1626 #REPLACE DF_RESTRUCTURE_FILE |CI1 1627 #REPLACE DF_RESTRUCTURE_INDEX |CI2 1628 #REPLACE DF_RESTRUCTURE_BOTH |CI3 1629 1630 // File touched attribute 1631 #REPLACE DF_FILE_NOT_TOUCHED |CI48 1632 #REPLACE DF_FILE_TOUCHED_INACTIVE |CI49 1633 #REPLACE DF_FILE_TOUCHED_ACTIVE |CI50 1634 1635 #REPLACE DF_FILEMODE_ORIGINAL -1 // only valid for smart_filemode in data sets 1636 #REPLACE DF_FILEMODE_DEFAULT 0 1637 #REPLACE DF_FILEMODE_NO_REREAD 1 1638 #REPLACE DF_FILEMODE_NO_LOCKS 2 1639 #REPLACE DF_FILEMODE_NO_EDITS 8 1640 #REPLACE DF_FILEMODE_NO_DELETES 16 1641 #REPLACE DF_FILEMODE_NO_FINDS 32 1642 #REPLACE DF_FILEMODE_NO_CREATES 64 1643 #REPLACE DF_FILEMODE_READONLY 91 1644 #REPLACE DF_FILEMODE_SINGLE_USER 3 1645 1646 // File closing type 1647 #REPLACE DF_PERMANENT 0 1648 #REPLACE DF_TEMPORARY 1 1649 1650 // File locking types 1651 #REPLACE DF_LOCK_TYPE_NONE |CI0 1652 #REPLACE DF_LOCK_TYPE_FILE |CI1 1653 #REPLACE DF_LOCK_TYPE_RECORD |CI2 1654 1655 // Modes for openning a file. 1656 #REPLACE DF_SHARE |CI0 1657 #REPLACE DF_EXCLUSIVE |CI1 1658 1659 // Index types 1660 #REPLACE DF_INDEX_TYPE_ONLINE |CI0 1661 #REPLACE DF_INDEX_TYPE_BATCH |CI1 1662 1663 // Segment case used? 1664 #REPLACE DF_CASE_USED |CI0 1665 #REPLACE DF_CASE_IGNORED |CI1 1666 1667 // Segment direction 1668 #REPLACE DF_ASCENDING |CI0 1669 #REPLACE DF_DESCENDING |CI1 1670 1671 // Field Types 1672 #REPLACE DF_ASCII |CI0 1673 #REPLACE DF_BCD |CI1 1674 #REPLACE DF_DATE |CI2 1675 #REPLACE DF_OVERLAP |CI3 1676 #REPLACE DF_TEXT |CI5 1677 #REPLACE DF_BINARY |CI6 1678 #REPLACE DF_DATETIME |CI7 1679 1680 // dfStructureEnd Option bits 1681 #REPLACE DF_STRUCTEND_OPT_NONE |CI0 1682 #REPLACE DF_STRUCTEND_OPT_FORCE |CI1 1683 #REPLACE DF_STRUCTEND_OPT_RECOMPRESS |CI2 1684 #REPLACE DF_STRUCTEND_OPT_IN_PLACE |CI4 1685 1686 #REPLACE DF_SORT_OPTION_NONE |CI0 1687 #REPLACE DF_SORT_OPTION_NO_DATA_CHECK |CI8 1688 #REPLACE DF_SORT_OPTION_BAD_DATA_FIXUP |CI16 1689 #REPLACE DF_SORT_OPTION_BAD_DATA_FILE |CI32 1690 #REPLACE DF_SORT_OPTION_BAD_DATA_ABORT |CI64 1691 #REPLACE DF_SORT_OPTION_DUP_DATA_FILE |CI128 1692 #REPLACE DF_SORT_OPTION_DUP_DATA_ABORT |CI256 1693 1694 // Field fill types 1695 #REPLACE DF_HIGH |CI0 1696 #REPLACE DF_LOW |CI1 1697 1698 // Resource Types 1699 // DAC reservers the negative values, you may use the positive values, 1700 // 0 means uninitialized or error. 1701 #REPLACE DF_RESOURCE_TYPE_ERROR |CI0 // if resource is invalid 1702 // or uninitialized. 1703 #REPLACE DF_RESOURCE_TYPE_BINARY |CI-1 // use this with include_resource for 1704 // bitmaps and other binary files. 1705 #REPLACE DF_RESOURCE_TYPE_LINE |CI-2 // default type for resources. 1706 1707 // These symbols are passed to the SYSCONF function to determine 1708 // which OS specific item is returned. 1709 #REPLACE SYSCONF_TIMER_RESOLUTION |CI0 1710 #REPLACE SYSCONF_DIR_SEPARATOR |CI1 1711 #REPLACE SYSCONF_OS_SHORT_NAME |CI2 1712 #REPLACE SYSCONF_OS_MAJOR_REV |CI3 1713 #REPLACE SYSCONF_OS_MINOR_REV |CI4 1714 #REPLACE SYSCONF_OS_NAME |CI5 1715 #REPLACE SYSCONF_MACHINE_NAME |CI6 1716 #REPLACE SYSCONF_FILE_MASK |CI7 1717 #REPLACE SYSCONF_DATAFLEX_REV |CI8 1718 #REPLACE SYSCONF_SYSTEM_NAME |CI9 1719 #REPLACE SYSCONF_PATH_SEPARATOR |CI10 1720 #REPLACE SYSCONF_RUNTIME_NAME |CI11 1721 #REPLACE SYSCONF_UTC_TIME_OFFSET |CI12 1722 1723 // Subsystem numbers 1724 #REPLACE DF_CMD_SUBSYSTEM_REV |CI5 1725 #REPLACE DF_UI_SUBSYSTEM_REV |CI1 1726 #REPLACE DF_DS_SUBSYSTEM_REV |CI1 1727 1728 #REPLACE DF_CMD_SUBSYSTEM |CI0 1729 #REPLACE DF_UI_SUBSYSTEM |CI1 1730 #REPLACE DF_DS_SUBSYSTEM |CI2 1731 1732 #REPLACE DF_NUMBER_SUBSYSTEMS |CI3 1733 1734 #REPLACE ENUM_LIST ENUMERATION_LIST 1735 #REPLACE END_ENUM_LIST END_ENUMERATION_LIST 1736 1737 // 1738 // Date Constants 1739 // 1740 #REPLACE DATE4_STATE |CI0 1741 #REPLACE EPOCH_VALUE |CI1 1742 #REPLACE SYSDATE4_STATE |CI2 1743 1744 // These are values to be used by the raw file commands 1745 // representing different file permission bits 1746 #REPLACE DF_FLEX_UID_EXECUTE |CI1024 //04000 1747 #REPLACE DF_FLEX_GID_EXECUTE |CI512 //02000 1748 #REPLACE DF_FLEX_OWNER_READ |CI256 //00400 1749 #REPLACE DF_FLEX_OWNER_WRITE |CI128 //00200 1750 #REPLACE DF_FLEX_OWNER_EXECUTE |CI64 //00100 1751 #REPLACE DF_FLEX_GROUP_READ |CI32 //00040 1752 #REPLACE DF_FLEX_GROUP_WRITE |CI16 //00020 1753 #REPLACE DF_FLEX_GROUP_EXECUTE |CI8 //00010 1754 #REPLACE DF_FLEX_WORLD_READ |CI4 //00004 1755 #REPLACE DF_FLEX_WORLD_WRITE |CI2 //00002 1756 #REPLACE DF_FLEX_WORLD_EXECUTE |CI1 //00001 1757 #REPLACE DF_FLEX_ALL_RIGHTS |CI20471 1758 1759 // Error Codes used by the Compiler 1760 #REPLACE DFERR_COMP_BAD_IMAGE_NAME |CI4293 1761 #REPLACE DFERR_COMP_CONSTANT_EXPECTED |CI4299 1762 #REPLACE DFERR_COMP_ILLEGAL_RETURN_TYPE |CI4310 1763 #REPLACE DFERR_COMP_IMAGE_NOT_FOUND |CI4311 1764 #REPLACE DFERR_COMP_INVALID_DATATYPE |CI4315 1765 #REPLACE DFERR_COMP_INVALID_TYPE |CI4317 1766 #REPLACE DFERR_COMP_MISSING_ARGUMENT |CI4320 1767 #REPLACE DFERR_COMP_MISSING_END_OBJECT |CI4323 1768 #REPLACE DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT |CI4328 1769 #REPLACE DFERR_COMP_SYMBOL_ALREADY_DEFINED |CI4332 1770 #REPLACE DFERR_COMP_TOO_MANY_MESSAGES |CI4339 1771 #REPLACE DFERR_COMP_UNRESOVLED_CONTROL_BLOCK |CI4348 1772 1773 #REPLACE DFERR_COMP_ILLEGAL_OBJECT_DEFINTION |CI4388 // object name used is not valid 1774 #REPLACE DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION |CI4389 // property name cannot be used 1775 #REPLACE DFERR_COMP_ILLEGAL_METHOD_DEFINTION |CI4390 // method name cannot be used 1776 #REPLACE DFERR_COMP_ILLEGAL_CODE_PLACEMENT |CI4391 // Location of code, nesting, is wrong 1777 #REPLACE DFERR_COMP_INVALID_METHOD_SYNTAX |CI4392 // syntax is incorrect for method definition 1778 #REPLACE DFERR_COMP_INVALID_MESSAGE_SYNTAX |CI4393 // sysntax is incorrect for sending message 1779 #REPLACE DFERR_COMP_INVALID_OBJECT_REFERENCE |CI4394 // object named in message is invalid 1780 #REPLACE DFERR_COMP_OBSOLETE_UNSUPPORTED_FEATURE |CI4395 // Obsolete - was 101 (Moveused by fmac) 1781 #REPLACE DFERR_COMP_INVALID_ARGUMENT |CI4396 // Agument in line is incorrect 1782 #REPLACE DFERR_COMP_ILLEGAL_EXTERNAL_FUNCTION_DEFINITION |CI4397 // name cannot be used 1783 // 1784 #REPLACE DFERR_COMP_MISSING_DEBUG_INFORMATION |CI4500 // debug information is not provided 1785 #REPLACE DFERR_COMP_INCOMPATIBLE_DEBUG_INFORMATION |CI4501 // debug inforamtion is is not correct 1786 #REPLACE DFERR_COMP_RECURSIVE_STRUCT_DECLARATION |CI4513 // recursive struct definition 1787 #REPLACE DFERR_COMP_AMBIGUOUS_SYNTAX. |CI4514 // either Left of "'[' is not array, use '(' if indicator" or "Left of '.' is not of type struct or table" 1788 1789 // constants used by rich edit class 1790 #REPLACE FR_WHOLEWORD 2 1791 #REPLACE FR_MATCHCASE 4 1792 1793 #REPLACE SCF_ALL 4 1794 #REPLACE SCF_SELECTION 1 1795 #REPLACE SCF_WORD 2 1796 #REPLACE SCF_DEFAULT 0 1797 1798 #REPLACE ERR_RE_ATTR_INCONSISTENT_THROUGH_SELECTION |CI40001 1799 #REPLACE ERR_RE_SUCCESS |CI0 1800 #REPLACE ERR_RE_CANNOT_SETTEXT |CI40002 1801 #REPLACE ERR_RE_CONVERSION_CODEPAGE |CI40003 1802 #REPLACE ERR_RE_FNAME_TOO_LONG |CI40004 1803 #REPLACE ERR_RE_CANNOT_OPEN_FILE |CI40005 1804 1805 1806 1807 1808 // Error handler may return source information as "Source = module.function". This is the 1809 // text that returned from the runtime that contains this information. 1810 #REPLACE C_ErrorContextSourceText |CS"Source =" 1811 1812 #SET N$ 2 // save 0,1 stacks for IF/ELSE 1813 #SET ZR$ 0 // for compile-time-assigned resource_ids 1814 #SET ZS$ 0 // for enumerated lists 1815 #SET ZT$ 0 // " " " 1816 #XPUSH !n $INIT 1817 1818// Note that for this build of FMAC the subsystems are the same for character mode 1819// and windows. 1820 1821 #CHKSUB 0 6 // Verify the General Flex subsystem. Version 0 of command system. Revision 4. 1822 // This was changed from 0 3 to 0 4 to force recompilation of programs from 3.1 to 3.2. 1823 // And changed from 0 5 to force recompilation when we changed the size of the argument and command line. 1824 // And changed from 0 6 to force recompilation on 7.1.13 build. 1825#ENDCOMMAND 1826 1827#COMMAND FOR &ECFWGSNR#LU "FROM" %UGLR# "TO""" %UGL# . 1828 // we do iftype checks because the command checking does not understand A and K 1829 #IFTYPE !1 "K" 1830 #ERROR 4345 "!1, Struct not allowed" 1831 #ELSE 1832 #IFTYPE !1 "A" 1833 #ERROR 4345 "!1, Array not allowed" 1834 #ELSE 1835 #SET N$ !N 1836 #PUSH !R 1837 #XPUSH !n $INIT 1838 //MOVEINT !3 TO !1 1839 !A [] $082 !3 !1 1840 #IF (!0>3) 1841 // IF !1 LE !5 GOTO FOR$!r 1842 !A [] $4004 !1 !5 |11 |2 1843 !A [|11] $041 |CL0 1844 #FREF FOR$!r !a 1845 #ENDIF 1846 #$ !A 0 0 0 $041 |CL0 1847 #FREF END$!r !a 1848 #$ BEGIN$!r: 1849 #$ WHILE$!r: 1850 #IF !0=3 1851 #$ !A [] $083 !1 1852 #ELSE 1853 #$ !A [] $083 !1 !5 1854 #$ !A [|122] $041 |CL0 1855 #FREF END$!r !a 1856 #ENDIF 1857 FOR$!r: 1858 #ENDIF 1859 #ENDIF 1860#ENDCOMMAND 1861 1862// FORMAT window {} 1863// FORMAT window THRU window {} 1864 1865#COMMAND FORMAT RUVCFL#G 1866 #IF !0>2 1867 FORMAT$RANGE !1 !2 !3 !4 !5 1868 #ELSE 1869 #CHECK !2 _RVCFWL#BE 1870 #CHECK !3 . 1871 #FORMAT !1 !2 1872 #ENDIF 1873#ENDCOMMAND 1874 1875#COMMAND FORMAT$RANGE ERUVCFL#G "THRU""THROUGH" ERUVCFL#G RVCFWL#B . 1876 #FORMAT !1 !4 1877 #IF (!1<!3) 1878 #SET Q$ !1 1879 FORMAT$RANGE |WS!Q THRU !3 !4 1880 #ENDIF 1881#ENDCOMMAND 1882 1883#COMMAND FORMFEED &. // just like PAGECHECK 500 1884 !A [] $203 |CI500 |CI0 1885#ENDCOMMAND 1886 1887#COMMAND GET_ARGUMENT_SIZE "TO" _RUDCE#LGB . 1888 !A [] $24F !2 1889#ENDCOMMAND 1890 1891//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1892// 1893// Command: 1894// GET_CHANNEL_SIZE channelNumber TO integerVariable 1895// 1896// Descrtiption: 1897// A command to retrieve the "size" of a sequential device (opened with 1898// direct_input). Warning, devices that do not support the concept of 1899// "size" (such as LST:) report an error. 1900// 1901// Parmeters: 1902// channelNumber 1903// Number of a valid (open) channel. 1904// integerVariable 1905// Variable to return the channel size to. If the channel is not 1906// open, 0 is returned. 1907// 1908//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1909 1910#COMMAND GET_CHANNEL_SIZE #LRUG$ "TO" #LRUG$EC . 1911 !A [] $111 !1 !3 1912#ENDCOMMAND 1913 1914//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1915// 1916// Command: 1917// GET_RESOURCE_TYPE resourceName|resourceId TO integerVariable 1918// 1919// Descrtiption: 1920// A command to retrieve the type of a resource at runtime. (Note: the 1921// resource type is set a compile-time.) For the first parameter, you may 1922// pass either the resource name (not in quotes) or the integer value of 1923// the resource id. 1924// 1925// Parmeters: 1926// resourceName 1927// Name of a resource. 1928// resourceId 1929// Integer value of a resource id. (The resource name is just a 1930// symbolic replacement (with a .RSC suffix) of a constant integer 1931// equal to the resource id.) 1932// integerVariable 1933// Variable to return the resource type to. 1934// 1935//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1936 1937#COMMAND GET_RESOURCE_TYPE _R TO %#USGLR 1938 #IFDEF !1 1939 !A [] $112 !1 !3 1940 #ELSE 1941 !A [] $112 !1.RSC !3 1942 #ENDIF 1943#ENDCOMMAND 1944 1945#COMMAND GET_CURRENT_COLORS "TO" _RUDCE#LGB _RUDCE#LGB . 1946 !A [] $14E !2 !3 1947#ENDCOMMAND 1948 1949#COMMAND GET_CURRENT_DIRECTORY "TO" _RUDCE#LGB . 1950 !A [] $2D1 !2 1951#ENDCOMMAND 1952 1953#COMMAND GET_CURRENT_INPUT_CHANNEL "TO" _RUDCE#LGB . 1954 !A [] $10D !2 1955#ENDCOMMAND 1956 1957#COMMAND GET_CURRENT_LOCKCOUNT "TO" _RUDCE#LGB . 1958 !A [] $0E6 !2 1959#ENDCOMMAND 1960 1961#COMMAND GET_CURRENT_OUTPUT_CHANNEL "TO" _RUDCE#LGB . 1962 !A [] $10E !2 1963#ENDCOMMAND 1964 1965#COMMAND GET_CURRENT_USER_COUNT "TO" _RUDCE#LGB . 1966 !A [] $2DB !2 1967#ENDCOMMAND 1968 1969#COMMAND GET_DATE_FORMAT "TO" _RUDCE#LGB . 1970 !A [] $2D8 !2 1971#ENDCOMMAND 1972 1973#COMMAND GET_ENVIRONMENT &RD#GOBLU "TO" _RCEUGOB# . 1974 !A [] $2CF !1 !3 1975#ENDCOMMAND 1976 1977#COMMAND GET_LICENSED_MAX_USERS "TO" _RUDCE#LGB . 1978 !A [] $2DA !2 1979#ENDCOMMAND 1980 1981#COMMAND GET_NUMBER_FORMAT "TO" _RUDCE#LGB . 1982 !A [] $2D9 !2 1983#ENDCOMMAND 1984 1985#COMMAND GETXY #USGLR #USGLR . 1986 !A [] $14D !1 !2 1987#ENDCOMMAND 1988 1989#COMMAND GOSUB &RVFWSNDE#G . 1990 #IFDEF !1 1991 !A [] $042 !1 1992 #ELSE 1993 !A [] $042 |CL0 1994 #FREF !1 !a 1995 #ENDIF 1996#ENDCOMMAND 1997 1998#COMMAND GOTO &RVFWSNDE#G . 1999 #IFDEF !1 2000 !A [] $041 !1 2001 #ELSE 2002 !A [] $041 |CL0 2003 #FREF !1 !a 2004 #ENDIF 2005#ENDCOMMAND 2006 2007#COMMAND GOTOXY &%#USGL %#USGLR . 2008 !A [] $145 !1 !2 2009#ENDCOMMAND 2010 2011#COMMAND HELP &T . 2012 #IF !0>0 2013 #CHECK !1.N _U 2014 !A [] $1C5 !1.N 2015 #ELSE 2016 !A [] $1C5 |CI0 2017 #ENDIF 2018#ENDCOMMAND 2019 2020#COMMAND IF LR 2021 #IFSAME !1 ~ 2022 IFNOT !2 !3 !4 !5 !6 !7 !8 !9 2023 #ELSE 2024 #IFLOGICAL !1 // added to 12.0 to support indicators outside of expressions 2025 IF (!1) !2 !3 !4 !5 !6 !7 !8 !9 // if indicator, place it within an expression 2026 #ELSE 2027 #IFSAME !1 STATUS 2028 INDCT$STATUS LASTIF STATUS !2 2029 IF$HELP !3 !4 !5 !6 !7 !8 !9 2030 #ELSE 2031 #IFSAME !2 $0 $1 $2 $3 $4 $5 MATCH IN 2032 INDCT$AS LASTIF AS !1 !2 !3 2033 IF$HELP !4 !5 !6 !7 !8 !9 2034 #ELSE 2035 #IFCLASS !1 "G" 2036 INDCT$GROUP LASTIF GROUP ALL !1 2037 #ELSE 2038 INDCT$AS LASTIF AS !1 2039 #ENDIF 2040 IF$HELP !2 !3 !4 !5 !6 !7 !8 !9 2041 #ENDIF 2042 #ENDIF 2043 #ENDIF 2044 #ENDIF 2045#ENDCOMMAND 2046 2047#COMMAND IFNOT LR 2048 #IFSAME !1 ~ 2049 IF !2 !3 !4 !5 !6 !7 !8 !9 2050 #ELSE 2051 #IFLOGICAL !1 // added to 12.0 to support indicators outside of expressions 2052 IFNOT (!1) !2 !3 !4 !5 !6 !7 !8 !9 // if indicator, place it within an expression 2053 #ELSE 2054 #IFSAME !1 STATUS 2055 INDCT$STATUS LASTIF~ STATUS !2 2056 IF$HELP !3 !4 !5 !6 !7 !8 !9 2057 #ELSE 2058 #IFSAME !2 $0 $1 $2 $3 $4 $5 MATCH IN 2059 INDCT$AS LASTIF~ AS !1 !2 !3 2060 IF$HELP !4 !5 !6 !7 !8 !9 2061 #ELSE 2062 #IFCLASS !1 "G" 2063 INDCT$GROUP LASTIF~ GROUP ALL !1 2064 #ELSE 2065 INDCT$AS LASTIF~ AS !1 2066 #ENDIF 2067 IF$HELP !2 !3 !4 !5 !6 !7 !8 !9 2068 #ENDIF 2069 #ENDIF 2070 #ENDIF 2071 #ENDIF 2072#ENDCOMMAND 2073 2074// note that IF_ and IFNOT_ are private and old. They do not work in all 2075// cases. For example, "If_ Indicator" will not work. Use IF 2076#COMMAND IF_ LR // THIS IF_ WILL NOT WORK WITH ELSE! 2077 #IFSAME !1 ~ 2078 IFNOT_ !2 !3 !4 !5 !6 !7 !8 !9 2079 #ELSE 2080 #IFSAME !1 STATUS 2081 INDCT$STATUS LASTIF STATUS !2 2082 [LASTIF] !3 !4 !5 !6 !7 !8 !9 2083 #ELSE 2084 #IFSAME !2 $0 $1 $2 $3 $4 $5 MATCH IN 2085 INDCT$AS LASTIF AS !1 !2 !3 2086 [LASTIF] !4 !5 !6 !7 !8 !9 2087 #ELSE 2088 #IFCLASS !1 "G" 2089 INDCT$GROUP LASTIF GROUP ALL !1 2090 #ELSE 2091 INDCT$AS LASTIF AS !1 2092 #ENDIF 2093 [LASTIF] !2 !3 !4 !5 !6 !7 !8 !9 2094 #ENDIF 2095 #ENDIF 2096 #ENDIF 2097#ENDCOMMAND 2098 2099#COMMAND IFNOT_ LR // THIS IFNOT_ WILL NOT WORK WITH ELSE! 2100 #IFSAME !1 ~ 2101 IF_ !2 !3 !4 !5 !6 !7 !8 !9 2102 #ELSE 2103 #IFSAME !1 STATUS 2104 INDCT$STATUS LASTIF~ STATUS !2 2105 [LASTIF] !3 !4 !5 !6 !7 !8 !9 2106 #ELSE 2107 #IFSAME !2 $0 $1 $2 $3 $4 $5 MATCH IN 2108 INDCT$AS LASTIF~ AS !1 !2 !3 2109 [LASTIF] !4 !5 !6 !7 !8 !9 2110 #ELSE 2111 #IFCLASS !1 "G" 2112 INDCT$GROUP LASTIF~ GROUP ALL !1 2113 #ELSE 2114 INDCT$AS LASTIF~ AS !1 2115 #ENDIF 2116 [LASTIF] !2 !3 !4 !5 !6 !7 !8 !9 2117 #ENDIF 2118 #ENDIF 2119 #ENDIF 2120#ENDCOMMAND 2121 2122#COMMAND IF$HELP 2123 !A [~LASTIF] $41 |CI0 // If LASTIF is false jump to end of IF command. 2124 #XPUSH 1 !a // Save line number of jump at static nesting level. 2125 #XPUSH 0 !n // Save nesting level in stack 0. 2126 !1 !2 !3 !4 !5 !6 !7 !8 !9 2127 #XPOP 0 Q$ // Restore nesting level into Q. 2128 #XPOP 1 S$ // Restore IF JUMP line number 2129 #XPUSH !q !s // Push it back for the ELSE. 2130 #IF (!n>!q) // after a begin 2131 #FREF END$!r !s // Make IF JUMP goto end of begin block. 2132 #ELSE // same or lower nesting level 2133 #FREF (!a+1) !s // Make IF JUMP goto end of the IF. 2134 #ENDIF 2135#ENDCOMMAND 2136 2137#COMMAND IFCHANGE R R 2138 #IFDEF !1 2139 #CHECK !1 _RFCVGE 2140 !A [] $1C6 !1 2141 #ELSE 2142 #CHECK !1.FILE_NUMBER _URWGV 2143 !A [] $303 !1.FILE_NUMBER // should work with filename or indirect_file (which is obsolete) 2144 #ENDIF 2145 [|122] !2 !3 !4 !5 !6 !7 !8 !9 2146#ENDCOMMAND 2147 2148//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 2149// 2150// Command: 2151// INCLUDE_RESOURCE fileName AS resourceName {TYPE resourceType} 2152// 2153// Descrtiption: 2154// A command to include (embed) a file as a resource. 2155// 2156// Parmeters: 2157// fileName 2158// Name of a file (NOT in quotes) to include. May include a path. 2159// resourceName 2160// Name of the resource (NOT in quotes). 2161// resourceType 2162// A constant integer (or a symbolic replacement for a constant 2163// integer) that is recorded in the .flx to indicate the type of 2164// resource. If omitted, DF_RESOURCE_TYPE_LINE is assumed. You 2165// uase any positive value for user-defined types. Do NOT use 2166// 0. 0 means the resource is uninitialized (registered, but not 2167// included.) DAC reserves the negative values. 2168// 2169//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 2170 2171#COMMAND INCLUDE_RESOURCE _TR "AS" _R """TYPE" _%USNVLE# 2172 #IF (!0>3) 2173 #SET Q$ !5 // specified type. 2174 #ELSE 2175 #SET Q$ DF_RESOURCE_TYPE_LINE // default to line. 2176 #ENDIF 2177 #IFDEF !3.RSC 2178 #RESOURCE !1 !3.RSC !q $0 // re-register resource; $0 = already named (just 2179 #ELSE // setting resource filename and type). 2180 #REPLACE !3.RSC |CI!ZR // create unique resource id. 2181 #RESOURCE !1 !Zr !q !3 // register new resource. 2182 #ENDIF 2183#ENDCOMMAND 2184 2185#COMMAND INCREMENT #ELCRUG . 2186 #IFTYPE !1 "IV" 2187 !A [] $083 !1 |CI0 2188 #ELSE 2189 Move (!1 + 1) to !1 2190 #ENDIF 2191#ENDCOMMAND 2192 2193#COMMAND INDCT$$0 & 2194 !A [] $4028 |CI0 |CI0 !1 !3 2195#ENDCOMMAND 2196 2197#COMMAND INDCT$$1 &RX R . 2198 !A [] $4028 |CI0 |CI0 !1~ !3 2199#ENDCOMMAND 2200 2201#COMMAND INDCT$AS //&RX "AS" LU "$0""$1""$2""$3""$4""$5""MATCH""IN""" #LUG . 2202 #IF (!0<4) 2203 #IFCLASS !3 "G" 2204 #CHECK !4 "" // INDICATE IND1 AS IND2 2205 #CHECK !3 _SNDI#LO 2206 !A [] $4020 !3 |GB[0] !1 |3 2207 #ELSE 2208 2209 // If here we've got either a single variable if 2210 // If Var .... <or> 2211 // If (Var) 2212 // 2213 // Not all data types are supported in this format and the compiler will create an error if 2214 // you pick the wrong one. 2215 // 2216 // Those Allowed are: Real, Number, Date, String, Integer, Boolean, Short, UShort, Char, UChar, Address 2217 // 2218 // Those not Allowed are: Float, Decimal, Currency, Time, DateTime, TimeSpan, Variant, BigInt, UBigInt, UInteger 2219 // 2220 // This was changed for 8.3. Prior to 8.3 types which were not supported (e.g. float) compiled but did not work. 2221 // Now you get an error message at compile time. Also, address types which did not work now are allowed and work properly. 2222 // 2223 // Struct and arrays can only be used if they are members (e.g. not MyIntArray, but MyIntArray[1]; not MyStruct, but MyStruct.bMem) 2224 // and if the member is within an expression (e.g. not MyIntArray[1], but (MyIntArray[1]) ). 2225 // In addition you cannot use deprecated "If X[1] EQ Y[1]" syntax with structs and arrays. You must use expressions "if (x[1]=y[1])" 2226 2227 // INDICATE IND AS X 2228 #CHECK !3 _U 2229 // compare real 0 against real 2230 #IFTYPE !3 "R" 2231 !A [] IN$5 !3 |CR0 !1 |3 2232 #ELSE 2233 // compar number 0 for date and number 2234 #IFTYPE !3 "ND" 2235 !A [] IN$5 !3 |CN0 !1 |1 2236 #ELSE 2237 // compare integer 0 for integer, Long(?), Boolean, UBigint, UInteger, UShort, BigInt, Short, Char, UChar, Address 2238 // prior to 8.3 this was "ILZOQGVUWCYH". In 8.3 we removed currency (O) and decimal (Q), BigInt (H), UBigInt (G), UInteger (V), added address (X) 2239 #IFTYPE !3 "ILZUWCYX" 2240 !A [] IN$5 !3 |CI0 !1 |2 2241 #ELSE 2242 // compare string "" against string 2243 #IFTYPE !3 "S" 2244 !A [] IN$5 !3 |CS"" !1 |0 2245 #ELSE 2246 // if type is a struct or array, we cannot use this. One of two types of errors 2247 #IFTYPE !3 "KA" 2248 #IFCLASS !3 "E" 2249 // if within an expression, it must be returning the entire struct or array which cannot be evaludated 2250 #ERROR DFERR_COMP_INVALID_TYPE "The expression returns a struct or array. This cannot used for logical evaluation." 2251 #ELSE 2252 // if not an expression. This could be a non-member which is never allowed. 2253 // or it might be a member which requires parenthesis. eg: "if Var.bMem" should be "if (Var.bMem)" 2254 #ERROR DFERR_COMP_INVALID_TYPE "Structs and Arrays must be members and can only be evaluated within an expression. Use (bVars[x]) or (Var.bMem)" 2255 #ENDIF 2256 #ELSE 2257 // types of BigInt, UBingInt, UInteger, time, timedate, float, currency, decimal, variant and timespan cannot be used directly in expression or as variables. 2258 // They can be used inside of a boolean expression. So you can not do "If fFloatVar" or "If (fFloatVar)" but you can do 2259 // "If (fFloatVar<>0)" instead. We don't support variant types because at compile time we just don't know what kind of data they 2260 // will contain. 2261 #IFTYPE !3 "TMFOPQJHGV" 2262 #ERROR DFERR_COMP_INVALID_TYPE "The variable data-type is not valid for logical evaluation. Use (var<>0)" 2263 #ELSE 2264 #CHECK !3 _O 2265 !A [] $4020 !3 |GB[0] !1 IN$GLALL |3 2266 #ENDIF 2267 #ENDIF 2268 #ENDIF 2269 #ENDIF 2270 #ENDIF 2271 #ENDIF 2272 #ENDIF 2273 #ELSE 2274 #CHECK !5 _R 2275 #IFSAME !4 MATCH 2276 !A [] $4031 !3 !5 !1 !6 2277 #ELSE 2278 #IFSAME !4 IN 2279 !A [] $4030 !3 !5 !1 !6 2280 #ELSE 2281 #CHECK !3 _U 2282 2283 // If here we've got either a old style if statement 2284 // If Var NE Xxxx <or> 2285 // If Var EQ Var 2286 // 2287 // First of all note that this is a deprecated style and not all of the newer types are supported. If we 2288 // find an invalid type in either side of the comparison, we will generate a compiler error 2289 // 2290 // Those Allowed are: Real, Number, Date, String, Integer, Boolean, Short, UShort, Char, UChar, Address 2291 // 2292 // Those not Allowed are: Float, Decimal, Currency, Time, DateTime, TimeSpan, Variant, BigInt, UBigInt, UInteger 2293 // Struct or Arrays (even members of a valid data-type) 2294 // 2295 // This was changed for 8.3 and this may generate new compiler errors. That's good as it is catching errors. 2296 2297 // note that the order of these are important. 2298 #IF2TYPE !3 !5 "TMFOPQJHGVAK" // bad guys are: time, datetime, timespan, float, currency, decimal, variant, BigInt, UBigInit, UInteger, Struct, Array 2299 #ERROR DFERR_COMP_INVALID_TYPE "One or both comparision variable datatypes are not valid for logical evaluation. Use (var<>xx)" 2300 #ELSE 2301 #IF2TYPE !3 !5 "R" // real 2302 !A [] IN!4 !3 !5 !1 !6 |3 2303 #ELSE 2304 #IF2TYPE !3 !5 "ND" // number, date 2305 #IF2TYPE !3 !5 "X" // cannot compare address to number/date. 2306 #ERROR DFERR_COMP_INVALID_TYPE "You cannot compare an address to a number or a date" 2307 #ELSE 2308 !A [] IN!4 !3 !5 !1 !6 |1 2309 #ENDIF 2310 #ELSE 2311 // #IF2TYPE !3 !5 "IL" // pre-8.3 it was this (we let just about everything act as string, which did not work) 2312 #IF2TYPE !3 !5 "ILZUWCYX" // integer, (long), boolean, Short, uShort, Char, UChar, Address 2313 !A [] IN!4 !3 !5 !1 !6 |2 2314 #ELSE 2315 !A [] IN!4 !3 !5 !1 !6 |0 // if nothing else, string 2316 #ENDIF 2317 #ENDIF 2318 #ENDIF 2319 #ENDIF 2320 #ENDIF 2321 #ENDIF 2322 #ENDIF 2323#ENDCOMMAND 2324 2325#COMMAND INDCT$GROUP &XR "GROUP" R"ALL""ANY" CVFWSN#LRU "AND""OR""" "ANY""ALL""" CVFWSN#LU . 2326 #IF !0>4 2327 #CHECK !7 _R 2328 !A [] $4020 !4 !7 !1 IN$GL!3 IN$GR!6 IN$GM!5 2329 #ELSE 2330 !A [] $4020 !4 |GB[0] !1 IN$GL!3 |3 2331 #ENDIF 2332#ENDCOMMAND 2333 2334#COMMAND INDCT$STATUS &R R #LWV 2335 #IFDEF !3 2336 !A [] $4029 !3 |CI0 !1 !4 2337 #ELSE 2338 #CHECK !3.FILE_NUMBER _U#LWV 2339 #SET Q$ !3.FILE_NUMBER 2340 !A [] $4029 |CI!q |CI0 !1 !4 2341 #ENDIF 2342#ENDCOMMAND 2343 2344#COMMAND INDEX_DEF R R#LGU "TO" #LGRNDCE #LGNDCE #LGNDCE 2345 #IFDEF !1 2346 !A [] $82 !1 FILENUMBER 2347 #ELSE 2348 #CHECK !1.FILE_NUMBER _UE 2349 #SET Q$ !1.FILE_NUMBER 2350 !A [] $82 |CI!q FILENUMBER 2351 #ENDIF 2352 !A [] $344 !2 !4 // index fields 2353 #IF !0>4 2354 !A [] $82 STRLEN !5 // number of fields 2355 #IF !0>5 2356 !A [] $349 !2 !6 // index attributes 2357 #ENDIF 2358 #ENDIF 2359#ENDCOMMAND 2360 2361#COMMAND INDICATE R 2362 #IFSAME !1 ~ 2363 #IFDEF !2 2364 #ELSE 2365 #REPLACE !2 |!C 2366 #ENDIF 2367 INDICATE !2~ !3 !4 !5 !6 !7 !8 !9 2368 #ELSE 2369 // #CHECK !2 "AS""STATUS""$0""$1""GROUP" 2370 #IFDEF !1 2371 #CHECK !1 _X 2372 #ELSE 2373 #REPLACE !1 |!C 2374 #ENDIF 2375 // INDCT$!2 !1 !2 !3 !4 !5 !6 !7 !8 !9 // old logic 2376 2377 // Logic changed to handle true/false defined as constants instead of $0 $1 2378 // False is |CZ0, dfFalse is |CI0. If either, use $0. 2379 // True is |CZ1, dfTrue is |CI1 If either, use $1. 2380 #IFSAME !2 false dfFalse 2381 INDCT$$0 !1 $0 !3 !4 !5 !6 !7 !8 !9 // special command for Indicate !1 False 2382 #ELSE 2383 #IFSAME !2 true dftrue 2384 INDCT$$1 !1 $1 !3 !4 !5 !6 !7 !8 !9 // special command for Indicate !1 True 2385 #ELSE 2386 INDCT$!2 !1 !2 !3 !4 !5 !6 !7 !8 !9 // old fashion command uses !2 to assemble the command 2387 #ENDIF 2388 #ENDIF 2389 #ENDIF 2390#ENDCOMMAND 2391 2392#COMMAND INDICATOR RT 2393 #REPLACE !1 |!C 2394 #IF (!0>1) 2395 INDICATOR !2 !3 !4 !5 !6 !7 !8 !9 2396 #ENDIF 2397#ENDCOMMAND 2398 2399#COMMAND INHERIT_SCREEN &. 2400 !A [] $14B 2401#ENDCOMMAND 2402 2403#COMMAND INKEY #LUCRE &. 2404 !A [] $147 !1 2405#ENDCOMMAND 2406 2407#COMMAND INKEY$ #LUCRE &. 2408 !A [] $149 !1 2409#ENDCOMMAND 2410 2411#COMMAND INPUT &#ULGR #LUG #ULG . 2412 #IFCLASS !1 "C" 2413 #CHECK !2 _RCLUEG _RCLUG 2414 //move 0 to strmark 2415 !A [] $086 |CI0 |VI12 2416 !A [] $142 !1 2417 // INPUT !2 !3 2418 !A [] $140 !2 !3 |CI79 2419 #ELSE 2420 #CHECK !1 _RCLUEG 2421 !A [] $140 !1 !2 |CI79 2422 #ENDIF 2423#ENDCOMMAND 2424 2425#COMMAND INSERT #LGR "IN" #LGRCE "AT""" 2426 #IF (!0>3) 2427 #CHECK !5 _#LGR% 2428 //MOVEINT !5 TO STRMARK 2429 !A [] $82 !5 STRMARK 2430 #ENDIF 2431 !A [] $24C !3 !1 2432#ENDCOMMAND 2433 2434//JJT-5.1 2435//#COMMAND INTEGER TR 2436// // ALLOW FOR MORE INTS 2437// #REPLACE !1 |VI!D 2438// #IF (!0>1) 2439// INTEGER !2 !3 !4 !5 !6 !7 !8 !9 2440// #ENDIF 2441//#ENDCOMMAND 2442 2443#COMMAND IS_FILE_INCLUDED R R "TO""" 2444 !A [] $E0 !1 !2 2445 #IF !0>2 2446 #CHECK !4 _CUEGRL 2447 MOVE (FOUND) TO !4 2448 #ENDIF 2449#ENDCOMMAND 2450 2451#COMMAND KEYCHECK 2452 !A [] $046 2453 #IF !0>0 2454 [KEYPRESS] !1 !2 !3 !4 !5 !6 !7 !8 2455 #ENDIF 2456#ENDCOMMAND 2457 2458#COMMAND KEYPROC &R%WVF """GOSUB" WFVNSD# . 2459 #IFSAME !1 ON 2460 !A [] $82 |CI0 |VI33 2461 #ELSE 2462 #IFSAME !1 OFF 2463 !A [] $82 |CI9999 |VI33 2464 #ELSE 2465 #SET Y$ !a 2466 #IF (!0>1) 2467 // MOVEINT ADR(3) TO KEY LOC 2468 #SET Q$ (!1-100+40) // address in SYSINT 2469 #IFDEF !3 2470 !A [] $082 !3 |VI!q 2471 #ELSE 2472 !A [] $082 |CI0 |VI!q 2473 #FREF !3 !a 2474 #ENDIF 2475 #ELSE 2476 #SET Q$ (!1-100) 2477 #KEYPROC !q !Y 2478 #ENDIF 2479 #ENDIF 2480 #ENDIF 2481#ENDCOMMAND 2482 2483#COMMAND LEFT &#UGL$ "TO" #UEGRLC L#% . 2484 #IF !0>3 2485 !A [] $082 !4 STRMARK 2486 #ENDIF 2487 !A [] $241 !1 !3 2488#ENDCOMMAND 2489 2490#COMMAND LENGTH &#LUG$ "TO" C#LREUG . 2491 !A [] $246 !1 !3 2492#ENDCOMMAND 2493 2494#COMMAND LOCK &. 2495 !A [] $0C7 2496#ENDCOMMAND 2497 2498#COMMAND LOOP &. 2499 #POP S$ 2500 #CHECK BEGIN$!s _RVFWSNDEU 2501 !A [] $041 BEGIN$!s 2502 END$!s: 2503 #SET N$ !n-1 2504#ENDCOMMAND 2505 2506#COMMAND MAKEDEF$ // make a list of symbols defined 2507 #IF !0>0 2508 #IFDEF !1 2509 #ELSE 2510 !1: 2511 #ENDIF 2512 #IF !0>1 2513 MAKEDEF$ !2 !3 !4 !5 !6 !7 !8 !9 2514 #ENDIF 2515 #ENDIF 2516#ENDCOMMAND 2517 2518#COMMAND MAKE_FILE RU#LG U#LG U#LG U#LG . 2519 !A [] $34A !4 2520 #IF !0>2 2521 !A [] $82 !3 FILENUMBER 2522 #ELSE 2523 !A [] $82 |CI0 FILENUMBER 2524 #ENDIF 2525 #IF !0>1 2526 !A [] $346 !1 !2 2527 #ELSE 2528 !A [] $346 !1 |CS'' 2529 #ENDIF 2530#ENDCOMMAND 2531 2532#COMMAND MEMORY #LRCUGE &. 2533 !A [] $2CA !1 2534#ENDCOMMAND 2535 2536#COMMAND MID &#UGL$ "TO" #UGRLEC #L%U #L% . 2537 #IF !0>4 2538 !A [] $082 !5 STRMARK 2539 #ENDIF 2540 !A [] $082 !4 STRLEN 2541 !A [] $245 !1 !3 2542#ENDCOMMAND 2543 2544#REM The type of a move is determined at compile time, based on the 2545#REM type of the destination. The move type refers to the intermediate 2546#REM value to which the source will be converted. 2547 2548//JJT-5.1 2549//#COMMAND MOVE #LU "TO" #GLEURC . 2550// #IFCLASS !1 "G" // MOVE INDICATOR 2551// #CHECK !1 _VWFC 2552// !A [] $4020 !1 |GB[0] !3 IN$GLALL |3 2553// #ELSE 2554//// Type independent move as of 2.3 2555// !A [] $086 !1 !3 2556// #ENDIF 2557//#ENDCOMMAND 2558 2559#COMMAND MOVEDATE &%#GULI "TO" #UCIGERL . 2560 !A [] $084 !1 !3 2561#ENDCOMMAND 2562 2563#COMMAND MOVEINT &%#GULD "TO" #UCSDEGRL . 2564 !A [] $082 !1 !3 2565#ENDCOMMAND 2566 2567#COMMAND MOVENUM &#ULG "TO" #UCLGREL . 2568 !A [] $081 !1 !3 2569#ENDCOMMAND 2570 2571#COMMAND MOVEREAL &#ULG "TO" #UCLGER . 2572 !A [] $085 !1 !3 2573#ENDCOMMAND 2574 2575#COMMAND MOVESTR &#ULG$ "TO" #UCLGR$E . 2576 !A [] $080 !1 !3 2577#ENDCOMMAND 2578 2579#COMMAND MULTI$ // repeat a command for each argument (internal) 2580 #IF !0>1 2581 !1 !2 2582 #ENDIF 2583 #IF !0>2 2584 MULTI$ !1 !3 !4 !5 !6 !7 !8 !9 2585 #ENDIF 2586#ENDCOMMAND 2587 2588#COMMAND MULTIBACK$ // same as above, except that arguments 2589 #IF !0>2 // are output in reverse order 2590 MULTIBACK$ !1 !3 !4 !5 !6 !7 !8 !9 2591 #ENDIF 2592 #IF !0>1 2593 !1 !2 2594 #ENDIF 2595#ENDCOMMAND 2596 2597#COMMAND NAME R#L T 2598 #IFDEF !1 2599 #REPLACE !2 !1 2600 #CHECK !3 . 2601 #ELSE 2602 #IFCLASS !1.1 "W" 2603 AUTOPAGE !1 2604 #ELSE 2605 AUTO3$ #REPLACE !1 PAGE!f 2606 #ENDIF 2607 #IF !0>1 2608 NAME !2 !3 !4 !5 !6 !7 !8 !9 2609 #ENDIF 2610 #ENDIF 2611#ENDCOMMAND 2612 2613// JJT-5.1 2614//#COMMAND NUMBER TR 2615// #NUM V$ 2616// #REPLACE !1 |VN!v 2617// #IF (!0>1) 2618// NUMBER !2 !3 !4 !5 !6 !7 !8 !9 2619// #ENDIF 2620//#ENDCOMMAND 2621 2622#COMMAND ON R "GOTO""GOSUB""OFF" SNOBIODE 2623 #IFSAME !1 ERROR 2624 // MOVEINT ADDR to ONERROR (|VI31) 2625 #IFDEF !3 2626 !A [] $082 !3 |VI31 2627 #CHECK !2 "GOSUB" 2628 #ELSE 2629 !A [] $082 |CI0 |VI31 2630 #IFSAME !2 GOSUB 2631 #FREF !3 !a 2632 #ELSE 2633 #CHECK !2 "OFF" 2634 #ENDIF 2635 #ENDIF 2636 #ELSE 2637 #SET Q$ (!0-1) 2638 // INDICATE OK$1 AS !1 GT 0 2639 #IFDEF OK$1 2640 #ELSE 2641 #REPLACE OK$1 |!C 2642 #REPLACE OK$2 |!C 2643 #ENDIF 2644 #CHECK !1 _#ULGRS 2645 !A [] $4010 !1 |CI0 OK$1 |2 2646 // INDICATE OK$2 AS !1 LT !q 2647 !A [] $4000 !1 |CI!q OK$2 |2 2648 #SET Q$ (!a+2) 2649 #IFSAME !2 GOTO 2650 !A [OK$1 OK$2] $041 |CE(!q+!1 ) 2651 #ELSE 2652 !A [OK$1 OK$2] $042 |CE(!q+!1 ) 2653 #ENDIF 2654 #SET Q$ (!a+!0) 2655 !A [] $041 |CL!q //ERROR jump around GOTOs 2656 MULTI$ GOTO !3 !4 !5 !6 !7 !8 !9 2657 #ENDIF 2658#ENDCOMMAND 2659 2660 2661#REM OS$CALL makes a system BDOS call. Only calls that can be passed 2662#REM integer (not pointer) values can be used. Use at your own risk! 2663#REM Format of command: 2664#REM OS$CALL <FUNCTION> <ARGUMENT> {TO <RESULT>} 2665#REM <FUNCTION> - BDOS function code - See O/S documentation. 2666#REM <ARGUMENT> - Integer value to pass with function (optional) 2667#REM <RESULT> - Result code returned by function 2668 2669#REM Example to set CP/M I/O byto to "NEW_IO_BYTE (integer): 2670#REM OS$CALL 8 NEW_IO_BYTE 2671 2672#REM Example to get console status: 2673#REM OS$CALL 12 0 TO CONSTAT //integer 2674 2675#COMMAND OS$CALL &#LRU%DG #L%UG "TO""" #LCGUE . 2676 !A [] $2C8 !1 !2 2677 #IF !0>3 2678 //MOVEINT STRMARK TO !4 2679 !A [] $82 STRMARK !4 2680 #ENDIF 2681#ENDCOMMAND 2682 2683#COMMAND OUTCLOSE &. 2684 // OUTFILE 'CON:' 2685 !A [] $200 |CS'CON:' 2686#ENDCOMMAND 2687 2688#COMMAND OUTFILE &NDILU#G . 2689 !A [] $200 !1 2690#ENDCOMMAND 2691 2692#COMMAND OUTPUT 2693 #IFSAME !1 CHANNEL 2694 !A [] $10A |CI1 !2 2695 OUTPUT !3 2696 #ELSE 2697 #CHECK !2 . 2698 #IF !0>0 2699 #CHECK !1.N _#LUGFV 2700 !A [] $202 !1.N 2701 #ELSE 2702 !A [] $202 |VI9 2703 #ENDIF 2704 #ENDIF 2705#ENDCOMMAND 2706 2707#COMMAND OUTPUT_WRAP R 2708 #IFSAME !1 CHANNEL 2709 !A [] $10A |CI1 !2 2710 OUTPUT_WRAP !3 2711 #ELSE 2712 #CHECK !2 . 2713 #CHECK !1.N _#LUGFV 2714 !A [] $20A !1.N // Fill wrap fields and set |122 if empty 2715 OUTPUT !1 2716 [NOT |122] BLANKFORM !1 2717 !A [NOT |122] $20A !1.N 2718 [NOT |122] REPEAT 2719 #IFDEF NEWPAGE 2720 PAGECHECK !1.LINES 2721 [PAGEBREAK] GOSUB NEWPAGE 2722 #ENDIF 2723 OUTPUT !1 2724 !A [] $20A !1.N // get more from wrap fields 2725 [NOT |122] LOOP 2726 #ENDIF 2727#ENDCOMMAND 2728 2729#COMMAND PAD &#ULG$ "TO" #ULGRCE L%# . 2730 #IF !0>3 2731 !A [] $082 !4 STRMARK 2732 #ENDIF 2733 !A [] $240 !1 !3 2734#ENDCOMMAND 2735 2736#COMMAND PAGE R% 2737 #IFSAME !1 SET 2738 #IF !0>1 2739 // Set attributes for future use 2740 #CHECK !2.N _RU#LG 2741 MOVE !2.N TO STRMARK 2742 FIND$PAGE !3 !4 !5 2743 FIND$PAGE !6 !7 !8 2744 #ELSE 2745 // Page an image named SET immediately 2746 !A [] $1C0 !1.N 2747 #ENDIF 2748 #ELSE 2749 #IF !0>1 2750 // Set attributes for use now 2751 #CHECK !1.N _RU#LG 2752 MOVE !1.N TO STRMARK 2753 FIND$PAGE !2 !3 !4 2754 FIND$PAGE !5 !6 !7 2755 #ENDIF 2756 // Put image with new attributes on screen now 2757 // OR, put regular image on screen now. 2758 !A [] $1C0 !1.N 2759 #ENDIF 2760#ENDCOMMAND 2761 2762#COMMAND PAGECHECK &#LG% . 2763 #IFDEF !1 |CI0 2764 !A [] $203 !1 |CI0 2765 #ELSE 2766 #CHECK !1.LINES _VFWU#LG 2767 !A [] $203 !1.LINES |CI0 2768 #ENDIF 2769#ENDCOMMAND 2770 2771#COMMAND POS &#UGRL$ "IN" #UGRL$ #L% #L% . 2772 !A [] $244 !1 !3 2773 #IF !0>3 2774 #CHECK !4 "TO" 2775 #CHECK !5 _RCEUL 2776 !A [] $082 STRMARK !5 2777 #ENDIF 2778#ENDCOMMAND 2779 2780#COMMAND PRINT #L 2781 #IF !0>2 2782 #IF !0>3 2783 #FORMAT !3 !4 2784 #CHECK !4 _CVFW#L 2785 #ENDIF 2786 #CHECK !2 "TO" 2787 #CHECK !3 _CVF#L 2788 #IFTYPE !3 "IND" 2789 !A [] $206 !1 !3 2790 #ELSE 2791 #IFTYPE !3 "R" 2792 !A [] $208 !1 !3 2793 #ELSE 2794 !A [] $205 !1 !3 2795 #ENDIF 2796 #ENDIF 2797 #ELSE 2798 AUTO4$ PRINT !1 TO PAGE!f !2 2799 #ENDIF 2800#ENDCOMMAND 2801 2802#COMMAND PRINT_WRAP #L 2803 #IF !0>2 2804 #IF !0>3 2805 #FORMAT !3 !4 2806 #CHECK !4 _CVFW#L 2807 #ENDIF 2808 #CHECK !2 "TO" 2809 #CHECK !3 _CVF#L 2810 #IFCLASS !1 "F" 2811 !A [] $209 |CS"DBMS:!1" !3 // assign seq file to wrap window. 2812 #ELSE 2813 !A [] $209 !1 !3 2814 #ENDIF 2815 #ELSE 2816 AUTO4$ PRINT_WRAP !1 TO PAGE!f !2 2817 #ENDIF 2818#ENDCOMMAND 2819 2820#COMMAND READ 2821 #IFSAME !1 CHANNEL 2822 !A [] $10A |CI0 !2 2823 #IF !0>2 2824 #CHECK !3 _ULEC 2825 READ !3 !4 !5 !6 !7 !8 !9 2826 #ENDIF 2827 #ELSE 2828 !A [] $108 !1 2829 #IF !0>1 2830 #CHECK !2 _ULEC 2831 READ !2 !3 !4 !5 !6 !7 !8 !9 2832 #ENDIF 2833 #ENDIF 2834#ENDCOMMAND 2835 2836#COMMAND READLN 2837 #IFSAME !1 CHANNEL 2838 #CHECK !3 _ULE 2839 !A [] $10A |CI0 !2 2840 READLN !3 !4 !5 !6 !7 !8 !9 2841 #ELSE 2842 #IF !0=0 2843 !A [] $104 |CS'' 2844 #ENDIF 2845 #IF !0=1 2846 !A [] $104 !1 2847 #ENDIF 2848 #IF !0>1 2849 #CHECK !1 _ULE 2850 !A [] $108 !1 2851 READLN !2 !3 !4 !5 !6 !7 !8 !9 2852 #ENDIF 2853 #ENDIF 2854#ENDCOMMAND 2855 2856#COMMAND READ_BLOCK 2857 #IFSAME !1 CHANNEL 2858 !A [] $10A |CI0 !2 2859 #IF !0>2 2860 #CHECK !3 _ULE 2861 #CHECK !4 _RU 2862 !A [] $109 !3 !4 2863 #ENDIF 2864 #ELSE 2865 #CHECK !1 _ULEC 2866 #CHECK !2 _RU 2867 !A [] $109 !1 !2 2868 #ENDIF 2869#ENDCOMMAND 2870 2871#COMMAND READ_DFINI &#LGOBDR . 2872 !A [] $14C !1 2873#ENDCOMMAND 2874 2875//#COMMAND REAL TR 2876// #REAL V$ 2877// #REPLACE !1 |VR!v 2878// #IF (!0>1) 2879// REAL !2 !3 !4 !5 !6 !7 !8 !9 2880// #ENDIF 2881//#ENDCOMMAND 2882 2883//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 2884// 2885// Command: 2886// REGISTER_RESOURCE resourceName 2887// 2888// Descrtiption: 2889// A command to register a resource for use prior to its inclusion. 2890// 2891// Parmeters: 2892// resourceName 2893// Name of the resource (NOT in quotes). 2894// 2895//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 2896 2897#COMMAND REGISTER_RESOURCE _R 2898 #IFDEF !1.RSC 2899 #ELSE 2900 #REPLACE !1.RSC |CI!ZR // create unique resource symbol. 2901 #RESOURCE $0 !Zr 0 !1 // register resource; $0 = no filename; 0 = no type. 2902 #ENDIF 2903#ENDCOMMAND 2904 2905#COMMAND REGISTRATION &#RLUGCE #LUGEC . 2906 !A [] $307 !1 !2 2907#ENDCOMMAND 2908 2909#COMMAND RENAMEFILE &#LGU "TO" R#LGU . 2910 !A [] $2C2 !1 !3 2911#ENDCOMMAND 2912 2913#COMMAND REPEAT &. 2914 #SET N$ !N 2915 #PUSH !R 2916 #XPUSH !n $INIT 2917 #IFIND // INCLUDE JUMPS IF INDICATORS ON LINE 2918 // GOTO BEGIN$!r 2919 !A [] $041 |CL0 2920 #FREF BEGIN$!r !a 2921 #$ !A 0 0 0 $041 |CL0 2922 #FREF END$!r !a 2923 #ENDIF 2924 #$ WHILE#!r: 2925 #$ BEGIN$!r: 2926#ENDCOMMAND 2927 2928 2929 2930#COMMAND REPLACE #LG "IN" #LGCE "WITH" #LRG 2931 #IFIND 2932 [] BEGIN 2933 POS !1 IN !3 2934 #$ [FOUND] MOVESTR (REPLACE(!1,!3,!5)) TO !3 2935 END 2936 #ELSE 2937 POS !1 IN !3 2938 [FOUND] MOVESTR (REPLACE(!1,!3,!5)) TO !3 2939 #ENDIF 2940#ENDCOMMAND 2941 2942// not updated for File_number vs recnum support. This should not be used with VDF. See Enter command for notes 2943#COMMAND REPORT T "BY""DOWN" VFW%LGR "BREAK""" 2944 #CHECK !1.RECNUM _UVCWGL 2945 INTEGER RECCOUNT 2946 #SET P$ 0 2947 // MOVEINT 20000 TO LINECOUNT // start with a full page 2948 !A [] $82 |CI20000 |VI10 2949 // MOVE 0 TO RECCOUNT 2950 !A [] $82 |CI0 RECCOUNT 2951 // BREAKINIT // init breakpoints 2952 !A [] $207 2953 // INDICATE FIRSTREC TRUE // used for subtotals 2954 #IFDEF FIRSTREC 2955 #ELSE 2956 #REPLACE FIRSTREC |!C 2957 #ENDIF 2958 !A [] $4028 |CI0 |CI0 FIRSTREC~ 2959 #IFSAME !2 BY 2960 FIND GE !1 BY !3 // FIND first record 2961 #ELSE 2962 FIND LE !1 BY !3 2963 #ENDIF 2964 [~FOUND] GOTO END$OF$REPORT 2965 // CLEARSCREEN // start with a clear screen 2966 !A [] $144 2967 RPT.LOOP:// INDICATE SELECT TRUE // default for SELECT 2968 #IFDEF SELECT 2969 #ELSE 2970 #REPLACE SELECT |!C 2971 #ENDIF 2972 !A [] $4028 |CI0 |CI0 SELECT~ 2973 // GOSUB RPT.SELECTION // go to user selection 2974 !A [] $42 |CL0 2975 #FREF RPT.SELECTION !a 2976 //[NOT SELECT] GOTO RPT.CONT // test SELECT 2977 !A [~ SELECT] $41 |CL0 2978 #FREF RPT.CONT !a 2979 BREAK$ !5 !6 !7 !8 !9 // set breakpoints 2980 #SET X$ !p // set up to break down 2981 [NOT FIRSTREC] BREAK$DOWN RPT.SUBTOTAL // break down for SUBTOTAL 2982 #SET X$ 0 // set up to break up 2983 // RELATE !1 // get related records 2984 !A [] $C4 !1.RECNUM 2985 BREAK$UP RPT.SUBHEADER // break up for SUBHEADER 2986 // INCREMENT RECCOUNT 2987 !A [] $083 RECCOUNT |CI0 2988 // GOSUB RPT.BODY // print body 2989 !A [] $42 |CL0 2990 #FREF RPT.BODY !a 2991 // INDICATE FIRSTREC FALSE // not first any more 2992 !A [] $4028 |CI0 |CI0 FIRSTREC 2993 RPT.CONT: 2994 #IFSAME !2 BY 2995 FIND GT !1 BY !3 // FIND next record 2996 #ELSE 2997 FIND LT !1 BY !3 2998 #ENDIF 2999 // KEYCHECK // check keyboard 3000 !A [] $46 3001 //[FOUND NOT KEYPRESS] GOTO RPT.LOOP // if ok, loop 3002 !A [FOUND ~ KEYPRESS] $41 RPT.LOOP 3003 //[KEYPRESS] GOSUB RPT.KEYPRESS // user can disable KEYPRESS 3004 !A [FOUND KEYPRESS] $42 |CL0 3005 #FREF RPT.KEYPRESS !a 3006 !A [FOUND ~ KEYPRESS] $41 RPT.LOOP 3007 #SET X$ !p // set up for break down 3008 END.OF.REPORT: 3009 [~ FIRSTREC] BREAK$DOWN RPT.SUBTOTAL $X // break down for last subtotals 3010 //[FIRSTREC] GOSUB RPT.TOTAL // print TOTAL 3011 !A [~ FIRSTREC] $42 |CL0 3012 #FREF RPT.TOTAL !a 3013 // GOTO END$OF$REPORT // GOTO end 3014 !A [] $41 |CL0 3015 #FREF END$OF$REPORT !a 3016 NEWPAGE:// GOSUB RPT.HEADER // new page, print HEADER 3017 !A [] $42 |CL0 3018 #FREF RPT.HEADER !a 3019 #SET X$ 0 // this will reprint the page headers if included // 3020 [NOT FIRSTREC] BREAK$PRT SUBHEADER // reprint pages 3021 // RETURN // end of NEWPAGE 3022 !A [] $43 |CI0 3023 RPT.SELECTION: // selection starts after REPORT 3024#ENDCOMMAND 3025 3026#COMMAND REPORTEND . // end of REPORT 3027 MAKEDEF$ RPT.HEADER RPT.SELECTION RPT.BODY RPT.TOTAL 3028 #SET X$ 0 3029 BREAK$T3 3030 // RETURN 3031 !A [] $43 |CI0 3032 #IFDEF RPT.KEYPRESS 3033 #ELSE 3034 RPT.KEYPRESS: 3035 // STRING AKEY$ 1 3036 #IFDEF AKEY$ 3037 #ELSE 3038 #STR V$ 1 3039 #REPLACE AKEY$ |VS!v 3040 #ENDIF 3041 // SHOWLN 'A KEY HAS BEEN PRESSED.' 3042 !A [] $142 |CS'A KEY HAS BEEN PRESSED.' 3043 !A [] $143 3044 // SHOW 'DO YOU WANT TO STOP THE REPORT (Y or N)? ' 3045 !A [] $142 |CS'DO YOU WANT TO STOP THE REPORT (Y or N)? ' 3046 // INKEY AKEY$ 3047 !A [] $147 AKEY$ 3048 !A [] $141 AKEY$ 3049 // IF NOT AKEY$ IN 'Yy' RETURN RPT.LOOP 3050 INDCT$AS SELECT AS AKEY$ IN 'Yy' 3051 //JJT-5.1 3052 //[~ SELECT] RETURN RPT.LOOP 3053 [~ SELECT] Gosub_RETURN RPT.LOOP 3054 //JJT-5.1 3055 //RETURN END$OF$REPORT // Necessary to pop stack 3056 Gosub_RETURN END$OF$REPORT // Necessary to pop stack 3057 #ENDIF 3058 END$OF$REPORT: 3059#ENDCOMMAND 3060 3061// JJT-5.1 3062//#COMMAND RETURN VFWNDE#G 3063// #IF !0=0 3064// !A [] $043 |CL0 3065// #ELSE 3066// #IFSAME !1 RETURN 3067// #SET Q$ (!a+2) 3068// !A [] $043 |CL!q // RETURN RETURN 3069// RETURN !2 !3 !4 !5 !6 !7 !8 !9 3070// #ELSE 3071// #IFDEF !1 3072// #CHECK !1 _S 3073// #CHECK !2 . 3074// !A [] $043 !1 3075// #ELSE 3076// !A [] $043 |CL0 3077// #FREF !1 !a 3078// #ENDIF 3079// #ENDIF 3080// #ENDIF 3081//#ENDCOMMAND 3082 3083#COMMAND RIGHT &#UGRL$ "TO" #UGRLEC L#% . 3084 #IF !0>3 3085 !A [] $082 !4 STRLEN 3086 #ENDIF 3087 !A [] $242 !1 !3 3088#ENDCOMMAND 3089 3090#COMMAND RUNPROGRAM_PIPE #RLGU #RLGU #RLGU . 3091 !A [] $2D6 !3 // Specify the object to receive MSG_INSERT 3092 // with the output from the pipe. 3093 !A [] $2D7 !1 !2 // Execute the OS command with any arguments. 3094#ENDCOMMAND 3095 3096#COMMAND RUNPROGRAM #RLG #LG #LGU #LGU . 3097 // 14.0 SHELL option does a ShellExecute. Can be: 3098 // SHELL must be the first parameter 3099 #IFSAME !1 SHELL 3100 Runprogram$Shell !2 !3 !4 3101 #ELSE 3102 #IFSAME !1 WAIT BACKGROUND 3103 #IF !0>3 3104 #ERROR DFERR_COMP_INVALID_ARGUMENT TOO MANY ARGUMENTS TO RUNPROGRAM !1 3105 #ELSE 3106 #IFSAME !1 WAIT 3107 !A [] $2CC !2 !3 3108 #ELSE // BACKGROUND 3109 !A [] $2CD !2 !3 3110 #ENDIF 3111 #ENDIF 3112 #ELSE 3113 // Number of args is checked by type checking of command for PIPE. 3114 #IFSAME !1 PIPE 3115 #IF !0<4 3116 RUNPROGRAM_PIPE !2 "" !3 !4 !5 !6 !7 !8 !9 3117 #ELSE 3118 RUNPROGRAM_PIPE !2 !3 !4 !5 !6 !7 !8 !9 3119 #ENDIF 3120 #ELSE // Plain RUNPROGRAM. 3121 #IF !0>2 3122 #ERROR DFERR_COMP_INVALID_ARGUMENT TOO MANY ARGUMENTS TO RUNPROGRAM 3123 #ELSE 3124 !A [] $2C0 !1 !2 3125 #ENDIF 3126 #ENDIF 3127 #ENDIF 3128 #ENDIF 3129#ENDCOMMAND 3130 3131#COMMAND Runprogram$Shell "WAIT""BACKGROUND" #LGU #LGU . 3132 #IFSAME !1 Wait 3133 !A [] $2f2 !2 !3 3134 #ELSE 3135 !A [] $2f1 !2 !3 3136 #ENDIF 3137#ENDCOMMAND 3138 3139 3140#COMMAND SCREENMODE #%LGR # . 3141 #IFSAME !1 ON 3142 !A [] $148 |CE(458752) // SCREENMODE on 0x70000 3143 #ELSE 3144 #IFSAME !1 OFF 3145 !A [] $148 |CE(196608) // SCREENMODE off 0x30000 3146 #ELSE 3147 #CHECK !1 _U 3148 !A [] $148 !1 3149 #ENDIF 3150 #ENDIF 3151 #IF !0>1 3152 SCREENMODE !2 3153 #ENDIF 3154#ENDCOMMAND 3155 3156#COMMAND SECTION &RT #LGU . 3157 #IFSAME !1 SELECTION // SELECTION is null SECTION 3158 #ELSE 3159 // RETURN // RETURN from last routine 3160 !A [] $43 |CI0 3161 RPT.!1: // label SECTION 3162 #IFDEF !2 // LINES REQ SPEC 3163 // PAGECHECK !2 3164 !A [] $203 !2 3165 // [PAGEBREAK] GOSUB NEWPAGE 3166 !A [PAGEBREAK] $42 NEWPAGE 3167 #IFDEF !1.LINES 3168 #SET F$ !1.N 3169 #SET E$ 0 3170 #ENDIF 3171 #ELSE 3172 #IFDEF !1.LINES // is there a page? 3173 // PAGECHECK !1.LINES // check for end of page 3174 !A [] $203 !1.LINES |CI0 3175 //[PAGEBREAK] GOSUB NEWPAGE // if end, GOSUB NEWPAGE 3176 !A [PAGEBREAK] $42 NEWPAGE 3177 // AUTOPAGE !1 // start default page 3178 #SET F$ !1.N 3179 #SET E$ 0 3180 #ENDIF 3181 #ENDIF 3182 #ENDIF 3183#ENDCOMMAND 3184 3185#COMMAND SET_ARGUMENT_SIZE &#LGRBOUSD . 3186 !A [] $24E !1 3187#ENDCOMMAND 3188 3189#COMMAND SET_DFPATH "TO" &#LGRBOUD . 3190 !A [] $2D0 !2 3191#ENDCOMMAND 3192 3193#COMMAND SET_CHANNEL_POSITION &#LRUG$ "TO" &#LRUG$ . 3194 !A [] $10C !1 !3 3195#ENDCOMMAND 3196 3197#COMMAND SET_OPTION #LGR . // Sets window options 3198 #IFCLASS !1 _C // To stay on perminantly until 3199 #SET Q$ !1 // Turned off with CLEAR_OPTION. 3200 !A [] $04A |CI!q |CI0 // SET_OPTION NO_CALC // Turn off calculate. 3201 #ELSE 3202 !A [] $04A !1 |CI0 // THIS COMMAND IS FOR INTERNAL USE. 3203 #ENDIF 3204#ENDCOMMAND 3205 3206#COMMAND SET_RELATE &#LGOBRWCV "TO" #LGOBRWCV . 3207 !A [] $348 !1 !3 3208#ENDCOMMAND 3209 3210#COMMAND SET_TERMLIST &#LGOBDR #LGOBDIN . 3211 !A [] $14A !1 !2 3212#ENDCOMMAND 3213 3214#COMMAND SETCHANGE &RCVF%G . 3215 !A [] $1C7 !1 3216#ENDCOMMAND 3217 3218#COMMAND SHOW #ULRG$ 3219 !A [] $142 !1 3220 #IF (!0>1) 3221 SHOW !2 !3 !4 !5 !6 !7 !8 !9 3222 #ENDIF 3223#ENDCOMMAND 3224 3225#COMMAND SHOWLN #LGU$ 3226 #IF (!0>0) 3227 SHOW !1 !2 !3 !4 !5 !6 !7 !8 !9 3228 #ENDIF 3229 !A [] $143 3230#ENDCOMMAND 3231 3232#COMMAND SLEEP #LGURDBO . 3233 !A [] $02CE !1 3234#ENDCOMMAND 3235 3236// removed along with the other Old_Xxxxx commands. Note that there is no current status command. 3237//#COMMAND STATUS$ &CVW#LG "TO" #LUGRE 3238// #IFDEF !1 3239// !A [] $304 !1 !3 3240// #ELSE 3241// #CHECK !1.RECNUM _CVWLR#GU 3242// !A [] $304 !1.RECNUM !3 3243// #ENDIF 3244//#ENDCOMMAND 3245 3246#COMMAND STOP &. 3247 !A [] $144 3248 !A [] $040 3249#ENDCOMMAND 3250 3251#COMMAND STOP_HERE 3252 !A [] $4d !1 3253#ENDCOMMAND 3254 3255// JJT-5.1 3256//#COMMAND STRING TR E#L% 3257// #IF (!0>1) 3258// #IFDEF !2 3259// #CHECK !2 _VSWDF 3260// #STR V$ !2 3261// #REPLACE !1 |VS!v 3262// #IF (!0>2) 3263// STRING !3 !4 !5 !6 !7 !8 !9 3264// #ENDIF 3265// #ELSE 3266// #STR V$ 80 3267// #REPLACE !1 |VS!v 3268// STRING !2 !3 !4 !5 !6 !7 !8 !9 3269// #ENDIF 3270// #ELSE 3271// #STR V$ 80 3272// #REPLACE !1 |VS!v 3273// #ENDIF 3274//#ENDCOMMAND 3275 3276#COMMAND SUBTOTAL RFVC#LSD 3277 PRINT !1% !2 !3 !4 !5 3278 !A [] $082 |CI0 !1% 3279#ENDCOMMAND 3280 3281#REM Get system date, hour, min, seconds. 3282#REM WILL NOT WORK UNDER CPM 2.2 3283 3284#COMMAND SYSDATE$HELP 3285// #IFDEF IS$WINDOWS // This code is no longer required in VDF5. KCR 3286// !A [] $2E2 |CI2 !2 3287// #ENDIF 3288 !A [] $2C9 !1 !2 3289 #IF !0>2 3290 //MOVE STRLEN TO !3 3291 !A [] $82 STRLEN !3 3292 #ENDIF 3293 #IF !0>3 3294 //MOVE STRMARK TO !4 3295 !A [] $82 STRMARK !4 3296 #IF !0>4 3297 //MOVE |VI37 TO !5 3298 !A [] $82 |VI37 !5 3299 #ENDIF 3300 #ENDIF 3301#ENDCOMMAND 3302 3303#COMMAND SYSDATE #ERCUGL #ECUGL #ECUGL #ECUGL . // SYSDATE DATE HR MIN SECOND 3304 SYSDATE$HELP !1 DFFALSE !2 !3 !4 !5 !6 !7 !8 !9 3305#ENDCOMMAND 3306 3307#COMMAND SYSDATE4 #ERCUGL #ECUGL #ECUGL #ECUGL . // SYSDATE DATE HR MIN SECOND 3308 SYSDATE$HELP !1 DFTRUE !2 !3 !4 !5 !6 !7 !8 !9 3309#ENDCOMMAND 3310 3311#COMMAND SYSTEM &. 3312 !A [] $2C7 3313#ENDCOMMAND 3314 3315#COMMAND TRIM &#LUG$ "TO" C#ELRUG . // remove pre- and trailing spaces 3316 !A [] $24B !1 !3 3317#ENDCOMMAND 3318 3319#COMMAND UNLOCK &. 3320 !A [] $0C8 3321#ENDCOMMAND 3322 3323#COMMAND UNTIL R L L L . 3324 #POP S$ 3325 IFNOT_ !1 !2 !3 !4 GOTO BEGIN$!s 3326 END$!s: 3327 #SET N$ !n-1 3328#ENDCOMMAND 3329 3330#COMMAND UPPERCASE &C#LUGRND$ "TO""" C#LUG$END . 3331 #IF !0>1 3332 !A [] $249 !1 !3 3333 #ELSE 3334 !A [] $249 !1 !1 3335 #ENDIF 3336#ENDCOMMAND 3337 3338#COMMAND WHILE R L L L . 3339 #SET N$ !N 3340 #PUSH !R 3341 #XPUSH !n $INIT 3342 // GOTO WHILE$!r 3343 !A [] $041 |CL0 3344 #FREF WHILE$!r !a 3345 #$ !A 0 0 0 $041 |CL!a 3346 #FREF END$!r !a 3347 #$ WHILE$!r: 3348 #$ BEGIN$!r: 3349 #$ IFNOT_ !1 !2 !3 !4 GOTO END$!r 3350#ENDCOMMAND 3351 3352#COMMAND WRITE$STR #ULRG$ 3353 !A [] $106 !1 3354 #IF (!0>1) 3355 WRITE$STR !2 !3 !4 !5 !6 !7 !8 !9 3356 #ENDIF 3357#ENDCOMMAND 3358 3359#COMMAND WRITE 3360 #IFSAME !1 CHANNEL 3361 !A [] $10A |CI1 !2 3362 #IF !0>2 3363 WRITE$STR !3 !4 !5 !6 !7 !8 !9 3364 #ENDIF 3365 #ELSE 3366 #IF (!0>0) 3367 WRITE$STR !1 !2 !3 !4 !5 !6 !7 !8 !9 3368 #ENDIF 3369 #ENDIF 3370#ENDCOMMAND 3371 3372#COMMAND WRITELN 3373 #IFSAME !1 CHANNEL 3374 !A [] $10A |CI1 !2 3375 #IF !0>2 3376 WRITE$STR !3 !4 !5 !6 !7 !8 !9 3377 #ENDIF 3378 #ELSE 3379 #IF (!0>0) 3380 WRITE$STR !1 !2 !3 !4 !5 !6 !7 !8 !9 3381 #ENDIF 3382 #ENDIF 3383 !A [] $107 3384#ENDCOMMAND 3385 3386#COMMAND GET_CHANNEL_POSITION &#LRUG$ "TO" &#LRUG$EC . 3387 !A [] $10B !1 !3 3388#ENDCOMMAND 3389 3390 3391 3392// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 3393// 3394// Command: 3395// INITIALIZE_INTERFACE 3396// 3397// Parameters: 3398// None. 3399// 3400// Description: 3401// INITIALIZE_INTERFACE initializes the object resource information. 3402// It should be executed before any other object related operations 3403// are performed. 3404// 3405// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 3406 3407#COMMAND INITIALIZE_INTERFACE .& 3408 // B$ obj_flag bit 0 = in_object, bit 1 = in_class, bit 2 = in proc/func 3409 // X.AGG agg_count(class) defined count of objects in class 3410 3411 // ZA$ procedure/function label for procedures and functions 3412 // ZB$ current_dep the current dependant number to assign 3413 // ZC$ current_message the current flex message number 3414 // ZD$ group_size size of the current item group 3415 // ZE$ group_id unique id of current item group 3416 // ZF$ super_class_count count of objects in superclass 3417 // ZG$ temp temp counter (items, functions etc) 3418 // ZH$ access_method the current access method identifyer 3419 // ZI$ sub_obj_count the sub object counter 3420 // ZJ$ current_object the current_object number 3421 3422// #SET ZC$ $400 // begin up high, past predefinded 3423 #SET ZC$ $1000 // now reserving 4K for predefined msgs 3424 3425// #SET ZH$ $4001 // begin access methods here 3426 #SET ZH$ $40000001 // now using 32-bit msg ids; allows for 256M objs 3427 3428 #SET ZJ$ 2 // desktop and clipboard are first 3429 3430 #REPLACE IS$NEW$FMAC |CI1 // indicates that this is the new fmac 3431// #REPLACE IS$WINDOWS |CI1 // comment this to create character mode version 3432 3433 #REPLACE MANGLE_NAMES |CI1 // Adds name mangling. 3434 #REPLACE EXTENDED_DATA_TYPES |CI1 // Adds extended data types. 3435 #IFNDEF SUPPORT$ADDRESS 3436 #IFDEF EXTENDED_DATA_TYPES 3437 #REPLACE SUPPORT$ADDRESS |CI1 3438 #ENDIF 3439 #ENDIF 3440 //#REPLACE WINBASE_CONSOLIDATION |CI1 // Moves messages into dfmsg.pkg 3441 3442 3443// Informational output to screen/printer/file. 3444// This information is essential to know whether things are right at compile time. 3445 3446 #IFDEF IS$WINDOWS 3447 #REM FMAC FOR VISUAL DATAFLEX AND WEB APP STUDIO. 3448 #ELSE 3449 #REM FMAC FOR DATAFLEX CHARACTER MODE. 3450 #ENDIF 3451 3452 #IFDEF MANGLE_NAMES 3453 #REM NAME MANGLING ENABLED! 3454 #ENDIF 3455 3456 #IFDEF EXTENDED_DATA_TYPES 3457 #REM EXTENDED DATA TYPES ENABLED! 3458 #ENDIF 3459 3460 // Current FMAC Version, Revision and Build 3461 #REPLACE FMAC_VERSION |CI16 3462 #REPLACE FMAC_REVISION |CI1 3463 #REPLACE FMAC_BUILD |CI81 3464 3465 3466#IFDEF IS$WINDOWS 3467 3468 // Define object class types. 3469 #REPLACE U_cObject |CI1 // Basic object support. 3470 #REPLACE U_cUIObject |CI2 // UI Object 3471 3472 // removed in 8.3 --- might have #replaces defined in dfbase.pkg 3473 //#REPLACE U_DESKTOP |CI1 // a desktop class object - obsolete 3474 //#REPLACE U_BaseClass |CI1 // a desktop class object - obsolete 3475 //#REPLACE U_MESSAGE |CI2 // a message class object -obsolete 3476 3477 #REPLACE U_cm_MENU |CI3 // a menu class object 3478 #REPLACE U_cm_EDIT |CI4 // a edit class object 3479 #REPLACE U_SCROLLB |CI5 // a scroll bar class object 3480 #REPLACE U_cm_LIST |CI6 // a list class object 3481 #REPLACE U_cm_BUTTON |CI7 // a button class object 3482 #REPLACE U_cm_CHECKBOX |CI8 // a check box class object 3483 #REPLACE U_cm_CHECKLIST |CI9 // a check box class object 3484 #REPLACE U_cm_FORM |CI10 // a form class object 3485 #REPLACE U_cm_FORMLIST |CI11 // a form class object 3486 #REPLACE U_CLIENT |CI12 // a client area class object 3487 #REPLACE U_cm_TITLE |CI13 // a title bar class object 3488 #REPLACE U_cm_ACTION_BAR |CI14 // a action bar class object 3489 #REPLACE U_cm_WARNING_MSG |CI15 // a warning message class object 3490 #REPLACE U_cm_CRIT_MSG |CI16 // a critical error class object 3491 #REPLACE U_cm_ERROR |CI17 // a standard error class object 3492 #REPLACE U_cm_HELP |CI18 // a help class object 3493 #REPLACE U_ARRAY |CI19 // a array class of mixed scalars 3494 #REPLACE U_TRACE |CI20 // a trace class object 3495 #REPLACE U_cm_ENTRY |CI21 // a data entry class object 3496 #REPLACE U_cm_ENTRYLIST |CI22 // a data entry class object 3497 #REPLACE U_cm_DIALOG |CI23 // a DIALOG area class object 3498 #REPLACE U_cm_RADIO |CI24 // a radio button area 3499 #REPLACE U_cm_RADIOLIST |CI25 // a radio list area 3500 #REPLACE U_cm_VCONSOLE |CI26 // a virtual console area 3501 #REPLACE U_CLIPBOARD |CI27 // the clipboard handler 3502 3503 #REPLACE U_DFBaseObject |CI28 3504 #REPLACE U_DFBaseWindow |CI29 3505 #REPLACE U_DFBaseUIWindow |CI30 3506 #REPLACE U_DFBaseContainer |CI31 3507 #REPLACE U_DFBaseDialog |CI32 3508 #REPLACE U_DFBasePanel |CI33 3509 #REPLACE U_cDesktop |CI34 // prior to 8.3 this was dfBaseDesktop 3510 #REPLACE U_DFBaseControl |CI35 3511 #REPLACE U_DFBaseMenu |CI36 3512 #REPLACE U_DFBaseButton |CI37 3513 #REPLACE U_DFBasePushButton |CI38 3514 //#REPLACE U_DFComboButton |CI39 // no longer exists 3515 #REPLACE U_DFBaseCheckBox |CI40 3516 #REPLACE U_DFBaseRadioButton |CI41 3517 #REPLACE U_DFBaseTriState |CI42 // not supported at highlevel 3518 #REPLACE U_DFBaseForm |CI43 3519 #REPLACE U_DFBaseEntry |CI44 3520 //#REPLACE U_DFComboForm |CI45 // no longer exists 3521 #REPLACE U_DFBaseList |CI46 3522 #REPLACE U_DFBaseFormList |CI47 3523 #REPLACE U_DFBaseCheckList |CI48 // not used 3524 #REPLACE U_DFBaseRadioList |CI49 // not used 3525 #REPLACE U_DFBaseEntryList |CI50 // not used 3526 #REPLACE U_DFBaseComboBox |CI51 3527 #REPLACE U_DFBaseTriStateList |CI52 3528 #REPLACE U_DFBasePushButtonList |CI53 3529 #REPLACE U_DFBaseActionBar |CI54 3530 #REPLACE U_DFBasePullDown |CI55 3531 #REPLACE U_DFBaseSysMenu |CI56 3532 #REPLACE U_DFBaseGroup |CI57 3533 #REPLACE U_DFBaseScrollBar |CI58 3534 #REPLACE U_DFBaseHorzScrollBar |CI59 3535 #REPLACE U_DFRubberBand |CI60 // no longer exists 3536 #REPLACE U_DFBaseTextBox |CI61 3537 #REPLACE U_DFBaseEdit |CI62 3538 #REPLACE U_DFBaseSession |CI63 3539 #REPLACE U_DFBaseDllSession |CI64 3540 #REPLACE U_DFBaseSerial |CI65 3541 #REPLACE U_DFBaseLineForm |CI66 3542 //#REPLACE U_DFVconsole |CI67 // no longer exists 3543 #REPLACE U_DFBaseToolPanel |CI68 3544 #REPLACE U_DFBaseMapiSession |CI69 3545 #REPLACE U_DFBaseImageList |CI70 3546 #REPLACE U_DFBaseTabDialog |CI71 3547 #REPLACE U_DFBaseToolBar |CI72 // was dfbuttonbar 3548 #REPLACE U_DFBaseComboBoxEntry |CI73 3549 #REPLACE U_DFBaseMdiClient |CI74 3550 #REPLACE U_DFBaseListBox |CI75 3551 #REPLACE U_DFBaseEditPulldown |CI76 3552 #REPLACE U_DFBaseLineControl |CI77 3553 3554 // inet classes 3555 #REPLACE U_INETTRANSFER |CI78 3556 #REPLACE U_CFTPTRANSFER |CI79 3557 #REPLACE U_CBASEHTTPTRANSFER |CI80 3558 3559 3560 // XML Classes 3561 #REPLACE U_BaseXMLDOMNODE |CI81 3562 #REPLACE U_BaseXMLDOMNODELIST |CI82 3563 #REPLACE U_BaseXMLDOMNAMEDNODEMAP |CI83 3564 #REPLACE U_BaseXMLDOMPARSEERROR |CI84 3565 #REPLACE U_BaseXMLDOMIMPLEMENTATION |CI85 3566 #REPLACE U_BaseXMLDOMDOCUMENTFRAGMENT |CI86 3567 #REPLACE U_BaseXMLDOMDOCUMENT |CI87 3568 #REPLACE U_BaseXMLDOMCHARACTERDATA |CI88 3569 #REPLACE U_BaseXMLDOMTEXTNODE |CI89 3570 #REPLACE U_BaseXMLDOMCDATASECTION |CI90 3571 #REPLACE U_BaseXMLDOMCOMMENT |CI91 3572 #REPLACE U_BaseXMLDOMATTRIBUTE |CI92 3573 #REPLACE U_BaseXMLDOMELEMENT |CI93 3574 #REPLACE U_BaseXMLDOMPROCESSINGINSTRUCTION |CI94 3575 #REPLACE U_BaseXMLDOMDOCUMENTTYPE |CI95 3576 #REPLACE U_BaseXMLDOMNOTATION |CI96 3577 #REPLACE U_BaseXMLDOMENTITY |CI97 3578 #REPLACE U_BaseXMLDOMENTITYREFERENCE |CI98 3579 3580 #REPLACE U_CBASEWEBSERVICE |CI00105 3581 3582 // flexcom2 runtime classes 3583 3584 #REPLACE U_DFCOMAUTOMATIONOBJECT |CI107 3585 #REPLACE U_DFCOMDOCUMENTOBJECT |CI108 3586 #REPLACE U_DFCOMACTIVEXCONTROL |CI109 3587 #REPLACE U_DFCOMDESIGNCONTROL |CI110 3588 #REPLACE U_DFCOMIDISPATCHDRIVER |CI111 3589 3590 #REPLACE U_DFBaseRichEdit |CI112 // added 11.0 3591 #REPLACE U_DFBaseTextEdit |CI113 // added 11.0 3592 3593 #Replace U_cIdleHandler |CI128 // added 12.1 3594 3595 3596#ELSE 3597 3598 // character mode class defintions 3599 3600 // Define object class types. 3601 #REPLACE U_DESKTOP |CI1 // a desktop class object 3602 #REPLACE U_MESSAGE |CI2 // a message class object 3603 #REPLACE U_MENU |CI3 // a menu class object 3604 #REPLACE U_EDIT |CI4 // a edit class object 3605 #REPLACE U_SCROLLB |CI5 // a scroll bar class object 3606 #REPLACE U_LIST |CI6 // a list class object 3607 #REPLACE U_BUTTON |CI7 // a button class object 3608 #REPLACE U_CHECKBOX |CI8 // a check box class object 3609 #REPLACE U_CHECKLIST |CI9 // a check box class object 3610 #REPLACE U_FORM |CI10 // a form class object 3611 #REPLACE U_FORMLIST |CI11 // a form class object 3612 #REPLACE U_CLIENT |CI12 // a client area class object 3613 #REPLACE U_TITLE |CI13 // a title bar class object 3614 #REPLACE U_ACTION_BAR |CI14 // a action bar class object 3615 #REPLACE U_WARNING_MSG |CI15 // a warning message class object 3616 #REPLACE U_CRIT_MSG |CI16 // a critical error class object 3617 #REPLACE U_ERROR |CI17 // a standard error class object 3618 #REPLACE U_HELP |CI18 // a help class object 3619 #REPLACE U_ARRAY |CI19 // a array class of mixed scalars 3620 #REPLACE U_TRACE |CI20 // a trace class object 3621 #REPLACE U_ENTRY |CI21 // a data entry class object 3622 #REPLACE U_ENTRYLIST |CI22 // a data entry class object 3623 #REPLACE U_DIALOG |CI23 // a DIALOG area class object 3624 #REPLACE U_RADIO |CI24 // a radio button area 3625 #REPLACE U_RADIOLIST |CI25 // a radio list area 3626 #REPLACE U_VCONSOLE |CI26 // a virtual console area 3627 #REPLACE U_CLIPBOARD |CI27 // the clipboard handler 3628#ENDIF 3629 3630 // Base data structures 3631 #REPLACE MESSAGE_CLASS |CI0 3632 #REPLACE MENU_CLASS |CI1 3633 #REPLACE LIST_CLASS |CI2 3634 #REPLACE EDIT_CLASS |CI3 3635 #REPLACE SCROLL_CLASS |CI4 3636 #REPLACE ARRAY_CLASS |CI5 3637 3638 3639 // Define physical key names 3640 #REPLACE KEY_ALT |VI$8200 3641 #REPLACE KEY_SHIFT |VI$8400 3642 #REPLACE KEY_CTRL |VI$8800 3643 3644 #REPLACE KEY_ENTER |VI$9001 3645 #REPLACE KEY_TAB |VI$9002 3646 #REPLACE KEY_BACK_SPACE |VI$9003 3647 #REPLACE KEY_ESCAPE |VI$9004 3648 #REPLACE KEY_UP_ARROW |VI$9005 3649 #REPLACE KEY_DOWN_ARROW |VI$9006 3650 #REPLACE KEY_LEFT_ARROW |VI$9007 3651 #REPLACE KEY_RIGHT_ARROW |VI$9008 3652 #REPLACE KEY_HOME |VI$9009 3653 #REPLACE KEY_END |VI$900A 3654 #REPLACE KEY_PGUP |VI$900B 3655 #REPLACE KEY_PGDN |VI$900C 3656 #REPLACE KEY_INSERT |VI$900D 3657 #REPLACE KEY_DELETE |VI$900E 3658 #REPLACE KEY_F1 |VI$9010 3659 #REPLACE KEY_F2 |VI$9011 3660 #REPLACE KEY_F3 |VI$9012 3661 #REPLACE KEY_F4 |VI$9013 3662 #REPLACE KEY_F5 |VI$9014 3663 #REPLACE KEY_F6 |VI$9015 3664 #REPLACE KEY_F7 |VI$9016 3665 #REPLACE KEY_F8 |VI$9017 3666 #REPLACE KEY_F9 |VI$9018 3667 #REPLACE KEY_F10 |VI$9019 3668 #REPLACE KEY_F11 |VI$901A 3669 #REPLACE KEY_F12 |VI$901B 3670 #REPLACE KEY_A |VI$8041 3671 #REPLACE KEY_B |VI$8042 3672 #REPLACE KEY_C |VI$8043 3673 #REPLACE KEY_D |VI$8044 3674 #REPLACE KEY_E |VI$8045 3675 #REPLACE KEY_F |VI$8046 3676 #REPLACE KEY_G |VI$8047 3677 #REPLACE KEY_H |VI$8048 3678 #REPLACE KEY_I |VI$8049 3679 #REPLACE KEY_J |VI$804A 3680 #REPLACE KEY_K |VI$804B 3681 #REPLACE KEY_L |VI$804C 3682 #REPLACE KEY_M |VI$804D 3683 #REPLACE KEY_N |VI$804E 3684 #REPLACE KEY_O |VI$804F 3685 #REPLACE KEY_P |VI$8050 3686 #REPLACE KEY_Q |VI$8051 3687 #REPLACE KEY_R |VI$8052 3688 #REPLACE KEY_S |VI$8053 3689 #REPLACE KEY_T |VI$8054 3690 #REPLACE KEY_U |VI$8055 3691 #REPLACE KEY_V |VI$8056 3692 #REPLACE KEY_W |VI$8057 3693 #REPLACE KEY_X |VI$8058 3694 #REPLACE KEY_Y |VI$8059 3695 #REPLACE KEY_Z |VI$805A 3696 #REPLACE KEY_SPACE |VI$8020 3697 #REPLACE KSPACE |VI$8020 3698 #REPLACE KEY_0 |VI$8030 3699 #REPLACE KEY_1 |VI$8031 3700 #REPLACE KEY_2 |VI$8032 3701 #REPLACE KEY_3 |VI$8033 3702 #REPLACE KEY_4 |VI$8034 3703 #REPLACE KEY_5 |VI$8035 3704 #REPLACE KEY_6 |VI$8036 3705 #REPLACE KEY_7 |VI$8037 3706 #REPLACE KEY_8 |VI$8038 3707 #REPLACE KEY_9 |VI$8039 3708 #REPLACE KEY_PLUS |VI$802B 3709 #REPLACE KEY_MINUS |VI$802D 3710 #REPLACE KEY_EQUAL |VI$803D 3711 #REPLACE KEY_BACK_SLASH |VI$805C 3712 #REPLACE KEY_SLASH |VI$802F 3713 3714 // Define Accelerator key names. 3715 #REPLACE KHELP |CI274 3716 #REPLACE KSAVE_RECORD |CI265 3717 #REPLACE KDELETE_RECORD |CI266 3718 #REPLACE KEXIT_FUNCTION |CI281 3719 #REPLACE KEXIT_APPLICATION |CI282 3720 #REPLACE KPROMPT |CI283 3721 #REPLACE KPRINT_SCREEN |CI258 3722 #REPLACE KCLEAR |CI269 3723 #REPLACE KREFRESH_SCREEN |CI284 3724 #REPLACE KSWITCH |CI285 3725 #REPLACE KSWITCH_BACK |CI286 3726 #REPLACE KFIND |CI263 3727 #REPLACE KFIND_PREVIOUS |CI270 3728 #REPLACE KFIND_NEXT |CI271 3729 #REPLACE KSUPER_FIND |CI264 3730 #REPLACE KSUPER_FIND_PREVIOUS |CI287 3731 #REPLACE KSUPER_FIND_NEXT |CI288 3732 #REPLACE KACTION_BAR |CI289 3733 #REPLACE KENTER |CI257 3734 #REPLACE KUPARROW |CI272 3735 #REPLACE KDOWNARROW |CI273 3736 #REPLACE KLEFTARROW |CI260 3737 #REPLACE KRIGHTARROW |CI261 3738 #REPLACE KSCROLL_BACK |CI290 3739 #REPLACE KSCROLL_FORWARD |CI291 3740 #REPLACE KSCROLL_LEFT |CI292 3741 #REPLACE KSCROLL_RIGHT |CI293 3742 #REPLACE KBEGIN_OF_LINE |CI294 3743 #REPLACE KEND_OF_LINE |CI295 3744 #REPLACE KNEXT_ITEM |CI296 3745 #REPLACE KPREVIOUS_ITEM |CI262 3746 #REPLACE KDELETE_CHARACTER |CI277 3747 #REPLACE KERASE_END_OF_LINE |CI297 3748 #REPLACE KBACK_SPACE |CI278 3749 #REPLACE KCANCEL |CI259 3750 #REPLACE KBEGIN_OF_PANEL |CI298 3751 #REPLACE KEND_OF_PANEL |CI299 3752 #REPLACE KBEGIN_OF_DATA |CI300 3753 #REPLACE KEND_OF_DATA |CI301 3754 #REPLACE KWORD_LEFT |CI302 3755 #REPLACE KWORD_RIGHT |CI303 3756 #REPLACE KINSERT |CI276 3757 #REPLACE KCLEAR_AND_RETURN |CI279 3758 #REPLACE KADD_MODE |CI304 3759 #REPLACE KPASTE |CI305 3760 #REPLACE KCOPY |CI306 3761 #REPLACE KCUT |CI307 3762 #REPLACE KCLEAR_ALL |CI308 3763 #REPLACE KMOUSE |CI309 3764 #REPLACE KMARK |CI310 3765 #REPLACE KZOOM |CI311 3766 #REPLACE KCLOSE_PANEL |CI312 3767 3768 //OLD KEY DEFINITIONS 3769 #REPLACE KCALCULATE |CI267 3770 #REPLACE KUSER |CI268 3771 #REPLACE KUSER2 |CI275 3772 #REPLACE KCLEOW |CI280 3773 3774 3775 //#FREG |CI$01CE STRING PERCENTAGE RETURNS INTEGER 3776 3777 #REPLACE DFLT$VALUE __X__ 3778 #REPLACE DFLT$MESSAGE __X__ 3779 #REPLACE DFLT$AUX_VALUE __X__ 3780 #REPLACE DFLT$SHADOW_STATE __X__ 3781 #REPLACE DFLT$SELECT_STATE __X__ 3782 #REPLACE DFLT$CHECKBOX_ITEM_STATE __X__ 3783 #REPLACE DFLT$AUTOCLEAR_STATE __X__ 3784 #REPLACE DFLT$CENTER_STATE __X__ 3785 #REPLACE DFLT$ENTRY_STATE __X__ 3786 #REPLACE DFLT$ITEM_CHANGED_STATE __X__ 3787 #REPLACE DFLT$ITEM_ENTRY_MSG __X__ 3788 #REPLACE DFLT$ITEM_EXIT_MSG __X__ 3789 #REPLACE DFLT$ITEM_VALIDATE_MSG __X__ 3790 #REPLACE DFLT$DATA_FILE __X__ 3791 #REPLACE DFLT$DATA_FIELD __X__ 3792 #REPLACE DFLT$DATA_WINDOW __X__ 3793 #REPLACE DFLT$ITEM_OPTIONS __X__ 3794 #REPLACE DFLT$ITEM_OPTION __X__ 3795 #REPLACE DFLT$PROMPT_OBJECT __X__ 3796 #REPLACE DFLT$ZOOM_OBJECT __X__ 3797 3798#IFDEF IS$WINDOWS 3799 3800 // Define all Form properties that require an index (item). If the item parameter 3801 // is omitted item 0 is used as a default. This allows single item objects (e.g. Form) 3802 // to omit the item number. (e.g. Set Password_State to True). 3803 3804 #REPLACE DFLT$FORM_WIDTH __F__ 3805 #REPLACE DFLT$FORM_COLOR __F__ 3806 #REPLACE DFLT$FORM_DATATYPE __F__ 3807 #REPLACE DFLT$FORM_OPTIONS __F__ 3808 #REPLACE DFLT$FORM_FONT __F__ 3809 #REPLACE DFLT$FORM_ROW __F__ 3810 #REPLACE DFLT$FORM_COLUMN __F__ 3811 #REPLACE DFLT$FORM_TYPEFACE __F__ 3812 #REPLACE DFLT$FORM_FONTHEIGHT __F__ 3813 #REPLACE DFLT$FORM_FONTWEIGHT __F__ 3814 #REPLACE DFLT$FORM_FONTITALICS __F__ 3815 #REPLACE DFLT$FORM_FONTUNDERLINE __F__ 3816 #REPLACE DFLT$BUTTON_ASPECT __F__ 3817 #REPLACE DFLT$FORM_HEIGHT __F__ 3818 #REPLACE DFLT$FORM_GUIWIDTH __F__ 3819 #REPLACE DFLT$FORM_GUIHEIGHT __F__ 3820 #REPLACE DFLT$FORM_GUIROW __F__ 3821 #REPLACE DFLT$FORM_GUICOLUMN __F__ 3822 #REPLACE DFLT$FORM_MARGIN __F__ 3823 #REPLACE DFLT$FORM_OPTION __F__ 3824 #REPLACE DFLT$FORM_STYLE __F__ 3825 #REPLACE DFLT$FORM_EXTENDED_STYLE __F__ 3826 #REPLACE DFLT$FORM_BORDER __F__ 3827 #REPLACE DFLT$PASSWORD_STATE __F__ 3828 #REPLACE DFLT$FORM_MASK __F__ 3829 #REPLACE DFLT$FORM_BUTTON __F__ 3830 #REPLACE DFLT$FORM_BUTTON_VALUE __F__ 3831 #REPLACE DFLT$FORM_WINDOW_HANDLE __F__ 3832 #REPLACE DFLT$FORM_BUTTON_WINDOW_HANDLE __F__ 3833 #REPLACE DFLT$MASKED_VALUE __F__ // these are really form properties 3834 #REPLACE DFLT$UNMASKED_VALUE __F__ // so if no param use 0 3835 #REPLACE DFLT$FORM_JUSTIFICATION_MODE __F__ 3836 3837 // These are index (item or form) tem based properties that require two 3838 // parameters in the set statement following the "to". Please do not 3839 // create any more of these kinds of messages 3840 #REPLACE DFLT$2$ITEM_OPTION __2__ 3841 #REPLACE DFLT$2$FORM_COLOR __2__ 3842 #REPLACE DFLT$2$FORM_STYLE __2__ 3843 #REPLACE DFLT$2$FORM_EXTENDED_STYLE __2__ 3844 3845#ENDIF 3846 3847 3848 3849 //Reserve$Internal$Functions // this disallows these names to be used in 3850 // in functions, properties or cts. 3851 #REPLACE FN$Abs __F__ 3852 #REPLACE FN$Acos __F__ 3853 #REPLACE FN$Append __F__ 3854 #REPLACE FN$Ascii __F__ 3855 #REPLACE FN$Asin __F__ 3856 #REPLACE FN$Atan __F__ 3857 #REPLACE FN$Center __F__ 3858 #REPLACE FN$Character __F__ 3859 #REPLACE FN$Cos __F__ 3860 #REPLACE FN$Date __F__ 3861 #REPLACE FN$Eval __F__ 3862 #REPLACE FN$Exp __F__ 3863 #REPLACE FN$Hi __F__ 3864 #REPLACE FN$If __F__ 3865 #REPLACE FN$Insert __F__ 3866 #REPLACE FN$Integer __F__ 3867 #REPLACE FN$Left __F__ 3868 #REPLACE FN$Length __F__ 3869 #REPLACE FN$Log __F__ 3870 #REPLACE FN$Low __F__ 3871 #REPLACE FN$Lowercase __F__ 3872 #REPLACE FN$Ltrim __F__ 3873 #REPLACE FN$Mid __F__ 3874 #REPLACE FN$Mod __F__ 3875 #REPLACE FN$Not __F__ 3876 #REPLACE FN$Number __F__ 3877 #REPLACE FN$Overstrike __F__ 3878 #REPLACE FN$Pad __F__ 3879 #REPLACE FN$Pos __F__ 3880 #REPLACE FN$Random __F__ 3881 #REPLACE FN$Real __F__ 3882 #REPLACE FN$Remove __F__ 3883 #REPLACE FN$Repeat __F__ 3884 #REPLACE FN$Replace __F__ 3885 #REPLACE FN$Replaces __F__ 3886 #REPLACE FN$Right __F__ 3887 #REPLACE FN$Round __F__ 3888 #REPLACE FN$Rtrim __F__ 3889 #REPLACE FN$Sin __F__ 3890 #REPLACE FN$Sqrt __F__ 3891 #REPLACE FN$String __F__ 3892 #REPLACE FN$Tan __F__ 3893 #REPLACE FN$Trim __F__ 3894 #REPLACE FN$Uppercase __F__ 3895 3896 #IFDEF EXTENDED_DATA_TYPES 3897 #REPLACE FN$CurrentDateTime __F__ 3898 #REPLACE FN$DateGetDay __F__ 3899 #REPLACE FN$DateGetDayofWeek __F__ 3900 #REPLACE FN$DateGetDayofYear __F__ 3901 #REPLACE FN$DateGetHour __F__ 3902 #REPLACE FN$DateGetMinute __F__ 3903 #REPLACE FN$DateGetMonth __F__ 3904 #REPLACE FN$DateGetSecond __F__ 3905 #REPLACE FN$DateGetYear __F__ 3906 #REPLACE FN$DateSetDay __F__ 3907 #REPLACE FN$DateSetHour __F__ 3908 #REPLACE FN$DateSetMinute __F__ 3909 #REPLACE FN$DateSetMonth __F__ 3910 #REPLACE FN$DateSetSecond __F__ 3911 #REPLACE FN$DateSetYear __F__ 3912 #REPLACE FN$IsDateValid __F__ 3913 #REPLACE FN$SpanDays __F__ 3914 #REPLACE FN$SpanHours __F__ 3915 #REPLACE FN$SpanMinutes __F__ 3916 #REPLACE FN$SpanSeconds __F__ 3917 #REPLACE FN$SpanTotalDays __F__ 3918 #REPLACE FN$SpanTotalHours __F__ 3919 #REPLACE FN$SpanTotalMinutes __F__ 3920 #REPLACE FN$SpanTotalSeconds __F__ 3921 #REPLACE FN$Addressof __F__ 3922 #REPLACE FN$Cast __F__ 3923 #REPLACE FN$Convert __F__ 3924 #REPLACE FN$InvokeXML __F__ 3925 // 3926 #REPLACE FN$Storec __F__ 3927 #REPLACE FN$Storew __F__ 3928 #REPLACE FN$Storedw __F__ 3929 #REPLACE FN$Derefc __F__ 3930 #REPLACE FN$Derefw __F__ 3931 #REPLACE FN$Derefdw __F__ 3932 #REPLACE FN$MemCopy __F__ 3933 #REPLACE FN$MemSet __F__ 3934 3935 #REPLACE FN$IsSameCOMObject __F__ 3936 #REPLACE FN$IsNullCOMObject __F__ 3937 #REPLACE FN$NullCOMObject __F__ 3938 3939 3940 // 11.0 changes 3941 #REPLACE FN$FindByRowId __F__ 3942 #REPLACE FN$GetRowId __F__ 3943 #REPLACE FN$NullRowId __F__ 3944 #REPLACE FN$IsNullRowId __F__ 3945 #REPLACE FN$IsSameRowId __F__ 3946 #REPLACE FN$SerializeRowId __F__ 3947 #REPLACE FN$DeSerializeRowId __F__ 3948 #REPLACE FN$SizeOfArray __F__ 3949 #REPLACE FN$ResizeArray __F__ 3950 #REPLACE FN$CStringLength __F__ 3951 #REPLACE FN$SizeOfType __F__ // size of any data type including structs 3952 3953 // 11.1 changes 3954 #REPLACE FN$BinarySearchArray __F__ 3955 #REPLACE FN$CopyArray __F__ 3956 #REPLACE FN$CountArray __F__ 3957 #REPLACE FN$FillArray __F__ 3958 #REPLACE FN$MinArray __F__ 3959 #REPLACE FN$MaxArray __F__ 3960 #REPLACE FN$ReverseArray __F__ 3961 #REPLACE FN$SearchArray __F__ 3962 #REPLACE FN$ShuffleArray __F__ 3963 #REPLACE FN$SortArray __F__ 3964 // 15.0 changes added post 15.0 3965 #REPLACE FN$RemoveFromArray __F__ 3966 #REPLACE FN$InsertInArray __F__ 3967 #REPLACE FN$RightPos __F__ 3968 3969 #ENDIF // is windows 3970 3971 // Object commands 3972 #REPLACE OBJ$INIT $0440 3973 #REPLACE OBJ$CREATE $0441 3974 #REPLACE OBJ$ILIST $0442 3975 #REPLACE OBJ$ITEM $0443 3976 #REPLACE OBJ$ENDILIST $0444 3977 #REPLACE OBJ$ACCLIST $0445 // not used 3978 #REPLACE OBJ$ONKEY $0446 3979 #REPLACE OBJ$ENDALIST $0447 // not used 3980 #REPLACE OBJ$ENDDEFINE $0448 // not used 3981 #REPLACE OBJ$IODISPATCH $0449 3982 #REPLACE OBJ$SET $044A 3983 #REPLACE OBJ$GET $044B 3984 #REPLACE OBJ$SEND $044C 3985 #REPLACE OBJ$FIX $044D // not used 3986 #REPLACE OBJ$END $044E 3987 #REPLACE OBJ$FWDFIX $044F // not used 3988 #REPLACE OBJ$HRET $0450 3989 #REPLACE OBJ$ITEM_EXEC $0451 3990 #REPLACE OBJ$ACCEPT $0452 3991 #REPLACE CREATE$CLASS $0453 3992 #REPLACE HANDLE$FOR $0454 3993 #REPLACE OBJ$END$HANDLER $0455 3994 #REPLACE LOCAL$ARGUMENT $0456 3995 #REPLACE FIND$OBJECT $0457 3996 #REPLACE END$CLASS $0458 3997 #REPLACE CREATE$SUB$PAGE $0459 3998 #REPLACE CLONE$CLASS $045A 3999 #REPLACE OBJ$ENTRY$ITEM $045B 4000 #REPLACE MOVE$SUB$PAGE $045C 4001 #REPLACE OBJ$TIMER $045D 4002 #REPLACE SCREEN$OPT $045E 4003 #REPLACE CREATE$PROPERTY $045F 4004 #REPLACE REDEFINE$SUB$PAGE $0464 4005 4006 //Focus modes: 4007 #REPLACE FOCUSABLE |CI0 4008 #REPLACE NONFOCUSABLE |CI1 4009 #REPLACE POINTER_ONLY |CI2 4010 #REPLACE NO_ACTIVATE |CI3 4011 4012 //Search modes: 4013 #REPLACE FIRST_CHARACTER |CI0 4014 #REPLACE INCREMENTAL |CI1 4015 #REPLACE CAPITAL |CI2 4016 #REPLACE NO_SEARCH |CI3 4017 4018 //Delegation modes: 4019 #REPLACE DELEGATE_TO_PARENT |CI0 4020 #REPLACE NO_DELEGATE_OR_ERROR |CI1 4021 #REPLACE NO_DELEGATION |CI2 4022 #REPLACE RETURN_INVALID_MESSAGE |CI3 4023 #REPLACE DELEGATE_PRIOR_LEVEL |CI4 4024 4025 //Location modes: 4026 #REPLACE ABSOLUTE |CI0 4027 #REPLACE RELATIVE |CI1 4028 #REPLACE ITEM_RELATIVE |CI2 4029 4030 //Sort modes: 4031 #REPLACE ASCENDING |CI0 4032 #REPLACE DESCENDING |CI1 4033 4034 //Select Modes: 4035 #REPLACE NO_SELECT |CI0 4036 #REPLACE SINGLE_SELECT |CI1 4037 #REPLACE MULTI_SELECT |CI2 4038 #REPLACE AUTO_SELECT |CI3 4039 4040 //Entry item options: 4041 #REPLACE IWINDOW $C0A1 4042 #REPLACE IENTRY $C0A2 4043 #REPLACE IEXIT $C0A3 4044 #REPLACE IVALIDATE $C0A4 4045 #REPLACE IZOOM $C0A5 4046 #REPLACE IPROMPT $C0A6 4047 4048 //Import modes 4049 #REPLACE INHERIT 1 4050 #REPLACE NO_OVERWRITE 2 4051 4052 //System integers 4053 #REPLACE CURRENT_OBJECT |VI85 4054 #REPLACE SELF |VI85 // as of 12.0 this is now part of fmac 4055 #REPLACE FORWARD$MESSAGE |VI87 4056 #REPLACE CURRENT_MESSAGE |VI88 4057 #REPLACE TOTAL_OBJECTS |VI89 4058 4059 // Define the desktop objects 4060 #REPLACE NULL_OBJECT |CI0 4061 #REPLACE CLIPBOARD |CI1 4062 #REPLACE CLIPBOARD.N |CI0 4063 //#REPLACE DESKTOP |CI2 // now defined in flex$init 4064 #REPLACE DESKTOP.N |CI0 4065 //#REPLACE END_FUNCTION END_PROCEDURE // now defined in flex$init 4066 //#REPLACE PROCEDURE_RETURN FUNCTION_RETURN // now defined in flex$init 4067 #REPLACE NO_IMAGE |CI-9999 4068 4069 #REPLACE CURRENT |CI-99 //use current item# 4070 #REPLACE TOGGLE_STATE |CI3 //toggle boolean state 4071 #REPLACE UPWARD_DIRECTION |CI0 //scroll up 4072 #REPLACE DOWNWARD_DIRECTION |CI1 //scroll down 4073 4074// #REPLACE GET_SCROLLBAR |CI$4000 4075// #REPLACE GET_CLIPBOARD |CI$4001 4076// #FREG |CI$4000 RETURNS INTEGER 4077// #FREG |CI$4001 RETURNS INTEGER 4078 4079// bumped up for 32-bit msg ids 4080 #REPLACE GET_SCROLLBAR |CI$40000000 4081 #REPLACE GET_CLIPBOARD |CI$40000001 4082 #FREG |CI$40000000 RETURNS INTEGER 4083 #FREG |CI$40000001 RETURNS INTEGER 4084 4085 #REPLACE ERROR_OBJECT_ID |VI100 4086 #REPLACE ERROR_TYPE |VI101 4087 4088 #REPLACE ERROR_CHILD_INHERITS_PARENT |CI0 4089 #REPLACE ERROR_OFF_IN_CHILD |CI1 4090 #REPLACE ERROR_DEFAULT_IN_CHILD |CI2 4091 4092 //deactivate search modes 4093 #REPLACE SCOPE_TYPE |CI1 4094 #REPLACE POPUP_TYPE |CI2 4095 #REPLACE AREA_TYPE |CI3 4096 4097 //add_focus/activate/deactivate/release_focus error return codes 4098 #REPLACE ERROR_ENTERING |CI1 4099 #REPLACE ERROR_EXITING |CI2 4100 #REPLACE ERROR_ACTIVATING |CI3 4101 #REPLACE ERROR_DEACTIVATING |CI4 4102 #REPLACE ERROR_CANT_ACCEPT_FOCUS |CI5 4103 #REPLACE ERROR_CANT_CREATE_TREE |CI6 4104 #REPLACE ERROR_ADD_TO_INACTIVE_OBJECT |CI7 4105 #REPLACE ERROR_NO_FOCUSABLE_CHILDREN |CI8 4106 4107 // modes for peInNeighborHood 4108 #REPLACE nhNo |CI0 // not a neighbor, check to see if parent is neighbor 4109 #REPLACE nhPublic |CI1 // Is a neighbor hood, All descendant objects may address each other 4110 #REPLACE nhPrivate |CI2 // Is a private neighborhood. descendants can not addres each other 4111 4112 // alias data-types. These used to be in dll.pkg but are best defined here. 4113 #REPLACE Pointer Integer // Parameter is a POINTER 4114 #REPLACE DWord Integer // Parameter is a DWORD (32 bits) 4115 #REPLACE Handle DWord // Parameter is a HANDLE (32 bits) 4116 #REPLACE Void_Type Integer // Return type is VOID 4117 4118 // The following set of replacements define the type of load for the 4119 // DLL. Each load type has the standard set of trade offs, speed 4120 // vs memory. A lib that is loaded each time is probable the most memory 4121 // efficient, but suffers from load speed overhead. However, large DLLs 4122 // that are retained in memory are not using system resources as 4123 // efficientry as possible. Note that some DLLs are already in memory. 4124 // The Windows Kernel and USER libs are already loaded by Windows, and 4125 // do not take up more memory. 4126 // These are used by command SET_DEFAULT_CALLTYPE (which is actually rarely if ever used) 4127 4128 #REPLACE LOAD_ON_EACH_USE |CI0 // Load and free on each call (slow) 4129 #REPLACE LOAD_LIBRARY |CI1 // Load Lib on definition 4130 #REPLACE DELETE_ENTRY |CI2 // Delete lib entry in reg DataBase 4131 #REPLACE FREE_LIBRARY |CI4 // Free lib in Reg DataBase 4132 #REPLACE LOAD_ON_USE |CI8 // Load lib on first use (call) 4133 4134 4135 4136 4137 #CHKSUB 1 1 // Verify the UI subsystem. 4138 !A [] OBJ$INIT |CI0 // INITIALIZE_INTERFACE 4139 #FREF OBJ$DESK$NUM !a // Number of desktop dependants 4140#ENDCOMMAND 4141 4142// define all messages used by object system. This is new to VDF7. All messages 4143// are now defined here. 4144 4145// define all runtime messages common to VDF and CM DF 4146 4147// Note: make sure number of lines in command is less than 1024 4148 4149#COMMAND Define$BuiltIn$DF$Messages 4150 CMSG I GET_ACTIVE_STATE |CI$001 4151 CMSG I GET_PARENT |CI$002 4152 CMSG V SET_PARENT |CI$003 I 4153 CMSG I MSG_PAGE_OBJECT |CI$004 I 4154 CMSG I GET_LOCATION |CI$005 4155 CMSG V SET_LOCATION |CI$006 I I 4156 CMSG I GET_ENTRY_MSG |CI$007 4157 CMSG V SET_ENTRY_MSG |CI$008 I 4158 CMSG I GET_EXIT_MSG |CI$009 4159 CMSG V SET_EXIT_MSG |CI$00A I 4160 CMSG V SET_SIZE |CI$00B I I 4161 CMSG I GET_SIZE |CI$00C 4162 CMSG I GET_CURRENT_ITEM |CI$00D 4163 CMSG V SET_CURRENT_ITEM |CI$00E I 4164 CMSG I GET_TOP_ITEM |CI$00F 4165 CMSG V SET_TOP_ITEM |CI$010 I 4166 CMSG S GET_VALUE |CI$011 I 4167 CMSG V SET_VALUE |CI$012 I S 4168 CMSG I GET_MESSAGE |CI$013 I 4169 CMSG V SET_MESSAGE |CI$014 I I 4170 CMSG I GET_ITEM_COUNT |CI$015 4171 CMSG V SET_ITEM_COUNT |CI$016 I 4172 CMSG I GET_SELECT_COUNT |CI$017 4173 CMSG V SET_SELECT_COUNT |CI$018 I 4174 CMSG I GET_MULTI_SELECT_MSG |CI$019 4175 CMSG V SET_MULTI_SELECT_MSG |CI$01A I 4176 CMSG V SET_FOCUS_MODE |CI$01B I 4177 CMSG I GET_FOCUS_MODE |CI$01C 4178 CMSG V SET_VISIBLE_STATE |CI$01D I 4179 CMSG I GET_VISIBLE_STATE |CI$01E 4180 CMSG V SET_SELECT_MODE |CI$01F I 4181 CMSG I GET_SELECT_MODE |CI$020 4182 CMSG V SET_WRAP_STATE |CI$021 I 4183 CMSG I GET_WRAP_STATE |CI$022 4184 CMSG V SET_SHADOW_STATE |CI$023 I I 4185 CMSG I GET_SHADOW_STATE |CI$024 I 4186 CMSG I GET_SELECT_STATE |CI$025 I 4187 CMSG V SET_SELECT_STATE |CI$026 I I 4188 CMSG V SET_AUTOCLEAR_STATE |CI$027 I I 4189 CMSG I GET_AUTOCLEAR_STATE |CI$028 I 4190 CMSG V SET_CENTER_STATE |CI$029 I I 4191 CMSG I GET_CENTER_STATE |CI$02A I 4192 CMSG V SET_CHECKBOX_ITEM_STATE |CI$02B I I 4193 CMSG I GET_CHECKBOX_ITEM_STATE |CI$02C I 4194 CMSG I MSG_STOP_UI |CI$02D 4195 CMSG S MSG_ERROR |CI$02E I 4196 CMSG V MSG_HELP |CI$02F 4197 CMSG V MSG_BELL |CI$030 4198 CMSG V MSG_PAINT |CI$031 4199 CMSG V MSG_NONE |CI$032 4200 CMSG V MSG_EXIT |CI$033 4201 CMSG V MSG_NEXT |CI$034 4202 CMSG V MSG_PULL_RIGHT |CI$035 4203 CMSG V MSG_PULL_LEFT |CI$036 4204 CMSG I MSG_KEY |CI$037 I 4205 CMSG I MSG_INSERT_ITEM |CI$038 I S 4206 CMSG I MSG_ADD_ITEM |CI$039 I S 4207 CMSG V MSG_DELETE_ITEM |CI$03A I 4208 CMSG V MSG_DELETE_DATA |CI$03B 4209 CMSG V MSG_SORT_ITEMS |CI$03C I 4210 CMSG I GET_ITEM_MATCHING |CI$03D S 4211 CMSG I GET_AUX_VALUE |CI$03E I 4212 CMSG V SET_AUX_VALUE |CI$03F I I 4213 CMSG I GET_SEARCH_MODE |CI$040 4214 CMSG V SET_SEARCH_MODE |CI$041 I 4215 CMSG I GET_INVERSE_STATE |CI$042 4216 CMSG V SET_INVERSE_STATE |CI$043 I 4217 CMSG V MSG_SCROLL |CI$044 I I 4218 CMSG V SET_CLASS_COLORS |CI$045 I I I 4219 CMSG I GET_HORIZONTAL_INCREMENT |CI$046 4220 CMSG V SET_HORIZONTAL_INCREMENT |CI$047 I 4221 CMSG V MSG_UP |CI$048 4222 CMSG V MSG_DOWN |CI$049 4223 CMSG V MSG_RIGHT |CI$04A 4224 CMSG V MSG_LEFT |CI$04B 4225 CMSG V MSG_BEGINNING_OF_DATA |CI$04C 4226 CMSG V MSG_END_OF_DATA |CI$04D 4227 CMSG V MSG_BEGINNING_OF_PANEL |CI$04E 4228 CMSG V MSG_END_OF_PANEL |CI$04F 4229 CMSG V MSG_BEGINNING_OF_LINE |CI$050 4230 CMSG V MSG_END_OF_LINE |CI$051 4231 CMSG V MSG_PAGE_UP |CI$052 4232 CMSG V MSG_PAGE_DOWN |CI$053 4233 CMSG V SET_INSERT_MODE |CI$054 I 4234 CMSG V MSG_GOTO_LINE |CI$055 I 4235 CMSG V MSG_MOVE_ABSOLUTE |CI$056 I I 4236 CMSG V MSG_MOVE_RELATIVE |CI$057 I I 4237 CMSG V MSG_MARK_ON |CI$058 4238 CMSG V MSG_PASTE |CI$059 I I I 4239 CMSG V MSG_CUT |CI$05A I I I 4240 CMSG V MSG_COPY |CI$05B I I I 4241 CMSG V MSG_INSERT |CI$05C S 4242 CMSG V MSG_DELETE_CHAR |CI$05D 4243 CMSG V MSG_DELETE_LINE |CI$05E 4244 CMSG V MSG_DELETE_TO_EOL |CI$05F 4245 CMSG I MSG_FIND |CI$060 S 4246 CMSG I MSG_REPLACE |CI$061 S S 4247 CMSG V MSG_PRINT |CI$062 4248 CMSG I GET_MARK |CI$063 4249 CMSG I GET_CHANGED_STATE |CI$064 4250 CMSG V SET_CHANGED_STATE |CI$065 I 4251 CMSG V SET_RIGHT_MARGIN |CI$066 I 4252 CMSG I GET_LINE_COUNT |CI$067 4253 CMSG V SET_STATUS_LINE_STATE |CI$068 I 4254 CMSG V SET_BLOCK_MOUSE_STATE |CI$069 I 4255 CMSG I GET_BLOCK_MOUSE_STATE |CI$06A 4256 CMSG V SET_COLUMN_MODE |CI$06B I 4257 CMSG I GET_COLUMN_MODE |CI$06C 4258 CMSG V SET_FILE_NAME |CI$06D S 4259 CMSG S GET_FILE_NAME |CI$06E 4260 CMSG V MSG_DEFAULT_KEY |CI$06F 4261 CMSG V SET_DYNAMIC_UPDATE_STATE |CI$070 I 4262 CMSG I GET_FOCUS |CI$071 4263 CMSG V MSG_REFRESH_SCREEN |CI$072 I 4264 CMSG V MSG_PREVIOUS |CI$073 4265 CMSG V SET_CHECK_STRING |CI$074 S S 4266 CMSG I MSG_ACTIVATE |CI$075 V 4267 CMSG I MSG_ACTIVATE_GROUP |CI$076 4268 CMSG I GET_MSG_DEACTIVATE |CI$077 I // <<< Awful hack! 4269 CMSG I MSG_DEACTIVATE |CI$077 I // <<< Awful hack! 4270 CMSG I MSG_DEACTIVATE_GROUP |CI$078 4271 CMSG V SET_LOCAL_ROTATE_STATE |CI$079 I 4272 CMSG I GET_LOCAL_ROTATE_STATE |CI$07A 4273 CMSG V SET_CLIENT_AREA_STATE |CI$07B I 4274 CMSG I GET_CLIENT_AREA_STATE |CI$07C 4275 CMSG I GET_READ_ONLY_STATE |CI$07D 4276 CMSG V SET_READ_ONLY_STATE |CI$07E I 4277 CMSG V SET_LINE_WIDTH |CI$07F I I 4278 CMSG I GET_LINE_SIZE |CI$080 4279 CMSG I GET_DISPLAY_SIZE |CI$081 4280 CMSG V SET_SCROLL_BAR_VISIBLE_STATE |CI$082 I 4281 CMSG V SET_ORIGIN |CI$083 I I 4282 CMSG I GET_ORIGIN |CI$084 4283 CMSG I GET_POSITION |CI$085 4284 CMSG I MSG_TRUE |CI$086 4285 CMSG I MSG_FALSE |CI$087 4286 CMSG I MSG_LAST_KEY_PRESSED |CI$088 4287 CMSG V SET_RADIO_STRING |CI$089 S S 4288 CMSG V SET_ENTRY_STATE |CI$08A I I 4289 CMSG I GET_ENTRY_STATE |CI$08B I 4290 CMSG V MSG_READ |CI$08C 4291 CMSG V MSG_WRITE |CI$08D 4292 CMSG V SET_SCROLL_BAR_OFFSET |CI$08E I 4293 CMSG I GET_SCROLL_BAR_OFFSET |CI$08F 4294 CMSG I MSG_ITEM_CHANGE |CI$090 I I 4295 CMSG I GET_ITEM_CHANGED_STATE |CI$091 I 4296 CMSG V SET_ITEM_CHANGED_STATE |CI$092 I I 4297 CMSG I GET_AUTO_TOP_ITEM_STATE |CI$093 4298 CMSG V SET_AUTO_TOP_ITEM_STATE |CI$094 I 4299 CMSG V SET_KBD_INPUT_MODE |CI$095 I 4300 CMSG I MSG_SUPPLY_KEY |CI$096 I 4301 CMSG I GET_INSERT_MODE |CI$097 4302 CMSG I MSG_OK |CI$098 4303 CMSG I MSG_CANCEL |CI$099 4304 CMSG Q GET_ARRAY_VALUE |CI$09A I // This has a ghost untyped parameter 4305 CMSG V SET_ARRAY_VALUE |CI$09B I Q // This has a ghost untyped parameter 4306 CMSG V MSG_CONSTRUCT_OBJECT |CI$09C 4307 CMSG I MSG_ACTIVATING |CI$09D 4308 CMSG V MSG_TRACE_SWITCH |CI$09E I I 4309 CMSG V MSG_TRACE_MESSAGE |CI$09F 4310 CMSG V MSG_TRACE_STEP |CI$0A0 I 4311 CMSG V MSG_TRACE_OUTPUT |CI$0A1 S 4312 CMSG I MSG_DEACTIVATING |CI$0A2 4313 CMSG I GET_CLASS |CI$0A3 4314 CMSG S GET_HELP_NAME |CI$0A4 4315 CMSG V MSG_EXIT_APPLICATION |CI$0A5 4316 CMSG V MSG_PRINT_SCREEN |CI$0A6 S 4317 CMSG I GET_RIGHT_MARGIN |CI$0A7 4318 CMSG I GET_DELEGATION_MODE |CI$0A8 4319 CMSG V SET_DELEGATION_MODE |CI$0A9 I 4320 CMSG I GET_BASE_CLASS |CI$0AA 4321 CMSG V SET_ITEM_ENTRY_MSG |CI$0AB I I 4322 CMSG I GET_ITEM_ENTRY_MSG |CI$0AC I 4323 CMSG V SET_ITEM_EXIT_MSG |CI$0AD I I 4324 CMSG I GET_ITEM_EXIT_MSG |CI$0AE I 4325 CMSG V SET_ITEM_VALIDATE_MSG |CI$0AF I I 4326 CMSG I GET_ITEM_VALIDATE_MSG |CI$0B0 I 4327 CMSG V SET_DATA_FILE |CI$0B1 I I 4328 CMSG I GET_DATA_FILE |CI$0B2 I 4329 CMSG V SET_DATA_FIELD |CI$0B3 I I 4330 CMSG I GET_DATA_FIELD |CI$0B4 I 4331 CMSG V SET_DATA_WINDOW |CI$0B5 I I 4332 CMSG I GET_DATA_WINDOW |CI$0B6 I 4333 CMSG V SET_ITEM_OPTIONS |CI$0B7 I I 4334 CMSG I GET_ITEM_OPTIONS |CI$0B8 I 4335 CMSG V SET_ITEM_OPTION |CI$0B9 I I I 4336 CMSG I GET_ITEM_OPTION |CI$0BA I I 4337 CMSG V MSG_ENTRY_UPDATE |CI$0BB I I 4338 CMSG V MSG_ENTRY_FIND |CI$0BC I 4339 CMSG V MSG_ENTRY_SUPERFIND |CI$0BD I I 4340 CMSG V MSG_ENTRY_DISPLAY |CI$0BE I I 4341 CMSG V MSG_ENTRY_CLEAR |CI$0BF I 4342 CMSG I GET_VALIDATE_ITEMS |CI$0C0 I 4343 CMSG I GET_ITEM_WINDOW |CI$0C1 // takes no params? 4344 CMSG V MSG_COPY_ITEMS |CI$0C2 * // sav_cur_obj - params on the flex stack 4345 CMSG I GET_IMAGE_NUMBER |CI$0C3 // 6/2/98 5:39 4346 CMSG V MSG_ENTRY_CLEAR_ALL |CI$0C4 I 4347 CMSG V MSG_SELECT_TOGGLING |CI$0C5 I I 4348 CMSG I GET_ITEM_ENTRY |CI$0C6 I 4349 CMSG I GET_ITEM_EXIT |CI$0C7 I 4350 CMSG I GET_ITEM_VALIDATE |CI$0C8 I 4351 CMSG I GET_READ_ONLY_ERROR |CI$0C9 I I 4352 CMSG S GET_NAME |CI$0CA 4353 CMSG I GET_ENTRY |CI$0CB 4354 CMSG V MSG_DESTROY_OBJECT |CI$0CC V 4355 CMSG V MSG_DESTROY_ALL_OBJECTS |CI$0CD 4356 CMSG I GET_MOUSE_HIT |CI$0CE 4357 CMSG V SET_OBJECT_COLOR |CI$0CF I I 4358 CMSG V SET_ARROWS |CI$0D0 I I I 4359 CMSG V MSG_SWITCH |CI$0D1 4360 CMSG V MSG_SWITCH_BACK |CI$0D2 4361 CMSG I GET_WAS_FOUND |CI$0D3 I // Invalid coding. 4362 CMSG I GET_STATUS_LINE_STATE |CI$0D4 4363 CMSG V SET_HIGHLIGHT_STATE |CI$0D5 I 4364 CMSG V MSG_ROTATE_UP |CI$0D6 4365 CMSG V MSG_POP_PAGES |CI$0D7 4366 CMSG V SET_CLASS |CI$0D8 I 4367 CMSG V MSG_FETCH_HELP |CI$0D9 4368 CMSG I GET_OBJECT_ID |CI$0DA 4369 CMSG V MSG_INIT_INSTANCE |CI$0DB 4370 CMSG I MSG_PAGE |CI$0DC I 4371 CMSG I MSG_PAGE_DELETE |CI$0DD 4372 CMSG I GET_COLORS |CI$0DE 4373 CMSG I GET_BAR_LOCATION |CI$0DF 4374 CMSG V RETURN_LOCATION |CI$0E0 // called from "C" only. 2 pointer to ints. 4375 CMSG V CHANGE_LOCATION |CI$0E1 // called from "C" only. 2 pointer to ints. 4376 CMSG V MSG_WRITE_DBMS |CI$0E2 * // variable params, pushed on to flex stack 4377 CMSG V MSG_READ_DBMS |CI$0E3 * // variable params, pushed on to flex stack. 4378 CMSG S GET_STRING_VALUE |CI$0E4 I 4379 CMSG N GET_NUMBER_VALUE |CI$0E5 I 4380 CMSG D GET_DATE_VALUE |CI$0E6 I 4381 CMSG I GET_INTEGER_VALUE |CI$0E7 I 4382 CMSG R GET_REAL_VALUE |CI$0E8 I 4383 CMSG V SET_BASE_ITEM |CI$0E9 I 4384 CMSG I GET_BASE_ITEM |CI$0EA 4385 CMSG V SET_ITEM_LIMIT |CI$0EB I 4386 CMSG I GET_ITEM_LIMIT |CI$0EC 4387 CMSG V MSG_MARK_OFF |CI$0ED 4388 CMSG V SET_SEARCH_CASE |CI$0EE I 4389 CMSG V SET_PRIOR_FOCUS |CI$0EF I 4390 CMSG I GET_PRIOR_FOCUS |CI$0F0 4391 CMSG V SET_NEXT_FOCUS |CI$0F1 I 4392 CMSG I GET_NEXT_FOCUS |CI$0F2 4393 CMSG V SET_SCROLLBAR |CI$0F3 I 4394 CMSG I GET_ASCII_STATE |CI$0F4 4395 CMSG V SET_ASCII_STATE |CI$0F5 I 4396 CMSG I GET_TEXT_INDENT |CI$0F6 4397 CMSG V SET_TEXT_INDENT |CI$0F7 I 4398 CMSG V MSG_ENTRY_AUTOFIND |CI$0F8 I 4399 CMSG V SET_SCOPE_STATE |CI$0F9 I 4400 CMSG I GET_SCOPE_STATE |CI$0FA 4401 CMSG V MSG_MOUSE_CHANGE_FOCUS |CI$0FB I 4402 CMSG I GET_CHILD_COUNT |CI$0FC 4403 CMSG V MSG_MOUSE_UP |CI$0FD I I 4404 CMSG V MSG_MOUSE_UP2 |CI$0FE I I 4405 CMSG V MSG_MOUSE_UP3 |CI$0FF I I 4406 CMSG V MSG_MOUSE_CLICK |CI$100 I I 4407 CMSG V MSG_MOUSE_CLICK2 |CI$101 I I 4408 CMSG V MSG_MOUSE_CLICK3 |CI$102 I I 4409 CMSG V MSG_MOUSE_DOWN |CI$103 I I 4410 CMSG V MSG_MOUSE_DOWN2 |CI$104 I I 4411 CMSG V MSG_MOUSE_DOWN3 |CI$105 I I 4412 CMSG V MSG_MOUSE_DRAG |CI$106 I I 4413 CMSG V MSG_MOUSE_DRAG2 |CI$107 I I 4414 CMSG V MSG_MOUSE_DRAG3 |CI$108 I I 4415 CMSG I GET_ABSOLUTE_MOUSE_LOCATION |CI$109 4416 CMSG V SET_ABSOLUTE_MOUSE_LOCATION |CI$10A I I I 4417 CMSG I GET_DYNAMIC_UPDATE_STATE |CI$10B 4418 CMSG V SET_MAX_LINES |CI$10C I 4419 CMSG I GET_MAX_LINES |CI$10D 4420 CMSG V MSG_VIRTUAL_CONSOLE |CI$10E 4421 CMSG I GET_NEXT_ENTRY_OK |CI$10F 4422 CMSG I GET_PREVIOUS_ENTRY_OK |CI$110 4423 CMSG V SET_DYNAMIC_COLORS |CI$111 I I 4424 CMSG V SET_NEW_ITEM |CI$112 I 4425 CMSG V SET_BROADCAST_STATE |CI$113 I 4426 CMSG I GET_BROADCAST_STATE |CI$114 4427 CMSG I GET_WRAPPING |CI$115 4428 CMSG I GET_ROW_CHANGING |CI$116 I I 4429 CMSG V MSG_ADD_FOCUS |CI$117 I 4430 CMSG V MSG_REMOVE_OBJECT |CI$118 4431 CMSG V MSG_RELEASE_FOCUS |CI$119 4432 CMSG I MSG_ENTERING |CI$11A 4433 CMSG I MSG_EXITING |CI$11B I 4434 CMSG I MSG_ENTERING_SCOPE |CI$11C 4435 CMSG I MSG_EXITING_SCOPE |CI$11D I 4436 CMSG V MSG_SWITCH_NEXT_GROUP |CI$11E 4437 CMSG V MSG_SWITCH_PRIOR_GROUP |CI$11F 4438 CMSG I GET_CURRENT_SCOPE |CI$120 4439 CMSG V SET_CURRENT_SCOPE |CI$121 I 4440 CMSG V MSG_POPUP |CI$122 4441 CMSG V MSG_POPUP_GROUP |CI$123 4442 CMSG V SET_POPUP_STATE |CI$124 I 4443 CMSG I GET_POPUP_STATE |CI$125 4444 CMSG V SET_RING_STATE |CI$126 I 4445 CMSG I GET_RING_STATE |CI$127 4446 CMSG V MSG_MOVE_FOCUS_TREE |CI$128 I 4447 CMSG V SET_PROMPT_OBJECT |CI$129 I I 4448 CMSG I GET_PROMPT_OBJECT |CI$12A I 4449 CMSG V SET_ZOOM_OBJECT |CI$12B I I 4450 CMSG I GET_ZOOM_OBJECT |CI$12C I 4451 CMSG I GET_PRIOR_LEVEL |CI$12D 4452 CMSG I GET_NEXT_LEVEL |CI$12E 4453 CMSG I GET_PRIOR_SCOPE |CI$12F 4454 CMSG I GET_NEXT_SCOPE |CI$130 4455 CMSG V MSG_SWITCH_PRIOR_SCOPE |CI$131 4456 CMSG V MSG_SWITCH_NEXT_SCOPE |CI$132 4457 CMSG V SET_ATTACH_PARENT_STATE |CI$133 I 4458 CMSG I GET_ATTACH_PARENT_STATE |CI$134 4459 CMSG V MSG_CHILD_WRAPPING |CI$135 I 4460 CMSG V SET_DISPLAY_MODE |CI$136 I I 4461 CMSG I GET_DISPLAY_MODE |CI$137 I 4462 CMSG V MSG_COLOR_BLOCK |CI$138 I I 4463 CMSG V MSG_NEXT_OBJECT |CI$139 4464 CMSG V MSG_PRIOR_OBJECT |CI$13A 4465 CMSG V SET_APPLICATION_NAME |CI$13B S 4466 CMSG S GET_APPLICATION_NAME |CI$13C 4467 CMSG V SET_MODULE_NAME |CI$13D S 4468 CMSG S GET_MODULE_NAME |CI$13E 4469 CMSG I GET_LAST_CHILD |CI$13F 4470 CMSG V SET_WINDOW_COLOR |CI$140 I I 4471 CMSG I GET_WINDOW_COLOR |CI$141 I 4472 CMSG I MSG_PROCESS_KEY |CI$142 I 4473 CMSG V MSG_ACTIVATE_SCOPE |CI$143 4474 CMSG I GET_FIND_SCOPE |CI$144 4475 CMSG I GET_SCOPE_FOCUS |CI$145 4476 CMSG I GET_VALID_ITEM |CI$146 I 4477 CMSG V MSG_UPDATE_DISPLAY |CI$147 4478 CMSG V SET_ITEM |CI$148 I 4479 CMSG V MSG_TRACE_COMMAND |CI$149 4480 CMSG I GET_OBJECT_COLOR |CI$14A 4481 CMSG V SET_OBJECT_VALIDATION |CI$14B I 4482 CMSG I GET_OBJECT_VALIDATION |CI$14C 4483 CMSG I GET_NEXT_OBJECT_ID |CI$14D I 4484 CMSG I GET_PRIOR_OBJECT_ID |CI$14E I 4485 CMSG I GET_CLASS_COLORS |CI$14F I 4486 CMSG I GET_LOCATION_TYPE |CI$150 4487 CMSG I GET_OBJECT_SIZE |CI$151 4488 CMSG I GET_IN_USE_STATE |CI$152 4489 CMSG V SET_IN_USE_STATE |CI$153 I 4490 CMSG V MSG_ATTACH_DEO_TO_SERVER |CI$154 4491 CMSG V MSG_REQUEST_CLEAR_ALL |CI$155 4492 CMSG V MSG_CLEAR |CI$156 4493 CMSG V SET_CURRENT_RECORD |CI$157 I 4494 CMSG I GET_CURRENT_RECORD |CI$158 4495 CMSG V MSG_REBUILD_CONSTRAINTS |CI$159 4496 CMSG V MSG_CONSTRAIN |CI$15A 4497 CMSG V SET_MAIN_FILE |CI$15B I 4498 CMSG I GET_MAIN_FILE |CI$15C 4499 CMSG I GET_FIND_SERVER |CI$15D 4500 CMSG I GET_LOCATE_SERVER |CI$15E 4501 CMSG V MSG_MARK_AS_COMPONENT |CI$15F 4502 CMSG V MSG_DELETING |CI$160 4503 CMSG I GET_VALIDATE_DELETE |CI$161 4504 CMSG V MSG_REQUEST_DELETE |CI$162 4505 CMSG V MSG_DISPLAY |CI$163 4506 CMSG V MSG_RELATE_MAIN_FILE |CI$164 4507 CMSG V MSG_CLEAR_UI |CI$165 4508 CMSG V MSG_DISPLAY_UI |CI$166 4509 CMSG V MSG_REQUEST_ASSIGN |CI$167 I 4510 CMSG I GET_VALIDATE_SAVE |CI$168 4511 CMSG V MSG_ATTACH_MAIN_FILE |CI$169 4512 CMSG V MSG_REQUEST_CLEAR |CI$16A 4513 CMSG V MSG_BACKOUT |CI$16B 4514 CMSG V MSG_UPDATE |CI$16C 4515 CMSG V MSG_SAVE_MAIN_FILE |CI$16D 4516 CMSG V MSG_DELETE_MAIN_FILE |CI$16E 4517 CMSG I GET_ENTRY_PERMISSIVE_STATE |CI$16F 4518 CMSG V SET_ENTRY_PERMISSIVE_STATE |CI$170 I 4519 CMSG V SET_ORDERING |CI$171 I 4520 CMSG I GET_ORDERING |CI$172 4521 CMSG I GET_COMPONENT_STATE |CI$173 4522 CMSG V SET_COMPONENT_STATE |CI$174 I 4523 CMSG I GET_HAS_COMPONENTS_STATE |CI$175 4524 CMSG V SET_HAS_COMPONENTS_STATE |CI$176 I 4525 CMSG V MSG_REQUEST_SAVE |CI$177 4526 CMSG V MSG_REMOVE_FOCUS |CI$178 4527 CMSG V MSG_ATTACH_SERVER |CI$179 I 4528 CMSG V MSG_DETACH_SERVER |CI$17A I 4529 CMSG V MSG_ATTACH_CLIENT |CI$17B I 4530 CMSG V MSG_DETACH_CLIENT |CI$17C I 4531 CMSG V MSG_ADD_USER_INTERFACE |CI$17D V 4532 CMSG V MSG_REMOVE_USER_INTERFACE |CI$17E V 4533 CMSG V MSG_MAIN_FILE_CHANGED |CI$17F I 4534 CMSG I GET_IS_SUPERFIND_REQUIRED |CI$180 I 4535 CMSG V MSG_REQUEST_FIND |CI$181 I I I 4536 CMSG V MSG_ADD_PARENT_FILE |CI$182 I 4537 CMSG V MSG_REMOVE_PARENT_FILE |CI$183 I 4538 CMSG V MSG_REQUEST_SUPERFIND |CI$184 I I I 4539 CMSG V MSG_REQUEST_READ |CI$185 I I I 4540 CMSG V MSG_READ_BY_RECNUM |CI$186 I I 4541 CMSG V MSG_FIND_BY_RECNUM |CI$187 I I 4542 CMSG V MSG_ESTABLISH_FIND_DIRECTION |CI$188 I I I 4543 CMSG V MSG_LOCATE_NEXT |CI$189 4544 CMSG I GET_RECORD_NOT_FOUND |CI$18A I 4545 CMSG V MSG_INIT_CLASS |CI$18B 4546 CMSG V SET_IMAGE_NUMBER |CI$18C I 4547 CMSG I GET_ROW |CI$18D I 4548 CMSG I GET_CURRENT_ROW |CI$18E 4549 CMSG I GET_TOP_ROW |CI$18F 4550 CMSG I GET_BOTTOM_ITEM |CI$190 4551 CMSG I GET_BOTTOM_ROW |CI$191 4552 CMSG I GET_ROW_COUNT |CI$192 4553 CMSG I GET_DISPLAYABLE_ROWS |CI$193 4554 CMSG V MSG_ADD_ROW |CI$194 I 4555 CMSG V MSG_INSERT_ROW |CI$195 I I 4556 CMSG V SET_PALETTE_COLOR |CI$196 I I I 4557 CMSG I GET_PALETTE_COLOR |CI$197 I I 4558 CMSG V SET_CLASS_PALETTE |CI$198 I I 4559 CMSG I GET_CLASS_PALETTE |CI$199 I 4560 CMSG I GET_NO_DELETE_STATE |CI$19A 4561 CMSG V SET_NO_DELETE_STATE |CI$19B I 4562 CMSG V MSG_REQUEST_ENTRY_UPDATE |CI$19C I I 4563 CMSG V MSG_SCROLL_PAINT |CI$19D 4564 CMSG V MSG_SHOW_ITEM |CI$19E I 4565 CMSG V SET_EXTERNAL_PAINT_STATE |CI$19F I 4566 CMSG I GET_EXTERNAL_PAINT_STATE |CI$1A0 4567 CMSG V SET_MATRIX_SIZE |CI$1A1 I I 4568 CMSG I GET_MATRIX_SIZE |CI$1A2 4569 CMSG V SET_SKIP_STATE |CI$1A3 I 4570 CMSG I GET_SKIP_STATE |CI$1A4 4571 CMSG I GET_REQUEST_VALIDATE |CI$1A5 4572 CMSG I GET_AUTO_FILL_STATE |CI$1A6 4573 CMSG V SET_AUTO_FILL_STATE |CI$1A7 I 4574 CMSG I GET_FIND_PERMISSIVE_STATE |CI$1A8 4575 CMSG V SET_FIND_PERMISSIVE_STATE |CI$1A9 I 4576 CMSG V MSG_TRANSACTION_ABORTED |CI$1AA I 4577 CMSG V MSG_CLEAR_ALL |CI$1AB 4578 CMSG V MSG_CREATING |CI$1AC 4579 CMSG V MSG_DESTROYING |CI$1AD 4580 CMSG I GET_SHOULD_SAVE |CI$1AE 4581 CMSG I GET_WHICH_DATA_SET |CI$1AF I 4582 CMSG I GET_VALIDATE_CONSTRAINTS |CI$1B0 4583 CMSG V MSG_ERROR_REPORT |CI$1B1 V 4584 CMSG V MSG_REQUEST_RELATE |CI$1B2 I 4585 CMSG S GET_ERROR_TEXT |CI$1B3 I 4586 CMSG I GET_SUGGESTED_ORDERING |CI$1B4 4587 CMSG V SET_SUGGESTED_ORDERING |CI$1B5 I 4588 CMSG I GET_NO_RELATE_STATE |CI$1B6 4589 CMSG V SET_NO_RELATE_STATE |CI$1B7 I 4590 CMSG I GET_WINDOW_LOCATION |CI$1B8 I 4591 CMSG I GET_SIGNON_STATUS |CI$1B9 4592 CMSG V MSG_ADD_WATCHER |CI$1BA I 4593 CMSG V MSG_REMOVE_WATCHER |CI$1BB I 4594 CMSG I GET_SEARCH_CASE |CI$1BC 4595 CMSG I GET_SHOULD_SAVE_ROW |CI$1BD 4596 CMSG V MSG_DISPLAY_STATUS |CI$1BE S 4597 CMSG V MSG_CLEAR_SET |CI$1BF 4598 CMSG I GET_AUTOFIND_ITEM |CI$1C0 4599 CMSG V SET_KEY_PATH |CI$1C1 I 4600 CMSG I GET_KEY_PATH |CI$1C2 4601 CMSG I GET_CAN_DELETE |CI$1C3 4602 CMSG V MSG_UPDATE_DEPENDENT_ITEMS |CI$1C4 4603 CMSG I GET_SUPERFIND_FIELD |CI$1C5 I I 4604 CMSG V MSG_REFRESH |CI$1C6 I 4605 CMSG V MSG_PROCESS_ACCELERATOR |CI$1C7 I I 4606 CMSG I GET_ERROR_TEXT_AVAILABLE |CI$1C8 I 4607 CMSG I GET_PROTOTYPE_OBJECT |CI$1C9 4608 CMSG V MSG_REFIND_RECORDS |CI$1CA 4609 CMSG V MSG_END_CONSTRUCT_OBJECT |CI$1CB 4610 CMSG V MSG_CLEAR_MAIN_FILE |CI$1CC 4611 CMSG V MSG_REQUEST_CLEAR_FILE |CI$1CD I 4612 CMSG I GET_CALLBACK |CI$1CE S I 4613 CMSG I GET_IS_CRITICAL |CI$1CF I 4614 CMSG I GET_VIRTUAL_CONSOLE |CI$1D0 4615 CMSG V SET_VIRTUAL_CONSOLE |CI$1D1 I 4616 CMSG I GET_KBD_INPUT_MODE |CI$1D2 4617 CMSG I GET_VERIFY_RETRY |CI$1D3 4618 4619 // added to VDF 8.2 4620 CMSG I GET_PENEIGHBORHOOD |CI$0539 // get peNeighborHood to eHood 4621 CMSG I SET_PENEIGHBORHOOD |CI$053A // set peNeighborHood to nhPrivate|nhPublic|nhNo 4622 CMSG I GET_ONCHILDWRAPPING |CI$053B // get onChildWrapping hoDest bDown to hoNewDest 4623 CMSG I GET_CONTAINSFOCUS |CI$053C // get ContainsFocus to bHasFocus 4624 CMSG I GET_RINGPARENT |CI$053D // get RingParent to hoRingOwner 4625 CMSG I GET_ISCOLUMNVISIBLE |CI$053e // get IsColumnVisible iColumn to bIsVisible 4626 CMSG I MSG_DOMAKECOLUMNVISIBLE |CI$053f // Send DoMakeColumnVisible iColumn 4627 CMSG I GET_PBAUTOFILLFROMFIRST |CI$0540 // Get/Set pbAutoFillFromFirst to bFirst (true=dflt) 4628 CMSG I SET_PBAUTOFILLFROMFIRST |CI$0541 4629 CMSG I GET_PBINHERITCONSTRAINTS |CI$057A // should DSO/DDO inherit constraints from servers (dflt=true) 4630 CMSG I SET_PBINHERITCONSTRAINTS |CI$057B 4631 4632#ENDCOMMAND 4633 4634// define all runtime messages used just by VDF 4635// Note: make sure number of lines in command is less than 1024 4636#COMMAND Define$BuiltIn$VDF$Messages 4637 4638 CMSG I GET_FONT |CI$1D4 4639 CMSG V SET_MAP_MODE |CI$1D5 I 4640 CMSG I GET_MAP_MODE |CI$1D6 4641 CMSG V SET_TYPEFACE |CI$1D7 S 4642 CMSG S GET_TYPEFACE |CI$1D8 4643 CMSG V SET_FONTSIZE |CI$1D9 I I 4644 CMSG I GET_FONTSIZE |CI$1DA 4645 CMSG V SET_FONTWEIGHT |CI$1DB I 4646 CMSG I GET_FONTWEIGHT |CI$1DC 4647 CMSG V SET_FONTITALICS |CI$1DD I 4648 CMSG I GET_FONTITALICS |CI$1DE 4649 CMSG V SET_FONTUNDERLINE |CI$1DF I 4650 CMSG I GET_FONTUNDERLINE |CI$1E0 4651 CMSG I GET_FOREIGNLINK |CI$1E1 4652 CMSG V SET_FOREIGNLINK |CI$1E2 I 4653 CMSG I GET_ACKSTATE |CI$1E3 4654 CMSG V SET_ACKSTATE |CI$1E4 I 4655 CMSG I GET_LINKTEMPERATURE |CI$1E5 4656 CMSG V SET_LINKTEMPERATURE |CI$1E6 I 4657 CMSG I GET_RETRYCOUNT |CI$1E7 4658 CMSG V SET_RETRYCOUNT |CI$1E8 I 4659 CMSG I GET_DDE_INITIATE |CI$1E9 I S 4660 CMSG S GET_SESS_REQUEST |CI$1EA S 4661 CMSG I GET_SESS_RECEIVE |CI$1EB S S 4662 CMSG I GET_SESS_TERMINATE |CI$1EC 4663 CMSG I GET_SESS_EXECUTE |CI$1ED S 4664 CMSG I GET_SESS_CONNECT |CI$1EE S S 4665 CMSG S GET_SESS_READ |CI$1EF S 4666 CMSG I GET_SESS_WRITE |CI$1F0 S S 4667 CMSG I GET_SESS_DISCONNECT |CI$1F1 4668 CMSG I GET_SESS_PERFORM |CI$1F2 S 4669 CMSG I GET_PRIVATEFOREIGNLINK |CI$1F3 4670 CMSG V SET_PRIVATEFOREIGNLINK |CI$1F4 I 4671 CMSG I GET_GUILOCATION |CI$1F5 4672 CMSG V SET_GUILOCATION |CI$1F6 I I 4673 CMSG I GET_MAP_RATIOS |CI$1F7 4674 CMSG V SET_MAP_RATIOS |CI$1F8 I I 4675 CMSG I GET_BORDER_STYLE |CI$1F9 4676 CMSG V SET_BORDER_STYLE |CI$1FA I 4677 CMSG I GET_CLIPPING_MODE |CI$1FB 4678 CMSG V SET_CLIPPING_MODE |CI$1FC I 4679 CMSG I GET_CAPTION_BAR |CI$1FD 4680 CMSG V SET_CAPTION_BAR |CI$1FE I 4681 CMSG I GET_MINIMIZE_ICON |CI$1FF 4682 CMSG V SET_MINIMIZE_ICON |CI$200 I 4683 CMSG I GET_MAXIMIZE_ICON |CI$201 4684 CMSG V SET_MAXIMIZE_ICON |CI$202 I 4685 CMSG I GET_SYSMENU_ICON |CI$203 4686 CMSG V SET_SYSMENU_ICON |CI$204 I 4687 CMSG I GET_VIEW_MODE |CI$205 4688 CMSG V SET_VIEW_MODE |CI$206 I 4689 CMSG I GET_BORDER_WIDTH |CI$207 4690 CMSG V SET_BORDER_WIDTH |CI$208 I 4691 CMSG I GET_SCROLL_RANGE |CI$209 4692 CMSG V SET_SCROLL_RANGE |CI$20A I I 4693 CMSG I GET_PAGESIZE |CI$20B 4694 CMSG V SET_PAGESIZE |CI$20C I 4695 CMSG I GET_LINESIZE |CI$20D 4696 CMSG V SET_LINESIZE |CI$20E I 4697 CMSG I GET_COLUMN_WIDTH |CI$20F 4698 CMSG V SET_COLUMN_WIDTH |CI$210 I 4699 CMSG I GET_SORTED_STATE |CI$211 4700 CMSG V SET_SORTED_STATE |CI$212 I 4701 CMSG I GET_UNDO |CI$213 4702 CMSG I GET_ITEM_TYPE |CI$214 I 4703 CMSG V SET_ITEM_TYPE |CI$215 I I 4704 CMSG I GET_SELECTED_OBJECTID |CI$216 4705 CMSG V SET_FORM_WIDTH |CI$217 I I 4706 CMSG I GET_FORM_WIDTH |CI$218 I 4707 // This message isn't really used anymore, except once in the IDE. 4708 CMSG V SET_FORM_COLOR |CI$219 I I I 4709 CMSG I GET_FORM_COLOR |CI$21A I 4710 CMSG V SET_FORM_DATATYPE |CI$21B I I 4711 CMSG I GET_FORM_DATATYPE |CI$21C I 4712 CMSG V SET_FORM_OPTIONS |CI$21D I I 4713 CMSG I GET_FORM_OPTIONS |CI$21E I 4714 CMSG V SET_FORM_FONT |CI$21F I I 4715 CMSG I GET_FORM_FONT |CI$220 I 4716 CMSG V SET_FORM_ROW |CI$221 I I 4717 CMSG I GET_FORM_ROW |CI$222 I 4718 CMSG V SET_FORM_COLUMN |CI$223 I I 4719 CMSG I GET_FORM_COLUMN |CI$224 I 4720 CMSG V SET_JUSTIFICATION_MODE |CI$225 I 4721 CMSG I GET_JUSTIFICATION_MODE |CI$226 4722 CMSG V SET_FORM_TYPEFACE |CI$227 I S 4723 CMSG S GET_FORM_TYPEFACE |CI$228 I 4724 CMSG V SET_FORM_FONTHEIGHT |CI$229 I I 4725 CMSG I GET_FORM_FONTHEIGHT |CI$22A I 4726 CMSG V SET_FORM_FONTWEIGHT |CI$22B I I 4727 CMSG I GET_FORM_FONTWEIGHT |CI$22C I 4728 CMSG V SET_FORM_FONTITALICS |CI$22D I I 4729 CMSG I GET_FORM_FONTITALICS |CI$22E I 4730 CMSG V SET_FORM_FONTUNDERLINE |CI$22F I I 4731 CMSG I GET_FORM_FONTUNDERLINE |CI$230 I 4732 CMSG V SET_NAME |CI$231 S 4733 CMSG V SET_BITMAP |CI$232 S 4734 CMSG V SET_BUTTON_ASPECT |CI$233 I I 4735 CMSG I GET_BUTTON_ASPECT |CI$234 I 4736 CMSG V SET_BUTTON_POSITION |CI$235 I 4737 CMSG I GET_BUTTON_POSITION |CI$236 4738 CMSG I GET_ITEM_COLOR |CI$237 I 4739 CMSG I GET_BANDED_OBJECT |CI$238 4740 CMSG V SET_FORM_HEIGHT |CI$239 I I 4741 CMSG I GET_FORM_HEIGHT |CI$23A I 4742 CMSG V SET_AUTO_ALIGN |CI$23B I 4743 CMSG I GET_AUTO_ALIGN |CI$23C 4744 CMSG V SET_COMBO_DATA_OBJECT |CI$23D I 4745 CMSG I GET_COMBO_DATA_OBJECT |CI$23E 4746 CMSG V SET_LINE_THICKNESS |CI$23F I 4747 CMSG I GET_LINE_THICKNESS |CI$240 4748 CMSG V SET_LINE_OFFSET |CI$241 I 4749 CMSG I GET_LINE_OFFSET |CI$242 4750 CMSG V SET_WINDOW_HANDLE |CI$243 I 4751 CMSG I GET_CONTAINER_HANDLE |CI$244 4752 CMSG V SET_HORIZONTAL_STATE |CI$245 I 4753 CMSG I GET_HORIZONTAL_STATE |CI$246 4754 CMSG V MSG_LOAD_FORM_FROM_PAGE |CI$247 I // 6:36 6/2/98 4755 CMSG V SET_FORM_GUIWIDTH |CI$248 I I 4756 CMSG I GET_FORM_GUIWIDTH |CI$249 I 4757 CMSG V SET_FORM_GUIHEIGHT |CI$24A I I 4758 CMSG I GET_FORM_GUIHEIGHT |CI$24B I 4759 CMSG V SET_FORM_GUIROW |CI$24C I I 4760 CMSG I GET_FORM_GUIROW |CI$24D I 4761 CMSG V SET_FORM_GUICOLUMN |CI$24E I I 4762 CMSG I GET_FORM_GUICOLUMN |CI$24F I 4763 CMSG V MSG_HSCROLL |CI$250 I I 4764 CMSG V MSG_EXPORT_CLIPBOARD_DATA |CI$251 4765 CMSG V MSG_IMPORT_CLIPBOARD_DATA |CI$252 4766 CMSG V SET_FORM_MARGIN |CI$253 I I 4767 CMSG I GET_FORM_MARGIN |CI$254 I 4768 CMSG V MSG_ENUMERATE_FONTS |CI$255 S 4769 CMSG I GET_USER_FONTNAME |CI$256 S I 4770 CMSG V SET_ICON |CI$257 S 4771 CMSG I GET_PARENT_RATIOS |CI$258 4772 CMSG V SET_BANDING_OBJECT |CI$259 I 4773 CMSG I GET_BANDING_OBJECT |CI$25A 4774 CMSG V MSG_MAKE_PROPORTIONAL |CI$25B I I 4775 CMSG I GET_PHYSICAL_FONTSIZE |CI$25C 4776 CMSG V MSG_SYSTEM_HELP |CI$25D S S 4777 CMSG S GET_DLL_NAME |CI$25E 4778 CMSG V SET_LINE_STYLE |CI$25F I 4779 CMSG I GET_LINE_STYLE |CI$260 4780 CMSG V MSG_CHOOSE |CI$261 4781 CMSG V SET_TOP_LINE_COLOR |CI$262 I 4782 CMSG I GET_TOP_LINE_COLOR |CI$263 4783 CMSG V SET_BOTTOM_LINE_COLOR |CI$264 I 4784 CMSG I GET_BOTTOM_LINE_COLOR |CI$265 4785 CMSG V SET_FOREGROUND_COLOR |CI$266 I 4786 CMSG I GET_FOREGROUND_COLOR |CI$267 4787 CMSG V SET_BKGRND_COLOR |CI$268 I 4788 CMSG I GET_BKGRND_COLOR |CI$269 4789 CMSG I GET_BRUSH |CI$26A 4790 CMSG V MSG_EXIT_CASCADE |CI$26B 4791 CMSG V MSG_REDIRECT_MESSAGE |CI$26C 4792 CMSG V MSG_ACTIVATE_PULL_DOWN |CI$26D 4793 CMSG V SET_ACTION_BAR_LOCATION |CI$26E I 4794 CMSG I GET_ACTION_BAR_KEYS_MSG |CI$26F 4795 CMSG V SET_ACTION_BAR_KEYS_MSG |CI$270 I 4796 CMSG V SET_AUTO_SCALE_FONT_STATE |CI$271 I 4797 CMSG I GET_AUTO_SCALE_FONT_STATE |CI$272 4798 CMSG V MSG_SCALE_FONTS |CI$273 4799 CMSG V SET_FORM_OPTION |CI$274 I I I 4800 CMSG I GET_FORM_OPTION |CI$275 I I 4801 CMSG V MSG_ADJUST_LOGICALS |CI$276 4802 CMSG V SET_PHYSICAL_FONTSIZE |CI$277 I I 4803 CMSG I GET_EXIT_SYSTEM_CONFIRMATION |CI$278 4804 CMSG V SET_CAPTION_BAR_HIGHLIGHT |CI$279 I 4805 CMSG V MSG_ACTIVATE_SYSMENU |CI$27A I 4806 CMSG V SET_HIGHLIGHT_ROW_TEXT_COLOR |CI$27b I 4807 CMSG I GET_HIGHLIGHT_ROW_TEXT_COLOR |CI$27c 4808 CMSG V SET_CURRENT_ITEM_TEXT_COLOR |CI$27d I 4809 CMSG I GET_CURRENT_ITEM_TEXT_COLOR |CI$27e 4810 CMSG V SET_ITEM_TEXT_COLOR |CI$27f I I 4811 CMSG I GET_ITEM_TEXT_COLOR |CI$280 I 4812 CMSG I GET_TEXT_EXTENT |CI$281 S 4813 CMSG V MSG_SYSTEM_CONTEXT_HELP |CI$282 S I 4814 CMSG V SET_MOUSE_CAPTURE |CI$283 4815 CMSG I GET_MOUSE_CAPTURE |CI$284 4816 CMSG V MSG_RELEASE_MOUSE_CAPTURE |CI$285 4817 CMSG V SET_WINDOW_STYLE |CI$286 I I 4818 CMSG I GET_WINDOW_STYLE |CI$287 I 4819 CMSG V MSG_COMMAND |CI$288 I I 4820 CMSG I GET_GUISIZE |CI$289 4821 CMSG V SET_GUISIZE |CI$28A I I 4822 CMSG I GET_ABSOLUTE_GUIORIGIN |CI$28B 4823 CMSG I GET_WINDOW_HANDLE |CI$28C 4824 CMSG V SET_FONT |CI$28D I 4825 CMSG V MSG_NOTIFY_FOCUS_CHANGE |CI$28E I 4826 CMSG V MSG_EXIT_MENU |CI$28F 4827 CMSG I GET_CURSOR |CI$290 4828 CMSG V SET_CURSOR |CI$291 I 4829 CMSG I GET_DATA_SET_SERVER |CI$292 I 4830 CMSG I GET_DATA_SET_CLIENT |CI$293 I 4831 CMSG I GET_DATA_SET_USER_INTERFACE |CI$294 I 4832 CMSG I GET_DATA_SET_SERVER_COUNT |CI$295 4833 CMSG I GET_DATA_SET_CLIENT_COUNT |CI$296 4834 CMSG I GET_DATA_SET_USER_INTERFACE_COUNT |CI$297 4835 CMSG V SET_ALWAYS_REFRESH_STATE |CI$298 I 4836 CMSG I GET_ALWAYS_REFRESH_STATE |CI$299 4837 CMSG V MSG_RESET_FILEMODES_FOR_LOCK |CI$29A 4838 CMSG V SET_SMART_FILEMODE_STATE |CI$29B I 4839 CMSG I GET_SMART_FILEMODE_STATE |CI$29C 4840 CMSG V SET_SMART_FILEMODE_FOR_LOCK |CI$29D I 4841 CMSG I GET_SMART_FILEMODE_FOR_LOCK |CI$29E 4842 CMSG V SET_SMART_FILEMODE_FOR_NO_LOCK |CI$29F I 4843 CMSG I GET_SMART_FILEMODE_FOR_NO_LOCK |CI$2A0 4844 CMSG V SET_CASCADE_DELETE_STATE |CI$2A1 I 4845 CMSG I GET_CASCADE_DELETE_STATE |CI$2A2 4846 CMSG I GET_VALIDATE_DELETE_NO_CASCADE |CI$2A3 4847 CMSG V MSG_ADD_CLIENT_FILE |CI$2A4 I 4848 CMSG V MSG_REMOVE_CLIENT_FILE |CI$2A5 I 4849 CMSG I GET_CLIENT_FILE |CI$2A6 I 4850 CMSG I GET_CLIENT_FILE_COUNT |CI$2A7 4851 CMSG V MSG_ADD_SERVER_FILE |CI$2A8 I 4852 CMSG V MSG_REMOVE_SERVER_FILE |CI$2A9 I 4853 CMSG I GET_SERVER_FILE |CI$2AA I 4854 CMSG I GET_SERVER_FILE_COUNT |CI$2AB 4855 CMSG I GET_PARENT_FILE |CI$2AC I 4856 CMSG I GET_PARENT_FILE_COUNT |CI$2AD 4857 CMSG V MSG_OPERATION_NOT_ALLOWED |CI$2AE I 4858 CMSG V MSG_NEW_CURRENT_RECORD |CI$2AF I I 4859 CMSG V SET_EXTERNAL_CLASS_NAME |CI$2B0 S S 4860 CMSG V SET_EXTERNAL_MESSAGE |CI$2B1 I I 4861 CMSG V MSG_WINDOWS_MESSAGE |CI$2B2 I I I 4862 CMSG V SET_HEADER_LABEL |CI$2B3 I S 4863 CMSG S GET_HEADER_LABEL |CI$2B4 I 4864 CMSG V SET_FORM_BITMAP |CI$2B5 I S 4865 CMSG V SET_HIGHLIGHT_ROW_STATE |CI$2B6 I 4866 CMSG I GET_HIGHLIGHT_ROW_STATE |CI$2B7 4867 CMSG V SET_HIGHLIGHT_ROW_COLOR |CI$2B8 I 4868 CMSG I GET_HIGHLIGHT_ROW_COLOR |CI$2B9 4869 CMSG V SET_HEADER_VISIBLE_STATE |CI$2BA I 4870 CMSG I GET_HEADER_VISIBLE_STATE |CI$2BB 4871 CMSG V MSG_BEGIN_EVENT |CI$2BC I 4872 CMSG V MSG_END_EVENT |CI$2BD I 4873 CMSG V SET_FOCUS |CI$2BE I I 4874 CMSG V SET_FORM_STYLE |CI$2BF I I 4875 CMSG I GET_FORM_STYLE |CI$2C0 I 4876 CMSG V SET_FORM_EXTENDED_STYLE |CI$2C1 I I 4877 CMSG I GET_FORM_EXTENDED_STYLE |CI$2C2 I 4878 CMSG V SET_FORM_BORDER |CI$2C3 I I 4879 CMSG I GET_FORM_BORDER |CI$2C4 I 4880 CMSG V SET_GRIDLINE_MODE |CI$2C5 I 4881 CMSG I GET_GRIDLINE_MODE |CI$2C6 4882 CMSG V MSG_CREATE_DIALOG |CI$2C7 I I 4883 CMSG I GET_MAPI_SEND_DOCUMENTS |CI$2C8 S S 4884 CMSG I GET_MAPI_INITMESSAGE |CI$2C9 S S 4885 CMSG I GET_MAPI_SEND_MAIL |CI$2CA I 4886 CMSG I GET_MAPI_ADDRESS_BOOK |CI$2CB S I 4887 CMSG S GET_MAPI_FIND_NEXT |CI$2CC S I 4888 CMSG S GET_MAPI_MESSAGE_SUBJECT |CI$2CD 4889 CMSG I GET_MAPI_READMAIL |CI$2CE S I 4890 CMSG S GET_MAPI_MESSAGE_SENDERNAME |CI$2CF 4891 CMSG S GET_MAPI_MESSAGE_DATERECEIVED |CI$2D0 4892 CMSG V MSG_EDIT_TO_MAIL |CI$2D1 I 4893 CMSG V MSG_MAIL_TO_EDIT |CI$2D2 I 4894 CMSG I MSG_NOTIFY |CI$2D3 I I 4895 CMSG S GET_MAPI_MESSAGE_RECEIVERNAME |CI$2D4 I 4896 CMSG V SET_BITMAP_SIZE |CI$2D5 I I 4897 CMSG V SET_IMAGELIST_SIZE |CI$2D6 I I 4898 CMSG V SET_IMAGELIST_TYPE |CI$2D7 I 4899 CMSG V MSG_IMAGELIST_CREATE |CI$2D8 4900 CMSG V MSG_IMAGELIST_DESTROY |CI$2D9 4901 CMSG V MSG_IMAGELIST_ADD |CI$2DA S 4902 CMSG V MSG_IMAGELIST_BEGINDRAG |CI$2DB I 4903 CMSG V SET_IMAGELIST_DRAGOBJECT |CI$2DC I 4904 CMSG V MSG_IMAGELIST_DRAGENTER |CI$2DD I I 4905 CMSG V MSG_IMAGELIST_DRAGMOVE |CI$2DE I I 4906 CMSG V MSG_IMAGELIST_DRAGLEAVE |CI$2DF I 4907 CMSG V MSG_IMAGELIST_ENDDRAG |CI$2E0 4908 CMSG I GET_IMAGELIST_DRAGOBJECT |CI$2E1 4909 CMSG V SET_TOOLTIP_STATE |CI$2E2 I 4910 CMSG I GET_TOOLTIP_STATE |CI$2E3 4911 CMSG V SET_TOOLTIP_VALUE |CI$2E4 I S 4912 CMSG S GET_TOOLTIP_VALUE |CI$2E5 I 4913 CMSG V SET_IMAGELIST |CI$2E6 I 4914 CMSG V SET_FORM_IMAGE_INDEX |CI$2E7 I I 4915 CMSG I GET_FORM_IMAGE_INDEX |CI$2E8 I 4916 CMSG V SET_BUTTON_STYLE |CI$2E9 I I 4917 CMSG I GET_BUTTON_STYLE |CI$2EA I 4918 CMSG V MSG_AUTO_SIZE |CI$2EB I I 4919 CMSG V MSG_AUTO_PAGE |CI$2EC I 4920 CMSG V SET_TIMEOUT_VALUE |CI$2ED I 4921 CMSG I GET_TIMEOUT_VALUE |CI$2EE 4922 CMSG V SET_LEFT_MARGIN |CI$2EF I 4923 CMSG I GET_LEFT_MARGIN |CI$2F0 4924 CMSG V SET_STATUS_LINE_OBJECT |CI$2F1 I 4925 CMSG I GET_STATUS_LINE_OBJECT |CI$2F2 4926 CMSG V SET_WINDOWS_OVERRIDE_STATE |CI$2F3 I 4927 CMSG I GET_WINDOWS_OVERRIDE_STATE |CI$2F4 4928 CMSG I GET_MENU_HANDLE |CI$2F5 4929 CMSG V MSG_INITIALIZE_MENU |CI$2F6 I 4930 CMSG V MSG_CHANGE_MENU |CI$2F7 I I I 4931 CMSG V MSG_UNDO |CI$2F8 4932 CMSG V MSG_DELETE |CI$2F9 4933 CMSG V SET_HEADER_JUSTIFICATION_MODE |CI$2FA I I 4934 CMSG I GET_HEADER_JUSTIFICATION_MODE |CI$2FB I 4935 CMSG V SET_BITMAP_FORMAT |CI$2FC I 4936 CMSG I GET_BITMAP_FORMAT |CI$2FD 4937 CMSG V SET_PASSWORD_STATE |CI$2FE I I 4938 CMSG I GET_PASSWORD_STATE |CI$2FF I 4939 CMSG V SET_MDI_STATE |CI$300 I 4940 CMSG I GET_MDI_STATE |CI$301 4941 CMSG V SET_MDI_LEFT_MARGIN |CI$302 I 4942 CMSG I GET_MDI_LEFT_MARGIN |CI$303 4943 CMSG V SET_MDI_TOP_MARGIN |CI$304 I 4944 CMSG I GET_MDI_TOP_MARGIN |CI$305 4945 CMSG V SET_MDI_RIGHT_MARGIN |CI$306 I 4946 CMSG I GET_MDI_RIGHT_MARGIN |CI$307 4947 CMSG V SET_MDI_BOTTOM_MARGIN |CI$308 I 4948 CMSG I GET_MDI_BOTTOM_MARGIN |CI$309 4949 CMSG V SET_MDI_WINDOW_PULLDOWN |CI$30A I 4950 CMSG I GET_MDI_WINDOW_PULLDOWN |CI$30B 4951 CMSG V MSG_ARRANGE_ICONS |CI$30C 4952 CMSG V MSG_CASCADE_WINDOWS |CI$30D 4953 CMSG V MSG_TILE_WINDOWS_HORIZONTAL |CI$30E 4954 CMSG V MSG_TILE_WINDOWS_VERTICAL |CI$30F 4955 CMSG V MSG_SWITCH_NEXT_VIEW |CI$310 4956 CMSG V MSG_SWITCH_PRIOR_VIEW |CI$311 4957 CMSG I GET_FORM_WINDOW_HANDLE |CI$312 I 4958 CMSG V MSG_NOTIFY_APPLICATION_ACTIVATION |CI$313 I 4959 CMSG V SET_RESIZE_COLUMN_STATE |CI$314 I 4960 CMSG I GET_RESIZE_COLUMN_STATE |CI$315 4961 CMSG V SET_AUTOSIZE_HEIGHT_STATE |CI$316 I 4962 CMSG I GET_AUTOSIZE_HEIGHT_STATE |CI$317 4963 CMSG V SET_CURRENT_ITEM_COLOR |CI$318 I 4964 CMSG I GET_CURRENT_ITEM_COLOR |CI$319 4965 CMSG V MSG_INITIALIZE_SYSMENU |CI$31A I 4966 CMSG V SET_UNDO_STATE |CI$31B I 4967 CMSG I GET_UNDO_STATE |CI$31C 4968 CMSG V MSG_RESET_FIND |CI$31D 4969 CMSG V MSG_RESET_REPLACE |CI$31E 4970 CMSG V MSG_APPEND_TEXT |CI$31F S 4971 CMSG V MSG_SELECT |CI$320 I I 4972 CMSG I GET_EDIT_BUFFER_COUNT |CI$321 4973 CMSG V SET_EDIT_BUFFER_SIZE |CI$322 I 4974 CMSG I GET_EDIT_BUFFER_SIZE |CI$323 4975 CMSG V SET_TEXT_LIMIT |CI$324 I 4976 CMSG I GET_TEXT_LIMIT |CI$325 4977 CMSG V SET_EDIT_ERRSPACE_MESSAGE |CI$326 I 4978 CMSG I GET_EDIT_ERRSPACE_MESSAGE |CI$327 4979 CMSG V SET_TABSTOP |CI$328 I I 4980 CMSG I GET_TABSTOP |CI$329 I 4981 CMSG V SET_FORMAT_ORIGIN |CI$32A I I I 4982 CMSG I GET_FORMAT_ORIGIN |CI$32B I 4983 CMSG V SET_FORMAT_SIZE |CI$32C I I I 4984 CMSG I GET_FORMAT_SIZE |CI$32D I 4985 CMSG V SET_HORZ_SCROLL_BAR_VISIBLE_STATE |CI$32E I 4986 CMSG I GET_HORZ_SCROLL_BAR_VISIBLE_STATE |CI$32F 4987 CMSG V MSG_HEADER_NOTIFICATION |CI$330 I I 4988 CMSG I GET_TIMEOUT_REQUEST |CI$331 I I 4989 CMSG V SET_TIMEOUT_MESSAGE |CI$332 I 4990 CMSG I GET_TIMEOUT_MESSAGE |CI$333 4991 CMSG V MSG_MAPI_ADD_RECEIVER |CI$334 I S 4992 CMSG I GET_CLIENT_SIZE |CI$335 4993 CMSG V SET_EXTENDED_WINDOW_STYLE |CI$336 I I 4994 CMSG I GET_EXTENDED_WINDOW_STYLE |CI$337 I 4995 CMSG V SET_DDE_TIMEOUT_VALUE |CI$338 I 4996 CMSG I GET_DDE_TIMEOUT_VALUE |CI$339 4997 CMSG V SET_DDE_TIMEOUT_OBJECT |CI$33A I 4998 CMSG I GET_DDE_TIMEOUT_OBJECT |CI$33B 4999 CMSG V SET_ITEM_COLOR |CI$33C I I 5000 CMSG V SET_FORM_MASK |CI$33D I S 5001 CMSG S GET_FORM_MASK |CI$33E I 5002 CMSG V SET_FORM_BUTTON |CI$33F I I 5003 CMSG V SET_FORM_BUTTON_VALUE |CI$340 I S 5004 CMSG V SET_OEM_TRANSLATE_STATE |CI$341 I 5005 CMSG I GET_OEM_TRANSLATE_STATE |CI$342 5006 CMSG S GET_MASKED_VALUE |CI$343 I 5007 CMSG V MSG_MOUSE_NCCHANGE_FOCUS |CI$344 I 5008 CMSG V MSG_MOUSE_NCUP |CI$345 I I 5009 CMSG V MSG_MOUSE_NCUP2 |CI$346 I I 5010 CMSG V MSG_MOUSE_NCUP3 |CI$347 I I 5011 CMSG V MSG_MOUSE_NCCLICK |CI$348 I I 5012 CMSG V MSG_MOUSE_NCCLICK2 |CI$349 I I 5013 CMSG V MSG_MOUSE_NCCLICK3 |CI$34A I I 5014 CMSG V MSG_MOUSE_NCDOWN |CI$34B I I 5015 CMSG V MSG_MOUSE_NCDOWN2 |CI$34C I I 5016 CMSG V MSG_MOUSE_NCDOWN3 |CI$34D I I 5017 CMSG V MSG_MOUSE_NCDRAG |CI$34E I I 5018 CMSG V MSG_MOUSE_NCDRAG2 |CI$34F I I 5019 CMSG V MSG_MOUSE_NCDRAG3 |CI$350 I I 5020 CMSG V SET_SENTINEL_PROGRAM |CI$351 S 5021 CMSG S GET_SENTINEL_PROGRAM |CI$352 5022 CMSG I GET_START_SENTINEL_PROGRAM |CI$353 5023 CMSG I GET_STOP_SENTINEL_PROGRAM |CI$354 5024 CMSG V SET_SENTINEL_RETURN_VALUE |CI$355 I 5025 CMSG I GET_SENTINEL_RETURN_VALUE |CI$356 5026 CMSG V MSG_NOTIFY_SELECT_STATE |CI$357 I I 5027 CMSG V MSG_SELECT_ALL |CI$358 5028 CMSG V SET_SENTINELDATA |CI$359 I I I 5029 CMSG S GET_SENTINELDATA |CI$35A I I 5030 CMSG V SET_HOSTDATA |CI$35B I I I 5031 CMSG S GET_HOSTDATA |CI$35C I I 5032 CMSG V MSG_ONSENTINELDATACHANGE |CI$35D I I 5033 CMSG V SET_SENTINELWINDOW |CI$35E I 5034 CMSG I GET_SENTINELWINDOW |CI$35F 5035 CMSG V MSG_FORM_BUTTON_NOTIFICATION |CI$360 I I 5036 CMSG I GET_FORM_BUTTON_WINDOW_HANDLE |CI$361 I 5037 CMSG V SET_FORM_JUSTIFICATION_MODE |CI$362 I I 5038 CMSG I GET_FORM_JUSTIFICATION_MODE |CI$363 I 5039 CMSG V MSG_FORM_BUTTON_MOUSE_DOWN |CI$364 I 5040 CMSG V SET_FORM_BUTTON_BITMAP |CI$365 I S 5041 CMSG I MSG_ONDELTAPOS |CI$366 I I 5042 CMSG V SET_DEFAULT_ICONS |CI$367 I I 5043 CMSG I GET_DEFAULT_ICONS |CI$368 5044 CMSG V SET_FORM_MASK_VALUE_STATE |CI$369 I I 5045 CMSG I GET_FORM_MASK_VALUE_STATE |CI$36A I 5046 CMSG V SET_MASKED_VALUE |CI$36B I S 5047 CMSG V SET_UNMASKED_VALUE |CI$36C I S 5048 CMSG S GET_UNMASKED_VALUE |CI$36D I 5049 CMSG V SET_MAIN_WINDOW |CI$36E I 5050 CMSG I GET_MAIN_WINDOW |CI$36F 5051 CMSG V SET_BITMAP_STYLE |CI$370 I 5052 CMSG I GET_BITMAP_STYLE |CI$371 5053 CMSG I GET_BITMAP_WIDTH |CI$372 5054 CMSG I GET_BITMAP_HEIGHT |CI$373 5055 CMSG V SET_TRANSPARENT_STATE |CI$374 I 5056 CMSG I GET_TRANSPARENT_STATE |CI$375 5057 CMSG I GET_MAPI_RECEIVER_COUNT |CI$376 5058 CMSG V SET_MAPI_MESSAGE_RECEIVERNAME |CI$377 I S 5059 CMSG V SET_MAPI_MESSAGE_RECEIVERADRESS |CI$378 I S 5060 CMSG S GET_MAPI_MESSAGE_RECEIVERADRESS |CI$379 I 5061 CMSG V SET_MAPI_MESSAGE_RECEIVERTYPE |CI$37A I I 5062 CMSG I GET_MAPI_MESSAGE_RECEIVERTYPE |CI$37B I 5063 CMSG V SET_MAPI_MESSAGE_SUBJECT |CI$37C S 5064 CMSG V MSG_MAPI_REPLY |CI$37D 5065 CMSG V MSG_MAPI_REMOVE_RECEIVERS |CI$37E 5066 CMSG V MSG_MAPI_REMOVE_ATTACHMENTS |CI$37F 5067 CMSG V MSG_MAPI_ADD_ATTACHMENT |CI$380 S S 5068 CMSG I GET_MAPI_ATTACHMENT_COUNT |CI$381 5069 CMSG S GET_MAPI_ATTACHMENT_PATH |CI$382 I 5070 CMSG S GET_MAPI_ATTACHMENT_FILE |CI$383 I 5071 CMSG V SET_COMM_DCB |CI$384 I 5072 CMSG V MSG_FILL_DCB |CI$385 I 5073 CMSG V MSG_FILL_COMM_TIMEOUTS |CI$386 I // This is really a pointer to a COMMTIMEOUT struct 5074 CMSG V SET_COMM_TIMEOUTS |CI$387 I // same 5075 CMSG V MSG_FILL_COMM_PROPERTIES |CI$388 I // same 5076 CMSG V SET_COMM_MASK |CI$389 I 5077 CMSG I GET_COMM_MASK |CI$38A 5078 CMSG I GET_COMM_MODEM_STATUS |CI$38B 5079 CMSG V MSG_GENERATE_VIRTUAL_KEY |CI$38C I I 5080 CMSG V MSG_GENERATE_DF_KEY |CI$38D I I 5081 CMSG I GET_CURRENT_OFFSET |CI$38E 5082 CMSG I GET_CURRENT_SELECTION_RANGE |CI$38F 5083 CMSG V MSG_ONKEYUP |CI$390 I I 5084 CMSG V MSG_ONSYSKEYUP |CI$391 I I 5085 CMSG V MSG_ADD_POPUP_MENU |CI$392 I S 5086 CMSG I GET_REG_KEY_ENUM |CI$393 I S 5087 CMSG I GET_REG_INTEGER_VALUE_ENUM |CI$394 S I 5088 CMSG I GET_REG_STRING_VALUE_ENUM |CI$395 S S 5089 CMSG V SET_DDE_SERVER_LINK |CI$396 I 5090 // Old internet client and NetMeeting removed... 5091 CMSG V SET_PSUSERNAME |CI$3D7 S 5092 CMSG S GET_PSUSERNAME |CI$3D8 5093 CMSG V SET_PSPASSWORD |CI$3D9 S 5094 CMSG S GET_PSPASSWORD |CI$3DA 5095 CMSG V SET_PSACCEPTTYPES |CI$3DB S 5096 CMSG S GET_PSACCEPTTYPES |CI$3DC 5097 CMSG I GET_DESTROY_RUBBER_BAND |CI$3DD I 5098 CMSG I GET_CREATE_RUBBER_BAND |CI$3DE I 5099 CMSG I GET_CREATE_RUBBER_BAND_MANUAL |CI$3DF I 5100 CMSG I GET_TRACK_DF_WINDOW |CI$3E0 I 5101 CMSG I GET_TRACK_CURRENT_WINDOW |CI$3E1 5102 CMSG I GET_TRACK_NUMBER_OF_BANDS |CI$3E2 5103 CMSG I GET_TRACK_GET_RECTANGLE |CI$3E3 I I // second param is actually a pointer 5104 CMSG I GET_TRACK_SET_POSITION |CI$3E4 I 5105 CMSG V SET_BAND_POSITION |CI$3E5 I I 5106 CMSG V SET_BAND_SIZE |CI$3E6 I I 5107 CMSG V SET_BAND_TRANSPARENT_FLAG |CI$3E7 I 5108 CMSG V SET_BAND_SIZE_MOVE_FLAG |CI$3E8 I 5109 CMSG V SET_BAND_SIZE_MOVE_MIN |CI$3E9 I I 5110 CMSG V SET_BAND_MULTISELECT_FLAG |CI$3EA I 5111 CMSG I GET_VIRTUAL_KEY |CI$3EB 5112 CMSG I GET_SHIFT_STATE |CI$3EC 5113 CMSG S GET_OBJECT_LABEL |CI$3ED 5114 CMSG I GET_OBJECT_ACCESS |CI$3EE 5115 CMSG V MSG_HEADER_ENDTRACK |CI$3EF 5116 5117 5118 // Message number replacements without parameters. 5119 5120 //#REPLACE GET_ITEM_OPTIONS GET_ITEM_OPTIONS@1 5121 //#REPLACE GET_ITEM_ENTRY_MSG GET_ITEM_ENTRY_MSG@1 5122 //#REPLACE GET_ITEM_EXIT_MSG GET_ITEM_EXIT_MSG@1 5123 //#REPLACE GET_ITEM_VALIDATE_MSG GET_ITEM_VALIDATE_MSG@1 5124 //#REPLACE GET_CHECKBOX_ITEM_STATE GET_CHECKBOX_ITEM_STATE@1 5125 //#REPLACE MSG_PASTE MSG_PASTE@3 5126 //#REPLACE MSG_CUT MSG_CUT@3 5127 //#REPLACE MSG_COPY MSG_COPY@3 5128 5129 5130 Define USE_RGB_COLORS // this determines if RGB support is being used 5131 5132 #IFDEF USE_RGB_COLORS 5133 5134 CMSG V SET_TextColor |CI$0266 I 5135 CMSG I GET_TextColor |CI$0267 5136 CMSG V SET_Color |CI$0268 I 5137 CMSG I GET_Color |CI$0269 5138 CMSG V SET_CURRENTCELLCOLOR |CI$0318 I 5139 CMSG I GET_CURRENTCELLCOLOR |CI$0319 5140 CMSG V SET_CURRENTCELLTEXTCOLOR |CI$027D I 5141 CMSG I GET_CURRENTCELLTEXTCOLOR |CI$027E 5142 CMSG V SET_ITEMCOLOR |CI$033C I I 5143 CMSG I GET_ITEMCOLOR |CI$0237 I 5144 CMSG V SET_ITEMTEXTCOLOR |CI$027F I I 5145 CMSG I GET_ITEMTEXTCOLOR |CI$0280 I 5146 CMSG V SET_CURRENTROWCOLOR |CI$02B8 I 5147 CMSG I GET_CURRENTROWCOLOR |CI$02B9 5148 CMSG V SET_CURRENTROWTEXTCOLOR |CI$027B I 5149 CMSG I GET_CURRENTROWTEXTCOLOR |CI$027C 5150 5151 #ENDIF 5152 5153 CMSG V MSG_SETVSCROLLINFO |CI$04A6 I I I //sav_cur_obj, 5154 CMSG V MSG_SETVSCROLLPOS |CI$04A7 I 5155 CMSG V MSG_SETVSCROLLBOX |CI$04A8 I I 5156 5157 // anchor logic added with VDFX 5158 CMSG V SET_PEANCHORS |CI$51A 5159 CMSG I GET_PEANCHORS |CI$51B 5160 CMSG V SET_PBANCHORCREATED |CI$51C 5161 CMSG I GET_PBANCHORCREATED |CI$51D 5162 CMSG V SET_PBANCHORSTATE |CI$51E 5163 CMSG I GET_PBANCHORSTATE |CI$51F 5164 CMSG V SET_PIANCHORLEFT |CI$520 5165 CMSG I GET_PIANCHORLEFT |CI$521 5166 CMSG V SET_PIANCHORTOP |CI$522 5167 CMSG I GET_PIANCHORTOP |CI$523 5168 CMSG V SET_PIANCHORRIGHT |CI$524 5169 CMSG I GET_PIANCHORRIGHT |CI$525 5170 CMSG V SET_PIANCHORBOTTOM |CI$526 5171 CMSG I GET_PIANCHORBOTTOM |CI$527 5172 CMSG V SET_PIMINSIZE |CI$528 5173 CMSG I GET_PIMINSIZE |CI$529 5174 CMSG V SET_PIMAXSIZE |CI$52A 5175 CMSG I GET_PIMAXSIZE |CI$52B 5176 CMSG I MSG_DOCREATEANCHORS |CI$518 5177 CMSG I MSG_DOAPPLYANCHORS |CI$519 5178 CMSG I GET_GETCONTAINERCLIENTSIZE |CI$538 5179 // form button get values exposed 5180 CMSG I GET_FORM_BUTTON |CI$052C 5181 CMSG I GET_FORM_BUTTON_VALUE |CI$052D 5182 CMSG I GET_FORM_BUTTON_BITMAP |CI$052E 5183 5184 // added to VDF 8.2 5185 CMSG I GET_PEGRIDLINECOLOR |CI$0545 // get/sets color of grid lines 5186 CMSG I SET_PEGRIDLINECOLOR |CI$0546 5187 CMSG I GET_PEDISABLEDTEXTCOLOR |CI$0547 // get/sets disabled (shadowed) text color 5188 CMSG I SET_PEDISABLEDTEXTCOLOR |CI$0548 5189 CMSG I GET_PEDISABLEDCOLOR |CI$0549 // get/sets disabled (shadowed) background color 5190 CMSG I SET_PEDISABLEDCOLOR |CI$054a 5191 CMSG I GET_PBUSEDISABLEDCOLOR |CI$054b 5192 CMSG I SET_PBUSEDISABLEDCOLOR |CI$054c 5193 CMSG I MSG_ONWMMOUSEWHEEL |CI$054d // lowlevel mouse event for grids 5194 // added 10.0 5195 CMSG X MSG_SUSPENDGUI |CI$0587 5196 CMSG X MSG_PUMPMSGQUEUE |CI$0588 5197 // added 10.1 5198 CMSG X GET_SELECTCLIENTCERTIFICATE |CI$058c // http 5199 CMSG X GET_PBSHOWERRORDIALOG |CI$058d // http 5200 CMSG X SET_PBSHOWERRORDIALOG |CI$058e // http 5201 5202// // Added 11.0 to support combos in grids and rich edit 5203 CMSG X SET_COLUMN_COMBO_STATE |CI$05eb 5204 CMSG X GET_COLUMN_COMBO_STATE |CI$05ec 5205 CMSG X MSG_COLUMN_COMBO_ADD_ITEM |CI$05ed 5206 CMSG X MSG_COLUMN_COMBO_DELETE_ITEM |CI$05ee 5207 CMSG X SET_COLUMN_COMBO_SORT_STATE |CI$05ef 5208 CMSG X GET_COLUMN_COMBO_SORT_STATE |CI$05f0 5209 CMSG X SET_COLUMN_COMBO_LISTROWCOUNT |CI$05f1 5210 CMSG X GET_COLUMN_COMBO_LISTROWCOUNT |CI$05f2 5211 CMSG X MSG_COLUMN_COMBO_DELETE_DATA |CI$05f3 5212 CMSG X GET_COLUMN_COMBO_ITEM_COUNT |CI$05f4 5213 CMSG X GET_COLUMN_COMBO_VALUE |CI$05f5 5214 CMSG X GET_COLUMN_COMBO_FIND |CI$05f6 5215 CMSG X MSG_COLUMN_COMBO_REFRESH |CI$05f7 5216 CMSG X SET_COLUMN_COMBO_ENTRY_STATE |CI$05f8 5217 CMSG X GET_COLUMN_COMBO_ENTRY_STATE |CI$05f9 5218 CMSG X SET_PBCOMBONAVIGATION |CI$05fa 5219 CMSG X GET_PBCOMBONAVIGATION |CI$05fb 5220 5221 // rich edit messages 5222 CMSG X SET_PBBOLD |CI$058f 5223 CMSG X SET_PBSTRIKEOUT |CI$0590 5224 CMSG X SET_PBSUPERSCRIPT |CI$0591 5225 CMSG X SET_PBSUBSCRIPT |CI$0592 5226 CMSG X SET_PBLINK |CI$0593 5227 CMSG X SET_PBPROTECT |CI$0594 5228 CMSG X SET_PEPITCHANDFAMILY |CI$0595 5229 CMSG X SET_PECHARSET |CI$0596 5230 CMSG X GET_PBBOLD |CI$0597 5231 CMSG X GET_PBSTRIKEOUT |CI$0598 5232 CMSG X GET_PBSUPERSCRIPT |CI$0599 5233 CMSG X GET_PBSUBSCRIPT |CI$059a 5234 CMSG X GET_PBLINK |CI$059b 5235 CMSG X GET_PBPROTECT |CI$059c 5236 CMSG X GET_PEPITCHANDFAMILY |CI$059d 5237 CMSG X GET_PECHARSET |CI$059e 5238 CMSG X SET_TEXTBACKCOLOR |CI$059f 5239 CMSG X GET_TEXTBACKCOLOR |CI$05a0 5240 5241 CMSG X SET_PEBULLETS |CI$05a1 5242 CMSG X SET_PIPARAGRAPHINDENT |CI$05a2 5243 CMSG X SET_PIRIGHTMARGIN |CI$05a3 5244 CMSG X SET_PIOFFSETINDENT |CI$05a4 5245 CMSG X SET_PEALIGNMENT |CI$05a5 5246 CMSG X SET_PISPACINGBEFORE |CI$05a6 5247 CMSG X SET_PISPACINGAFTER |CI$05a7 5248 CMSG X SET_PILINESPACING |CI$05a8 5249 CMSG X SET_PELINESPACINGTYPE |CI$05a9 5250 CMSG X SET_PIBULLETSTART |CI$05aa 5251 CMSG X SET_PEBULLETSTYLE |CI$05ab 5252 CMSG X SET_PIBULLETTAB |CI$05ac 5253 CMSG X GET_PEBULLETS |CI$05ad 5254 CMSG X GET_PIPARAGRAPHINDENT |CI$05ae 5255 CMSG X GET_PIRIGHTMARGIN |CI$05af 5256 CMSG X GET_PIOFFSETINDENT |CI$05b0 5257 CMSG X GET_PEALIGNMENT |CI$05b1 5258 CMSG X GET_PISPACINGBEFORE |CI$05b2 5259 CMSG X GET_PISPACINGAFTER |CI$05b3 5260 CMSG X GET_PILINESPACING |CI$05b4 5261 CMSG X GET_PELINESPACINGTYPE |CI$05b5 5262 CMSG X GET_PIBULLETSTART |CI$05b6 5263 CMSG X GET_PEBULLETSTYLE |CI$05b7 5264 CMSG X GET_PIBULLETTAB |CI$05b8 5265 5266 CMSG X GET_PBAUTOURL |CI$05b9 5267 CMSG X SET_PBAUTOURL |CI$05ba 5268 CMSG X SET_PBWRAP |CI$05bb 5269 CMSG X GET_PBWRAP |CI$05bc 5270 CMSG X GET_FINDTEXT |CI$05bd 5271 CMSG X GET_REPLACEALL |CI$05be 5272 CMSG X MSG_REPLACESEL |CI$05bf 5273 CMSG X MSG_SETSEL |CI$05c0 5274 CMSG X GET_SELSTART |CI$05c1 5275 CMSG X GET_SELEND |CI$05c2 5276 5277 CMSG X GET_PBCANUNDO |CI$05c3 5278 CMSG X MSG_CLEARUNDOBUFFER |CI$05c4 5279 CMSG X GET_FIRSTVISIBLELINE |CI$05c5 5280 CMSG X GET_LINE |CI$05c6 5281 CMSG X GET_LINEFROMCHAR |CI$05c7 5282 CMSG X GET_FIRSTCHARINLINEPOS |CI$05c8 5283 CMSG X GET_LINELENGTH |CI$05c9 5284 CMSG X MSG_SCROLLLINES |CI$05ca 5285 CMSG X MSG_SCROLLCARET |CI$05cb 5286 CMSG X GET_PBCANPASTE |CI$05cc 5287 CMSG X GET_PBCANREDO |CI$05cd 5288 CMSG X GET_UNDOTYPE |CI$05ce 5289 CMSG X GET_REDOTYPE |CI$05cf 5290 CMSG X GET_SELTEXT |CI$05d0 5291 CMSG X GET_TEXTRANGE |CI$05d1 5292 CMSG X MSG_HIDESELECTION |CI$05d2 5293 CMSG X MSG_REDO |CI$05d3 5294 CMSG X MSG_STOPGROUPTYPING |CI$05d4 5295 CMSG X GET_PAVALUE |CI$05d5 5296 CMSG X SET_PAVALUE |CI$05d6 5297 5298 CMSG X MSG_ONLINKCLICKED |CI$05d7 5299 5300 CMSG X SET_PBITALICS |CI$05dd 5301 CMSG X GET_PBITALICS |CI$05de 5302 CMSG X SET_PBUNDERLINE |CI$05df 5303 CMSG X GET_PBUNDERLINE |CI$05e0 5304 CMSG X SET_PSTYPEFACE |CI$05e1 5305 CMSG X GET_PSTYPEFACE |CI$05e2 5306 CMSG X SET_PIFONTSIZE |CI$05e3 5307 CMSG X GET_PIFONTSIZE |CI$05e4 5308 CMSG X SET_PIFONTWEIGHT |CI$05e5 5309 CMSG X GET_PIFONTWEIGHT |CI$05e6 5310 5311 CMSG X GET_CHARCOUNT |CI$05e7 5312 CMSG X SET_PIMAXCHARS |CI$05e8 5313 CMSG X GET_PIMAXCHARS |CI$05e9 5314 CMSG X MSG_APPENDTEXT |CI$05ea 5315 CMSG X MSG_ONSELECTIONCHANGED |CI$05fd 5316 5317#ENDCOMMAND 5318 5319 5320#COMMAND Define$BuiltIn$XML$Messages 5321 5322 CMSG V SET_XMLINTERFACE |CI$03F0 I 5323 CMSG I GET_XMLINTERFACE |CI$03F1 5324 5325 5326 // NODE Properties 5327 5328 CMSG I GET_PHATTRIBUTES |CI$03F2 5329 CMSG S GET_PSBASENAME |CI$03F3 5330 CMSG I GET_PHCHILDNODES |CI$03F4 5331 CMSG I GET_PHDEFINITION |CI$03F5 5332 CMSG I GET_PHFIRSTCHILD |CI$03F6 5333 CMSG I GET_PHLASTCHILD |CI$03F7 5334 CMSG I GET_PHNEXTSIBLING |CI$03F8 5335 CMSG S GET_PSNAMESPACEURI |CI$03F9 5336 CMSG S GET_PSNODENAME |CI$03FA 5337 CMSG I GET_PINODETYPE |CI$03FB 5338 CMSG S GET_PSNODETYPESTRING |CI$03FC 5339 CMSG I GET_PHOWNERDOCUMENT |CI$03FD 5340 CMSG I GET_PHPARENTNODE |CI$03FE 5341 CMSG I GET_PBPARSED |CI$03FF 5342 CMSG S GET_PSPREFIX |CI$0400 5343 CMSG I GET_PHPREVIOUSSIBLING |CI$0401 5344 CMSG I GET_PBSPECIFIED |CI$0402 5345 CMSG S GET_PSTEXT |CI$0403 5346 CMSG S GET_PSXML |CI$0404 5347 5348 // Node Read write properties 5349 5350 CMSG V SET_PSDATATYPE |CI$0405 S 5351 CMSG S GET_PSDATATYPE |CI$0406 5352 CMSG V SET_PVNODETYPEDVALUE |CI$0407 I I 5353 CMSG I GET_PVNODETYPEDVALUE |CI$0408 I 5354 CMSG V SET_PSNODEVALUE |CI$0409 S 5355 CMSG S GET_PSNODEVALUE |CI$040A 5356 5357 // Node Methods 5358 5359 CMSG I GET_APPENDCHILD |CI$040B I 5360 CMSG I GET_CLONEINFCNODE |CI$040C I 5361 CMSG I GET_HASCHILDNODES |CI$040D 5362 CMSG I GET_INSERTBEFORE |CI$040E I I 5363 CMSG I GET_REMOVECHILD |CI$040F I 5364 CMSG I GET_REPLACECHILD |CI$0410 I I 5365 CMSG I GET_SELECTNODES |CI$0411 S 5366 CMSG I GET_SELECTSINGLENODE |CI$0412 S 5367 5368 // Node Collections 5369 // READONLY PROPERTIES 5370 5371 CMSG I GET_PHITEM |CI$0413 I 5372 CMSG I GET_PILENGTH |CI$0414 5373 5374 CMSG I GET_ENUMNODELIST |CI$0415 I 5375 CMSG I GET_RESET |CI$0416 5376 5377 // Named Node Map 5378 5379 CMSG I GET_NAMEDITEM |CI$0417 S 5380 CMSG I GET_QUALIFIEDITEM |CI$0418 S S 5381 CMSG I GET_REMOVENAMEDITEM |CI$0419 S 5382 CMSG I GET_REMOVEQUALIFIEDITEM |CI$041A S S 5383 CMSG I GET_SETNAMEDITEM |CI$041B I 5384 5385 // XML DOM Document 5386 // Read only properties 5387 5388 CMSG I GET_PHDOCTYPE |CI$041C 5389 CMSG I GET_PHIMPLEMENTATION |CI$041D 5390 CMSG I GET_PHPARSEERROR |CI$041E 5391 CMSG I GET_PBREADYSTATE |CI$041F 5392 CMSG S GET_PSURL |CI$0420 5393 5394 // Read Write Properties 5395 5396 CMSG V SET_PBASYNC |CI$0421 I 5397 CMSG I GET_PBASYNC |CI$0422 5398 CMSG V SET_PHDOCUMENTELEMENT |CI$0423 I 5399 CMSG I GET_PHDOCUMENTELEMENT |CI$0424 5400 CMSG V SET_PBPRESERVEWHITESPACE |CI$0425 I 5401 CMSG I GET_PBPRESERVEWHITESPACE |CI$0426 5402 CMSG V SET_PBRESOLVEEXTERNALS |CI$0427 I 5403 CMSG I GET_PBRESOLVEEXTERNALS |CI$0428 5404 CMSG V SET_PBVALIDATEONPARSE |CI$0429 I 5405 CMSG I GET_PBVALIDATEONPARSE |CI$042A 5406 5407 // Events 5408 5409 CMSG I MSG_ONDATAAVAILABLE |CI$042B 5410 CMSG I MSG_ONREADYSTATECHANGE |CI$042C 5411 5412 // Methods 5413 5414 CMSG I GET_ABORT |CI$042D 5415 CMSG I GET_ELEMENTSBYTAGNAME |CI$042E S 5416 CMSG I GET_LOADDOCUMENT |CI$042F S 5417 CMSG I GET_LOADXML |CI$0430 S 5418 CMSG I GET_NODEFROMID |CI$0431 S 5419 CMSG I GET_SAVEDOCUMENT |CI$0432 S 5420 5421 // Parse Error 5422 // Read Only Properties 5423 5424 CMSG I GET_PIERRORCODE |CI$0433 5425 CMSG I GET_PIFILEPOS |CI$0434 5426 CMSG I GET_PILINE |CI$0435 5427 CMSG I GET_PILINEPOS |CI$0436 5428 CMSG S GET_PSREASON |CI$0437 5429 CMSG S GET_PSSRCTEXT |CI$0438 5430 CMSG S GET_PSERRORURL |CI$0439 5431 5432 // DOM Implementation 5433 // Method 5434 5435 CMSG I GET_HASFEATURE |CI$043A S S 5436 5437 // Methods 5438 5439 CMSG S GET_SUBSTRINGDATA |CI$043B I I 5440 CMSG I GET_APPENDDATA |CI$043C S 5441 CMSG I GET_INSERTDATA |CI$043D I S 5442 CMSG I GET_DELETEDATA |CI$043E I I 5443 CMSG I GET_REPLACEDATA |CI$043F I I S 5444 5445 // Attributes 5446 5447 CMSG S GET_PSNAME |CI$0440 5448 5449 // Elements 5450 // Read Only properties 5451 5452 CMSG S GET_PSTAGNAME |CI$0441 5453 5454 // Methods 5455 5456 CMSG V SET_ATTRIBUTEVALUE |CI$0442 S S 5457 CMSG S GET_ATTRIBUTEVALUE |CI$0443 S 5458 CMSG I GET_REMOVEATTRIBUTE |CI$0444 S 5459 CMSG I GET_ATTRIBUTENODE |CI$0445 S 5460 CMSG V SET_ATTRIBUTENODE |CI$0446 I 5461 CMSG I GET_REMOVEATTRIBUTENODE |CI$0447 I 5462 //CMSG I GET_ELEMENTSBYTAGNAME |CI$0448 S 5463 5464 // DOM Text 5465 // Methods 5466 5467 CMSG I GET_SPLITTEXT |CI$0449 I 5468 5469 // DOM Processing Instruction 5470 // Read Only Properties 5471 CMSG S GET_PSTARGET |CI$044A 5472 5473 // DOM Document Type 5474 CMSG I GET_PHENTITIES |CI$044B 5475 CMSG I GET_PHNOTATIONS |CI$044C 5476 5477 // DOM Notations 5478 5479 CMSG S GET_PSPUBLICID |CI$044D 5480 CMSG S GET_PSSYSTEMID |CI$044E 5481 CMSG S GET_PSNOTATIONNAME |CI$044F 5482 5483 // added to document 5484 5485 CMSG I GET_CREATEATTRIBUTE |CI$0450 S 5486 CMSG I GET_CREATECDATASECTION |CI$0451 S 5487 CMSG I GET_CREATECOMMENT |CI$0452 S 5488 CMSG I GET_CREATEDOCUMENTFRAGMENT |CI$0453 5489 CMSG I GET_CREATEELEMENT |CI$0454 S 5490 CMSG I GET_CREATEENTITYREFERENCE |CI$0455 S 5491 CMSG I GET_CREATENODE |CI$0456 I S S 5492 CMSG I GET_CREATEPROCESSINGINSTRUCTION |CI$0457 S S 5493 CMSG I GET_CREATETEXTNODE |CI$0458 S 5494 5495 // added to element (r/w property) 5496 5497 CMSG V SET_PSTEXT |CI$0459 S 5498 CMSG I GET_CHANGENODETYPE |CI$045A I I 5499 CMSG I GET_PHELEMENTITEM |CI$045B I 5500 5501 CMSG S GET_TRANSFORMNODE |CI$04A9 I 5502 CMSG A GET_PAXML |CI$0502 5503 CMSG I GET_LOADXMLFROMADDRESS |CI$0503 A 5504 CMSG I GET_TRANSFORMNODETOADDRESS |CI$0517 5505#ENDCOMMAND 5506 5507#COMMAND Define$BuiltIn$FlexCom2$Messages 5508 5509 CMSG S GET_PSPROGID |CI$0554 5510 CMSG S SET_PSPROGID |CI$0555 5511 CMSG S GET_pvComObject |CI$0556 5512 CMSG S SET_pvComObject |CI$0557 5513 CMSG S MSG_CREATECOMOBJECT |CI$0558 5514 CMSG S MSG_RELEASECOMOBJECT |CI$0559 5515 CMSG S MSG_COMADDREF |CI$055a 5516 CMSG S GET_COMQUERYINTERFACE |CI$055b 5517 CMSG S MSG_PREPAREPARAMS |CI$055c 5518 CMSG S MSG_DEFINEPARAM |CI$055d 5519 CMSG S GET_INVOKECOMMETHOD |CI$055e 5520 CMSG S MSG_INVOKECOMMETHOD |CI$055e 5521 CMSG S GET_COMPROPERTY |CI$055f 5522 CMSG S SET_COMPROPERTY |CI$0560 5523 CMSG S MSG_REGISTERCOMEVENT |CI$0561 5524 CMSG S GET_OLECONTAINER |CI$0562 5525 CMSG S GET_OLEFRAMECONTAINER |CI$0563 5526 CMSG S MSG_ONDFFOCUS |CI$0564 5527 CMSG S MSG_DISPLAYPROPERTYSHEET |CI$0565 5528 CMSG S MSG_CREATECOMOBJECTFROMFILE |CI$0566 5529 CMSG S MSG_SAVETOFILE |CI$0567 5530 CMSG S MSG_SAVETORESOURCEFILE |CI$0568 5531 CMSG S GET_PSRESOURCEFILE |CI$0569 5532 CMSG S SET_PSRESOURCEFILE |CI$056a 5533 CMSG S GET_PSRESOURCENAME |CI$056b 5534 CMSG S SET_PSRESOURCENAME |CI$056c 5535 CMSG S SET_PSRESOURCEDATA |CI$056d 5536 CMSG S GET_PEAUTOCREATE |CI$056e 5537 CMSG S SET_PEAUTOCREATE |CI$056f 5538 CMSG S GET_PSLICENSEKEY |CI$0570 5539 CMSG S SET_PSLICENSEKEY |CI$0571 5540 CMSG S MSG_REGISTERPROPERTYCHANGEEVENT |CI$0572 5541 CMSG S GET_PHDISPATCHDRIVER |CI$0573 5542 CMSG S MSG_CLEARDISPATCHDRIVER |CI$0574 5543 CMSG S MSG_ONCREATE |CI$0575 5544 CMSG S MSG_ONINPLACEACTIVATE |CI$0576 5545 CMSG S GET_COMLOADPICTURE |CI$0577 5546 CMSG S GET_COMACTIVEOBJECT |CI$0578 5547 CMSG S GET_PSEVENTID |CI$057C 5548 CMSG S SET_PSEVENTID |CI$057D 5549 CMSG S GET_PABASE64RESOURCEFROMFILE |CI$0644 // internal - added for 12.0 migration 5550 5551#ENDCOMMAND 5552 5553#COMMAND Define$BuiltIn$Transfer$Messages 5554 // ftp and http transfer 5555 5556 CMSG S GET_PSREMOTEHOST |CI$045C 5557 CMSG V SET_PSREMOTEHOST |CI$045D S 5558 CMSG S GET_PSAGENT |CI$045E 5559 CMSG V SET_PSAGENT |CI$045F S 5560 CMSG S GET_PSPROXY |CI$0460 5561 CMSG V SET_PSPROXY |CI$0461 S 5562 CMSG I GET_PIREMOTEPORT |CI$0462 5563 CMSG V SET_PIREMOTEPORT |CI$0463 I 5564 CMSG I GET_PETRANSFERFLAGS |CI$0464 5565 CMSG V SET_PETRANSFERFLAGS |CI$0465 I 5566 CMSG I GET_PIBUFFERSIZE |CI$0466 5567 CMSG V SET_PIBUFFERSIZE |CI$0467 I 5568 CMSG I GET_ROOTHANDLE |CI$0468 5569 CMSG I GET_LASTERRORCODE |CI$0469 5570 5571 CMSG I GET_FILESIZE |CI$046A S 5572 CMSG I GET_FILEATTRIBUTES |CI$046B S 5573 CMSG I GET_PETRANSFERTYPE |CI$046C 5574 CMSG V SET_PETRANSFERTYPE |CI$046D I 5575 CMSG I GET_PBPASSIVEMODE |CI$046E 5576 CMSG V SET_PBPASSIVEMODE |CI$046F I 5577 CMSG I GET_CONNECTIONHANDLE |CI$0470 5578 CMSG I GET_CONNECT |CI$0471 5579 CMSG I GET_DISCONNECT |CI$0472 5580 CMSG S GET_CURRENTDIRECTORY |CI$0473 5581 CMSG I GET_CHANGEDIRECTORY |CI$0474 S 5582 CMSG I GET_UPLOADFILE |CI$0475 S S 5583 CMSG I GET_DOWNLOADFILE |CI$0476 S S 5584 CMSG I GET_CREATEFTPDIRECTORY |CI$0477 S 5585 CMSG I GET_REMOVEFTPDIRECTORY |CI$0478 S 5586 CMSG I GET_RENAMEFTPFILE |CI$0479 S S 5587 CMSG I GET_DELETEFTPFILE |CI$047A S 5588 CMSG S GET_FINDFIRSTFTPFILE |CI$047B S 5589 CMSG S GET_FINDNEXTFTPFILE |CI$047C 5590 CMSG V MSG_ENDFTPFILEFIND |CI$047D 5591 CMSG I GET_FTPFILEEXIST |CI$047E S 5592 CMSG V MSG_DIRECTORYLIST |CI$047F S 5593 CMSG V MSG_CANCELTRANSFER |CI$0480 5594 CMSG V MSG_ONTRANSFERSTATUS |CI$0481 I I 5595 CMSG V MSG_ONDIRECTORYLIST |CI$0482 S I 5596 5597 CMSG S GET_PSPROTOCOLVERSION |CI$0483 5598 CMSG V SET_PSPROTOCOLVERSION |CI$0484 S 5599 CMSG S GET_PSSAVEASFILE |CI$0485 5600 CMSG V SET_PSSAVEASFILE |CI$0486 S 5601 CMSG I GET_ADDHEADER |CI$0487 S S 5602 CMSG V MSG_CLEARHEADERS |CI$0488 5603 CMSG I GET_HTTPGETREQUEST |CI$0489 S 5604 //SF - The arguments are not used, see command cmsg for definition, 5605 //nowadays it just makes a replace, so we simply supply bogus arguments 5606 CMSG X GET_HTTPPOSTADDRREQUEST |CI$048A 5607 CMSG X GET_HTTPPUTADDRREQUEST |CI$048B 5608 CMSG X MSG_ONDATARECEIVED |CI$048C 5609 // added to 10.0 5610 CMSG X GET_RESPONSEHEADER |CI$0589 5611 CMSG X GET_RESPONSESTATUSCODE |CI$058a 5612 5613 5614#ENDCOMMAND 5615 5616 5617#COMMAND Define$BuiltIn$WAS$Messages 5618 CMSG V MSG_START_WEBAPP_SESSION |CI$048D 5619 CMSG V MSG_OUTPUTHTML |CI$048E S 5620 CMSG V MSG_OUTPUTPLAINTEXT |CI$048F S 5621 CMSG V MSG_LOGEVENT |CI$0490 I S 5622 CMSG S GET_HTMLFORMVALUE |CI$0491 S 5623 CMSG S GET_HTMLQUERYSTRING |CI$0492 S 5624 CMSG V MSG_OUTPUTIMAGE |CI$0493 S 5625 CMSG V MSG_OUTPUTTEXTFILE |CI$0494 S 5626 CMSG V MSG_REQUESTFILERECORDS |CI$0495 I 5627 CMSG V MSG_REQUESTFILEFIELDVALUES |CI$0496 I 5628 CMSG S GET_HTTPCOOKIE |CI$0497 S S 5629 CMSG V SET_HTTPCOOKIE |CI$0498 V 5630 CMSG V SET_HTTPCOOKIEATTRIB |CI$0499 V 5631 CMSG S GET_HTTPSERVERVARIABLE |CI$049A S 5632 CMSG V MSG_ONSETFILERECORDID |CI$049B V 5633 CMSG V MSG_ONSETFILEFIELDVALUE |CI$049C V 5634 CMSG S GET_ONDDVALUE |CI$049D V 5635 CMSG I GET_ONREQUESTDELETE |CI$049E S S 5636 CMSG I GET_ONREQUESTFIND |CI$049F V 5637 CMSG I GET_ONREQUESTSAVE |CI$04A0 S S 5638 CMSG I GET_ONDOPROCESS |CI$04A1 V 5639 CMSG I GET_ONREQUESTCLEAR |CI$04A2 V 5640 CMSG I GET_ONDFFUNC |CI$04A3 S S 5641 CMSG I GET_ONREQUESTFINDBYRECID |CI$04A4 V 5642 CMSG I GET_ONREQUESTDDUPDATE |CI$04A5 V 5643 5644 5645 5646 CMSG V MSG_ONATTACHSESSION |CI$0500 5647 CMSG V MSG_ONDETACHSESSION |CI$0501 5648 CMSG I GET_DOCALL |CI$0504 A 5649 CMSG S GET_INTERFACEMESSAGENAME |CI$0505 S 5650 CMSG I GET_INTERFACEMESSAGEID |CI$0506 I 5651 CMSG S GET_INTERFACEMESSAGEPARAMS |CI$0507 S 5652 CMSG S GET_INTERFACEMESSAGECOMMENT |CI$0508 S 5653 CMSG I GET_FINDSERVICEINDEX |CI$0509 S 5654 CMSG I GET_FINDMESSAGEID |CI$050A S 5655 CMSG V MSG_REGISTERSIMPLEINTERFACE |CI$050B V 5656 CMSG V MSG_REMOVEINTERFACE |CI$050C I 5657 CMSG V MSG_REMOVEALLINTERFACES |CI$050D 5658 CMSG V SET_PHOWEBSERVICEIMPLEMENTOR |CI$050E I 5659 CMSG I GET_PHOWEBSERVICEIMPLEMENTOR |CI$050F 5660 CMSG V MSG_REGISTERINTERFACE |CI$0510 V 5661 CMSG I GET_MIMICCALL |CI$0511 V 5662 CMSG I GET_INTERFACEMESSAGECOUNT |CI$0512 5663 CMSG I GET_WEBREQUESTARGUMENTCOUNT |CI$0513 5664 CMSG S GET_WEBREQUESTSERVICENAME |CI$0514 5665 CMSG S GET_WEBREQUESTARGUMENT |CI$0515 I 5666 CMSG I GET_INTERFACEMESSAGEISEXTENDED |CI$0516 I 5667 // added to 10.0 for Webservice support 5668 CMSG X GET_DESERIALIZEXML |CI$057e 5669 CMSG X GET_SERIALIZEXML |CI$057f 5670 CMSG X MSG_DISPOSEOBJECT |CI$0580 5671 CMSG X MSG_WEBSERVICEEXCEPTION |CI$058B 5672 5673 CMSG X GET_INTERFACEMESSAGEPARAMCOUNT |CI$0581 5674 CMSG X GET_INTERFACEMESSAGEPARAMTYPE |CI$0582 5675 CMSG X GET_INTERFACEMESSAGEPARAMTYPENAME |CI$0583 5676 CMSG X GET_INTERFACEMESSAGEPARAMDIMCOUNT |CI$0584 5677 CMSG X GET_INTERFACEMESSAGEPARAMNAME |CI$0585 5678 CMSG X GET_INTERFACETYPEDEFINITIONS |CI$0586 5679 CMSG X GET_INTERFACEMESSAGEPARAMBYREF |CI$05fc 5680 5681 5682 5683 CMSG X GET_CURRENTROWID |CI$05d8 5684 CMSG X GET_HASRECORD |CI$05d9 5685 CMSG X MSG_ONNEWCURRENTRECORD |CI$05da 5686 CMSG X MSG_FINDBYROWID |CI$05db 5687 CMSG X MSG_READBYROWID |CI$05dc 5688 5689 CMSG X GET_DFSTRICMP |CI$05fe 5690 5691 // File Drag&Drop Support: added to 12.0 5692 CMSG X GET_PBACCEPTDROPFILES |CI$0648 5693 CMSG X SET_PBACCEPTDROPFILES |CI$0649 5694 CMSG X MSG_ONFILEDROPPED |CI$064a 5695 CMSG X MSG_ONFILEDROPPEDINTERNAL |CI$064b 5696 5697 // Send EnableNewModalityLogic turns on and off the new modality logic which determines if 5698 // disabling the main_window also disables windows in other ownerless top level windows. By default this 5699 // is True and it should only be changed with the greatest of care and reset ASAP. This is used to make 5700 // the old winprint viewer work. 5701 CMSG X MSG_ENABLENEWMODALITYLOGIC |CI$64e 5702 5703 // Support for cIdleHandler added 12.1 5704 CMSG X SET_PBENABLED |CI$601 5705 CMSG X GET_PBENABLED |CI$61f 5706 CMSG X MSG_ONIDLE |CI$61c 5707 // added to all UI objects to better support menus 5708 CMSG X GET_CANUNDO |CI$67a 5709 CMSG X GET_CANCOPY |CI$67b 5710 CMSG X GET_CANDELETE |CI$67c 5711 CMSG X GET_CANCUT |CI$67d 5712 CMSG X GET_CANPASTE |CI$67e 5713 CMSG X GET_CANSELECT |CI$67f 5714 CMSG X GET_CANREDO |CI$680 5715 5716 // added 14.0 5717 5718 CMSG X MSG_SETHSCROLLBOX |CI$0685 5719 CMSG X Get_pbSizeToClientArea |CI$68E 5720 CMSG X Set_pbSizeToClientArea |CI$68F 5721 CMSG X Get_GuiWindowSize |CI$690 5722 CMSG X Get_DialogToGui |CI$691 5723 CMSG X Get_GuiToDialog |CI$692 5724 // this is the same as get_client_size. We added another name 5725 // and will be considering the old name to be obsolete. This one 5726 // is clearer 5727 CMSG X Get_GuiClientSize |CI$335 5728 5729 // added in 15.1 for MSXML6 support 5730 CMSG X Get_psDomSecondLevelProperty |CI$06a1 5731 CMSG X Set_psDomSecondLevelProperty |CI$06a2 5732 CMSG X Get_pbDomSecondLevelProperty |CI$06a3 5733 CMSG X Set_pbDomSecondLevelProperty |CI$06a4 5734 CMSG X Get_piDomSecondLevelProperty |CI$06a5 5735 CMSG X Set_piDomSecondLevelProperty |CI$06a6 5736 CMSG X Get_AddExternalSchemaFile |CI$06a7 5737 CMSG X Get_AddExternalSchemaDocument |CI$06a8 5738 CMSG X Get_ValidateDocument |CI$06a9 5739 CMSG X Get_piErrorCount |CI$06aa 5740 CMSG X Get_ErrorItem |CI$06ab 5741 CMSG X Get_psErrorXPath |CI$06ac 5742 5743 // added 16.1 5744 CMSG X Get_PARENT_CHANGED_STATE |CI$06b5 5745 5746#ENDCOMMAND 5747 5748 5749// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 5750// 5751// Command: 5752// Object ObjectName IS [A|AN] ObjectClass {ImageName} {SubImageNames...} 5753// 5754// Parameters: 5755// ObjectName is a string. 5756// ObjectClass is an integer. 5757// ImageName is a string. 5758// 5759// Description: 5760// 5761// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 5762 5763// JJT-5.1 5764//#COMMAND OBJECT R "IS" "A""AN" RVD#I 5765// #IF (!0<5) // if no image try to aquire one 5766// OBJECT !1 !2 !3 !4 !1 5767// #ELSE 5768// #DATA // start up the data stream 5769// #PUSH !Zj // save the unique object label 5770// #PUSH !b // save current definition state 5771// #IF (!b = 4) // if in procedure and not class 5772// #SET ZJ$ 0 // do not inc z 5773// #ELSE 5774// #SET ZJ$ !ZB // assign the next object id 5775// #ENDIF 5776// #PUSH !Zb // save this level on stack 5777// #IFDEF !4.AGG // was this a class with sub objects? 5778// #SET ZB$ !4.AGG // sub objects will begin at the 5779// #ELSE // next object after superclass 5780// #SET ZB$ 0 // base classes start at 0 5781// #ENDIF 5782// #SET ZI$ !ZI // count this object at the current level 5783// #PUSH !Zi // and push the level 5784// #IF (!b > 0) // if (in_object | in_class) 5785// #IF (!b & 2) // obj_flag == in_class? 5786// #IF (!b & 1) // obj_flag == in_Object? 5787// #ELSE // No Name for Subobject in constructor 5788// #REPLACE !$.!1.OBJ |CI-!Zj // object_name = -current_object 5789// #ENDIF 5790// #ENDIF 5791//// (LS) removed setting of ZJ; it is NOT being used. 5792//// (Removed when max lines increased > 32k) 5793//// #SET ZJ$ (32766-!a) // a very unique label for this object 5794// #DPUSH |CS".!1" // make name from parent and child 5795// #ELSE // global object name 5796// #DPUSH |CS"!1" // assign an absolute name to object 5797// #ENDIF 5798// #CHECK U_!4 _U // does class exist? 5799// #DPUSH U_!4 // define then class the class id 5800// GET$OBJ$IMAGE !5 // define the objects image 5801// #IF ((!b & 3) = 2) // if in_class & !in_object 5802// #DPUSH !$.!1.OBJ // pick the assigned dependant number 5803// #ELSE // 5804// #IF (!b = 0) // A global object must assign # 5805// #IFDEF !1.OBJ // Is the symbol defined, name_object? 5806// #DPUSH |CI0 // pick the next dependant number 5807// #ELSE 5808// #DPUSH |CI!Zj // force the dependant number 5809//// #SET ZJ$ ($1000+!Zj) // mark as global object 5810// #SET ZJ$ ($10000000+!Zj) // using 32-bit ids now 5811// #REPLACE !1.OBJ |CI!Zj // Assign an ID to this object 5812// #ENDIF 5813// #ELSE 5814// #DPUSH |CI0 // pick the next dependant number 5815// #ENDIF 5816// #ENDIF 5817// REGISTER_OBJECT !1 5818// #DPUSH GET_!1 5819// #SET B$ (!b | 1) // we are in a object definition 5820// !A [] OBJ$CREATE |VL // create the object now 5821 5822// #IFDEF !1.OBJ 5823// #IFCLASS !1.OBJ V$ // does this object have a global? 5824// MOVE CURRENT_OBJECT TO !1.OBJ // Move the object id to its global 5825// #ENDIF 5826// #ENDIF 5827 5828// #SPUSH //save the old class name 5829// #SET $$ !4 5830// #IFSUB '!$$SC' // if flex-defined class 5831// #IFSUB '!$$SM' // if begin-instance macro exists 5832// !$$SM !$ !5 !6 !7 !8 !9 5833// #ELSE 5834// FORWARD_BEGIN_CONSTRUCT !$ !5 !6 !7 !8 !9 5835// #ENDIF 5836// #ELSE 5837// ADD$IMAGE$ARGS MSG_CONSTRUCT_OBJECT !5 !6 !7 !8 !9 //else use default 5838// #ENDIF 5839// #ENDIF 5840//#ENDCOMMAND 5841 5842#COMMAND GET$OBJ$IMAGE // identify the image type 5843 #IFDEF !1 // is it a int (dynamic?) 5844 #DPUSH !1 5845 #ELSE 5846 #IFDEF !1.N // try typical naming scheme 5847 #DPUSH !1.N 5848 #ELSE 5849 #DPUSH |CI0 // not found, make it dynamic 5850 #ENDIF 5851 #ENDIF 5852#ENDCOMMAND 5853 5854#COMMAND ADD$IMAGE$ARGS // pass sub image args to constructor 5855 #IF (!0>0) // while there are args to process 5856 #IFDEF !1 // image name a int? 5857 #IFSAME !1 MSG_CONSTRUCT_OBJECT // a special flag to get it going 5858 #DATA // start the data stream 5859 #ENDIF 5860 #DPUSH !1 // save the message or image id 5861 #ELSE 5862 #IFDEF !1.N // typical image name 5863 #DPUSH !1.N 5864 #ELSE 5865 #DPUSH |CI0 // dynamic image name 5866 #ENDIF 5867 #ENDIF 5868 ADD$IMAGE$ARGS !2 !3 !4 !5 !6 !7 !8 !9 5869 #ELSE 5870 !A [] OBJ$SEND CURRENT_OBJECT |VL 5871 #ENDIF 5872#ENDCOMMAND 5873 5874// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 5875// 5876// Command: 5877// Register_Object Object_Name 5878// 5879// Parameters: 5880// 5881// Description: 5882// 5883// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 5884 5885// JJT-5.1 5886//#COMMAND REGISTER_OBJECT R 5887// #IFDEF UI.EXISTS 5888// #ELSE 5889// USE UI 5890// #ENDIF 5891// #IFDEF GET_!1 5892// #ELSE 5893// #REPLACE GET_!1 |CI!ZH 5894// #FREG GET_!1 RETURNS INTEGER 5895// #ENDIF 5896//#ENDCOMMAND 5897 5898// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 5899// 5900// Command: 5901// ITEM_LIST 5902// 5903// Parameters: 5904// None. 5905// 5906// Description: 5907// This is the startment that markes the beginning of a list of 5908// items to be attached to the current object. A list class object 5909// can not have a item list. 5910// 5911// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 5912 5913// JJT-5.1 5914//#COMMAND ITEM_LIST . 5915// #PUSH !Zg 5916// #PUSH !Zj 5917// #SET ZJ$ !a 5918// #PUSH !Zj 5919// #SET ZG$ 0 // Set the item counter to zero. This is used to 5920// // count and assign ID's to the items. 5921// !A [] OBJ$ILIST |CI0 // Create the command to save the item count, 5922// #FREF OBJ$!Zj$INUM !a // and tell flex to update it later. 5923//#ENDCOMMAND 5924 5925// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 5926// 5927// Command: 5928// ON_Item {Value} {[SEND Message {TO Object} | BEGIN_PULL_DOWN Pull_Down_Name {Pull_Down_Image}]} 5929// 5930// Parameters: 5931// Value is a string. 5932// Message is a integer. 5933// Object is a integer. 5934// 5935// Description: 5936// The ITEM command adds the next item to the current object list. 5937// The Message is the value which will be passed to the handler 5938// if this item is selected. 5939// 5940// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 5941 5942//#COMMAND ON_ITEM NDI """SEND""BEGIN_PULL_DOWN" 5943// #IF (!0<2) 5944// #IF (!0<1) 5945// ON_ITEM '' SEND MSG_NONE 5946// #ELSE 5947// ON_ITEM !1 SEND MSG_NONE 5948// #ENDIF 5949// #ELSE 5950// #IFSAME !1 SEND 5951// ON_ITEM '' !1 !2 !3 !4 !5 !6 !7 !8 !9 5952// #ELSE 5953// #IFSAME !2 SEND 5954// #SET ZG$ !ZG // Increment the item counter 5955// #IFSAME !4 TO 5956// #CHECK !6 . 5957// #DATA 5958// #IFDEF !3 5959// #DPUSH !3 // Push the (variable) message 5960// #ELSE 5961// #IFDEF MSG_!3 5962// #DPUSH MSG_!3 // Push the constant message 5963// #ELSE 5964// #DPUSH |CI0 5965// #FREF MSG_!3 !a,0 // Forward fef the message 5966// #ENDIF 5967// #ENDIF 5968// #IFDEF !5 5969// #DPUSH !5 // Push the (expression, var) dest object 5970// #ELSE 5971// #IFDEF !5.OBJ 5972// #DPUSH !5.OBJ // Push the global object 5973// #ELSE 5974// #DPUSH |CI0 5975// #FREF !5.OBJ !a,1 // Forward ref the object 5976// #ENDIF 5977// #ENDIF 5978// !A [] OBJ$ITEM_EXEC !1 |VL 5979// #ELSE 5980// #IF (!0 > 3) 5981// #CHECK !4 "TO" 5982// #ENDIF 5983// #IFDEF MSG_!3 5984// !A [] OBJ$ITEM MSG_!3 !1 // Create the item passing name and value. 5985// #ELSE 5986// #IFDEF !3 5987// !A [] OBJ$ITEM !3 !1 // Create the item passing name and value. 5988// #ELSE 5989// !A [] OBJ$ITEM |CI0 !1 // Create the item passing name and value. 5990// #FREF MSG_!3 !a // fix value later with procedure address 5991// #ENDIF 5992// #ENDIF 5993// #ENDIF 5994// #ELSE 5995// #IFSAME !2 BEGIN_PULL_DOWN 5996// #CHECK !3 _R 5997// REGISTER_OBJECT !3 5998// ON_ITEM !1 SEND ACTIVATE_PULL_DOWN TO (!3(CURRENT_OBJECT)) 5999// #IFSUB 'END_MENU' 6000// CREATE_MENU !3 SUB_LOCATION !4 !5 !6 !7 !8 !9 6001// #ELSE 6002// #ERROR DFERR_COMP_INVALID_ARGUMENT "BEGIN_PULL_DOWN" REQUIRES MENU_SYSTEM PACKAGE 6003// #ENDIF 6004// #ENDIF 6005// #ENDIF 6006// #ENDIF 6007// #ENDIF 6008//#ENDCOMMAND 6009 6010// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6011// 6012// Command: 6013// Repeat_Item Count# TIMES {Item_Syntax} 6014// 6015// Parameters: 6016// 6017// Description: 6018// 6019// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6020 6021#COMMAND REPEAT_ITEM _RNDE "TIMES" 6022 ON_ITEM !3 !4 !5 !6 !7 !8 !9 6023 #SET Q$ (!1-1) 6024 #IF (!q>0) 6025 REPEAT_ITEM !q TIMES !3 !4 !5 !6 !7 !8 !9 6026 #ENDIF 6027#ENDCOMMAND 6028 6029// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6030// 6031// Command: 6032// Entry_Item File.Field {Entry_Options} 6033// 6034// Parameters: 6035// 6036// Description: 6037// 6038// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6039 6040// JJT-5.1 6041//#COMMAND ENTRY_ITEM R 6042// #SET ZG$ !ZG 6043// #DATA 6044// #IFCLASS !1 "EC" 6045// #ENTOPT {$C0A0=!1,$C002,$C003,!2} 6046// #ELSE 6047// #ENTOPT {$C0A0=!1,!2} 6048// #ENDIF 6049// !A [] OBJ$ENTRY$ITEM |CI0 |VL 6050//#ENDCOMMAND 6051 6052// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6053// 6054// Command: 6055// END_ITEM_LIST 6056// 6057// Parameters: 6058// None. 6059// 6060// Description: 6061// The END_ITEM_LIST command marks the end of a list of items. 6062// 6063// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6064 6065// JJT-5.1 6066//#COMMAND END_ITEM_LIST . 6067// #POP ZJ$ 6068// #REPLACE OBJ$!Zj$INUM |CI!Zg // Update the count in the ITEM_LIST cmd. 6069// !A [] OBJ$ENDILIST OBJ$!Zj$INUM // Tell runtime this is the end of list. 6070// #POP ZJ$ 6071// #POP ZG$ 6072//#ENDCOMMAND 6073 6074// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6075// 6076// Command: 6077// END_PULL_DOWN 6078// 6079// Parameters: 6080// None. 6081// 6082// Description: 6083// Ends the structure of an ON_ITEM ... BEGIN_PULL_DOWN ... as used by 6084// Menu_System package. 6085// 6086// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6087 6088#COMMAND END_PULL_DOWN . 6089 #IFSUB 'END_MENU' 6090 END_ITEM_LIST 6091 END_OBJECT 6092 #ELSE 6093 #ERROR DFERR_COMP_INVALID_ARGUMENT "BEGIN_PULL_DOWN" REQUIRES MENU_SYSTEM PACKAGE 6094 #ENDIF 6095#ENDCOMMAND 6096 6097// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6098// 6099// Command: 6100// On_Key KeyName SEND Message {TO Object} {PRIVATE} 6101// 6102// Parameters: 6103// KeyName is a valid hot key name. 6104// Message is valid message name. 6105// Object is the a valid object name. 6106// 6107// Description: 6108// The ON_KEY command tells the menu manager to pass the 6109// specified Message code to the specified Object when the 6110// KeyNAme is pressed. If no Object name is passed, the current 6111// object is used. Passing MSG_NONE for Message causes the key to do 6112// nothing, passing MSG_DEFAULT_KEY will restore the default key definition. 6113// 6114// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6115 6116//#COMMAND ON_KEY RULGBO#SDN "SEND" RLGBO#SDN """TO""PRIVATE" _DNOB """PRIVATE" . 6117// #IFSAME !4 PRIVATE 6118// ON_KEY !1 !2 !3 TO |CI-1 PRIVATE 6119// #ELSE 6120// #DATA 6121// #DPUSH !1 6122// #IFSAME !4 TO 6123// #IFDEF !5 6124// #DPUSH !5 6125// #ELSE 6126// #IFDEF !5.OBJ 6127// #DPUSH !5.OBJ 6128// #ELSE 6129// #DPUSH |CI0 6130// #FREF !5.OBJ !a,1 6131// #ENDIF 6132// #ENDIF 6133// #ELSE 6134// #DPUSH |CI-1 6135// #ENDIF 6136// #IFSAME !6 PRIVATE 6137// #DPUSH |CI1 6138// #ENDIF 6139// #IFDEF !3 6140// !A [] OBJ$ONKEY !3 |VL 6141// #ELSE 6142// #IFDEF MSG_!3 6143// !A [] OBJ$ONKEY MSG_!3 |VL 6144// #ELSE // else the command is defined in flex code 6145// !A [] OBJ$ONKEY |CI0 |VL // get flex to fix the fwd ref 6146// #FREF MSG_!3 !a 6147// #ENDIF 6148// #ENDIF 6149// #ENDIF 6150//#ENDCOMMAND 6151 6152// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6153// 6154// Command: 6155// END_OBJECT 6156// 6157// Parameters: 6158// None required 6159// 6160// Description: 6161// END_OBJECT tells the manager we are done defining an object. 6162// 6163// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6164 6165// JJT-5.1 6166//#COMMAND END_OBJECT 6167// // 6168// // The following section was added 01-08-90 by SAL to support inheritable 6169// // end-instance macros for classes 6170// // 6171// #IFSUB '!$$SC' //if flex-defined class 6172// #IFSUB '!$$EM' //if end-instance macro defined for class, 6173// !$$EM !$ !1 !2 !3 !4 !5 !6 !7 !8 !9 6174// #ELSE 6175// FORWARD_END_CONSTRUCT !$ !1 !2 !3 !4 !5 !6 !7 !8 !9 6176// #ENDIF 6177// #ELSE 6178// DEFAULT_END_OBJECT //else use default 6179// #ENDIF 6180// #SPOP //restore old class name 6181// // 6182// // end of addition 01-08-90 by SAL 6183// // 6184//#ENDCOMMAND 6185 6186// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6187// 6188// Command: 6189// DEFAULT_END_OBJECT 6190// 6191// Parameters: 6192// NONE 6193// 6194// Description: 6195// This command terminates an object declaration 6196// 6197// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6198 6199#COMMAND DEFAULT_END_OBJECT . 6200 !A [] OBJ$END //Mark the end of the object list. 6201 #POP ZI$ //restore sub_obj_count 6202 #POP ZB$ //restore current_dep 6203 #POP B$ //restore obj_flag 6204 #POP ZJ$ //restore temp label 6205#ENDCOMMAND 6206 6207// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6208// 6209// Command: 6210// Start_Ui {Object} 6211// 6212// Parameters: 6213// NONE 6214// 6215// Description: 6216// This command will dispatch io to the current focus. it will 6217// remain in this routine until a non-zero return code is received. 6218// 6219// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6220 6221#COMMAND START_UI 6222 #IF (!0>0) 6223 SEND ACTIVATE TO !1 6224 #ENDIF 6225 !A [] OBJ$IODISPATCH |CI0 |CI0 6226#ENDCOMMAND 6227 6228// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6229// 6230// Command: 6231// UI_ACCEPT Object {GROUP | OBJECT} TO ReturnValue 6232// 6233// Parameters: 6234// 6235// Description: 6236// 6237// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6238 6239#COMMAND UI_ACCEPT RSDGBO#L RDGBO#L RDGBO#L _CEL#BOG . 6240 #IFSAME !2 GROUP OBJECT 6241 #CHECK !3 "TO" 6242 #DATA 6243 #IFSAME !2 GROUP 6244 #DPUSH |CI1 6245 #ELSE 6246 #IFSAME !2 OBJECT 6247 #DPUSH |CI0 6248 #ENDIF 6249 #ENDIF 6250 #DPUSH !4 6251 #IFDEF !1 6252 !A [] OBJ$ACCEPT !1 |VL 6253 #ELSE 6254 #IFDEF !1.OBJ 6255 !A [] OBJ$ACCEPT !1.OBJ |VL 6256 #ELSE 6257 !A [] OBJ$ACCEPT |CI0 |VL 6258 #FREF !1.OBJ !a 6259 #ENDIF 6260 #ENDIF 6261 #ELSE 6262 UI_ACCEPT !1 OBJECT !2 !3 !4 !5 !6 !7 6263 #ENDIF 6264#ENDCOMMAND 6265 6266// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6267// 6268// Command: 6269// SET Property {OF Object} {ITEM #} TO Value {...} 6270// 6271// Parameters: 6272// 6273// Description: 6274// 6275// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6276 6277#COMMAND SET 6278 GET$SET SET !1 !2 !3 !4 !5 !6 !7 !8 !9 6279#ENDCOMMAND 6280 6281// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6282// 6283// Command: 6284// GET Property {OF Object} {ITEM #} TO Value {...} 6285// 6286// Parameters: 6287// 6288// Description: 6289// 6290// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6291 6292#COMMAND GET 6293 GET$SET GET !1 !2 !3 !4 !5 !6 !7 !8 !9 6294#ENDCOMMAND 6295 6296// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6297// 6298// Command: 6299// FORWARD {GET | SET | SEND} Property {...} 6300// 6301// Parameters: 6302// 6303// Description: 6304// 6305// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6306 6307#COMMAND FORWARD "GET""SET""SEND" 6308// #REPLACE __@INSIDE_FORWARD@__ 6309 MOVE 1 TO FORWARD$MESSAGE 6310 !1 !2 !3 !4 !5 !6 !7 !8 !9 6311// #UNDEF __@INSIDE_FORWARD@__ // Leaving function/proc. 6312#ENDCOMMAND 6313 6314// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6315// 6316// Command: 6317// DELEGATE {GET | SET | SEND} Property {...} 6318// 6319// Parameters: 6320// 6321// Description: 6322// 6323// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6324 6325#COMMAND DELEGATE "GET""SET""SEND" 6326// #REPLACE __@INSIDE_DELEGATE@__ 6327 MOVE 8 TO FORWARD$MESSAGE 6328 !1 !2 !3 !4 !5 !6 !7 !8 !9 6329// #UNDEF __@INSIDE_DELEGATE@__ // Leaving function/proc. 6330#ENDCOMMAND 6331 6332// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6333// 6334// Command: 6335// BROADCAST {RECURSIVE | RECURSIVE_UP} {IGNORE_RETURN} {GET | SET | SEND} Property {...} 6336// 6337// Parameters: 6338// 6339// Description: 6340// 6341// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6342 6343#COMMAND BROADCAST "GET""SET""SEND""RECURSIVE""RECURSIVE_UP""NO_STOP" 6344 #IFSAME !1 RECURSIVE RECURSIVE_UP 6345 #CHECK !2 '"GET""SET""SEND""NO_STOP"' 6346 #IFSAME !1 RECURSIVE 6347 MOVE 20 TO FORWARD$MESSAGE // broadcast + recursive_down 6348 #ELSE 6349 MOVE 68 TO FORWARD$MESSAGE // broadcast + recursive_up 6350 #ENDIF 6351 #IFSAME !2 NO_STOP 6352 #CHECK !3 '"GET""SET""SEND"' 6353 MOVE (FORWARD$MESSAGE+128) TO FORWARD$MESSAGE // no stop on non-0 return 6354 !3 !4 !5 !6 !7 !8 !9 6355 #ELSE 6356 !2 !3 !4 !5 !6 !7 !8 !9 6357 #ENDIF 6358 #ELSE 6359 MOVE 4 TO FORWARD$MESSAGE // broadcast 6360 #IFSAME !1 NO_STOP 6361 #CHECK !2 '"GET""SET""SEND"' 6362 MOVE (FORWARD$MESSAGE+128) TO FORWARD$MESSAGE // + no_stop 6363 !2 !3 !4 !5 !6 !7 !8 !9 6364 #ELSE 6365 !1 !2 !3 !4 !5 !6 !7 !8 !9 6366 #ENDIF 6367 #ENDIF 6368#ENDCOMMAND 6369 6370#COMMAND BROADCAST_FOCUS "GET""SET""SEND""RECURSIVE""RECURSIVE_UP""NO_STOP" 6371 #IFSAME !1 RECURSIVE RECURSIVE_UP 6372 #CHECK !2 '"GET""SET""SEND""NO_STOP"' 6373 #IFSAME !1 RECURSIVE 6374 MOVE 52 TO FORWARD$MESSAGE // broadcast + focus + recursive_down 6375 #ELSE 6376 MOVE 100 TO FORWARD$MESSAGE // broadcast + focus + recursive_up 6377 #ENDIF 6378 #IFSAME !2 NO_STOP 6379 #CHECK !3 '"GET""SET""SEND"' 6380 MOVE (FORWARD$MESSAGE+128) TO FORWARD$MESSAGE // no stop on non-0 return 6381 !3 !4 !5 !6 !7 !8 !9 6382 #ELSE 6383 !2 !3 !4 !5 !6 !7 !8 !9 6384 #ENDIF 6385 #ELSE 6386 MOVE 36 TO FORWARD$MESSAGE // broadcast + focus 6387 #IFSAME !1 NO_STOP 6388 #CHECK !2 '"GET""SET""SEND"' 6389 MOVE (FORWARD$MESSAGE+128) TO FORWARD$MESSAGE // + no_stop 6390 !2 !3 !4 !5 !6 !7 !8 !9 6391 #ELSE 6392 !1 !2 !3 !4 !5 !6 !7 !8 !9 6393 #ENDIF 6394 #ENDIF 6395#ENDCOMMAND 6396 6397 6398// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6399// 6400// Command: 6401// Procedure {Set} Message {FOR Class} {{Type Argument} ...} 6402// 6403// Parameters: 6404// 6405// Description: 6406// 6407// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6408 6409#COMMAND PROCEDURE R 6410 // The interface to handle$message is slightly different in the mangling system. 6411 // The set is not concatenated with the symbol, because the mangling will generate its own symbol later. 6412 #IFSAME !1 SET 6413 #IFDEF MANGLE_NAMES 6414 HANDLE$MESSAGE SET !2 !3 !4 !5 !6 !7 !8 !9 6415 #ELSE 6416 HANDLE$MESSAGE SET_!2 !3 !4 !5 !6 !7 !8 !9 6417 #ENDIF 6418 #ELSE 6419 #IFDEF MANGLE_NAMES 6420 HANDLE$MESSAGE MSG !1 !2 !3 !4 !5 !6 !7 !8 !9 6421 #ELSE 6422 HANDLE$MESSAGE MSG_!1 !2 !3 !4 !5 !6 !7 !8 !9 6423 #ENDIF 6424 #ENDIF 6425#ENDCOMMAND 6426 6427 6428#COMMAND MESSAGE$ADDRESS 6429 #IFDEF !1 6430 #ELSE // assign the next message number now 6431 #SET ZC$ !ZC 6432 #IF (!Zc>$0FFFFFFF) // using 32-bit msg ids now (256M total allowed) 6433 #ERROR DFERR_COMP_TOO_MANY_MESSAGES Maximum number of message/property definitions exceeded 6434 #ELSE 6435// #XREF Message !1 as |CI!Zc was defined on line !a 6436 #REPLACE !1 |CI!Zc // this will cause all fwd refs to be fixed. 6437 #ENDIF 6438 #ENDIF 6439#ENDCOMMAND 6440 6441// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6442// 6443// Command: 6444// Register_Procedure Message {FOR Class} {{Type Argument} ...} 6445// 6446// Parameters: 6447// 6448// Description: 6449// 6450// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6451 6452 6453#COMMAND REGISTER_PROCEDURE R 6454 #IFDEF UI.EXISTS 6455 #ELSE 6456 USE UI 6457 #ENDIF 6458 #IFSAME GLOBAL !2 !3 // procedure or procedure set 6459 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION GLOBAL PROCEDURES CANNOT BE REGISTERED 6460 #ELSE 6461 #IFSAME !1 SET 6462 // Error if already defined as global 6463 #IFDEF SET_!2 6464 #IF (SET_!2<0) 6465 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION Set !2 is already defined as a global message 6466 #ENDIF 6467 #ENDIF 6468 6469 // Make sure the argument list is correct 6470 CHECK$METHOD$ARGUMENT$LIST !3 !4 !5 !6 !7 !8 !9 6471 // Even if there were errors parsing the argument list, try to make the symbol so that we resolve fwd refs correctly. 6472 #IFDEF MANGLE_NAMES 6473 // For mangling, #MARG is used to read the line and parse the argument list. 6474 #IFSAME OVERLOADED !3 !4 !5 !6 !7 !8 !9 6475 #IFDEF SET_!2 6476 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION This Method Was Previously Defined As Non-Overloaded 6477 #ENDIF 6478 // #MARG returns the mangled name in !? which gets new message number. 6479 // we don't support Byref with overloading 6480 #IFSAME BYREF !3 !4 !5 !6 !7 !8 !9 6481 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "BYREF not allowed in overloaded methods" 6482 #ENDIF 6483 #MARG SET_!2 !3 !4 !5 !6 !7 !8 !9 6484 MESSAGE$ADDRESS !? 6485 // only create overloaded symbol if first time 6486 #IFNDEF SET_!2_OVERLOADED 6487 #REPLACE SET_!2_OVERLOADED |CI1 6488 #ENDIF 6489 #ELSE 6490 #IFDEF SET_!2_OVERLOADED 6491 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION This Method Was Previously Defined As Overloaded 6492 #ENDIF 6493 MESSAGE$ADDRESS SET_!2 6494 #ENDIF 6495 #ELSE 6496 MESSAGE$ADDRESS SET_!2 6497 #ENDIF 6498 #ELSE 6499 // check for already defined as global 6500 #IFDEF MSG_!1 6501 #IF (MSG_!1<0) 6502 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION MSG !1 is already defined as a global message 6503 #ENDIF 6504 #ENDIF 6505 // Check the argument list first 6506 CHECK$METHOD$ARGUMENT$LIST !2 !3 !4 !5 !6 !7 !8 !9 6507 // Likewise for messages with MSG prefix. #MARG is again used to parse the register_procedure line. 6508 #IFDEF MANGLE_NAMES 6509 #IFSAME OVERLOADED !2 !3 !4 !5 !6 !7 !8 !9 6510 #IFDEF MSG_!1 6511 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION This Method Was Previously Defined As Non-Overloaded 6512 #ENDIF 6513 // #MARG returns the mangled name in !? which gets new message number. 6514 // we don't support Byref with overloading 6515 #IFSAME BYREF !2 !3 !4 !5 !6 !7 !8 !9 6516 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "BYREF not allowed in overloaded methods" 6517 #ENDIF 6518 #MARG MSG_!1 !2 !3 !4 !5 !6 !7 !8 !9 6519 MESSAGE$ADDRESS !? 6520 // only create overloaded symbol if first time 6521 #IFNDEF MSG_!1_OVERLOADED 6522 #REPLACE MSG_!1_OVERLOADED |CI1 6523 #ENDIF 6524 #ELSE 6525 #IFDEF MSG_!1_OVERLOADED 6526 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION This Method Was Previously Defined As Overloaded 6527 #ENDIF 6528 MESSAGE$ADDRESS MSG_!1 6529 #ENDIF 6530 #ELSE 6531 MESSAGE$ADDRESS MSG_!1 6532 #ENDIF 6533 #ENDIF 6534 #ENDIF 6535#ENDCOMMAND 6536 6537 6538// Argument list validation rules: 6539// 6540// The expected format is 6541// 6542// type1 id1 type2 id2 ... typen idn 6543// 6544// Functions have "Returns TypeReturn" at the end of the line. 6545// The keyword OVERLOADED cannot be placed between the ids or types. 6546// The keyword Global can proceed the list of parameters 6547// 6548 6549// Here are a list of the possible parsing errors. 6550 6551#COMMAND CHECK$ARGUMENT$LIST$ERROR1 6552 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX TYPE FOLLOWS TYPE IN DECLARATION 6553#ENDCOMMAND 6554 6555#COMMAND CHECK$ARGUMENT$LIST$ERROR2 6556 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX MISSING TYPE IN METHOD DECLARATION 6557#ENDCOMMAND 6558 6559#COMMAND CHECK$ARGUMENT$LIST$ERROR3 6560 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX KEYWORD OVERLOADED CANNOT BE BETWEEN A TYPE AND AN IDENTIFIER 6561#ENDCOMMAND 6562 6563#COMMAND CHECK$ARGUMENT$LIST$ERROR4 6564 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX RETURNS MUST BE FOLLOWED BY A RETURN TYPE 6565#ENDCOMMAND 6566 6567#COMMAND CHECK$ARGUMENT$LIST$ERROR5 6568 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX MISSING IDENTIFIER BEFORE RETURNS KEYWORD 6569#ENDCOMMAND 6570 6571#COMMAND CHECK$ARGUMENT$LIST$ERROR6 6572 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX MISSING TYPE IN METHOD DECLARATION 6573#ENDCOMMAND 6574 6575#COMMAND CHECK$ARGUMENT$LIST$ERROR7 6576 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX MISSING RETURN TYPE AFTER KEYWORD RETURNS IN METHOD DECLARATION 6577#ENDCOMMAND 6578 6579#COMMAND CHECK$ARGUMENT$LIST$ERROR8 6580 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX UNEXPECTED SYMBOL ENCOUNTERED AFTER RETURN TYPE IN METHOD DECLARATION 6581#ENDCOMMAND 6582 6583#COMMAND CHECK$ARGUMENT$LIST$ERROR9 6584 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX EXPECTING IDENTIFIER AFTER TYPE IN METHOD DECLARATION 6585#ENDCOMMAND 6586 6587#COMMAND CHECK$ARGUMENT$LIST$ERROR10 6588 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX UNEXPECTED DIMENSION SIZE SPECIFIER IN ARRAY TYPE DECLARATION 6589#ENDCOMMAND 6590 6591// Validation code is like this: 6592// 6593// CHECK$METHOD$ARGUMENT$LIST is called in register_function, register_procedure, and external$function 6594// 6595 6596#COMMAND CHECK$METHOD$ARGUMENT$LIST$FOR$ID // This is called after a type is read. 6597 #IFADIM !1 6598 //Make sure it has no specified dimension size 6599 #SPUSH 6600 #DIMSTRIP !1 6601 #IFSAME !$ 0 |CI0 6602 CHECK$METHOD$ARGUMENT$LIST$FOR$ID !2 !3 !4 !5 !6 !7 !8 !9 6603 #ELSE 6604 CHECK$ARGUMENT$LIST$ERROR10 6605 #ENDIF 6606 #SPOP 6607 #ELSE 6608 #IFSAME !1 BYREF 6609 CHECK$METHOD$ARGUMENT$LIST$FOR$ID2 !2 !3 !4 !5 !6 !7 !8 !9 6610 #ELSE 6611 CHECK$METHOD$ARGUMENT$LIST$FOR$ID2 !1 !2 !3 !4 !5 !6 !7 !8 !9 6612 #ENDIF 6613 #ENDIF 6614#ENDCOMMAND 6615 6616 6617#COMMAND CHECK$METHOD$ARGUMENT$LIST$FOR$ID2 // This is called after a type is read. 6618 #IF (!0>0) 6619 #IFSAME !1 OVERLOADED // Check for Overloaded between type and variable name 6620 CHECK$ARGUMENT$LIST$ERROR3 6621 #ELSE 6622 #IFSAME !1 RETURNS // Check if missing identifier before returns 6623 CHECK$ARGUMENT$LIST$ERROR5 6624 #ELSE 6625 #IFSAME !1 BYREF // Check for additional byref before identifier 6626 CHECK$ARGUMENT$LIST$ERROR9 6627 #ELSE 6628 // Parse now for the next type. 6629 CHECK$METHOD$ARGUMENT$LIST !2 !3 !4 !5 !6 !7 !8 !9 6630 #ENDIF 6631 #ENDIF 6632 #ENDIF 6633 #ELSE 6634 CHECK$ARGUMENT$LIST$ERROR9 // Missing identifier after type. 6635 #ENDIF 6636#ENDCOMMAND 6637 6638 6639#COMMAND CHECK$FOR$BOGUS$TRAILING$STUFF 6640 #IF (!0>0) 6641 #IFADIM !1 6642 //Array type 6643 //Make sure it has no specified dimension size 6644 #SPUSH 6645 #DIMSTRIP !1 6646 #IFSAME !$ 0 |CI0 6647 CHECK$FOR$BOGUS$TRAILING$STUFF !2 6648 #ELSE 6649 CHECK$ARGUMENT$LIST$ERROR10 6650 #ENDIF 6651 #SPOP 6652 #ELSE 6653 CHECK$ARGUMENT$LIST$ERROR8 // Garbage trailing on line 6654 #ENDIF 6655 #ENDIF 6656#ENDCOMMAND 6657 6658// Return type must follow Returns Keyword 6659#COMMAND CHECK$FOR$RETURN$TYPE 6660 #IF (!0=0) 6661 CHECK$ARGUMENT$LIST$ERROR7 // Error: Missing return type after keyword RETURNS 6662 #ELSE 6663 #DTYPE Q$ !1 // only check if there is a valid data type 6664 #If (!q=-1) // Check for the various types. If we find them, parse for an identifier with CHECK$METHOD$ARGUMENT$LIST$FOR$ID 6665 #ERROR DFERR_COMP_INVALID_DATATYPE (!1) 6666 #ELSE 6667 CHECK$FOR$BOGUS$TRAILING$STUFF !2 // Ok, look for garbage at end of line. 6668 #ENDIF 6669 #ENDIF 6670#ENDCOMMAND 6671 6672// Check list of arguments. 6673// 6674// Expected line could start with OVERLOADED or RETURNS. 6675// Otherwise it will start with a list of type, identifier ordered pairs. 6676 6677#COMMAND CHECK$METHOD$ARGUMENT$LIST 6678 #PUSH !q 6679 #IF (!0>0) 6680 #IFSAME !1 OVERLOADED 6681 // Start parse from the beginning (just ignores OVERLOADED) 6682 CHECK$METHOD$ARGUMENT$LIST !2 !3 !4 !5 !6 !7 !8 !9 6683 #ElSE 6684 #IFSAME !1 RETURNS 6685 // Look for return type that must follow it. 6686 CHECK$FOR$RETURN$TYPE !2 !3 !4 !5 !6 !7 !8 !9 6687 #ELSE 6688 #DTYPE Q$ !1 // only check if there is a valid data type 6689 #If (!q>-1) // Check for the various types. If we find them, parse for an identifier with CHECK$METHOD$ARGUMENT$LIST$FOR$ID 6690 CHECK$METHOD$ARGUMENT$LIST$FOR$ID !2 !3 !4 !5 !6 !7 !8 !9 6691 #ENDIF 6692 #ENDIF 6693 #ENDIF 6694 #ENDIF 6695 #POP Q$ 6696#ENDCOMMAND 6697 6698 6699// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6700// 6701// Command: 6702// CALL RoutineName {Parameters ...} 6703// 6704// Parameters: 6705// 6706// Description: 6707// 6708// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6709 6710#COMMAND CALL RGBO#L 6711 SEND !1 TO DESKTOP !2 !3 !4 !5 !6 !7 !8 !9 6712#ENDCOMMAND 6713 6714// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6715// 6716// Command: 6717// SUB_PAGE NewPage FROM FromPage ; 6718// { (WindowNumber) | ; 6719// ({VERTICAL|HORIZONTAL} FromWindow ForWindows) | ; 6720// (RECTANGULAR FromWindow NumColumns NumRows) } {...} 6721// 6722// Parameters: 6723// 6724// Description: 6725// 6726// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6727 6728#COMMAND SUB_PAGE RT "FROM" RGBO#L 6729 #PUSH !Zg // h is the number of windows on 6730 #SET ZG$ 0 // the sub page. 6731 #DATA // start up the arguments 6732 #IFDEF !3 6733 #DPUSH !3 // based on variable page number 6734 #ELSE 6735 #CHECK !3.N _U 6736 #DPUSH !3.N // based on absolute page number 6737 #ENDIF 6738 SUB$IMAGE$DEFINE !4 !5 !6 !7 !8 !9 // loop thru the passed arguments 6739 #DPUSH |CI!Zg // store the number of windows 6740 #IFDEF !1.N 6741 #IFCLASS !1.N "C" 6742 #ERROR DFERR_COMP_DUPLICATE_PAGE_NAME SUB_PAGE !1 ALREADY DEFINED AS A PHYSICAL IMAGE 6743 #ELSE 6744 !A [] REDEFINE$SUB$PAGE !1.N |VL // create the sub image 6745 #ENDIF 6746 #ELSE 6747 INTEGER !1.N // create a int to place page # into 6748 !A [] CREATE$SUB$PAGE !1.N |VL // create the sub image 6749 #ENDIF 6750 #POP ZG$ // restore our general counter 6751#ENDCOMMAND 6752 6753#COMMAND SUB$IMAGE$DEFINE 6754 #IF (!0>0) 6755 #IFSAME !1 VERTICAL // define a vertical set of windows 6756 #DPUSH |CI-1 // vertical flag 6757 #DPUSH !2 // push the start window number 6758 #DPUSH !3 // and the number of windows 6759 #SET ZG$ (!Zg+!3) // how many was that? 6760 SUB$IMAGE$DEFINE !4 !5 !6 !7 !8 !9 // one more time 6761 #ENDIF 6762 #IFSAME !1 HORIZONTAL // horzontal (contiguous) windows 6763 #DPUSH |CI-2 // horizontal flag 6764 #DPUSH !2 // push the start window number 6765 #DPUSH !3 // and the number of windows 6766 #SET ZG$ (!Zg+!3) // how many was that? 6767 SUB$IMAGE$DEFINE !4 !5 !6 !7 !8 !9 // one more time 6768 #ENDIF 6769 #IFSAME !1 RECTANGULAR // a rectangular array of windows 6770 #DPUSH |CI-3 // the rect. flag 6771 #DPUSH !2 // push the start window number 6772 #DPUSH !3 // number of windows per row 6773 #DPUSH !4 // number of rows 6774 #SET ZG$ (!Zg+(!3*!4)) // not bad huh 6775 SUB$IMAGE$DEFINE !5 !6 !7 !8 !9 // and again 6776 #ENDIF 6777 #IFSAME !1 VERTICAL RECTANGULAR HORIZONTAL // May look strange, but reduces 6778 #ELSE // use of #if stack levels. 6779 #DPUSH !1 // its just a single window def 6780 #SET ZG$ !ZG // just add one 6781 SUB$IMAGE$DEFINE !2 !3 !4 !5 !6 !7 !8 !9 // recurse 6782 #ENDIF 6783 #ENDIF 6784#ENDCOMMAND 6785 6786// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6787// 6788// Command: 6789// 6790// Parameters: 6791// 6792// Description: 6793// 6794// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6795 6796#COMMAND MOVE_SUB_PAGE _RDOBR "TO" _RDOBRU 6797 #IFDEF !1 6798 !A [] MOVE$SUB$PAGE !1 !3 6799 #ELSE 6800 #CHECK !1.N _U 6801 !A [] MOVE$SUB$PAGE !1.N !3 6802 #ENDIF 6803#ENDCOMMAND 6804 6805// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6806// 6807// Command: 6808// USE PackageName | UI 6809// 6810// Parameters: 6811// 6812// Description: 6813// 6814// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6815#COMMAND USE R 6816 #IFSAME !1 UI 6817 #IFSUB '!1.EXISTS' 6818 #ELSE 6819 #REPLACE !1.EXISTS |CI!a 6820 INITIALIZE_INTERFACE 6821 Define$BuiltIn$DF$Messages // Define built in DF messages 6822 Define$BuiltIn$VDF$Messages // Define built in VDF messages 6823 Define$BuiltIn$WAS$Messages // Define built in Web App messages 6824 Define$BuiltIn$XML$Messages // Define built in XML messages 6825 Define$BuiltIn$Transfer$Messages // For FTP and HTTP classes 6826 Define$BuiltIn$Flexcom2$Messages // flexcom2 6827 #ENDIF 6828 #ELSE 6829 #USE !1 6830 #ENDIF 6831#ENDCOMMAND 6832 6833// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6834// 6835// Command: 6836// 6837// Parameters: 6838// 6839// Description: 6840// 6841// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6842 6843#COMMAND VFIND R R R . 6844 MOVE !2 TO INDEX_NUMBER 6845 #IFSAME !3 $0 $1 $2 $3 $4 6846 #SET Q$ !3 6847 !A [] $CC !1 |CI!q 6848 #ELSE 6849 !A [] $CC !1 !3 6850 #ENDIF 6851#ENDCOMMAND 6852 6853// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6854// 6855// Command: 6856// 6857// Parameters: 6858// 6859// Description: 6860// 6861// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6862 6863#COMMAND SCREEN_OPTIMIZE RL . 6864 #IFSAME !1 $0 $1 6865 #PUSH !Zg 6866 #SET ZG$ !1 6867 !A [] SCREEN$OPT |CI!Zg 6868 #POP ZG$ 6869 #ELSE 6870 !A [] SCREEN$OPT !1 6871 #ENDIF 6872#ENDCOMMAND 6873 6874// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6875// 6876// Command: 6877// FORWARD_BEGIN_CONSTRUCT ClassName { <argument> ... } 6878// 6879// Parameters: 6880// ClassName is the name of the class which owns the macro that is 6881// forwarding. 6882// <argument> is any argument required 6883// 6884// Description: 6885// This command allows the instance-creation macros defined for classes 6886// to 'inherit' the instance-creation macro(s) defined by their 6887// superclass(es). 6888// 6889// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6890 6891#COMMAND FORWARD_BEGIN_CONSTRUCT R //<currentClassName> { <arg> ... } 6892 #IFSUB '!1$SC' // if flex-defined class 6893 #SPUSH 6894 #SET $$ !1$SC //get superclass name 6895 #IFSUB '!$$SM' //if class defines start macro 6896 !$$SM !$ !2 !3 !4 !5 !6 !7 !8 !9 //invoke it 6897 #ELSE //else not defined 6898 FORWARD_BEGIN_CONSTRUCT !$ !2 !3 !4 !5 !6 !7 !8 !9 6899 #ENDIF 6900 #SPOP 6901 #ELSE 6902 ADD$IMAGE$ARGS MSG_CONSTRUCT_OBJECT !2 !3 !4 !5 !6 !7 !8 !9 //use default 6903 #ENDIF 6904#ENDCOMMAND 6905 6906// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6907// 6908// Command: 6909// FORWARD_END_CONSTRUCT ClassName { <argument> ... } 6910// 6911// Parameters: 6912// ClassName is the name of the class which owns the macro that is 6913// forwarding. 6914// <argument> is any argument required 6915// 6916// Description: 6917// This command allows the instance-ending macros defined for classes 6918// to 'inherit' the instance-ending macro(s) defined by their 6919// superclass(es). 6920// 6921// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6922 6923#COMMAND FORWARD_END_CONSTRUCT R //<currentClassName> { <arg> ... } 6924 #IFSUB '!1$SC' // if flex-defined class 6925 #SPUSH // note: #SPUSH with no arg it pushes !$ (with no replacement). Don't pass arguments (obsolete technique as of 11.1) 6926 #SET $$ !1$SC //get superclass name 6927 #IFSUB '!$$EM' //if end-instance macro defined, 6928 !$$EM !$ !2 !3 !4 !5 !6 !7 !8 !9 //use it 6929 #ELSE 6930 FORWARD_END_CONSTRUCT !$ !2 !3 !4 !5 !6 !7 !8 !9 6931 #ENDIF 6932 #SPOP // note: #SPOP always pops to $$ - it never takes an argument 6933 #ELSE 6934 DEFAULT_END_OBJECT //else use default 6935 #ENDIF 6936#ENDCOMMAND 6937 6938#COMMAND SET_DEFERRED &R . 6939 !A [] $460 !1 6940#ENDCOMMAND 6941 6942// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6943// 6944// Command: 6945// NAME_ITEM <object_name> item names... 6946// 6947// Description: 6948// Gives names to items of objects in the form: object.item 6949// Assumes item number has already been set. 6950// 6951// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6952#COMMAND NAME_ITEM RT#L R 6953 #IFDEF !2 6954 #CHECK !2 _#LUVFEWNSG 6955 #SET Q$ !2 6956 NAME_ITEM !1 !3 !4 !5 !6 !7 !8 !9 6957 #ELSE 6958 #IFSAME !2 ITEM 6959 NAME_ITEM !1 !3 !4 !5 !6 !7 !8 !9 6960 #ELSE 6961 #IFSAME !2 COLUMN 6962 NAME_COLUMN !1 !3 !4 !5 !6 !7 !8 !9 6963 #ELSE 6964 #IFSAME !2 PROPERTY 6965 NAME_PROPERTY !1 !3 !4 !5 !6 !7 !8 !9 6966 #ELSE 6967 #REPLACE !1.!2 !1.OBJ ITEM !q 6968 #SET Q$ (!q+1) 6969 #IF !0>2 6970 NAME_ITEM !1 !3 !4 !5 !6 !7 !8 !9 6971 #ENDIF 6972 #ENDIF 6973 #ENDIF 6974 #ENDIF 6975 #ENDIF 6976#ENDCOMMAND 6977 6978// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6979// 6980// Command: 6981// NAME_COLUMN <object_name> item names... 6982// 6983// Description: 6984// Gives names to items of objects in the form: object.item 6985// Just like name_item except item numbers are relative to 6986// base_item. 6987// Assumes item number has already been set. 6988// 6989// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6990#COMMAND NAME_COLUMN RT#L R 6991 #IFDEF !2 6992 #CHECK !2 _#LUVFEWNSG 6993 #SET Q$ !2 6994 NAME_COLUMN !1 !3 !4 !5 !6 !7 !8 !9 6995 #ELSE 6996 #IFSAME !2 ITEM 6997 NAME_ITEM !1 !3 !4 !5 !6 !7 !8 !9 6998 #ELSE 6999 #IFSAME !2 COLUMN 7000 NAME_COLUMN !1 !3 !4 !5 !6 !7 !8 !9 7001 #ELSE 7002 #IFSAME !2 PROPERTY 7003 NAME_PROPERTY !1 !3 !4 !5 !6 !7 !8 !9 7004 #ELSE 7005 #REPLACE !1.!2 !1.OBJ ITEM (BASE_ITEM(!1.OBJ)+!q) 7006 #SET Q$ (!q+1) 7007 #IF !0>2 7008 NAME_COLUMN !1 !3 !4 !5 !6 !7 !8 !9 7009 #ENDIF 7010 #ENDIF 7011 #ENDIF 7012 #ENDIF 7013 #ENDIF 7014#ENDCOMMAND 7015 7016 7017// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7018// 7019// Command: 7020// NAME_PROPERTY <object_name> property names... 7021// 7022// Description: 7023// Gives names to property of objects in the form: object.item 7024// 7025// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7026 7027#COMMAND NAME_PROPERTY RT#L RT 7028 #IFSAME !2 ITEM 7029 NAME_ITEM !1 !3 !4 !5 !6 !7 !8 !9 7030 #ELSE 7031 #IFSAME !2 COLUMN 7032 NAME_COLUMN !1 !3 !4 !5 !6 !7 !8 !9 7033 #ELSE 7034 #IFSAME !2 PROPERTY 7035 NAME_PROPERTY !1 !3 !4 !5 !6 !7 !8 !9 7036 #ELSE 7037 #REPLACE !1.!2 (!2(!1.OBJ)) 7038 #IF !0>2 7039 NAME_PROPERTY !1 !3 !4 !5 !6 !7 !8 !9 7040 #ENDIF 7041 #ENDIF 7042 #ENDIF 7043 #ENDIF 7044#ENDCOMMAND 7045 7046 7047// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7048// 7049// Command: 7050// NAME_OBJECT <object_name> ACCESS item names... 7051// ACCESS = CHILD, GLOBAL, COLUMN, PROPERTY, ITEM or ACCESS METHOD. 7052// 7053// Description: 7054// Gives names to objects in the form: object.obj 7055// and allows items, properties and COLUMNs to be defined. 7056// Inits item number to zero and assumes item names follow. 7057// 7058// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7059 7060#COMMAND NAME_OBJECT RT#L R 7061 #SET Q$ 0 7062 #IFDEF !2 7063 #CHECK !2 _R#LSD 7064 #REPLACE !1.OBJ !2 7065 #IF !0>2 7066 NAME_ITEM !1 !3 !4 !5 !6 !7 !8 !9 7067 #ENDIF 7068 #ELSE 7069// #CHECK !2 "CHILD""ITEM""GLOBAL""COLUMN""PROPERTY" 7070 #IFSAME !2 CHILD 7071 REGISTER_OBJECT !1 7072 #IFDEF !3 7073 NAME_OBJECT !1 (!1(!3)) !4 !5 !6 !7 !8 !9 7074 #ELSE 7075 #CHECK !3.OBJ _#LU 7076 NAME_OBJECT !1 (!1(!3.OBJ)) !4 !5 !6 !7 !8 !9 7077 #ENDIF 7078 #ELSE 7079 #IFSAME !2 GLOBAL 7080 #IFDEF !1.OBJ 7081 #CHECK !1.OBJ _NSDFW#L 7082 #ELSE 7083 INTEGER !1.OBJ 7084 #ENDIF 7085 #IFCLASS !1.OBJ V$ 7086 #IF (!b & 1) 7087 MOVE CURRENT_OBJECT TO !1.OBJ 7088 #ELSE 7089 #IF (!b) 7090 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT NAME_OBJECT MUST PRECEDE CLASS OR PROCEDURE 7091 #ELSE 7092 MOVE 1023 TO !1.OBJ 7093 #ENDIF 7094 #ENDIF 7095 #ENDIF 7096 #IF !0>2 7097 NAME_ITEM !1 !3 !4 !5 !6 !7 !8 !9 7098 #ENDIF 7099 #ELSE 7100 NAME_!2 !1 !3 !4 !5 !6 !7 !8 !9 7101 #ENDIF 7102 #ENDIF 7103 #ENDIF 7104#ENDCOMMAND 7105 7106#COMMAND ITEM_GROUP . 7107 #PUSH !Zd 7108 #PUSH !Ze 7109 #SET ZD$ 0 7110 !A [] $462 |CI0 //create new item group; size is fwd-ref'd 7111 #SET ZE$ !a 7112 #FREF ITEM$GROUP!Ze !a 7113#ENDCOMMAND 7114 7115#COMMAND END_ITEM_GROUP . 7116 #REPLACE ITEM$GROUP!Ze |CI!Zd //define size of item group 7117 #POP ZE$ 7118 #POP ZD$ 7119#ENDCOMMAND 7120 7121#COMMAND DEPENDENT_ITEM R 7122 #IFSAME !2 ITEM //if ITEM is second arg, item name replacement was used 7123 #IFDEF !1 7124 !A [] $463 !1 !3 //add obj#,item# pair to current item group 7125 #ELSE 7126 !A [] $463 !1.OBJ !3 //add obj#,item# pair to current item group 7127 #ENDIF 7128 #SET ZD$ !ZD //increment element counter 7129 #IF (!0>3) 7130 DEPENDENT_ITEM !4 !5 !6 !7 !8 !9 7131 #ENDIF 7132 #ELSE 7133 #IFDEF !1 7134 !A [] $463 !1 !2 //add obj#,item# pair to current item group 7135 #ELSE 7136 !A [] $463 !1.OBJ !2 //add obj#,item# pair to current item group 7137 #ENDIF 7138 #SET ZD$ !ZD //increment element counter 7139 #IF (!0>2) 7140 DEPENDENT_ITEM !3 !4 !5 !6 !7 !8 !9 7141 #ENDIF 7142 #ENDIF 7143#ENDCOMMAND 7144 7145 7146// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7147// 7148// Command: 7149// IMPORT_CLASS_PROTOCOL Source Dest {Msg | ALL} {Flag} 7150// 7151// Description: 7152// This command will copy the message definitions of the Source 7153// class to the Dest class. The program may choose to copy ALL 7154// of the messages or only one of the messages from the Source. 7155// The program has the option to stop any message that would overwrite 7156// and to stop the copying of messages not directly defined in the 7157// Source class. 7158// 7159// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7160 7161#COMMAND IMPORT_CLASS_PROTOCOL _RSNDLOB# _SNDLOB# 7162 #IF (!0<2) 7163 IMPORT_CLASS_PROTOCOL !1 CURRENT_CLASS 7164 #ELSE 7165 #DATA // Begining of data 7166 #IFDEF !1 // class is variable (integer) or constant 7167 #DPUSH !1 // defined_in 7168 #ELSE 7169 #IFDEF U_!1 7170 #DPUSH U_!1 // class is normal symbol type (integer) 7171 #ELSE 7172 #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNDEFINED CLASS U_!1 7173 #ENDIF 7174 #ENDIF 7175 #IFDEF !2 // is the destination defined? 7176 #DPUSH !2 // add to class 7177 #ELSE 7178 #IFSAME !2 CURRENT_CLASS // use this symbol for "current class" 7179 #DPUSH U_!$ // cc is in this symbol (set by class) 7180 #ELSE 7181 #IFDEF U_!2 7182 #DPUSH U_!2 // another standard class id 7183 #ELSE 7184 #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNDEFINED CLASS U_!2 7185 #ENDIF 7186 #ENDIF 7187 #ENDIF 7188 #IF (!0>2) // message or all specified 7189 #IFSAME !3 ALL // copy all messages 7190 #DPUSH |CI0 // 0 is all 7191 #ELSE 7192 #IFDEF !3 7193 #DPUSH !3 // message name, note full name required 7194 #ELSE 7195 #IFDEF MSG_!3 7196 #DPUSH MSG_!3 7197 #ELSE 7198 #IFDEF SET_!3 7199 #DPUSH SET_!3 7200 #ELSE 7201 #IFDEF GET_!3 7202 #DPUSH GET_!3 7203 #ELSE 7204 #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNDEFINED MESSAGE NAME !3 7205 #ENDIF 7206 #ENDIF 7207 #ENDIF 7208 #ENDIF 7209 #ENDIF 7210 #IF (!0>3) 7211 #SET Q$ 0 7212 CHAIN$HELP !4 !5 // NO_INHERIT and NO_OVERWRITE 7213 #DPUSH |CI!q // flags 7214 #ELSE 7215 #DPUSH |CI0 // no flags 7216 #ENDIF 7217 #ELSE 7218 #DPUSH |CI0 // all messages 7219 #DPUSH |CI0 // overwrite and superclasses 7220 #ENDIF 7221 !A [] $0465 |CI0 |VL 7222 #ENDIF 7223#ENDCOMMAND 7224 7225 7226// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7227// 7228// Command: 7229// LOGOUT {Driver Name {Server Name}} 7230// 7231// Description: 7232// 7233// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7234 7235#COMMAND LOGOUT 7236 !A [] $4c6 !1 !2 7237#ENDCOMMAND 7238 7239// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7240// 7241// Command: 7242// SET_TRANSACTION_RETRY 7243// 7244// Description: 7245// 7246// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7247 7248#COMMAND SET_TRANSACTION_RETRY "TO" &#LGRBOUSD . 7249 !A [] $4c8 !2 7250#ENDCOMMAND 7251 7252 7253// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7254// 7255// Command: 7256// GET_TRANSACTION_RETRY 7257// 7258// Description: 7259// 7260// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7261 7262#COMMAND GET_TRANSACTION_RETRY "TO" R . 7263 !A [] $4c9 !2 7264#ENDCOMMAND 7265 7266 7267// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7268// 7269// Command: 7270// COPY_DB 7271// 7272// Description: 7273// 7274// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7275 7276#COMMAND COPY_DB RNDI#G_ "TO" RN_DI#G 7277 COPY$DB$CALLBACK 0 7278 COPY$DB$COMPRESSION DF_FILE_COMPRESS_NONE DFFALSE 7279 #IF ( !0 > 3 ) 7280 #IF ( !0 > 5 ) 7281 #IFSAME !4 !6 7282 #ERROR DFERR_COMP_INVALID_ARGUMENT PARAMETER DUPLICATION !4 !6 7283 #ELSE 7284 #IFSAME !6 COMPRESSION 7285 COPY$DB$COMPRESSION !7 DFTRUE 7286 #ELSE 7287 #IFSAME !6 CALLBACK 7288 COPY$DB$CALLBACK !7 7289 #ELSE 7290 #ERROR DFERR_COMP_INVALID_ARGUMENT INVALID PARAMETER !6 7291 #ENDIF 7292 #ENDIF 7293 #ENDIF 7294 #ENDIF 7295 #IFSAME !4 COMPRESSION 7296 COPY$DB$COMPRESSION !5 DFTRUE 7297 #ELSE 7298 #IFSAME !4 CALLBACK 7299 COPY$DB$CALLBACK !5 7300 #ELSE 7301 #ERROR DFERR_COMP_INVALID_ARGUMENT INVALID PARAMETER !4 7302 #ENDIF 7303 #ENDIF 7304 #ENDIF 7305 !A [] $0e3 !1 !3 7306#ENDCOMMAND 7307 7308#COMMAND COPY$DB$CALLBACK R . 7309 !A [] $0e4 !1 7310#ENDCOMMAND 7311 7312#COMMAND COPY$DB$COMPRESSION R R . 7313 !A [] $0e5 !1 !2 7314#ENDCOMMAND 7315 7316 7317// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7318// 7319// Command: 7320// DECLARE_DATAFILE logicalFileName*n 7321// 7322// Description: 7323// Include the .FD for the named file and define any related symbols, 7324// e.g., FILE.FILE_NUMBER 7325// 7326// Parameter 7327// logicalFileName 7328// Base name of the .FD file, e.g., for PERSON.FD, it would be 7329// PERSON. 7330// 7331// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7332 7333//#COMMAND DECLARE_DATAFILE L#GT 7334// #IF (!0>0) 7335// #IFDEF !1.RECNUM 7336// #IFDEF !1.FILE_NUMBER 7337// #ELSE 7338// #SET Q$ !1.RECNUM 7339// #REPLACE !1.FILE_NUMBER |CI!q 7340// #ENDIF 7341// #ELSE 7342// #INCLUDE !1.FD 7343// #SET Q$ !1.RECNUM 7344// #REPLACE !1.FILE_NUMBER |CI!q 7345// #ENDIF 7346// DECLARE_DATAFILE !2 !3 !4 !5 !6 !7 !8 !9 7347// #ENDIF 7348//#ENDCOMMAND 7349 7350// Newer files may include the file_number symbol within the fd file. The rules should be: 7351// 1. If file has a recnum, it must define recnum in the file and it must NOT define file_number 7352// (we don't define file_number so these fd files will be compatible with older DFs). In this case, file_number 7353// will be defined in this command. 7354// 2. If file is new and does not support recnum, we define File_number but not recnum. Recnum will not 7355// be defined at all. 7356// Therefore, by the end of this command, file_number is always defined and recnum is defined only if it exists 7357 7358#COMMAND DECLARE_DATAFILE L#GT 7359 #IF (!0>0) 7360 #IFNDEF !1.RECNUM 7361 #IFNDEF !1.FILE_NUMBER 7362 // if neither file_number or recnum is defined, we must include the fd file 7363 #INCLUDE !1.FD 7364 #ENDIF 7365 #ENDIF 7366 // if file_number does not exist at this point we have an FD that does not 7367 // directly define it (i.e., pre rowID FD or table that suports recnum). Create the symbol 7368 #IFNDEF !1.FILE_NUMBER 7369 #SET Q$ !1.RECNUM 7370 #REPLACE !1.FILE_NUMBER |CI!q 7371 #ENDIF 7372 DECLARE_DATAFILE !2 !3 !4 !5 !6 !7 !8 !9 7373 #ENDIF 7374#ENDCOMMAND 7375 7376// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7377// 7378// Command: 7379// SET_FILE_FIELD fileNum fieldNum 7380// SET_FILE_INDEX fileNum indexNum 7381// 7382// Description: 7383// Used by API commands requiring more than 2 parameters. Assigns 7384// the fileNum and field or index number. Two commands were provided 7385// to allow improve readability of code. 7386// 7387// Parameters: 7388// fileNum: 7389// The number of the file. 7390// fieldNum: 7391// indexNum: 7392// The number of the field or index ( depending on the command. 7393// 7394// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7395 7396#COMMAND SET_FILE_FIELD ULG# ULG# . 7397 !A [] $502 !1 !2 7398#ENDCOMMAND 7399 7400#COMMAND SET_FILE_INDEX ULG# ULG# . 7401 !A [] $502 !1 !2 7402#ENDCOMMAND 7403 7404 7405// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7406// 7407// Command: 7408// SET_SEGMENT_MISC segmentNum miscNum 7409// 7410// Description: 7411// Used by API commands requiring more than 2 parameters. Assigns 7412// the segmentNum and miscNum. 7413// 7414// Parameters: 7415// segmentNum: 7416// The number of the segment of an index 7417// miscNum: 7418// A command dependent numeric value. 7419// 7420// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7421 7422#COMMAND SET_SEGMENT_MISC ULG# ULG# . 7423 !A [] $503 !1 !2 7424#ENDCOMMAND 7425 7426 7427// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7428// 7429// Command: 7430// SET_LENGTH_OFFSET length offset 7431// 7432// Description: 7433// Used by API commands requiring additional length and offset 7434// parameters. 7435// 7436// Parameters: 7437// length: 7438// Typically in bytes. 7439// offset: 7440// Typically in bytes. 7441// 7442// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7443 7444#COMMAND SET_LENGTH_OFFSET ULG# ULG# . 7445 !A [] $52E !1 !2 7446#ENDCOMMAND 7447 7448 7449// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7450// 7451// Command: 7452// GET_ATTRIBUTE attribute; 7453// {OF fileNum {fieldNum|(indexNum {segmentNum})} "TO" VARIABLE 7454// 7455// Description: 7456// Get a global, file, field, or index attribute. 7457// 7458// Parameters 7459// attribute 7460// Attribute id (as defined by API) to be set 7461// fileNum 7462// Optional handle for either a file or a structure 7463// fieldNum 7464// Optional field to be interrogated 7465// indexNum 7466// Optional index to be interrogated 7467// segmentNum 7468// Num of segment in index to be interrogated 7469// 7470// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7471 7472#COMMAND GET_ATTRIBUTE RLGU# 7473 #IFSAME !2 TO 7474 #CHECK !3 _RLGUC# 7475 #CHECK !4 . 7476 SET_FILE_FIELD |CI0 |CI0 7477 SET_SEGMENT_MISC |CI0 |CI0 7478 !A [] $501 !1 !3 7479 #ELSE 7480 #IFSAME !2 OF 7481 #ELSE 7482 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX Missing keyword "OF" 7483 #ENDIF 7484 #IFSAME !4 TO 7485 #CHECK !3 _RLGU# 7486 #CHECK !5 _RLGU# 7487 #CHECK !6 . 7488 SET_FILE_FIELD !3 |CI0 7489 SET_SEGMENT_MISC |CI0 |CI0 7490 !A [] $501 !1 !5 7491 #ELSE 7492 #IFSAME !5 TO 7493 #CHECK !3 _RLGU# 7494 #CHECK !4 _RLGU# 7495 #CHECK !6 _RCLGU# 7496 #CHECK !7 . 7497 SET_FILE_FIELD !3 !4 7498 SET_SEGMENT_MISC |CI0 |CI0 7499 !A [] $501 !1 !6 7500 #ELSE 7501 #IFSAME !6 TO 7502 #CHECK !3 _RLGU# 7503 #CHECK !4 _RLGU# 7504 #CHECK !5 _RLGU# 7505 #CHECK !7 _RCLGU# 7506 #CHECK !8 . 7507 SET_FILE_FIELD !3 !4 7508 SET_SEGMENT_MISC !5 |CI0 7509 !A [] $501 !1 !7 7510 #ELSE 7511 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX Missing keyword "TO" 7512 #ENDIF 7513 #ENDIF 7514 #ENDIF 7515 #ENDIF 7516#ENDCOMMAND 7517 7518 7519//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7520// 7521// Command: 7522// SET_ATTRIBUTE attribute; 7523// {OF fileNum {fieldNum|(indexNum {segmentNum})} "TO" VARIABLE 7524// 7525// Description: 7526// Get a global, file, field, or index attribute. 7527// 7528// Parameters 7529// attribute 7530// Attribute id (as defined by API) to be set 7531// fileNum 7532// Optional handle for either a file or a structure 7533// fieldNum 7534// Optional field to be modified 7535// indexNum 7536// Optional index to be modified 7537// segmentNum 7538// Num of segment in index to be modified 7539// 7540//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7541 7542#COMMAND SET_ATTRIBUTE RLG# 7543 #IFSAME !2 TO 7544 #CHECK !3 _RLGU# 7545 #CHECK !4 . 7546 SET_FILE_FIELD |CI0 |CI0 7547 SET_SEGMENT_MISC |CI0 |CI0 7548 !A [] $504 !1 !3 7549 #ELSE 7550 #IFSAME !2 OF 7551 #ELSE 7552 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX Missing keyword "OF" 7553 #ENDIF 7554 #IFSAME !4 TO 7555 #CHECK !3 _RLGU# 7556 #CHECK !5 _RLGU# 7557 #CHECK !6 . 7558 SET_FILE_FIELD !3 |CI0 7559 SET_SEGMENT_MISC |CI0 |CI0 7560 !A [] $504 !1 !5 7561 #ELSE 7562 #IFSAME !5 TO 7563 #CHECK !3 _RLGU# 7564 #CHECK !4 _RLGU# 7565 #CHECK !6 _RLGU# 7566 #CHECK !7 . 7567 SET_FILE_FIELD !3 !4 7568 SET_SEGMENT_MISC |CI0 |CI0 7569 !A [] $504 !1 !6 7570 #ELSE 7571 #IFSAME !6 TO 7572 #CHECK !3 _RLGU# 7573 #CHECK !4 _RLGU# 7574 #CHECK !5 _RLGU# 7575 #CHECK !7 _RLGU# 7576 #CHECK !8 . 7577 SET_FILE_FIELD !3 !4 7578 SET_SEGMENT_MISC !5 |CI0 7579 !A [] $504 !1 !7 7580 #ELSE 7581 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX Missing keyword "TO" 7582 #ENDIF 7583 #ENDIF 7584 #ENDIF 7585 #ENDIF 7586#ENDCOMMAND 7587 7588 7589// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7590// 7591// Command: 7592// STRUCTURE_START fileNum driverName 7593// 7594// Description: 7595// This function begins creation of a new file or modification of 7596// an existing file. 7597// 7598// Parameters: 7599// fileNum: 7600// The number for an existing file. It must be 0 if starting a 7601// new file or the number of a file being modified. In either 7602// case, a handle to the structure is written back into fileNum 7603// so that attributes of the new structure can be queried. 7604// 7605// driverName: 7606// Name of the driver to use when creating a new file. 7607// 7608// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7609 7610#COMMAND STRUCTURE_START RLG#U INDLG#U . 7611 !A [] $505 !1 !2 7612#ENDCOMMAND 7613 7614 7615// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7616// 7617// Command: 7618// STRUCTURE_ABORT structureHandle 7619// 7620// Description: 7621// Terminates a file structure operation without completing it. 7622// 7623// Parameters: 7624// structureHandle 7625// Handle from the structure_start. 7626// 7627// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7628 7629#COMMAND STRUCTURE_ABORT RLG#U . 7630 !A [] $508 !1 7631#ENDCOMMAND 7632 7633 7634// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7635// 7636// Command: 7637// STRUCTURE_END fileNum {restructureOptions {tempDir {callBackObject}}} 7638// 7639// Description: 7640// This function commits a structure operation, performing restructure 7641// on the file if necessary. 7642// 7643// Parameters: 7644// fileNum: 7645// The number of the file ( or handle returned by STRUCTURE_START 7646// for a new file ) which a STRUCTURE_START has been done on. 7647// 7648// restructureOptions: 7649// The IAND'ing of the following API attributes: 7650// DF_STRUCTEND_OPT_NONE 7651// DF_STRUCTEND_OPT_FORCE 7652// DF_STRUCTEND_OPT_RECOMPRESS 7653// DF_STRUCTEND_OPT_INPLACE 7654// 7655// tempDir: 7656// A temporary directory to be used in not restructuring in place. 7657// 7658// callBackObject: 7659// An object id which will receive MSG_CALLBACK during the restructure 7660// operation. This the first parameter of this message is a string 7661// containing progress information. 7662// 7663// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7664 7665#COMMAND STRUCTURE_END RLUG# LUG# NDILUG# LUG# . 7666 !A [] $506 !1 !2 7667 !A [] $507 !3 !4 7668#ENDCOMMAND 7669 7670 7671// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7672// 7673// Command: 7674// STRUCTURE_COPY fromFileNumber TO toFileNumber 7675// 7676// Descriptiion: 7677// Copies structure of one file to another 7678// 7679// Parameters: 7680// fromFileNumber: 7681// File Number of the file from where the structure is to be copied 7682// 7683// toFileNumber: 7684// Number of the file to which the structure is to be copied 7685// 7686// 7687// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7688 7689 7690#COMMAND STRUCTURE_COPY RLUG# "TO" RLUG# . 7691 !A [] $51C !1 !3 7692#ENDCOMMAND 7693 7694// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7695// 7696// Command: 7697// FILL_FIELD FileNumber fieldNumber { "WITH" <Fill_Type> } 7698// 7699// Description: 7700// Fill a field with the highest or lowest value ot the type. 7701// Fill_type: 7702// DF_HIGH or DF_LOW. For example for a numeric field, DF_HIGH is 7703// all 9's and lowest being all 0's 7704// 7705// Parameters: 7706// FileNumber: 7707// Number of the file 7708// 7709// Field Number: 7710// Number of the field which is to be filled 7711// 7712// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7713 7714#COMMAND FILL_FIELD RLUG# RLUG# "WITH" RLUG# . 7715 !A [] $51D !1 7716 !A [] $51E !2 !4 7717#ENDCOMMAND 7718 7719 7720// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7721// 7722// Command: 7723// CREATE_FIELD fileNum {"AT" fieldNum} 7724// 7725// Description: 7726// Creates a new field. If fieldNum is ommitted or 0, 7727// field is appended to record. Actual fieldNum assigned 7728// to new field is returned in fieldNum. fileNum must 7729// be the number of a file currently being restructured or 7730// created. 7731// 7732// Parameter: 7733// fileNum 7734// Handle for either a file or a structure 7735// fieldNum 7736// Field to be modified 7737// 7738// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7739 7740#COMMAND CREATE_FIELD RLUG# "AT""" LUG# . 7741 !A [] $509 !1 !3 7742#ENDCOMMAND 7743 7744 7745// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7746// 7747// Command: 7748// DELETE_FIELD fileNum fieldNum 7749// 7750// Description: 7751// Delete the field described by fieldNum and fileNum. NOTE: 7752// the fileNum handle must be for a file that has had a STRUCTURE_START 7753// done on it. 7754// 7755// Parameter: 7756// fileNum 7757// Handle for either a file or a structure 7758// fieldNum 7759// Field to be modified 7760// 7761// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7762 7763#COMMAND DELETE_FIELD R R . 7764 !A [] $50b !1 !2 7765#ENDCOMMAND 7766 7767 7768// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7769// 7770// Command: 7771// CREATE_INDEX fileNum {"AT" indexNum} 7772// 7773// Description: 7774// Creates a new index for file fileNum. STRUCTURE_START must have 7775// been called for fileNum. IndexNum will contain the number of 7776// the index created; any value in it prior to the call is ignored. 7777// 7778// Parameter: 7779// indexNum 7780// Handle for either a file or a structure 7781// fieldNum 7782// Field to be modified 7783// 7784// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7785 7786#COMMAND CREATE_INDEX RLUG# "AT" RLUG#C . 7787 !A [] $50a !1 !3 7788#ENDCOMMAND 7789 7790 7791// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7792// 7793// Command: 7794// DELETE_INDEX fileNum indexNum 7795// 7796// Description: 7797// Delete the index described by indexNum and fileNum. NOTE: 7798// the fileNum handle must be for a file that has had a 7799// STRUCTURE_START done on it. 7800// 7801// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7802 7803#COMMAND DELETE_INDEX RLUG# RLUG# . 7804 !A [] $50c !1 !2 7805#ENDCOMMAND 7806 7807 7808// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7809// 7810// Command: 7811// VARIABLE_FILE_COMMAND command [fileSymbol|fileNum] 7812// 7813// Description: 7814// This command allows the execution of any other command, 7815// handling both file numbers ( 102 ) and file symbols 7816// ( PERSON ) 7817// 7818// Parameters: 7819// command: 7820// The DataFlex command number 7821// fileSymbol: 7822// The symbol used to load the .FD file; the logical name of the file. 7823// fileNum: 7824// The number of the file ( obviously ). 7825// 7826// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7827 7828#COMMAND VARIABLE_FILE_COMMAND 7829 //#IFSAME !2 |FS0,0& |FN0,0& |FD0,0& 7830 // This supports both Indirect_file and Indirect_file.Recnum -JJT 7831 #IFSAME !2.FILE_NUMBER |FS0,0& |FN0,0& |FD0,0& |FS0,0&.RECNUM 7832 !A [] !1 |CI0 !3 7833 #ELSE 7834 #IFCLASS !2 SNDIECWVF 7835 !A [] !1 !2 !3 7836 #ELSE 7837 DECLARE_DATAFILE !2 7838 !A [] !1 !2.FILE_NUMBER !3 7839 #ENDIF 7840 #ENDIF 7841#ENDCOMMAND 7842 7843 7844// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7845// 7846// Command: 7847// OPEN {fileName AS} [logicalName|fileNum|] {MODE fileMode} index 7848// 7849// Description: 7850// Open a DataFile using the specified filename of filenumber. 7851// 7852// Parameters: 7853// fileName: 7854// A string containing the physical name of the file 7855// logicalName: 7856// The symbolic name used to find the .FD file. 7857// fileNum: 7858// A number which will be used to open the file. If using the "AS" 7859// form, fileNum may be a variable containing a 0. In that case, 7860// filelist will be searched for an entry with a logical name 7861// matching fileName; the number of the first entry matching will 7862// be used as the number to open the file and will be written 7863// back to the variable used for fileNum. 7864// fileMode: 7865// The mode to open the file in ( e.g., DF_EXCLUSIVE ). 7866// index: 7867// Index to buffer, may be either a number or an index symbol (INDEX.1) 7868// 7869// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7870 7871#COMMAND API_OPEN RLG# 7872 #IFSAME !2 AS 7873 //#IFSAME !3 |FS0,0& |FN0,0& |FD0,0& 7874 // This supports both Indirect_file and Indirect_file.Recnum -JJT 7875 #IFSAME !3.FILE_NUMBER |FS0,0& |FN0,0& |FD0,0& |FS0,0&.RECNUM 7876 #SET Q$ $516 // Open indirect 7877 #ELSE 7878 #SET Q$ $50d // Open normally 7879 #ENDIF 7880 #IFSAME !4 MODE 7881 #CHECK !5 _RLUG# 7882 !A [] $517 !5 !6 7883 VARIABLE_FILE_COMMAND !q !3 !1 7884 #ELSE 7885 !A [] $517 DF_SHARE !4 7886 VARIABLE_FILE_COMMAND !q !3 !1 7887 #ENDIF 7888 #ELSE 7889 //#IFSAME !1 |FS0,0& |FN0,0& |FD0,0& 7890 // This supports both Indirect_file and Indirect_file.Recnum -JJT 7891 #IFSAME !1.FILE_NUMBER |FS0,0& |FN0,0& |FD0,0& |FS0,0&.RECNUM 7892 #SET Q$ $516 // Open indirect 7893 #ELSE 7894 #SET Q$ $50d // Open normally 7895 #ENDIF 7896 #IFSAME !2 MODE 7897 #CHECK !3 _RLUG# 7898 !A [] $517 !3 !4 7899 VARIABLE_FILE_COMMAND !q !1 |CS"" 7900 #ELSE 7901 !A [] $517 DF_SHARE !2 7902 VARIABLE_FILE_COMMAND !q !1 |CS"" 7903 #ENDIF 7904 #ENDIF 7905#ENDCOMMAND 7906 7907// Removed for 11.0 - only works with recnum tables. This was never documented and never designed to be used. 7908// The Old_xxx commands were created when the API was added and probably left here for testing. 7909// Anyone using the direct old command value (e.g. $c4 for relate) will only work with recnum tables. It is 7910// very unikely anyone is using the actual command codes (a very bad practice that this not at all supported). 7911//#COMMAND OLD_OPEN 7912// #IFSAME !2 AS 7913// DECLARE_DATAFILE !3 7914// #CHECK !3 _TR 7915// #CHECK !1 _#LG 7916// #CHECK !5 . 7917// #CHECK !3.RECNUM _URW#LG 7918// #IF (!0>3) 7919// #CHECK !4 _DGLOBU# 7920// MOVEINT !4 TO FIELDNUMBER 7921// !A [] $182 !3.RECNUM !1 7922// #ELSE 7923// MOVEINT |CI0 TO FIELDNUMBER 7924// !A [] $182 !3.RECNUM !1 7925// #ENDIF 7926// #ELSE 7927// #CHECK !3 . 7928// DECLARE_DATAFILE !1 7929// #CHECK !1.RECNUM _URW#LG 7930// #IF (!0>1) 7931// #CHECK !2 _FWSNDELG#U 7932// !A [] $180 !1.RECNUM !2 7933// #ELSE 7934// !A [] $180 !1.RECNUM |CI0 7935// #ENDIF 7936// #ENDIF 7937//#ENDCOMMAND 7938 7939#COMMAND OPEN 7940 API_OPEN !1 !2 !3 !4 !5 !6 !7 !8 !9 7941#ENDCOMMAND 7942 7943 7944// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7945// 7946// Command: 7947// CLEAR {logicalName|fileNum}*n 7948// 7949// Description: 7950// Clear the current record in the file. 7951// 7952// Parameters: 7953// logicalName: 7954// The name used to identify the file in a DataFlex program. 7955// fileNum: 7956// The number used to open the file. 7957// 7958// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7959 7960#COMMAND API_CLEAR RLG# 7961 VARIABLE_FILE_COMMAND $50e !1 7962 #IF (!0>1) 7963 API_CLEAR !2 !3 !4 !5 !6 !7 !8 !9 7964 #ENDIF 7965#ENDCOMMAND 7966 7967// see Old_open command for notes on this removal 7968//#COMMAND OLD_CLEAR CVWR#LGE 7969// #IFDEF !1 7970// !A [] $C1 !1 7971// #ELSE 7972// #CHECK !1.RECNUM _CVWLR#GU 7973// !A [] $C1 !1.RECNUM 7974// #ENDIF 7975// #IF !0>1 7976// OLD_CLEAR !2 !3 !4 !5 !6 !7 !8 !9 7977// #ENDIF 7978//#ENDCOMMAND 7979 7980#COMMAND CLEAR 7981 #IFSAME !1 DF_ALL 7982 !A [] $52C 7983 #ELSE 7984 API_CLEAR !1 !2 !3 !4 !5 !6 !7 !8 !9 7985 #ENDIF 7986#ENDCOMMAND 7987 7988 7989// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 7990// 7991// Command: 7992// NewRecord {logicalName|fileNum}*n 7993// 7994// Description: 7995// Sets the record buffer to inactive while retaining all existing data (w/ exception of recnum which is 0ed) 7996// 7997// Parameters: 7998// logicalName: 7999// The name used to identify the file in a DataFlex program. 8000// fileNum: 8001// The number used to open the file. 8002// 8003// added as of 12.0 - This is the recommended way to "inactivate" a record so it can be saved as a new record. 8004// if recnum is used, this always moves 0 to recnum. 8005// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8006 8007#COMMAND NEWRECORD RLG# 8008 VARIABLE_FILE_COMMAND $531 !1 8009 #IF (!0>1) 8010 NEWRECORD !2 !3 !4 !5 !6 !7 !8 !9 8011 #ENDIF 8012#ENDCOMMAND 8013 8014 8015 8016// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8017// 8018// Command: 8019// CLOSE {logicalName|fileNum}*n 8020// 8021// Description: 8022// Closes the file. 8023// 8024// Parameters: 8025// logicalName: 8026// The name used to identify the file in a DataFlex program. 8027// fileNum: 8028// The number used to open the file. 8029// 8030// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8031 8032#COMMAND API_CLOSE RLG# 8033 VARIABLE_FILE_COMMAND $50f !1 8034 #IF (!0>1) 8035 API_CLOSE !2 !3 !4 !5 !6 !7 !8 !9 8036 #ENDIF 8037#ENDCOMMAND 8038 8039// see Old_open command for notes on this removal 8040//#COMMAND OLD_CLOSE RTE 8041// #CHECK !1.RECNUM _CVWLR#GU 8042// !A [] $181 !1.RECNUM 8043// #IF (!0>1) 8044// OLD_CLOSE !2 !3 !4 !5 !6 !7 !8 !9 8045// #ENDIF 8046//#ENDCOMMAND 8047 8048#COMMAND CLOSE 8049 #IFSAME !1 DF_ALL 8050 !A [] $52D !2 8051 #ELSE 8052 API_CLOSE !1 !2 !3 !4 !5 !6 !7 !8 !9 8053 #ENDIF 8054#ENDCOMMAND 8055 8056 8057// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8058// 8059// Command: 8060// GET_FIELD_VALUE fileNum fieldNum "TO" destVariable; 8061// {"LENGTH" iLength {"OFFSET" iOffset}} 8062// 8063// Description: 8064// Gets the value of a field into the destVariable doing any 8065// type conversion necessary. 8066// 8067// Parameters: 8068// fileNum: 8069// The number used to open the file. 8070// fieldNum: 8071// The number of the field. 8072// destVariable: 8073// Where the fields value will be put. 8074// iLength: 8075// The length of the data to be used. By default, all 8076// data (or as much as can be) is written into the field. 8077// A length of 0 causes all data to be written. 8078// iOffset: 8079// The first byte in the field where data will be written, from 0. 8080// Default is that data will be written into the field starting at 8081// byte 0. 8082// 8083// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8084 8085#COMMAND GET$FIELD$VALUE$HELP RLGU# RLGU# "TO" CRLGU# "LENGTH" RLGU# "OFFSET" RLGU# . 8086 SET_FILE_FIELD !1 !2 8087 SET_LENGTH_OFFSET !6 !8 8088 !A [] $510 !4 8089#ENDCOMMAND 8090 8091#COMMAND GET_FIELD_VALUE RLGU# RLGU# "TO" CRLGU# 8092 #IF (!0=4) 8093 GET$FIELD$VALUE$HELP !1 !2 !3 !4 LENGTH 0 OFFSET 0 8094 #ELSE 8095 #IF (!0=6) 8096 GET$FIELD$VALUE$HELP !1 !2 !3 !4 !5 !6 OFFSET 0 8097 #ELSE 8098 GET$FIELD$VALUE$HELP !1 !2 !3 !4 !5 !6 !7 !8 !9 8099 #ENDIF 8100 #ENDIF 8101#ENDCOMMAND 8102 8103 8104// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8105// 8106// Command: 8107// SET_FIELD_VALUE fileNum fieldNum "TO" newValue; 8108// {"LENGTH" iLength {"OFFSET" iOffset {noTruncateFlag}}} 8109// 8110// Description: 8111// Sets the value of a field to newValue doing any type conversion 8112// necessary. 8113// 8114// Parameters: 8115// fileNum: 8116// The number used to open the file. 8117// fieldNum: 8118// The number of the field. 8119// newValue: 8120// The value to be put into the field. 8121// iLength: 8122// The length of the data to be used. By default, all 8123// data (or as much as can be) is written into the field. 8124// A length of 0 causes all data to be written. 8125// iOffset: 8126// The first byte in the field where data will be written, from 0. 8127// Default is that data will be written into the field starting at 8128// byte 0. 8129// noTruncateFlag: 8130// Flag which signifies whether existing data in the field 8131// following data that is edited will be truncated or not. By 8132// default, all old data following new data written is truncated. 8133// 8134// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8135 8136#COMMAND SET$FIELD$VALUE$HELP$2 "LENGTH" RLGU# "OFFSET" RLGU# . 8137 SET_LENGTH_OFFSET !2 !4 8138#ENDCOMMAND 8139 8140#COMMAND SET$FIELD$VALUE$HELP RLGU# RLGU# "TO" RLGU# RLGU# . 8141 SET_FILE_FIELD !1 !2 8142 !A [] $511 !4 !5 8143#ENDCOMMAND 8144 8145#COMMAND SET_FIELD_VALUE RLGU# RLGU# "TO" RLGU# 8146 #IF (!0=4) 8147 SET$FIELD$VALUE$HELP$2 LENGTH 0 OFFSET 0 8148 SET$FIELD$VALUE$HELP !1 !2 !3 !4 DFFALSE 8149 #ELSE 8150 #IF (!0=6) 8151 SET$FIELD$VALUE$HELP$2 !5 !6 OFFSET 0 8152 SET$FIELD$VALUE$HELP !1 !2 !3 !4 DFFALSE 8153 #ELSE 8154 #IF (!0=8) 8155 SET$FIELD$VALUE$HELP$2 !5 !6 !7 !8 8156 SET$FIELD$VALUE$HELP !1 !2 !3 !4 DFFALSE 8157 #ELSE 8158 SET$FIELD$VALUE$HELP$2 !5 !6 !7 !8 8159 SET$FIELD$VALUE$HELP !1 !2 !3 !4 !9 8160 #ENDIF 8161 #ENDIF 8162 #ENDIF 8163#ENDCOMMAND 8164 8165 8166// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8167// 8168// Command: 8169// SAVERECORD {logicalName|fileNum}*n 8170// 8171// Description: 8172// Saves the current record in the specified files. 8173// 8174// Parameters: 8175// logicalName: 8176// The name used to identify the file in a DataFlex program. 8177// fileNum: 8178// The number used to open the file. 8179// 8180// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8181 8182#COMMAND API_SAVERECORD RLG# 8183 VARIABLE_FILE_COMMAND $512 !1 8184 #IF !0>1 8185 API_SAVERECORD !2 !3 !4 !5 !6 !7 !8 !9 8186 #ENDIF 8187#ENDCOMMAND 8188 8189// see Old_open command for notes on this removal 8190//#COMMAND OLD_SAVERECORD CVWR#LGE 8191// #IFDEF !1 8192// !A [] $C2 !1 8193// #ELSE 8194// #CHECK !1.RECNUM _CVWLR#GU 8195// !A [] $C2 !1.RECNUM 8196// #ENDIF 8197// #IF !0>1 8198// OLD_SAVERECORD !2 !3 !4 !5 !6 !7 !8 !9 8199// #ENDIF 8200//#ENDCOMMAND 8201 8202#COMMAND SAVERECORD 8203 API_SAVERECORD !1 !2 !3 !4 !5 !6 !7 !8 !9 8204#ENDCOMMAND 8205 8206 8207// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8208// 8209// Command: 8210// ATTACH {logicalName|fileNum}*n 8211// 8212// Description: 8213// Updates all fields in the current record which relate to another file 8214// with the values of those fields in the parent ( or related-to) files. 8215// 8216// Parameters: 8217// logicalName: 8218// The name used to identify the file in a DataFlex program. 8219// fileNum: 8220// The number used to open the file. 8221// 8222// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8223 8224#COMMAND API_ATTACH RLG# 8225 VARIABLE_FILE_COMMAND $513 !1 8226 #IF !0>1 8227 API_ATTACH !2 !3 !4 !5 !6 !7 !8 !9 8228 #ENDIF 8229#ENDCOMMAND 8230 8231// see Old_open command for notes on this removal 8232//#COMMAND OLD_ATTACH CVWR#LGE 8233// #IFDEF !1 8234// !A [] $C5 !1 8235// #ELSE 8236// #CHECK !1.RECNUM _CVWLR#GU 8237// !A [] $C5 !1.RECNUM 8238// #ENDIF 8239// #IF !0>1 8240// OLD_ATTACH !2 !3 !4 !5 !6 !7 !8 !9 8241// #ENDIF 8242//#ENDCOMMAND 8243 8244#COMMAND ATTACH 8245 API_ATTACH !1 !2 !3 !4 !5 !6 !7 !8 !9 8246#ENDCOMMAND 8247 8248 8249// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8250// 8251// Command: 8252// SAVE {logicalName|fileNum}*n 8253// 8254// Description: 8255// Save the contents of the currently active record, updating the 8256// records with any data in parent files from related fields (as per 8257// attach). 8258// 8259// Parameters: 8260// logicalName: 8261// The name used to identify the file in a DataFlex program. 8262// fileNum: 8263// The number used to open the file. 8264// 8265// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8266 8267#COMMAND API_SAVE RLG# 8268 ATTACH !1 8269 SAVERECORD !1 8270 #IF (!0>1) 8271 API_SAVE !2 !3 !4 !5 !6 !7 !8 !9 8272 #ENDIF 8273#ENDCOMMAND 8274 8275// see Old_open command for notes on this removal 8276//#COMMAND OLD_SAVE CVWR#LGE 8277// #IFDEF !1 8278// !A [] $C5 !1 8279// !A [] $C2 !1 8280// #ELSE 8281// #CHECK !1.RECNUM _CLVWLR#GU 8282// !A [] $C5 !1.RECNUM 8283// !A [] $C2 !1.RECNUM 8284// #ENDIF 8285// #IF !0>1 8286// OLD_SAVE !2 !3 !4 !5 !6 !7 !8 !9 8287// #ENDIF 8288//#ENDCOMMAND 8289 8290#COMMAND SAVE 8291 API_SAVE !1 !2 !3 !4 !5 !6 !7 !8 !9 8292#ENDCOMMAND 8293 8294 8295// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8296// 8297// Command: 8298// DELETE {fileNum|logicalName}*n 8299// 8300// Description: 8301// Delete the currently active record from the datafile 8302// 8303// Parameters: 8304// logicalName: 8305// The name used to identify the file in a DataFlex program. 8306// fileNum: 8307// The number used to open the file. 8308// 8309// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8310 8311// see Old_open command for notes on this removal 8312//#COMMAND OLD_DELETE CVWR#LGE 8313// #IFDEF !1 8314// !A [] $C3 !1 8315// #ELSE 8316// #CHECK !1.RECNUM _CVWLR#GU 8317// !A [] $C3 !1.RECNUM 8318// #ENDIF 8319// #IF !0>1 8320// OLD_DELETE !2 !3 !4 !5 !6 !7 !8 !9 8321// #ENDIF 8322//#ENDCOMMAND 8323 8324#COMMAND API_DELETE RLG# 8325 VARIABLE_FILE_COMMAND $514 !1 8326 #IF !0>1 8327 API_DELETE !2 !3 !4 !5 !6 !7 !8 !9 8328 #ENDIF 8329#ENDCOMMAND 8330 8331#COMMAND DELETE 8332 API_DELETE !1 !2 !3 !4 !5 !6 !7 !8 !9 8333#ENDCOMMAND 8334 8335 8336// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8337// 8338// Command: 8339// RELATE {fileNum|logicalName}*n 8340// 8341// Description: 8342// Moves all related fields into the parent files and then performs a 8343// find in the parents using the main index of the first (or primary) 8344// related field for each parent. 8345// 8346// Parameters: 8347// logicalName: 8348// The name used to identify the file in a DataFlex program. 8349// fileNum: 8350// The number used to open the file. 8351// 8352// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8353 8354// see Old_open command for notes on this removal 8355//#COMMAND OLD_RELATE CVWR#LGR 8356// $c4 is not public anywhere now. It only works with recnum (e.g. |fnXxxx,00). If anyone one is actually using 8357// $c4 in their code (highly unlikely) this will only work with recnum tables 8358// #IFDEF !1 8359// !A [] $C4 !1 8360// #ELSE 8361// #CHECK !1.RECNUM _CVWLR#GU 8362// !A [] $C4 !1.RECNUM 8363// #ENDIF 8364// #IF !0>1 8365// OLD_RELATE !2 !3 !4 !5 !6 !7 !8 !9 8366// #ENDIF 8367//#ENDCOMMAND 8368 8369#COMMAND API_RELATE RLG# 8370 VARIABLE_FILE_COMMAND $515 !1 8371 #IF !0>1 8372 API_RELATE !2 !3 !4 !5 !6 !7 !8 !9 8373 #ENDIF 8374#ENDCOMMAND 8375 8376#COMMAND RELATE 8377 API_RELATE !1 !2 !3 !4 !5 !6 !7 !8 !9 8378#ENDCOMMAND 8379 8380 8381// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8382// 8383// Command: 8384// REREAD {fileNum|logicalName}*n 8385// 8386// Description: 8387// Locks all files and then re-finds the current record in each file 8388// specified as an argument to the command. If no files are specified, 8389// then all files are reread. 8390// 8391// Parameters: 8392// logicalName: 8393// The name used to identify the file in a DataFlex program. 8394// fileNum: 8395// The number used to open the file. 8396// 8397// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8398 8399// see Old_open command for notes on this removal 8400//#COMMAND OLD_REFRESH T // Re-find all files listed by record identity 8401// #CHECK !1.RECNUM _RUWG 8402// !A [] $C0 !1.RECNUM |CI2 // FIND command 8403// !A [FINDERR] $047 |CI25 |CS"!1" // ERROR command 8404// #IF !0>1 8405// OLD_REFRESH !2 !3 !4 !5 !6 !7 !8 !9 8406// #ENDIF 8407//#ENDCOMMAND 8408 8409// see Old_open command for notes on this removal 8410//#COMMAND OLD_REREAD 8411// #IF !0=0 8412// !A [] $0C9 // REREAD command 8413// #ELSE 8414// !A [] $0C7 // LOCK command 8415// [MULTIUSER] OLD_REFRESH !1 !2 !3 !4 !5 !6 !7 !8 !9 8416// #ENDIF 8417//#ENDCOMMAND 8418 8419// private. Does a reread for passed file using GetRowId function 8420#COMMAND VARIABLE_ROWKEY_REFRESH_COMMAND 8421 // This supports both Indirect_file and Indirect_file.Recnum 8422 #IFSAME !1.FILE_NUMBER |FS0,0& |FN0,0& |FD0,0& |FS0,0&.RECNUM 8423 // if someone is doing a Reread and passing indirect_file, then they need to support recnum 8424 // tables. This technique is not recommended and I doubt if anyone is actually doing this! 8425 !A [] $CC |CI0 |CI2 8426 #ELSE 8427 // the old api_refresh used index_number this so we can safely use this variable (it is not used) 8428 #IFCLASS !1 SNDIECWVF 8429 Move (FindByRowId(!1,GetRowId(!1))) to Index_number 8430 #ELSE 8431 DECLARE_DATAFILE !1 8432 Move (FindByRowId(!1.FILE_NUMBER,GetRowId(!1.FILE_NUMBER))) to Index_number 8433 #ENDIF 8434 #ENDIF 8435#ENDCOMMAND 8436 8437#COMMAND API_REFRESH 8438 #IF (!0>0) 8439 #CHECK !1 _LG# 8440 // uses GetRowId function to do the reread 8441 VARIABLE_ROWKEY_REFRESH_COMMAND !1 8442 #IFCLASS !1 SNDIECWV 8443 [FINDERR] ERROR 25 !1 8444 #ELSE 8445 [FINDERR] ERROR 25 |CS"!1" 8446 #ENDIF 8447 API_REFRESH !2 !3 !4 !5 !6 !7 !8 !9 8448 // the old api_refresh used index_number and set it to zero. We do this to 8449 // in the unlikely event that someone is counting on this being zero outside of the command 8450 MOVE 0 to INDEX_NUMBER 8451 #ENDIF 8452#ENDCOMMAND 8453 8454 8455//#COMMAND API_REFRESH 8456// #IF (!0>0) 8457// #CHECK !1 _LG# 8458// MOVE 0 to INDEX_NUMBER 8459// VARIABLE_FILE_COMMAND $CC !1 |CI2 8460// #IFCLASS !1 SNDIECWV 8461// [FINDERR] ERROR 25 !1 8462// #ELSE 8463// [FINDERR] ERROR 25 |CS"!1" 8464// #ENDIF 8465// API_REFRESH !2 !3 !4 !5 !6 !7 !8 !9 8466// #ENDIF 8467//#ENDCOMMAND 8468 8469#COMMAND API_REREAD 8470 #IF (!0=0) 8471 !A [] $0C9 // REREAD ALL 8472 #ELSE 8473 !A [] $0C7 // LOCK 8474 [MULTIUSER] API_REFRESH !1 !2 !3 !4 !5 !6 !7 !8 !9 8475 #ENDIF 8476#ENDCOMMAND 8477 8478#COMMAND REREAD 8479 API_REREAD !1 !2 !3 !4 !5 !6 !7 !8 !9 8480#ENDCOMMAND 8481 8482 8483// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8484// 8485// Command: 8486// ZEROFILE {fileNum|logicalName} 8487// 8488// Description: 8489// Erases all data within the file. 8490// 8491// Parameters: 8492// logicalName: 8493// The name used to identify the file in a DataFlex program. 8494// fileNum: 8495// The number used to open the file. 8496// 8497// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8498 8499// see Old_open command for notes on this removal 8500//#COMMAND OLD_ZEROFILE $RT . 8501// #IFDEF !1.RECNUM 8502// #SET Q$ !1.RECNUM 8503// !A [] $308 |CI!q 8504// #ELSE 8505// #CHECK !1 _SG#L 8506// !A [] $308 !1 8507// #ENDIF 8508//#ENDCOMMAND 8509 8510#COMMAND API_ZEROFILE RLG# . 8511 VARIABLE_FILE_COMMAND $308 !1 8512#ENDCOMMAND 8513 8514#COMMAND ZEROFILE 8515 API_ZEROFILE !1 !2 !3 !4 !5 !6 !7 !8 !9 8516#ENDCOMMAND 8517 8518 8519// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8520// 8521// Command: 8522// VCONSTRAIN fileNum RELATES fileNum2 8523// VCONSTRAIN fileNum AS boolExpression 8524// VCONSTRAIN fileNum fieldNum mode expression 8525// VCONSTRAIN fileNum fieldNum mode fileNum2 fieldNum2 8526// 8527// Description: 8528// This command allows a variable constraint to be created. 8529// 8530// Parameters: 8531// fileNum 8532// Num of the file to be constrained 8533// fieldNum 8534// Num of the field to be constrained 8535// boolExpression 8536// An expression which is treated as FALSE if it evaluates to zero, 8537// TRUE if non-zero 8538// expression 8539// Any DataFlex expression 8540// fileNum2 8541// Num of the file to be constrained to 8542// fieldNum2 8543// Num of the field to be constrained to 8544// mode 8545// Either the symbols LT, LE, EQ, NE, GT, GE, CONTAINS, and MATCHES, 8546// or an expression that corresponds to their symbolic value. 8547// MATCHES = 6, CONTAINS = 7. 8548// 8549// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8550 8551#COMMAND CONSTRAIN R 8552 #IFSAME !2 AS 8553 #CHECK !3 _CFLVNSWG# 8554 #CHECK !1.FILE_NUMBER _R#ULWV 8555 #SET Q$ !1.FILE_NUMBER 8556 !A [] $DB |CI!q !3 // FILE AS (BOOL-EXP) 8557 #ELSE 8558 #IFSAME !2 BETWEEN // FIELD BETWEEN A AND B 8559 #CHECK !4 "AND" 8560 CONSTRAIN !1 GE !3 8561 CONSTRAIN !1 LE !5 8562 #ELSE 8563 #IFSAME !2 RELATES 8564 #CHECK !3 "TO" 8565 #IFDEF !1 8566 #IFDEF !4 8567 !A [] $D9 !1 !4 // FILE RELATES TO FILE 8568 #ELSE 8569 !A [] $D9 !1 !4.FILE_NUMBER // FILE RELATES TO FILE 8570 #ENDIF 8571 #ELSE 8572 #IFDEF !4 8573 !A [] $D9 !1.FILE_NUMBER !4 8574 #ELSE 8575 !A [] $D9 !1.FILE_NUMBER !4.FILE_NUMBER 8576 #ENDIF 8577 #ENDIF 8578 #ELSE 8579 #CHECK !1 _R#LWVCEBG 8580 #IF !0>1 8581 #IFSAME !2 MATCHES 8582 #SET Q$ 6 8583 #ELSE 8584 #IFSAME !2 CONTAINS 8585 #SET Q$ 7 8586 #ELSE 8587 #CHECK !2 _U 8588 #SET Q$ !2 8589 #ENDIF 8590 #ENDIF 8591 MOVE |CI!q TO INDEX_NUMBER 8592 #IFCLASS !3 "F" 8593 !A [] $D2 !1 !3 // FILE MODE FILE 8594 #ELSE 8595 !A [] $D1 !1 !3 // FILE MODE VALUE 8596 #ENDIF 8597 #ELSE 8598 #CHECK !1 _CVW#GRE 8599 !A [] $D3 !1 // FIELD ONLY 8600 #ENDIF 8601 #ENDIF 8602 #ENDIF 8603 #ENDIF 8604#ENDCOMMAND 8605 8606// Handles comparing file.field to expression|file.field. 8607#COMMAND VCONSTRAIN_COMPARE #LGUR #LGUR LR #LGUR #LGU . 8608 !A [] $E7 !1 !2 // Store fileNum fieldNum 8609 #IFSAME !3 MATCHES CONTAINS $0 $1 $2 $3 $4 $5 $6 $7 8610 #IFSAME !3 MATCHES 8611 #SET Q$ 6 8612 #ELSE 8613 #IFSAME !3 CONTAINS 8614 #SET Q$ 7 8615 #ELSE 8616 #CHECK !3 _U 8617 #SET Q$ !3 8618 #ENDIF 8619 #ENDIF 8620 !A [] $E8 |CI!q // Store comparison mode 8621 #ELSE 8622 !A [] $E8 !3 // Store comparison mode 8623 #ENDIF 8624 #IF (!0>4) 8625 !A [] $E9 !4 !5 // fileNum2 fieldNum2 8626 #ELSE 8627 !A [] $EA !4 // Expression 8628 #ENDIF 8629#ENDCOMMAND 8630 8631#COMMAND VCONSTRAIN_AS #LGUR "AS" #LGUR . 8632 !A [] $DB !1 !3 8633#ENDCOMMAND 8634 8635#COMMAND VCONSTRAIN_RELATE #LGUR "RELATES" #LGUR . 8636 !A [] $D9 !1 !3 8637#ENDCOMMAND 8638 8639#COMMAND VCONSTRAIN 8640 #IFSAME !2 RELATES 8641 VCONSTRAIN_RELATE !1 !2 !3 !4 !5 !6 !7 !8 !9 8642 #ELSE 8643 #IFSAME !2 AS 8644 VCONSTRAIN_AS !1 !2 !3 !4 !5 !6 !7 !8 !9 8645 #ELSE 8646 VCONSTRAIN_COMPARE !1 !2 !3 !4 !5 !6 !7 !8 !9 8647 #ENDIF 8648 #ENDIF 8649#ENDCOMMAND 8650 8651// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8652// 8653// Command: 8654// SORT fileNum {indexNumbers {options {callBackObject}}} 8655// 8656// Description: 8657// 8658// Parameters: 8659// logicalName: 8660// The name used to identify the file in a DataFlex program. 8661// fileNum: 8662// The number used to open the file. 8663// indexNumbers: 8664// Optional string listing all index numbers to sort. 8665// callBackObject: 8666// An object id which will receive MSG_CALLBACK during the restructure 8667// operation. This the first parameter of this message is a string 8668// containing progress information. 8669// 8670// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8671#COMMAND SORT R#LGU #LGU #LUG #LGU . 8672 !A [] $519 !3 !4 8673 !A [] $518 !1 !2 8674#ENDCOMMAND 8675 8676 8677// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8678// 8679// Command: 8680// OUTPUT_AUX_FILE fileType FOR fileNum {NUMBER logicalNum} {TO optPath} 8681// 8682// Description: 8683// Output a database related file. 8684// 8685// Parameters: 8686// fileNum: 8687// The number used to open the file. 8688// logicalNum: 8689// The logical number to be used to create the file. Only used if the 8690// file to be created is a new file (thus has no set file number). 8691// fileType: 8692// The type of file to be created, e.g., DF_AUX_FILE_FD or 8693// DF_AUX_FILE_DEF. 8694// optPath: 8695// Optional filename/sequential device where output will be written. 8696// 8697// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8698 8699#COMMAND OUTPUT_AUX_FILE_HELP "NUMBER" L#GU "TO" L#GUIND . 8700 !A [] $51A !2 !4 8701#ENDCOMMAND 8702 8703#COMMAND OUTPUT_AUX_FILE R#LGU "FOR" R#LGU 8704 #IF (!0>5) 8705 #IFSAME !6 NUMBER 8706 OUTPUT_AUX_FILE_HELP !6 !7 !4 !5 !8 !9 8707 #ELSE 8708 OUTPUT_AUX_FILE_HELP !4 !5 !6 !7 !8 !9 8709 #ENDIF 8710 #ELSE 8711 #IF (!0>3) 8712 #IFSAME !4 NUMBER 8713 OUTPUT_AUX_FILE_HELP !4 !5 TO |CS"" !6 !7 !8 !9 8714 #ELSE 8715 #IFSAME !4 TO 8716 OUTPUT_AUX_FILE_HELP NUMBER |CI0 !4 !5 !6 !7 !8 !9 8717 #ELSE // Something is wrong, compiler will say what 8718 OUTPUT_AUX_FILE_HELP !4 !5 !6 !7 !8 !9 8719 #ENDIF 8720 #ENDIF 8721 #ELSE 8722 OUTPUT_AUX_FILE_HELP NUMBER |CI0 TO |CS"" 8723 #ENDIF 8724 #ENDIF 8725 !A [] $51B !1 !3 8726#ENDCOMMAND 8727 8728 8729// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8730// 8731// Command: 8732// OUTPUT_DEF_FILE fileNum {NUMBER logicalNum} {TO optPath} 8733// 8734// Description: 8735// Output a .DEF file. 8736// 8737// Parameters: 8738// fileNum: 8739// The number used to open the file. 8740// logicalNum: 8741// The logical number to be used to create the file. Only used if the 8742// file to be created is a new file (thus has no set file number). 8743// optPath: 8744// Optional filename/sequential device where output will be written. 8745// 8746// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8747 8748#COMMAND OUTPUT_DEF_FILE 8749 OUTPUT_AUX_FILE DF_AUX_FILE_DEF FOR !1 !2 !3 !4 !5 !6 !7 !8 !9 8750#ENDCOMMAND 8751 8752 8753// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8754// 8755// Command: 8756// OUTPUT_FD_FILE fileNum {NUMBER logicalNum} {TO optPath} 8757// 8758// Description: 8759// Output an FD file. 8760// 8761// Parameters: 8762// fileNum: 8763// The number used to open the file. 8764// logicalNum: 8765// The logical number to be used to create the file. Only used if the 8766// file to be created is a new file (thus has no set file number). 8767// optPath: 8768// Optional filename/sequential device where output will be written. 8769// 8770// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8771 8772#COMMAND OUTPUT_FD_FILE 8773 OUTPUT_AUX_FILE DF_AUX_FILE_FD FOR !1 !2 !3 !4 !5 !6 !7 !8 !9 8774#ENDCOMMAND 8775 8776 8777// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8778// 8779// Command: 8780// DELETE_DB fileNumber | logicalNameString {IGNORE_ERRORS} 8781// 8782// Description: 8783// Deletes a dGatafile. If IGNORE_ERRORS is passed, all errors 8784// are suppressed. This should be used when deleting a file that 8785// may or may not exist. 8786// 8787// Parameters: 8788// fileNumber: 8789// Number of file to delete. File can be open but does not have 8790// to be 8791// logicalNameString: 8792// String containing the logical name of the file to delete. 8793// 8794// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8795 8796#COMMAND DELETE_DB RL#G """IGNORE_ERRORS" . 8797 #IFSAME !2 IGNORE_ERRORS 8798 !A [] $0e2 !1 |CI1 8799 #ELSE 8800 !A [] $0e2 !1 |CI0 8801 #ENDIF 8802#ENDCOMMAND 8803 8804//-=-=-=-==-==--=-=-=-=-=--=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8805// 8806// Command: 8807// COPY_RECORDS FileNumber1 TO fileNumber2 {NoOfRecords}; 8808// {USING indexNum} {CALLBACK callback_id} 8809// 8810// Description: 8811// Copies NoOfRecords from fileNumber1 to fileNumber2. If USING is not 8812// specified, recnum is used otherwise records are copied using the 8813// specified indexNum. If CALLBACK is specified, the callback function 8814// in the object callback_id is called. FileNumber1 AND FileNumber2 8815// should have identical fields. 8816// 8817// Parameters: 8818// FileNumber1: 8819// Number of file FROM where records are to be copied. 8820// FileNumber2: 8821// Number of fiel TO which recordsare to be copied. 8822// NoOfRecords: 8823// Number of records to be copied. 8824// indexNum: 8825// Index Number. If not specified, files are copied in the order of recnum. 8826// callback_id: 8827// Object id of the object containing the callback function. 8828// 8829//-=-=-=-==-==--=-=-=-=-=--=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8830 8831#COMMAND COPY$RECORD$HELP "USING" #RLUG "CALLBACK" #RLUG . 8832 !A [] $521 !2 !4 8833#ENDCOMMAND 8834 8835#COMMAND COPY_RECORDS #RLUG "TO" #RLUG 8836 #IF (!0 > 3) 8837 #IFSAME !4 USING CALLBACK 8838 !A [] $522 |CI0 8839 #IFSAME !4 USING 8840 #IF (!0>5) 8841 COPY$RECORD$HELP !4 !5 !6 !7 !8 !9 8842 #ELSE 8843 COPY$RECORD$HELP !4 !5 CALLBACK |CI0 !7 !8 !9 8844 #ENDIF 8845 #ELSE 8846 #IFSAME !4 CALLBACK 8847 COPY$RECORD$HELP USING |CI0 !4 !5 !6 !7 !8 !9 8848 #ELSE 8849 COPY$RECORD$HELP !4 !5 !6 !7 !8 !9 8850 #ENDIF 8851 #ENDIF 8852 #ELSE 8853 !A [] $522 !4 8854 #IF (!0>4) 8855 #IFSAME !5 USING 8856 #IF (!0>6) 8857 COPY$RECORD$HELP !5 !6 !7 !8 !9 8858 #ELSE 8859 COPY$RECORD$HELP !5 !6 CALLBACK |CI0 !7 !8 !9 8860 #ENDIF 8861 #ELSE 8862 #IFSAME !5 CALLBACK 8863 COPY$RECORD$HELP USING |CI0 !5 !6 !7 !8 !9 8864 #ELSE 8865 COPY$RECORD$HELP !5 !6 !7 !8 !9 8866 #ENDIF 8867 #ENDIF 8868 #ELSE 8869 COPY$RECORD$HELP USING |CI0 CALLBACK |CI0 8870 #ENDIF 8871 #ENDIF 8872 #ELSE 8873 !A [] $522 |CI0 8874 COPY$RECORD$HELP USING |CI0 CALLBACK |CI0 8875 #ENDIF 8876 !A [] $524 !1 !3 8877#ENDCOMMAND 8878 8879//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8880// 8881// Command: 8882// FIELD_MAP FileNumber <field_name> "TO" FieldNumber 8883// 8884// Description: 8885// converts <field_name> into field number and puts it in FieldNumber 8886// Parameters: 8887// FileNumber: 8888// No of the file containing the fields. 8889// field_name: 8890// name of the field to be converted into number. 8891// FieldNumber: 8892// Value returned by FIELD_MAP 8893// 8894//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=---=-=-=-=-=-=--=-=-=-=- 8895 8896#COMMAND FIELD_MAP #RLUG #RLI "TO" #RLUG . 8897 !A [] $525 !1 !2 8898 !A [] $526 !4 8899#ENDCOMMAND 8900 8901 8902//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8903// 8904// Command: 8905// LOAD_DRIVER driver_name 8906// 8907// Description: 8908// Loads a database driver 8909// 8910// Parameter: 8911// driver_name: 8912// Name of the database driver. 8913// 8914//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8915 8916#COMMAND LOAD_DRIVER #RLI . 8917 !A [] $527 !1 8918#ENDCOMMAND 8919 8920//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8921// 8922// Command: 8923// UNLOAD_DRIVER driver_name 8924// 8925// Description: 8926// Loads a database driver 8927// 8928// Parameter: 8929// driver_name: 8930// Name of the database driver. 8931// 8932//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8933 8934#COMMAND UNLOAD_DRIVER #RlI . 8935 !A [] $528 !1 8936#ENDCOMMAND 8937 8938 8939// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8940// 8941// Command: 8942// READ_HEX {CHANNEL channelNum} varName {numHexBytes} 8943// 8944// Description: 8945// Read a stream of hex bytes from the sequential channel chosen. The 8946// stream must be in the form of a string containing two byte printable 8947// hex numbers, e.g., "616263" would correspond the the string "abc". 8948// The value is converted into ASCII before it is store in varName. 8949// 8950// Parameters: 8951// channelNum: 8952// The number of the sequential device channel to be read from. If 8953// not specified, the currently active input channel is read from. 8954// varName: 8955// The variable to read the bytes into. 8956// numHexBytes: 8957// The number of two digit hex codes to read in, e.g., "616263" is 8958// 3 hex codes (even though it is actually 6 bytes). If ommitted or 8959// zero, READ_HEX will read until it encounters the end of the line. 8960// If data is read which cannot be converted from hex to ascii, 8961// READ_HEX stops at that point. 8962// 8963// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8964 8965#COMMAND READ_HEX 8966 #IFSAME !1 CHANNEL 8967 !A [] $10A |CI0 !2 8968 #IF !0>2 8969 #CHECK !3 _ULE 8970 #CHECK !4 _RU 8971 !A [] $110 !3 !4 8972 #ENDIF 8973 #ELSE 8974 #CHECK !1 _ULEC 8975 #CHECK !2 _RU 8976 !A [] $110 !1 !2 8977 #ENDIF 8978#ENDCOMMAND 8979 8980 8981// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 8982// 8983// Command: 8984// WRITE_HEX {CHANNEL channelNum} {value}*n 8985// 8986// Description: 8987// Writes any set of values (expressions, variables, etc.) to the chosen 8988// sequential channel in the form of a stream of two digit hex codes, 8989// e.g., the string "abc" would be written as "616263". 8990// 8991// Parameters: 8992// channelNum: 8993// The number of the sequential device channel to be read from. If 8994// not specified, the currently active input channel is read from. 8995// value: 8996// Any variable, expression, etc. to be written out. The value is 8997// evaluated and converted to a string before being written, e.g., 8998// a value of (1 + 1) would be converted to the string "2" and 8999// then written out as "50" which is the hex code corresponding to 9000// the character '2'. 9001// 9002// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9003 9004#COMMAND WRITE$HEX$HELP 9005 #IF (!0>0) 9006 !A [] $10F !1 9007 WRITE$HEX$HELP !2 !3 !4 !5 !6 !7 !8 !9 9008 #ENDIF 9009#ENDCOMMAND 9010 9011#COMMAND WRITE_HEX 9012 #IFSAME !1 CHANNEL 9013 !A [] $10A |CI1 !2 9014 #IF !0>2 9015 WRITE$HEX$HELP !3 !4 !5 !6 !7 !8 !9 9016 #ENDIF 9017 #ELSE 9018 WRITE$HEX$HELP !1 !2 !3 !4 !5 !6 !7 !8 !9 9019 #ENDIF 9020#ENDCOMMAND 9021 9022 9023// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9024// 9025// Command: 9026// GET_CURSOR_VISIBLE 9027// 9028// Description: 9029// Returns 0 if the cursor is hidden, non-zero if it is visible. NOTE: 9030// this only reflects whether the cursor will be shown during the next 9031// user input action, not whether it is currently shown. 9032// 9033// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9034 9035#COMMAND GET_CURSOR_VISIBLE R#LGUC . 9036 !A [] $154 !1 9037#ENDCOMMAND 9038 9039 9040// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9041// 9042// Command: 9043// SET_CURSOR_VISIBLE visibleFlag 9044// 9045// Description: 9046// Sets the cursor hidden or displayable. NOTE: this only affects 9047// whether the cursor will be shown during the next user input action, 9048// not whether it is currently shown. 9049// 9050// Parameters: 9051// visibleFlag 9052// If this value is non-zero, the cursor will be displayed. If zero, 9053// the cursor will be hidden. 9054// 9055// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9056 9057#COMMAND SET_CURSOR_VISIBLE R#LGU . 9058 !A [] $155 !1 9059#ENDCOMMAND 9060 9061 9062// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9063 // 9064// Command: 9065// COMPUTE_SCREEN_CRC {startX startY endX endY "TO"} crcVariable 9066// 9067// Description: 9068// Returns a CRC for a region of the screen. This can be used by 9069// automated testing programs to verify that the screen has the 9070// expected display. 9071// 9072// Parameters: 9073// startX, startY, endX, endY 9074// Starting and ending coordinates of the region to be CRC'd. If 9075// not given, the whole screen is checked. 9076// crcVariable 9077// A variable which will contain the CRC. 9078// 9079// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9080 9081#COMMAND COMPUTE$CRC$HELP R#LGU R#LGU R#LGU R#LGU "TO" R#LGUC 9082 !A [] $151 !1 !2 9083 !A [] $152 !3 !4 9084 !A [] $153 !6 9085#ENDCOMMAND 9086 9087#COMMAND COMPUTE_SCREEN_CRC 9088 #IFSAME !1 TO 9089 COMPUTE$CRC$HELP |CI-1 |CI-1 |CI-1 |CI-1 !1 !2 !3 !4 !5 !6 !7 !8 !9 9090 #ELSE 9091 COMPUTE$CRC$HELP !1 !2 !3 !4 !5 !6 !7 !8 !9 9092 #ENDIF 9093#ENDCOMMAND 9094 9095 9096//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9097// 9098// Command: 9099// CALL_DRIVER fileNumber driverName; 9100// FUNCTION driverFunction CALLBACK objectID; 9101// PASSING aString aString2 aLong RESULT returnValue 9102// 9103// Descrtiption: 9104// A function call used directly access driver specific functions. 9105// 9106// Parmeters: 9107// fileNumber 9108// Number of the file 9109// driverName 9110// Name of the driver 9111// driverFunction 9112// Numeric value corresponding to a driver specific function 9113// returnValue 9114// Value returned by CALL_DRIVER 9115// aString 9116// A string 9117// aString2 9118// Another string 9119// aLoing 9120// A long 9121// objectID 9122// Object id for an object that will be sent the GET_CALLBACK 9123// message 9124// 9125//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9126 9127#COMMAND CALL$DRIVER$1 #RLUG #RLDNIGU "FUNCTION" #RGUL "CALLBACK" #RGUL . 9128 !A [] $529 !1 !2 9129 !A [] $52A !4 !6 9130#ENDCOMMAND 9131 9132#COMMAND CALL$DRIVER$2 "PASSING" #CRUG #CRUG #RLUG "RESULT" #RLUG . 9133 !A [] $530 !4 9134 !A [] $52B !2 !3 9135 !A [] $082 STRMARK !6 9136#ENDCOMMAND 9137 9138#COMMAND CALL_DRIVER 9139 CALL$DRIVER$1 !1 !2 !3 !4 !5 !6 9140 CALL$DRIVER$2 !7 !8 !9 9141#ENDCOMMAND 9142 9143 9144//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9145// 9146// Command: 9147// LOAD_DEF defName ONTO structureHandle 9148// 9149// Descrtiption: 9150// Will load the file definition from defName on top of the structure 9151// defined by structureHandle. While the structure may be for an 9152// existing file, no structure operations (other than STRUCTURE_START) 9153// should be performed on structureHandle prior to calling LOAD_DEF. 9154// 9155// Parmeters: 9156// structureHandle 9157// Handle to an new or modified structure. 9158// defName 9159// Name of the sequential device which contains the .DEF 9160// specification. 9161// 9162//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9163 9164#COMMAND LOAD_DEF #RLUG "ONTO" #RLUG . 9165 !A [] $52F !1 !3 9166#ENDCOMMAND 9167 9168 9169//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9170// 9171// Command: 9172// SET_FILELIST newName 9173// 9174// Descrtiption: 9175// Sets the filelist.cfg file to the name specified. If the specified 9176// file cannot be opened, the current filelist file remains unchanged. 9177// 9178// Parmeters: 9179// newName 9180// The name of the file to use as filelist.cfg 9181// 9182//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9183 9184#COMMAND SET_FILELIST RL#UGDNI . 9185 SET_ATTRIBUTE DF_FILELIST_NAME TO !1 9186#ENDCOMMAND 9187 9188 9189//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9190// 9191// Command: 9192// GET_FILELIST Name 9193// 9194// Descrtiption: 9195// Gets the name of the current filelist file. 9196// 9197// Parmeters: 9198// Name 9199// The name of the file being used as filelist. 9200// 9201//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9202 9203#COMMAND GET_FILELIST RL#UGDNI . 9204 GET_ATTRIBUTE DF_FILELIST_NAME TO !1 9205#ENDCOMMAND 9206 9207 9208// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9209// 9210// Command: 9211// LOGIN ServerName UserName Password {DriverName} 9212// 9213// Description: 9214// Login to the specified server using the passed user and password. 9215// 9216// Parameters 9217// ServerName 9218// Name of the server (driver specific) to be logged into 9219// 9220// UserName 9221// Name of the user to be used for the login 9222// 9223// Password 9224// Password to use for the login 9225// 9226// DriverName 9227// Optional database driver to use for the login. API defaults 9228// to attempting a login with all drivers. 9229// 9230// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9231 9232#COMMAND LOGIN #ULGR$ #ULGR$ #ULGR$ #ULG$ . 9233 !A [] $4c4 !1 !4 9234 !A [] $4c5 !2 !3 9235#ENDCOMMAND 9236 9237 9238//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9239// 9240// Commands: 9241// ENUM_LIST, DEFINE, and END_ENUM_LIST 9242// 9243// Descrtiption: 9244// Altogether, these commands can be used to enumerate symbol 9245// replacements for lists of symbols. 9246// 9247// DEFINE outside of an ENUM/ENUM_LIST block can be used to define 9248// individual symbolic replacements, and to define "flags". (However, 9249// there is no UNDEFINE. Sorry.) 9250// 9251// Parmeters: 9252// ENUM_LIST and END_ENUM_LIST take no parameters. 9253// DEFINE supports several syntaxes: 9254// 9255// DEFINE symbol 9256// If outside an enum list, defines a symbolic replacement named 9257// symbol as |CI1 (to be used with #IFDEF compiler directive). 9258// 9259// DEFINE symbol1 symbol2 ... 9260// If within an enum list, defines a symbolic replacement named 9261// symbol1 as a constant integer one greater than the previous 9262// symbolic replacement in the enum list (and symbol2 and each 9263// additional parameter are defined one greater than the symbol 9264// before it). 9265// 9266// DEFINE symbol FOR originalSymbol 9267// If outside an enum list, defines a symbolic replacement named 9268// symbol for originalSymbol. In this instance, originalSymbol may 9269// be any valid symbol name or constant value. 9270// 9271// DEFINE symbol FOR constInt 9272// If within an enum list, defines a symbolic replacement named 9273// symbol for the constant integer constInt. Only constant integers 9274// can be used for constInt with the AS syntax option within enum 9275// lists. 9276// 9277// Examples: 9278// 9279// enumeration_list 9280// define ddd // starts at 0 by default 9281// define eee // 1 9282// define fff ggg hhh // 2 3 4 9283// end_enumeration_list 9284// 9285// enum_list 9286// define rrr for 5 // start at 5 9287// define sss // 6 9288// define ttt for 21 // jump to 21 9289// define uuu // 22 9290// end_enum_list 9291// 9292// define aaa for ttt // generic symbolic replacements 9293// define aaa for "Hello" 9294// 9295// define zzz // defines zzz as |CI1 (to be used with #IFDEF) 9296// 9297// Note: Defining multiple "flags" (define sss ttt) is not allowed in order 9298// to allow proper type-checking. (The compiler's preprocessor substitutes 9299// the symbols too early; therefore, it becomes impossible to differentiate 9300// the allowable syntaxes if multiple arguments are allowed.) 9301//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9302 9303#COMMAND ENUMERATION_LIST . 9304 #IF (!Zs=1) 9305 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT ENUMERATION LISTS CANNOT BE BE NESTED 9306 #ENDIF 9307 #SET ZS$ 1 // enum_flag 9308 #SET ZT$ 0 // initial enum_value 9309#ENDCOMMAND 9310 9311// Define with better protections against alias datatype naming 9312#COMMAND DEFINE R 9313 #IFSAME !2 FOR 9314 #IF (!Zs=0) // if not enum 9315 #IFDEF !1 // ignore redefinition of symbols (only if not enum) 9316 // if def'ed it means that !1 is a constant (has already been defined). If we are trying to turn this 9317 // into a datatype, we know that this is wrong and we should warn the developer. So check if replacement is a variable name. 9318 // Note in all cases, alias types will get converted to one of these real names. 9319 #IFSAME !3 STRING NUMBER DATE INTEGER REAL BIGINT BOOLEAN ADDRESS TIME DATETIME FLOAT CHAR UCHAR SHORT USHORT UINTEGER UBIGINT CURRENCY TIMESPAN DECIMAL VARIANT 9320 #ERROR DFERR_COMP_SYMBOL_ALREADY_DEFINED "Attempt to redefine a constant as a data type" 9321 #ELSE 9322 // if not a data type, we ignore the redefinition and assume all is OK 9323 #ENDIF 9324 #ELSE 9325 #IFSAME !1 $0 // ignore redefinition if already defined as FALSE 9326 #ELSE 9327 #IFSAME !1 $1 // ignore redefinition if already defined as TRUE 9328 #ELSE 9329 #IFSAME !1 STRING NUMBER DATE INTEGER REAL BIGINT BOOLEAN ADDRESS TIME DATETIME FLOAT CHAR UCHAR SHORT USHORT UINTEGER UBIGINT CURRENCY TIMESPAN DECIMAL VARIANT 9330 // if here this must be an alias datatype that has already been defined. Either this is a duplicate 9331 // definition (which we ignore) or a new definition (which is an error) 9332 #IFSAME !1 !3 // if same ok..redefinition 9333 // #REM define datatype ok 9334 #ELSE 9335 #ERROR DFERR_COMP_SYMBOL_ALREADY_DEFINED "Attempt to redefine a data type" 9336 #ENDIF 9337 #ELSE 9338 #CHECK !4 . 9339 #IFSAME !1 !3 // ignore self definitions. e.g. define cat for cat 9340 // #REM define to .self. is dumb but ok 9341 #ELSE 9342 #REPLACE !1 !3 9343 #ENDIF 9344 #ENDIF 9345 #ENDIF 9346 #ENDIF 9347 #ENDIF 9348 #ELSE // else enum 9349 // check that symbol to be replaced is not a datatype or alias datatype 9350 #IFSAME !1 STRING NUMBER DATE INTEGER REAL BIGINT BOOLEAN ADDRESS TIME DATETIME FLOAT CHAR UCHAR SHORT USHORT UINTEGER UBIGINT CURRENCY TIMESPAN DECIMAL VARIANT 9351 #ERROR DFERR_COMP_SYMBOL_ALREADY_DEFINED "Attempt to redefine a data type" 9352 #ELSE 9353 #IFTYPE !3 "I" 9354 #IFCLASS !3 "C" 9355 #CHECK !4 . 9356 #REPLACE !1 !3 9357 #SET ZT$ (!3+1) 9358 #ELSE 9359 #ERROR DFERR_COMP_CONSTANT_EXPECTED ENUMERATION VALUE MUST BE A CONSTANT 9360 #ENDIF 9361 #ELSE 9362 #ERROR DFERR_COMP_CONSTANT_EXPECTED ENUMERATION VALUE MUST BE A CONSTANT 9363 #ENDIF 9364 #ENDIF 9365 #ENDIF 9366 #ELSE // not "FOR" 9367 // check that symbol to be replaced is not a datatype or alias datatype 9368 #IFSAME !1 STRING NUMBER DATE INTEGER REAL BIGINT BOOLEAN ADDRESS TIME DATETIME FLOAT CHAR UCHAR SHORT USHORT UINTEGER UBIGINT CURRENCY TIMESPAN DECIMAL VARIANT 9369 #ERROR DFERR_COMP_SYMBOL_ALREADY_DEFINED "Attempt to redefine a data type" 9370 #ELSE 9371 #IF (!Zs=0) // if not enum 9372 #CHECK !2 . 9373 #IFDEF !1 // define for |CI1 if they were previously undefined 9374 #IFSAME !1 |CI1 9375 #ELSE 9376 #ERROR DFERR_COMP_SYMBOL_ALREADY_DEFINED "ATTEMPT TO REDEFINE SYMBOL FOR DIFFERENT VALUE" 9377 #ENDIF 9378 #ELSE 9379 #IFSUB '!1' 9380 #ERROR DFERR_COMP_SYMBOL_ALREADY_DEFINED "ATTEMPT TO REDEFINE SYMBOL FOR DIFFERENT VALUE" 9381 #ELSE 9382 #REPLACE !1 |CI1 9383 #ENDIF 9384 #ENDIF 9385 #ELSE 9386 #REPLACE !1 |CI!Zt 9387 #SET ZT$ !ZT 9388 #IF (!0>1) 9389 DEFINE !2 !3 !4 !5 !6 !7 !8 !9 9390 #ENDIF 9391 #ENDIF 9392 #ENDIF 9393 #ENDIF 9394#ENDCOMMAND 9395 9396 9397 9398#COMMAND END_ENUMERATION_LIST . 9399 #IF (!Zs=0) // if not enum 9400 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT END_ENUMERATION_LIST WITHOUT ENUMERATION_LIST COMMAND 9401 #ELSE 9402 #SET ZS$ 0 // reset enum_flag 9403 #ENDIF 9404#ENDCOMMAND 9405 9406 9407//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9408// 9409// Command: 9410// ENTRY_NAME_ITEM itemName file.field ... 9411// 9412// Description: 9413// Just like Entry_Item except the first parameter is a (global) Item 9414// Name. 9415// 9416// Parameters: 9417// itemName 9418// The (global) name of the item being defined/created. 9419// 9420//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9421 9422#COMMAND ENTRY_NAME_ITEM R R 9423 #IFDEF !1 // Already exists? 9424 #IFTYPE !1 "CI" // If a constant integer 9425 #IF (!1=!Zg) // of the correct value...all is well. 9426 #ELSE // Else, It is a duplicate item. 9427 #ERROR DFERR_COMP_SYMBOL_ALREADY_DEFINED DUPLICATE ITEM NAME 9428 #ENDIF 9429 #ELSE // else defined as something else. 9430 #ERROR DFERR_COMP_SYMBOL_ALREADY_DEFINED NAME ALREADY DEFINED 9431 #ENDIF 9432 #ELSE // this names the item (!Zg is the trick) 9433 #REPLACE !1 !Zg 9434 #ENDIF // now a regular entry_Item 9435 ENTRY_ITEM !2 !3 !4 !5 !6 !7 !8 !9 9436#ENDCOMMAND 9437 9438 9439//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9440// 9441// Command: 9442// ON_NAME_ITEM itemName itemValue ... 9443// 9444// Description: 9445// Just like On_Item except the first parameter is a (global) Item 9446// Name. 9447// 9448// Parameters: 9449// itemName 9450// The (global) name of the item being defined/created. 9451// 9452//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9453 9454#COMMAND ON_NAME_ITEM R 9455 #IFDEF !1 // Already exists? 9456 #IFTYPE !1 "CI" // If a constant integer 9457 #IF (!1=!Zg) // of the correct value...all is well. 9458 #ELSE // Else, It is a duplicate item. 9459 #ERROR DFERR_COMP_SYMBOL_ALREADY_DEFINED DUPLICATE ITEM NAME 9460 #ENDIF 9461 #ELSE // else defined as something else. 9462 #ERROR DFERR_COMP_SYMBOL_ALREADY_DEFINED NAME ALREADY DEFINED 9463 #ENDIF 9464 #ELSE // this names the item (!Zg is the trick) 9465 #REPLACE !1 !Zg 9466 #ENDIF // now a regular entry_Item 9467 ON_ITEM !2 !3 !4 !5 !6 !7 !8 !9 9468#ENDCOMMAND 9469 9470 9471// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9472// 9473// Command: 9474// BEGIN_TRANSACTION 9475// 9476// Description: 9477// Starts a transaction on any open files. 9478// 9479// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9480 9481#COMMAND BEGIN_TRANSACTION . 9482 #SET N$ !N 9483 #PUSH !R 9484 #XPUSH !n $INIT // Init IF/ELSE stack at this nesting level. 9485 #IFIND //INCLUDE JUMPS IF INDICATORS ON LINE. 9486 // GOTO BEGIN$TRAN$!r 9487 !A [] $041 |CI0 9488 #FREF BEGIN$TRAN$!r !a 9489 #$ !A 0 0 0 $041 |CL0 9490 #FREF END$TRAN$!r !a 9491 #ENDIF 9492 #$ BEGIN$TRAN$!r: 9493 #$ BEGIN$!r: 9494 #$ !A [0 0 0] $0C7 |CI0 9495 #FREF END$TRAN$!r !a 9496#ENDCOMMAND 9497 9498 9499// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9500// 9501// Command: 9502// END_TRANSACTION 9503// 9504// Description: 9505// Attempts to commit all operations in the current transaction. 9506// 9507// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9508 9509#COMMAND END_TRANSACTION . 9510 #POP S$ 9511 !A [] $0C8 9512 #IFDEF WHILE$!s 9513 !A [] $041 WHILE$!s 9514 #ENDIF 9515 END$!s: 9516 END$TRAN$!s: 9517 #SET N$ !n-1 9518#ENDCOMMAND 9519 9520 9521// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9522// 9523// Command: 9524// ABORT_TRANSACTION 9525// 9526// Description: 9527// Aborts any currently active transactions, unlocking the files. 9528// 9529// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9530 9531#COMMAND ABORT_TRANSACTION . 9532 !A [] $0EB 9533#ENDCOMMAND 9534 9535 9536//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9537// 9538// Command: 9539// SET_RESOURCE_LIBRARY newName 9540// 9541// Description: 9542// Tells the program to look in the specified file when opening 9543// resources (with the DIRECT_INPUT command). Specifying "" (the empty 9544// string) as the newName resets the resource library to look in the 9545// currently executing program for resources. The new library must be a 9546// properly compiled DataFlex program; all commands and non-resource 9547// data in the program/library are ignored. The filename MUST include 9548// the extension, but is not required to be .FLX. If the specified 9549// file cannot be opened, an error occurs and the current resource 9550// library continues to be used. 9551// 9552// Note: Any resources that are currently open when the resource 9553// library is changed remain open; i.e. you may continue to read from 9554// them. The setting of the resource library only affects the 9555// DIRECT_INPUT command when opening resources. 9556// 9557// Parameters: 9558// newName 9559// The name of the file to use as the library of resources. 9560// 9561//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9562 9563#COMMAND SET_RESOURCE_LIBRARY #RLUGOB . 9564 !A [] $113 !1 9565#ENDCOMMAND 9566 9567 9568//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9569// 9570// Command: 9571// GET_RESOURCE_NAME resourceName|resourceId TO stringVariable 9572// 9573// Description: 9574// A command to retrieve the name of a resource at runtime. For the first 9575// parameter, you may pass either the resource name (not in quotes) (I 9576// know that sounds strange, and you'd probably never do it, but it WILL 9577// work) or the integer value of the resource id. 9578// 9579// Parameters: 9580// resourceId 9581// Integer value of a resource id. 9582// stringVariable 9583// Variable to return the resource name to. 9584// 9585//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9586 9587#COMMAND GET_RESOURCE_NAME R#LG "TO" RL#OBUGDNI . 9588 #IFDEF !1 9589 !A [] $114 !1 !3 9590 #ELSE 9591 !A [] $114 !1.RSC !3 9592 #ENDIF 9593#ENDCOMMAND 9594 9595 9596//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9597// 9598// Command: 9599// ADD value TO variable 9600// 9601// Description: 9602// Adds the specified value to the target variable. 9603// 9604// Parameters: 9605// value: 9606// Any expression 9607// variable 9608// Any window, variable, etc. that can receive a value 9609// 9610//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9611 9612#COMMAND ADD R#OBLG "TO" UR#OLGC . 9613 Move (!3 + !1) to !3 9614#ENDCOMMAND 9615 9616 9617//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9618// 9619// Command: 9620// SUBTRACT value FROM variable 9621// 9622// Description: 9623// Subtracts the specified value to the target variable. 9624// 9625// Parameters: 9626// value: 9627// Any expression 9628// variable 9629// Any window, variable, etc. that can receive a value 9630// 9631//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9632 9633#COMMAND SUBTRACT R#OBLG "FROM" UR#OLGC . 9634 Move (!3 - !1) to !3 9635#ENDCOMMAND 9636 9637 9638//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9639// 9640// Command: 9641// BREAK [BEGIN|END] 9642// 9643// Description: 9644// Exit or jump to start of a control loop (WHILE, REPEAT, FOR). Default 9645// action is to exit if no argument supplied. 9646// 9647// Parameters: 9648// BEGIN: 9649// Jump to start of loop. 9650// END: 9651// Jump to end of loop and exit. 9652// 9653//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9654 9655#COMMAND BREAK "BEGIN""END""" . 9656 #POP S$ 9657 #PUSH !s 9658 #IFSAME !1 BEGIN 9659 Goto BEGIN$!s 9660 #ELSE 9661 Goto END$!s 9662 #ENDIF 9663#ENDCOMMAND 9664 9665//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9666// 9667// Command: 9668// HARD$EXIT <integer> 9669// 9670// THIS COMMAND IS INTENDED FOR INTERNAL DAC TESTING USE ONLY 9671// USE WITHIN AN APPLICATION WILL PROBABLY CAUSE SYSTEM INTEGRITY 9672// PROBLEMS! 9673// 9674// This command causes the runtime to do an exit(#) without 9675// any internal cleanup. It is intended for testing server 9676// transaction support. 9677// 9678//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9679 9680#COMMAND HARD$EXIT R#LG . 9681 !A [] $54 !1 9682#ENDCOMMAND 9683 9684//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9685// 9686// Command: 9687// netware_get_tts_flag <path name> to <integer boolean> 9688// 9689// THIS COMMAND IS INTENDED FOR INTERNAL DAC TESTING USE ONLY! 9690// 9691// This command returns the state of the TTS flag of a file (by path name), 9692// returns false (0) if not a tts volume. 9693// 9694//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9695 9696#COMMAND NETWARE_GET_TTS_FLAG R#LG "TO" RL#OBUGD . 9697 !A [] $30D !1 !3 9698#ENDCOMMAND 9699 9700//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9701// 9702// Command: 9703// netware_set_tts_flag <path name> to <integer boolean> 9704// 9705// THIS COMMAND IS INTENDED FOR INTERNAL DAC TESTING USE ONLY! 9706// 9707// This command sets the state of the TTS flag of a file (by path name), 9708// returns [FOUND] if status could be set. 9709// 9710//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9711 9712#COMMAND NETWARE_SET_TTS_FLAG R#LG "TO" RL#OBUGD . 9713 !A [] $30E !1 !3 9714#ENDCOMMAND 9715 9716//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9717// 9718// Command: 9719// netware_get_available <integer boolean> 9720// 9721// THIS COMMAND IS INTENDED FOR INTERNAL DAC TESTING USE ONLY! 9722// 9723// This command returns non-zero if netware is loaded. 9724// 9725//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9726 9727#COMMAND NETWARE_GET_AVAILABLE RL#OBUGD . 9728 !A [] $30F !1 |CI0 9729#ENDCOMMAND 9730 9731//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9732// 9733// Command: 9734// VALID_DRIVE driveLetter retVal 9735// 9736// Description: 9737// This command returns non-zero if the drive is a valid drive letter 9738// This command is only useful under dos/os2/windows 9739// 9740// Parameters: 9741// driveLetter 9742// Drive letter to check if valid. Must be a letter. 9743// retVal 9744// Integer results of command 9745// 9746//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9747 9748#COMMAND VALID_DRIVE R R 9749 !A [] $581 !1 !2 9750#ENDCOMMAND 9751 9752//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9753// 9754// Command: 9755// 9756// SET_DIRECTORY directory 9757// 9758// Description: 9759// Sets the current directory. The directory argument may contain a drive 9760// letter to set the current directory on a particular drive. 9761// 9762// Parameters: 9763// directory 9764// The new current directory to be set. The directory argument may 9765// contain a drive letter to set the current directory on a particular 9766// drive. 9767// 9768// NOTE: This command will be removed for final VDF 4.0 release. A new message 9769// will be added to provide replacement functionality. KCR 9770//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9771 9772#COMMAND SET_DIRECTORY R 9773 !A [] $58C !1 9774#ENDCOMMAND 9775 9776//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9777// 9778// Command: 9779// 9780// FILE_EXIST fileName result 9781// 9782// Description: 9783// Returns non-zero if the specified file exists. 9784// 9785// Parameters: 9786// fileName 9787// The name of the file to check the existance of. 9788// result 9789// Non-zero if the file exists or zero if does not exist. 9790//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9791 9792#COMMAND FILE_EXIST R R 9793 !A [] $58D !1 !2 9794#ENDCOMMAND 9795 9796//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9797// 9798// Command: 9799// 9800// GET_DIRECTORY {drive} currentDirectory 9801// 9802// Description: 9803// Returns the current directory. 9804// 9805// Parameters: 9806// {drive} 9807// The drive letter to get the current directory for. If drive is 9808// not specifed then the current drive is assumed. 9809// currentDirectory 9810// The current directory for the appropriate drive. 9811//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9812 9813#COMMAND GET_DIRECTORY R 9814 #IF (!0 > 1) 9815 !A [] $58E !1 !2 9816 #ELSE 9817 !A [] $58E |CS"" !1 9818 #ENDIF 9819#ENDCOMMAND 9820 9821//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9822// 9823// Command: 9824// 9825// MAKE_DIRECTORY directory {permissions} 9826// 9827// Description: 9828// Makes a directory on the current drive. Uses the optional permissions 9829// value for the directory if it is specified. 9830// 9831// Parameters: 9832// directory 9833// The name of the new directory to be made. 9834// {permissions} 9835// The access permissions of the new directory. If this is not 9836// specified then the default is DF_FLEX_ALL_RIGHTS. 9837//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9838 9839#COMMAND MAKE_DIRECTORY R 9840 #IF !0 < 2 9841 !A [] $58F !1 |CI2047 9842 #ELSE 9843 !A [] $58F !1 !2 9844 #ENDIF 9845#ENDCOMMAND 9846 9847//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9848// 9849// Command: 9850// 9851// REMOVE_DIRECTORY directory 9852// 9853// Description: 9854// Removes the specified directory. 9855// 9856// Parameters: 9857// directory 9858// The name of the directory to be removed. 9859//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9860 9861#COMMAND REMOVE_DIRECTORY R 9862 !A [] $590 !1 9863#ENDCOMMAND 9864 9865//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9866// 9867// Command: 9868// 9869// MAKE_TEMP_FILE tempExtension tempFile 9870// 9871// Description: 9872// Makes a temporary file with a unique name with the specified extension 9873// and returns the unique name that was generated. 9874// 9875// Parameters: 9876// tempExtension 9877// The extension to use when making the temporary file. 9878// tempFile 9879// The name of the temporary file that is returned. 9880//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9881 9882#COMMAND MAKE_TEMP_FILE R R . 9883 !A [] $591 !1 !2 9884#ENDCOMMAND 9885 9886//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9887// 9888// Command: 9889// 9890// GET_FILE_MOD_TIME fileName "TO" date {hour} {minute} {second} 9891// 9892// Description: 9893// Returns the file modified date/time stamp for the specified file. 9894// 9895// Parameters: 9896// fileName 9897// The file to get the date/time stamp for. 9898// date 9899// The date the file was last modifed. 9900// {hour} 9901// The hour of the day that the file was last modified. 9902// {minute} 9903// The minute that the file was last modified. 9904// {second} 9905// The second that the file was last modified. 9906// 9907//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9908 9909#COMMAND GET_FILE_MOD_TIME R "TO" R 9910 !A [] $592 !1 !3 9911 9912 #IF !0 > 3 9913 !A [] $593 !4 9914 #ENDIF 9915 9916 #IF !0 > 4 9917 !A [] $594 !5 9918 #ENDIF 9919 9920 #IF !0 > 5 9921 !A [] $595 !6 9922 #ENDIF 9923 9924#ENDCOMMAND 9925 9926//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9927// 9928// Command: 9929// 9930// SET_FILE_MOD_TIME fileName "TO" date {hour} {minute} {second} 9931// 9932// Description: 9933// Sets the file modified date/time stamp for the specified file. 9934// 9935// Parameters: 9936// fileName 9937// The file to set the date/time stamp for. 9938// date 9939// The new date that the file was modified. 9940// {hour} 9941// The new hour that the file was modified. 9942// {minute} 9943// The new minute that the file was modified. 9944// {second} 9945// The new second that the file was modified. 9946// 9947//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9948 9949#COMMAND SET_FILE_MOD_TIME R "TO" R 9950 !A [] $597 !1 !3 //Date 9951 9952 #IF (!0 > 3) 9953 !A [] $598 !4 //Hour 9954 #ENDIF 9955 9956 #IF (!0 > 4) 9957 !A [] $599 !5 //Minutes 9958 #ENDIF 9959 9960 #IF (!0 > 5) 9961 !A [] $59A !6 //Seconds 9962 #ENDIF 9963 9964 !A [] $596 !1 9965#ENDCOMMAND 9966 9967// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9968// 9969// Command: 9970// SET_VIDEO_MODE 9971// GET_VIDEO_MODE 9972// 9973// Description: 9974// Video Modes for DOS 9975// 9976// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9977 9978 9979#COMMAND SET_VIDEO_MODE "TO" _RUSD# 9980 !A [] $150 !2 9981#ENDCOMMAND 9982 9983#COMMAND GET_VIDEO_MODE "TO" _RUSD# 9984 !A [] $14F !2 9985#ENDCOMMAND 9986 9987 9988// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9989// 9990// Command: 9991// DEFINE_SYMBOL 9992// 9993// Description: 9994// Like #REPLACE except it checks if the symbol exists first. 9995// 9996// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 9997 9998#COMMAND DEFINE_SYMBOL R "FOR" R 9999 #IFDEF !1 10000 #ELSE 10001 #REPLACE !1 !3 10002 #ENDIF 10003#ENDCOMMAND 10004 10005// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10006// 10007// Command: 10008// GET_DATE_ATTRIBUTE 10009// 10010// Description: 10011// 10012// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10013 10014#COMMAND GET_DATE_ATTRIBUTE R "TO" R . 10015 !A [] $2E1 !1 !3 10016#ENDCOMMAND 10017 10018// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10019// 10020// Command: 10021// SET_DATE_ATTRIBUTE 10022// 10023// Description: 10024// 10025// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10026 10027#COMMAND SET_DATE_ATTRIBUTE R "TO" R . 10028 !A [] $2E2 !1 !3 10029#ENDCOMMAND 10030 10031#IFDEF IS$WINDOWS 10032#ELSE 10033 10034//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10035// 10036// Command: 10037// SET_GROUP_ID groupId 10038// 10039// Description: 10040// This command sets the group id to be used. 10041// 10042// Parameters: 10043// groupId 10044// The group id to set as the current group id 10045//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10046 10047#COMMAND SET_GROUP_ID R 10048 !A [] $582 !1 10049#ENDCOMMAND 10050 10051//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10052// 10053// Command: 10054// 10055// SET_USER_ID userId 10056// 10057// Description: 10058// This command sets the user id to be used. 10059// 10060// Parameters: 10061// userId 10062// The user id to set as the current user id 10063// 10064//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10065 10066#COMMAND SET_USER_ID R 10067 !A [] $583 !1 10068#ENDCOMMAND 10069 10070//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10071// 10072// Command: 10073// 10074// GET_GROUP_ID retVal 10075// 10076// Description: 10077// This command returns the current group id. 10078// 10079// Parameters: 10080// retVal 10081// the value returned is the current user group id 10082//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10083 10084#COMMAND GET_GROUP_ID R 10085 !A [] $584 !1 10086#ENDCOMMAND 10087 10088//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10089// 10090// Command: 10091// 10092// GET_EFFECTIVE_GROUP_ID retVal 10093// 10094// Description: 10095// This command returns the current effective group id. This may be 10096// different from the actual group id if, say, the user has become 10097// superuser under unix. 10098// 10099// Parameters: 10100// retVal 10101// the value returned is the current effective user group id 10102// 10103//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10104 10105#COMMAND GET_EFFECTIVE_GROUP_ID R 10106 !A [] $585 !1 10107#ENDCOMMAND 10108 10109//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10110// 10111// Command: 10112// 10113// GET_USER_ID retVal 10114// 10115// Description: 10116// This command returns the current user id. 10117// 10118// Parameters: 10119// retVal 10120// the value returned is the current user id 10121//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10122 10123#COMMAND GET_USER_ID R 10124 !A [] $586 !1 10125#ENDCOMMAND 10126 10127//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10128// 10129// Command: 10130// 10131// GET_EFFECTIVE_USER_ID retVal 10132// 10133// Description: 10134// This command returns the current effective user id. This may be 10135// different from the actual user id if, say, the user has become 10136// superuser under unix. 10137// 10138// Parameters: 10139// retVal 10140// the value returned is the current effective user group id 10141// 10142//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10143 10144#COMMAND GET_EFFECTIVE_USER_ID R 10145 !A [] $587 !1 10146#ENDCOMMAND 10147 10148//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10149// 10150// Command: 10151// 10152// GET_PERMISSION fileName "TO" retVal 10153// 10154// Description: 10155// This command returns the current access privledeges for the specified 10156// file 10157// 10158// Parameters: 10159// fileName 10160// The name of the file to check the permissions for 10161// retVal 10162// An value containing all the permission bits for the file 10163//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10164 10165#COMMAND GET_PERMISSION R "TO" R 10166 !A [] $588 !1 !3 10167#ENDCOMMAND 10168 10169//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10170// 10171// Command: 10172// 10173// SET_PERMISSION fileName "TO" permissions 10174// 10175// Description: 10176// This command sets the access privledeges for the specified file. 10177// The various permissions must be and'ed together to form one argument 10178// 10179// Parameters: 10180// fileName 10181// The name of the file to set the permissions for 10182// permissions 10183// An value containing all the permission bits for the file and'ed 10184// together to form one integer value 10185//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10186 10187#COMMAND SET_PERMISSION R "TO" R 10188 !A [] $589 !1 !3 10189#ENDCOMMAND 10190 10191//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10192// 10193// Command: 10194// 10195// ADD_PERMISSION fileName permissions 10196// 10197// Description: 10198// This command adds the requested access privledeges for the specified 10199// file to the access permissions already set for this file. 10200// The various permissions must be and'ed together to form one argument. 10201// These permission bits will then be and'ed together with the existing 10202// permission bits for the file. 10203// 10204// Parameters: 10205// fileName 10206// The name of the file to add the permissions for 10207// permissions 10208// An value containing the permission bits to be changed for the file 10209// and'ed together to form one integer value 10210// 10211//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10212 10213#COMMAND ADD_PERMISSION R R 10214 !A [] $58A !1 !2 10215#ENDCOMMAND 10216 10217//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10218// 10219// Command: 10220// 10221// DELETE_PERMISSION fileName permissions 10222// 10223// Description: 10224// This command removes the requested access privledeges for the specified 10225// file from the access permissions already set for this file. 10226// The various permissions must be and'ed together to form one argument 10227// 10228// Parameters: 10229// fileName 10230// The name of the file to remove the permissions for 10231// permissions 10232// An value containing the permission bits to be removed for the file 10233// and'ed together to form one integer value 10234// 10235//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10236 10237#COMMAND DELETE_PERMISSION R R 10238 !A [] $58B !1 !2 10239#ENDCOMMAND 10240 10241//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10242// 10243// Command: 10244// 10245// SET_FILE_OWNER fileName "TO" owner {group} 10246// 10247// Description: 10248// Sets the file owner of the specifed file and optionally sets the 10249// group id of the file. 10250// 10251// Parameters: 10252// fileName 10253// The file to set the owner for. 10254// owner 10255// The new owner for the file. 10256// {group} 10257// The new group id for the file. 10258//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10259 10260#COMMAND SET_FILE_OWNER R "TO" R 10261 #IF (!0 > 3) 10262 !A [] $59D !3 !4 10263 #ELSE 10264 !A [] $59D !3 0 10265 #END 10266 10267 !A [] $59C !1 10268#ENDCOMMAND 10269 10270//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10271// 10272// Command: 10273// 10274// GET_FILE_OWNER fileName "TO" owner {group} 10275// 10276// Description: 10277// Gets the file owner of the specifed file and optionally gets the 10278// group id of the file. 10279// 10280// Parameters: 10281// fileName 10282// The file to get the owner for. 10283// owner 10284// The owner of the file. 10285// {group} 10286// The group id of the file. 10287//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 10288 10289#COMMAND GET_FILE_OWNER R "TO" R 10290 !A [] $59B !1 !3 10291 10292 #IF (!0 > 3) 10293 !A [] $59C !4 10294 #ENDIF 10295#ENDCOMMAND 10296 10297#ENDIF 10298 10299// JJT-5.1 10300// Changed commands 10301 10302#COMMAND COMPILER_DESKTOP_METHOD_WARNINGS "ON""OFF" 10303 #IFSAME !1 ON 10304 #SET ZL$ (!Zl | 4) // add bit 3 10305 #ELSE 10306 #SET ZL$ (!Zl & 3) // strip bit 3 - the default fir 8.3, will change in future 10307 #REM AMBIGUOUS .DESKTOP. METHODS ARE ALLOWED (THIS IS .NOT. RECOMMENDED) 10308 #ENDIF 10309#ENDCOMMAND 10310 10311#COMMAND COMPILER_WARNINGS "ON""OFF""OLD""OLDOFF" 10312 #IFSAME !1 ON 10313 #SET ZL$ (!Zl & 6) // strip bit 1 10314 #REM STRICT COMPILER WARNINGS ON 10315 #ELSE 10316 #IFSAME !1 OFF 10317 #SET ZL$ (!Zl | 1) // add bit 1 10318 #REM STRICT COMPILER WARNINGS OFF 10319 #ELSE 10320 #IFSAME !1 OLD 10321 #SET ZL$ (!Zl | 2) // add bit 2 10322 #REM OLD STYLE COMPILER CHECKING ON (written to .prn file) 10323 #ELSE 10324 #SET ZL$ (!Zl & 5) // strip bit 2 10325 #REM OLD STYLE COMPILER CHECKING OFF 10326 #ENDIF 10327 #ENDIF 10328 #ENDIF 10329#ENDCOMMAND 10330 10331// changes: 1. declare an error if not within a procedure or function 10332// 2. Check for mismatched Begin/End blocks. 10333// 3. Check for child objects within end_object 10334// 10335#COMMAND END_PROCEDURE . 10336 // This tracks number of nested objects in method. 10337 // !Zn is the level of !n when the proc/funct started. Upon 10338 // completion !n should be that value. If not error. 10339 // If error, compiler stack is messed up 10340 #IF (!Zn = !n) 10341 #ELSE 10342 #ERROR DFERR_COMP_UNRESOVLED_CONTROL_BLOCK Mismatch in Method 10343 #SET B$ (!b | 4) // stack is screwed up..we have no idea if we are in proc 10344 #ENDIF 10345 10346 // When Proc started we set !Zm to 0. It counts nested objects. It 10347 // should be zero. If not we have an error. 10348 // If error, compiler stack is messed up 10349 #IF (!Zm > 0) 10350 #ERROR DFERR_COMP_MISSING_END_OBJECT Mismatch in Method 10351 #SET B$ (!b | 4) // stack is screwed up..we have no idea if we are in proc 10352 #ENDIF 10353 10354#IFDEF MANGLE_NAMES 10355 // Let NUM_ARGUMENTS get referenced again in the code, if it has been turned off. 10356 #ALLOW NUM_ARGUMENTS 10357 #UNDEF __@INSIDE_FUNCTION@__ // Leaving function/proc. 10358 10359#ENDIF 10360 10361 #IF (!b & 4) // are we within a Procedure 10362 #SET B$ (!b & 3) // reset flag to in_procedure 10363 #POP U$ 10364 #REPLACE OBJ$!Za$LNUM |CI!Zg // Update the count in the local cmd. 10365 // !A [] OBJ$END$HANDLER |CI0 10366 !A [] $0455 |CI0 10367 #REPLACE OBJ$!Za$ENDPROC !a 10368 #POP U$ 10369 #POP ZG$ 10370 10371 #STKSYM 10372 #ELSE 10373 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT End_Funct/End_proc command .not. within a method 10374 #ENDIF 10375 10376#ENDCOMMAND 10377 10378 10379 10380// changes: 1. declare an error if not within a class 10381// 2. declare an error if within a procedure/function 10382// 3. declare an error in object (implies missing end_object) 10383// Note: it is possible that under advanced usage you might be 10384// creating a class in a method. If this is the case you should 10385// use base_end_class 10386#COMMAND END_CLASS . 10387 #IF (!b & 2) // must be within class or an error 10388 #IF (!b & 4) // end-class within procedure is probably wrong 10389 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT CLASS/END_CLASS should .not. be inside a method 10390 #ELSE 10391 #IF (!b & 1) // if object must be error. Should be end object 10392 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT End_object expected before End_class 10393 #ENDIF 10394 BASE_END_CLASS 10395 #ENDIF 10396 #ELSE 10397 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT End_class without class 10398 #ENDIF 10399#ENDCOMMAND 10400 10401// this is lower level end_class. It doesn't check that the 10402// command apppears in the "right" spot. 10403#COMMAND BASE_END_CLASS . 10404 #SET ZI$ (!Zi+!Zf) //subobject count = self + superclass 10405 #REPLACE !$.AGG |CI!Zi //define subobject count 10406 !A [] END$CLASS U_!$ |CI!Zi 10407 10408 #SPOP // restore the old class name 10409 #POP X$ // reset the property index 10410 #POP ZI$ // reset old sub_object_count 10411 #POP ZF$ // reset super_class_count 10412 #POP ZB$ // reset current_dep 10413 #POP B$ // reset obj_flag 10414#ENDCOMMAND 10415 10416 10417// changes: declare an error if not within an object 10418// if within a class, this should be inside of a method 10419#COMMAND END_OBJECT 10420 #IF (!b & 1) // if not within an object..error 10421 // if within a class (2) but not within a procedure (4) we have an error 10422 // you should not place objects in classes outside of methods 10423 #IF (!b = 3) // 3 = in class and in object, not in method 10424 #IF (!Zl & 1) 10425 #REM WARNING 4391: Object/End_object within class is .NOT. in a method 10426 #ELSE 10427 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Object/End_object within class should be in a method 10428 #ENDIF 10429 #ENDIF 10430 10431 // If within method, we count number of nested objects. 10432 // If lt 0, declare an error, End_procedure will check for >0 10433 #IF ( !b & 4 ) // if object within method 10434 #SET ZM$ !Zm-1 // decrement count 10435 #IF (!Zm < 0) // if lt 0, declare error 10436 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT End_Object without Object in Method 10437 #ENDIF 10438 #ENDIF 10439 10440 // if here we are within a object. 10441 // if we are within a class we are also within a procedure 10442 10443 // 10444 // The following section was added 01-08-90 by SAL to support inheritable 10445 // end-instance macros for classes 10446 // 10447 #IFSUB '!$$SC' //if flex-defined class 10448 #IFSUB '!$$EM' //if end-instance macro defined for class, 10449 !$$EM !$ !1 !2 !3 !4 !5 !6 !7 !8 !9 10450 #ELSE 10451 FORWARD_END_CONSTRUCT !$ !1 !2 !3 !4 !5 !6 !7 !8 !9 10452 #ENDIF 10453 #ELSE 10454 DEFAULT_END_OBJECT //else use default 10455 #ENDIF 10456 #SPOP //restore old class name 10457 // 10458 // end of addition 01-08-90 by SAL 10459 // 10460 #ELSE 10461 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT End_Object without Object 10462 #ENDIF 10463#ENDCOMMAND 10464 10465// changes: declare an error if not within a procedure or function 10466// 10467#COMMAND FUNCTION_RETURN GO . 10468 #IF (!b & 4) // are we within a Procedure 10469 #IF (!0 > 0) 10470 #IFSAME !1 $0 10471 // !A [] OBJ$HRET |CI0 10472 !A [] $0450 |CI0 10473 #ELSE 10474 #IFSAME !1 $1 10475 // !A [] OBJ$HRET |CI1 10476 !A [] $0450 |CI1 10477 #ELSE 10478 #CHECK !1 _U 10479 // !A [] OBJ$HRET !1 10480 !A [] $0450 !1 10481 #ENDIF 10482 #ENDIF 10483 #ELSE 10484 // !A [] OBJ$HRET |CI0 10485 !A [] $0450 |CI0 10486 #ENDIF 10487 #ELSE 10488 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Method return .not. within a method 10489 #ENDIF 10490#ENDCOMMAND 10491 10492// change: return can be used in methods or in sub-routines 10493// perhaps next revision 10494//#COMMAND RETURN 10495// #IF (!b & 4) // are we within a Procedure/function 10496// #IF (!Zl & 2) 10497// #REM #ERROR DFERR_COMP_OBSOLETE_UNSUPPORTED_FEATURE Old Style Usage: Possible gosub return inside of method 10498// #ENDIF 10499// Procedure_Return !1 // we are returning from a method 10500// #ELSE 10501// // tells us what we need to fix. 10502// #IF (!Zl & 2) 10503// #REM #ERROR DFERR_COMP_OBSOLETE_UNSUPPORTED_FEATURE Old Style Usage: Gosub style/Return s/b Gosub_return 10504// #ENDIF 10505// #IF (!Zl & 1) // if relaxed... 10506// Gosub_Return !1 !2 // we are doing an old style sub-routine return 10507// #ELSE 10508// Procedure_Return !1 // we are returning from a method.. will gen an error 10509// #ENDIF 10510// #ENDIF 10511//#ENDCOMMAND 10512 10513// change: if within a method declare an error. Force use of 10514// gosub_return. This catches errors where developer types 10515// return instead of procedure_return. 10516// 10517#COMMAND RETURN 10518 #IF (!b & 4) // are we within a Procedure/function 10519 #IF (!Zl & 1) // if relaxed... 10520 #REM WARNING 4388: Old Style Usage: s/b gosub_return 10521 Gosub_Return !1 !2 !3 !4 !5 !6 !7 !8 !9 // we are doing an old style sub-routine return 10522 #ELSE 10523 #ERROR DFERR_COMP_OBSOLETE_UNSUPPORTED_FEATURE Old Style Usage: s/b gosub_return 10524 #ENDIF 10525 #ELSE // we are not within method. Normal gosub/return usage 10526 Gosub_Return !1 !2 !3 !4 !5 !6 !7 !8 !9 // we are doing an old style sub-routine return 10527 #ENDIF 10528#ENDCOMMAND 10529 10530#COMMAND Gosub_Return VFWNDE#G 10531 10532 #IF !0=0 10533 !A [] $043 |CL0 10534 #ELSE 10535 #IFSAME !1 RETURN GOSUB_RETURN 10536 #SET Q$ (!a+2) 10537 !A [] $043 |CL!q // RETURN RETURN 10538 GOSUB_RETURN !2 !3 !4 !5 !6 !7 !8 !9 10539 #ELSE 10540 #IFDEF !1 10541 #CHECK !1 _S 10542 #CHECK !2 . 10543 !A [] $043 !1 10544 #ELSE 10545 !A [] $043 |CL0 10546 #FREF !1 !a 10547 #ENDIF 10548 #ENDIF 10549 #ENDIF 10550#ENDCOMMAND 10551 10552 10553// if not defined as local make it local if needed 10554// 10555 10556#COMMAND INTEGER R 10557 DEFINE$VARIABLE$HELP Integer !1 !2 !3 !4 !5 !6 !7 !8 !9 10558#ENDCOMMAND 10559 10560#COMMAND STRING R E#L% 10561 DEFINE$VARIABLE$HELP String !1 !2 !3 !4 !5 !6 !7 !8 !9 10562#ENDCOMMAND 10563 10564#COMMAND DATE R 10565 DEFINE$VARIABLE$HELP Date !1 !2 !3 !4 !5 !6 !7 !8 !9 10566#ENDCOMMAND 10567 10568#COMMAND NUMBER R 10569 DEFINE$VARIABLE$HELP Number !1 !2 !3 !4 !5 !6 !7 !8 !9 10570#ENDCOMMAND 10571 10572#COMMAND REAL R 10573 DEFINE$VARIABLE$HELP Real !1 !2 !3 !4 !5 !6 !7 !8 !9 10574#ENDCOMMAND 10575 10576#COMMAND ADDRESS R 10577 DEFINE$VARIABLE$HELP Address !1 !2 !3 !4 !5 !6 !7 !8 !9 10578#ENDCOMMAND 10579 10580#COMMAND BIGINT R 10581 DEFINE$VARIABLE$HELP BIGINT !1 !2 !3 !4 !5 !6 !7 !8 !9 10582#ENDCOMMAND 10583 10584//#COMMAND LOGICAL R 10585// DEFINE$VARIABLE$HELP LOGICAL !1 !2 !3 !4 !5 !6 !7 !8 !9 10586//#ENDCOMMAND 10587 10588#COMMAND TIME R 10589 DEFINE$VARIABLE$HELP TIME !1 !2 !3 !4 !5 !6 !7 !8 !9 10590#ENDCOMMAND 10591 10592#COMMAND DATETIME R 10593 DEFINE$VARIABLE$HELP DATETIME !1 !2 !3 !4 !5 !6 !7 !8 !9 10594#ENDCOMMAND 10595 10596#COMMAND FLOAT R 10597 DEFINE$VARIABLE$HELP FLOAT !1 !2 !3 !4 !5 !6 !7 !8 !9 10598#ENDCOMMAND 10599 10600#COMMAND CHAR R 10601 DEFINE$VARIABLE$HELP CHAR !1 !2 !3 !4 !5 !6 !7 !8 !9 10602#ENDCOMMAND 10603 10604#COMMAND UCHAR R 10605 DEFINE$VARIABLE$HELP UCHAR !1 !2 !3 !4 !5 !6 !7 !8 !9 10606#ENDCOMMAND 10607 10608#COMMAND SHORT R 10609 DEFINE$VARIABLE$HELP SHORT !1 !2 !3 !4 !5 !6 !7 !8 !9 10610#ENDCOMMAND 10611 10612#COMMAND USHORT R 10613 DEFINE$VARIABLE$HELP USHORT !1 !2 !3 !4 !5 !6 !7 !8 !9 10614#ENDCOMMAND 10615 10616#COMMAND UINTEGER R 10617 DEFINE$VARIABLE$HELP UINTEGER !1 !2 !3 !4 !5 !6 !7 !8 !9 10618#ENDCOMMAND 10619 10620#COMMAND BOOLEAN R 10621 DEFINE$VARIABLE$HELP BOOLEAN !1 !2 !3 !4 !5 !6 !7 !8 !9 10622#ENDCOMMAND 10623 10624#COMMAND UBIGINT R 10625 DEFINE$VARIABLE$HELP UBIGINT !1 !2 !3 !4 !5 !6 !7 !8 !9 10626#ENDCOMMAND 10627 10628#COMMAND CURRENCY R 10629 DEFINE$VARIABLE$HELP CURRENCY !1 !2 !3 !4 !5 !6 !7 !8 !9 10630#ENDCOMMAND 10631 10632#COMMAND TIMESPAN R 10633 DEFINE$VARIABLE$HELP TIMESPAN !1 !2 !3 !4 !5 !6 !7 !8 !9 10634#ENDCOMMAND 10635 10636#COMMAND DECIMAL R 10637 DEFINE$VARIABLE$HELP DECIMAL !1 !2 !3 !4 !5 !6 !7 !8 !9 10638#ENDCOMMAND 10639 10640#COMMAND VARIANT R 10641 DEFINE$VARIABLE$HELP VARIANT !1 !2 !3 !4 !5 !6 !7 !8 !9 10642#ENDCOMMAND 10643 10644#COMMAND ROWID R 10645 DEFINE$VARIABLE$HELP RowID !1 !2 !3 !4 !5 !6 !7 !8 !9 10646#ENDCOMMAND 10647 10648 10649#COMMAND DEFINE$VARIABLE$HELP 10650 #IFDEF __@INSIDE_STRUCT@__ 10651 #IFADIM !2 10652 STRUCT_ARRAY_MEMBER !1 !2 !3 !4 !5 !6 !7 !8 !9 10653 #ELSE 10654 STRUCT_SCALAR_MEMBER !1 !2 !3 !4 !5 !6 !7 !8 !9 10655 #ENDIF 10656 #ELSE 10657 #IFDEF __@INSIDE_FUNCTION@__ 10658 //#IF (!Zl & 2) // warn if old style and odd 10659 // #REM #ERROR DFERR_COMP_OBSOLETE_UNSUPPORTED_FEATURE Old style usage: Possible global variable in method 10660 //#ENDIF 10661 10662 // jjt - used to be "& 1" which was wrong. 2 is old style flag, 1 is strict. changed in 9.1 10663 // I would hope that no-one is using this feature anymore. 10664 #IF (!Zl & 2) // old style - force to global 10665 Global_Variable !1 !2 !3 !4 !5 !6 !7 !8 !9 10666 #REM WARNING: Global Variable defined in method 10667 #ELSE 10668 Local !1 !2 !3 !4 !5 !6 !7 !8 !9 10669 #ENDIF 10670 #ELSE 10671 Global_Variable !1 !2 !3 !4 !5 !6 !7 !8 !9 10672 #ENDIF 10673 #ENDIF 10674#ENDCOMMAND 10675 10676// Change: Check that U_!1 is not yet defined 10677// Error if within class 10678// Error if within a method 10679#COMMAND CLASS _RCDNSO "IS" "A""AN" _RDNO //_UGBO#L _UGBO#L _GBO#L . 10680 #IF (!b & 6) // if within class or procedure...error 10681 #IF (!b & 2) // if within class 10682 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Classes cannot be nested within classes 10683 #ELSE // if within method 10684 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Classes cannot be nested within methods 10685 #ENDIF 10686 #ELSE 10687 #CHECK U_!1 _T // does new class exist? If yes error 10688 #CHECK U_!4 _U // does superclass exist? if no error 10689 #REPLACE !1$SC !4 //define superclass of new class 10690 #IFSAME !5 STARTMAC //if start macro specified, 10691 #REPLACE !1$SM !6 //remember its name 10692 #IFSAME !7 ENDMAC //if end macro specified, 10693 #REPLACE !1$EM !8 //remember it 10694 BASE_CREATE_CLASS !1 !2 !3 !4 !9 10695 #ELSE 10696 BASE_CREATE_CLASS !1 !2 !3 !4 !7 !8 !9 10697 #ENDIF 10698 #ELSE 10699 #IFSAME !5 ENDMAC //no STARTMAC - if ENDMAC specified, 10700 #REPLACE !1$EM !6 //remember it 10701 BASE_CREATE_CLASS !1 !2 !3 !4 !7 !8 !9 10702 #ELSE 10703 BASE_CREATE_CLASS !1 !2 !3 !4 !5 !6 !7 !8 !9 10704 #ENDIF 10705 #ENDIF 10706 #ENDIF 10707#ENDCOMMAND 10708 10709// Change: Clear In object Flag. If a class is created within an object 10710// it is not relevant. 10711 10712#COMMAND BASE_CREATE_CLASS _RCDNSO "IS" "A""AN" _RDNO _UGBO#L _UGBO#L _GBO#L . 10713 #PUSH !b // save obj_flag 10714 #PUSH !Zb // save current_dep 10715 #PUSH !Zf // save the super_class_count 10716 #SET B$ (!b | 2) // set flag to in_class 10717 // we want to strip in in-object flag. This will get restored when 10718 // the class is ended. When a class is defined it is not relevant if 10719 // it is in an object or not. 10720 #SET B$ (!b & 14) // set flag to not in_class (remove bit 0) 10721 #SET ZB$ 0 // based on atomic class object 10722 #IF ( (!b & 1) = 0 ) // are we NOT in a create_object? 10723 #IFDEF !4.AGG // bump dep number by already 10724 #SET ZB$ !4.AGG // defined sub objects 10725 #ENDIF 10726 #ENDIF 10727 #SET ZF$ !Zb // save the super_class_count 10728 #PUSH !Zi // save current sub object count 10729 #SET ZI$ 0 // and init for new class 10730 10731 #PUSH !x // save old property index 10732 #SET X$ 0 //init to first array index# (0) 10733 10734 #SPUSH // save the old class name 10735 #SET $$ !1 // retain the name of the class 10736 #IFDEF U_!1 // if the new class id has already 10737 #ELSE // been defined, dont bother 10738 Global_variable INTEGER U_!1 // else put it into a int of that name 10739 #ENDIF 10740 #DATA // wind up the stream 10741 #IFDEF !4 10742 #DPUSH !4 10743 #ELSE 10744 #DPUSH U_!4 // based upon 10745 #ENDIF 10746 #IF (!0<5) 10747 #DPUSH |CI0 // no colors defined, use default 10748 #ELSE 10749 #DPUSH !5 // else do what they say 10750 #ENDIF 10751 #IF (!0<6) 10752 #DPUSH |CI0 // no colors defined, use default 10753 #ELSE 10754 #DPUSH !6 // else do what they say 10755 #ENDIF 10756 #IF (!0=7) // if parameter used, this will be 10757 #DPUSH |CS"!7" // the name of a 'C' function. 10758 #ELSE 10759 #DPUSH |CS"" // else inherit one from the parent 10760 #ENDIF 10761 !A [] CREATE$CLASS U_!1 |VL // let 'er rip 10762#ENDCOMMAND 10763 10764 10765// changes: 1. Allow New syntax: Property type Name {dflt} public|private is optional 10766// 2. Check placement as follows: 10767// 2.1. Must be in class or object 10768// 2.2. Cannot be in a child object defined by a class 10769// 2.3. If in class, must be in procedure (constructor) 10770// 2.4. If in object, must not be in procedure. 10771// 3. Check for Property Name conflicts (Get_name conflict) 10772// 3.1. If defined as object access - error 10773// 3.2. If defined as global method - error 10774// 3.3. If defined with different param list - error (already does this) 10775 10776 10777// Changes: 1. No_image is optional if windows (always provided by compiler) 10778// 2. If within class, s/b within a class (in df$object) 10779#COMMAND OBJECT R "IS" "A""AN" RVD#I 10780 #IFDEF IS$WINDOWS 10781 // If windows we can check for no_image and if it is not presented then 10782 // we will provide a no_image argument. Therefore you should NEVER need to use 10783 // No_image with windows. 10784 #IF (!0<5) // if no image try to aquire one 10785 #IFDEF !1.N // if image exists with object name, use that 10786 OBJECT !1 !2 !3 !4 !1 10787 #ELSE 10788 OBJECT !1 !2 !3 !4 NO_IMAGE // else use no_image 10789 #ENDIF 10790 #ELSE 10791 #IFDEF !5.N // if passed a valid image or 10792 DF$OBJECT !1 !2 !3 !4 !5 !6 !7 !8 !9 // no_image use them. Else add 10793 #ELSE // the no_image parameter. 10794 #IFSAME !5 NO_IMAGE 10795 DF$OBJECT !1 !2 !3 !4 !5 !6 !7 !8 !9 10796 #ELSE 10797 DF$OBJECT !1 !2 !3 !4 NO_IMAGE !5 !6 !7 !8 !9 10798 #ENDIF 10799 #ENDIF 10800 #ENDIF 10801 #ELSE 10802 // If character mode no_image must be explicitly provided (as it has always been). 10803 // we cannot use the no_image replacement because it does not work with dynamic 10804 // visual objects (like edits). 10805 #IF (!0<5) // if no image try to aquire one 10806 DF$OBJECT !1 !2 !3 !4 !1 10807 #ELSE 10808 DF$OBJECT !1 !2 !3 !4 !5 !6 !7 !8 !9 10809 #ENDIF 10810 #ENDIF 10811#ENDCOMMAND 10812 10813#COMMAND DF$OBJECT R "IS" "A""AN" RVD#I 10814 10815 #IF (!b & 2) // if within a class 10816 #IF ( (!b & 4)=0 ) // should be within a method 10817 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Objects in classes should be within a method 10818 #ENDIF 10819 #ENDIF 10820 10821 // if we are within a method we will keep track of the number of 10822 // nested objects. When the method ends we will verify that this is 0. 10823 // This lets us warn about mismathed object/end-object commands 10824 #IF ( !b & 4) // if object within method 10825 #SET ZM$ !ZM // increment 10826 #ENDIF 10827 10828 10829 #DATA // start up the data stream 10830 #PUSH !Zj // save the unique object label 10831 #PUSH !b // save current definition state 10832 10833 #IF (!b > 0) // if not global..we make no guesses about 10834 // dependent numbers. Let the runtime assign 10835 // dependent order. 10836 //#IF (!b = 4) // if in procedure and not class 10837 #SET ZJ$ 0 // do not inc z 10838 #ELSE 10839 #SET ZJ$ !ZB // assign the next object id 10840 #ENDIF 10841 #PUSH !Zb // save this level on stack 10842 #IFDEF !4.AGG // was this a class with sub objects? 10843 #SET ZB$ !4.AGG // sub objects will begin at the 10844 #ELSE // next object after superclass 10845 #SET ZB$ 0 // base classes start at 0 10846 #ENDIF 10847 #SET ZI$ !ZI // count this object at the current level 10848 #PUSH !Zi // and push the level 10849 #IF (!b > 0) // if (in_object | in_class) 10850 #IF (!b & 2) // obj_flag == in_class? 10851 #IF (!b & 1) // obj_flag == in_Object? 10852 #ELSE // No Name for Subobject in constructor 10853 // don't define this anymore... 10854 //#REPLACE !$.!1.OBJ |CI-!Zj // object_name = -current_object 10855 #ENDIF 10856 #ENDIF 10857 // (LS) removed setting of ZJ; it is NOT being used. 10858 // (Removed when max lines increased > 32k) 10859 // #SET ZJ$ (32766-!a) // a very unique label for this object 10860 #DPUSH |CS".!1" // make name from parent and child 10861 #ELSE // global object name 10862 #DPUSH |CS"!1" // assign an absolute name to object 10863 #ENDIF 10864 #CHECK U_!4 _U // does class exist? 10865 #DPUSH U_!4 // define then class the class id 10866 GET$OBJ$IMAGE !5 // define the objects image 10867 #IF ((!b & 3) = 2) // if in_class & !in_object 10868 // don't assign dep nums anymore 10869 //#DPUSH !$.!1.OBJ // pick the assigned dependant number 10870 // New code just sets 0 10871 #DPUSH |CI0 // pick the next dependant number 10872 #ELSE // 10873 #IF (!b = 0) // A global object must assign # 10874 #IFDEF !1.OBJ // Is the symbol defined, name_object? 10875 #DPUSH |CI0 // pick the next dependant number 10876 #ELSE 10877 #DPUSH |CI!Zj // force the dependant number 10878// #SET ZJ$ ($1000+!Zj) // mark as global object 10879 #SET ZJ$ ($10000000+!Zj) // using 32-bit ids now 10880 // as of 8.3 we no longer use dependent lists so we cannot create the ObjName.obj symbol anymore. This method of ussage has 10881 // been deprecated since early framework days and it is now no longer suppoted. The only way you can use the .obj method is to 10882 // use name_object, which moves this into a global integer variable. Developers are advised to change the ObjName.obj to 10883 // (ObjName(desktop)). 10884 // Also I don't think the above Zj is even needed, but for now they remain. 10885 //#REPLACE !1.OBJ |CI!Zj // Assign an ID to this object 10886 #ENDIF 10887 #ELSE 10888 #DPUSH |CI0 // pick the next dependant number 10889 #ENDIF 10890 #ENDIF 10891 REGISTER_OBJECT !1 10892 #DPUSH GET_!1 10893 #SET B$ (!b | 1) // we are in a object definition 10894 !A [] OBJ$CREATE |VL // create the object now 10895 10896 #IFDEF !1.OBJ 10897 #IFCLASS !1.OBJ V$ // does this object have a global? 10898 MOVE CURRENT_OBJECT TO !1.OBJ // Move the object id to its global 10899 #ENDIF 10900 #ENDIF 10901 10902 #SPUSH //save the old class name 10903 #SET $$ !4 10904 #IFSUB '!$$SC' // if flex-defined class 10905 #IFSUB '!$$SM' // if begin-instance macro exists 10906 #IFDEF IS$WINDOWS 10907 // in windows we know that an image is always passed (object creates one if needed) 10908 // and that images are never used. Therefore replace image argument with 0. 10909 !$$SM !$ 0 !6 !7 !8 !9 10910 #ELSE 10911 // character might be passing an image and it might not. We must pass the value 10912 !$$SM !$ !5 !6 !7 !8 !9 10913 #ENDIF 10914 #ELSE 10915 FORWARD_BEGIN_CONSTRUCT !$ !5 !6 !7 !8 !9 10916 #ENDIF 10917 #ELSE 10918 ADD$IMAGE$ARGS MSG_CONSTRUCT_OBJECT !5 !6 !7 !8 !9 //else use default 10919 #ENDIF 10920#ENDCOMMAND 10921 10922// Changes: 1. Methods not allowed in class child-objects 10923// 2. If on desktop and not Global/for..is for cDesktop (changed in 8.3, was Desktop) 10924 10925 10926 10927#COMMAND GET$SET "GET""SET" RD#OBLG 10928 10929 #IFSAME !3 OF 10930// #IFSAME !5 FILE_FIELD // is the file_field keyword used? 10931// #IFCLASS !6 F // test for file element 10932// #PUSH !h 10933// #PUSH !g 10934// #SET H$ %!6 // get the fieldnumber of parameter 10935// #SET G$ !6 // get the filenumber of parameter 10936// GET$SET$HELP !1 !2 !3 !4 |CI!g |CI!h !7 !8 !9 10937// #POP G$ 10938// #POP H$ 10939// #ELSE 10940// #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNKNOWN FILE_FIELD: !6 10941// #ENDIF 10942// #ELSE 10943// #IFSAME !5 FIELD // is the field keyword used? 10944// #IFCLASS !6 F // test for file element 10945// #PUSH !h 10946// #SET H$ %!6 // get the fieldnumber of parameter 10947// GET$SET$HELP !1 !2 !3 !4 |CI!h !7 !8 !9 10948// #POP H$ 10949// #ELSE 10950// #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNKNOWN FIELD: !6 10951// #ENDIF 10952// #ELSE 10953 GET$SET$HELP !1 !2 !3 !4 !5 !6 !7 !8 !9 10954// #ENDIF 10955// #ENDIF 10956 #ELSE // !3 not OF. Provide Object 10957 GET$SET !1 !2 OF CURRENT_OBJECT !3 !4 !5 !6 !7 !8 !9 10958 #ENDIF 10959#ENDCOMMAND 10960 10961#COMMAND GET$SET$HELP "GET""SET" RD#OBLG "OF" RSND#OBLG R 10962 10963 #IF ( (!Zl & 1)=0) 10964 #IFCLASS !2 "EFWV" 10965 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Unusual Usage: Variable or Expression used as message 10966 #ENDIF 10967 10968 #IF (!b = 2) // within class but not in object or method 10969 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Messages in class should be in method 10970 #ENDIF 10971 #ENDIF 10972 10973 #IFSAME DFLT$!2 __X__ __F__ // is this a item type message? 10974 #IFSAME !5 ITEM // is the item keyword used? 10975 OBJECT$PROPERTIES !1 !2 !4 !6 !7 !8 !9 // pass it on 10976 #ELSE 10977 #IFSAME !5 TO // if no param passed create a default 10978 #IFSAME DFLT$!2 __F__ // is this a form type message? 10979 #IF (!Zl & 2) 10980 // if a Form_ message, and no item was passed before the TO 10981 // and there are two params after the two this is an old syntax. 10982 #IF (!0>6) 10983 // this one must be fixed! 10984 #ERROR DFERR_COMP_OBSOLETE_UNSUPPORTED_FEATURE OBSOLETE SYNTAX: GET/SET FORM_XXX TO X Y 10985 #REM #ERROR DFERR_COMP_OBSOLETE_UNSUPPORTED_FEATURE OBSOLETE SYNTAX: GET/SET FORM_XXX TO X Y 10986 #ENDIF 10987 #ENDIF 10988 OBJECT$PROPERTIES !1 !2 !4 0 !5 !6 !7 !8 !9 // use 0 as dflt 10989 #ELSE 10990 #IF (!Zl & 2) 10991 // if a item_ message, and no item was passed before the TO 10992 // it used to replace with current which is now changed to 10993 // 0. Warn that this might cause a problem in old programs. 10994 #REM #ERROR DFERR_COMP_OBSOLETE_UNSUPPORTED_FEATURE Old Style Usage: No ITEM keyword. Is replacement for .current. or 0 10995 #ENDIF 10996 //OBJECT$PROPERTIES !1 !2 !4 0 !5 !6 !7 !8 !9 // use 0 as dflt 10997 OBJECT$PROPERTIES !1 !2 !4 -99 !5 !6 !7 !8 !9 // use CURRENT as dflt 10998 #ENDIF 10999 #ELSE // params are passed. Just Use them 11000 OBJECT$PROPERTIES !1 !2 !4 !5 !6 !7 !8 !9 // pass it on 11001 //#REM ITEM KEYWORD OMITTED. USE !5 11002 #ENDIF 11003 #ENDIF 11004 #ELSE // not Item or Form based 11005 OBJECT$PROPERTIES !1 !2 !4 !5 !6 !7 !8 !9 // just supply args 11006 #ENDIF 11007#ENDCOMMAND 11008 11009 11010#COMMAND OBJECT$PROPERTIES "GET""SET" RD#OBLG RSND#OBLG R 11011 #DATA 11012 11013 #IFDEF !2 // is message in a variable? 11014 #DPUSH !2 // yes, just push the value 11015 #ELSE 11016 #IFDEF !1_!2 // is this message defined? 11017 #DPUSH !1_!2 // yes, push the definition 11018 #ELSE 11019 // If there is no message defined, try matching with mangled symbol. 11020 #IFSAME !1 GET 11021 #MANG !1_!2 !4 !5 !6 !7 !8 !9 11022 #ELSE 11023 #MING !1_!2 !4 !5 !6 !7 !8 !9 11024 #ENDIF 11025 // Push it, if we can, or push a fref to the mangled name. 11026 // Fwd refs try to match without the syntactic sugar first. 11027 #IFDEF !? 11028 11029 // Overloading does not allow File_Field, Field or Item (get only) 11030 #IFSAME FILE_FIELD !2 !3 !4 !5 !6 !7 !8 !9 11031 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "FILE_FIELD keyword not allowed in Overloaded messages" 11032 #ELSE 11033 #IFSAME FIELD !2 !3 !4 !5 !6 !7 !8 !9 11034 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "FIELD keyword not allowed in Overloaded messages" 11035 #ELSE 11036 #IFSAME !1 GET // GET's #mang does not test for ITEM so we disallow it here. 11037 #IFSAME ITEM !2 !3 !4 !5 !6 !7 !8 !9 11038 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "ITEM keyword not allowed or needed in GET Overloaded messages" 11039 #ENDIF 11040 #ENDIF 11041 #ENDIF 11042 #ENDIF 11043 11044 #DPUSH !? 11045 #ELSE 11046 #DPUSH |CI0 // forward reference the message 11047 #FREF !? !a,0 // add the reference to be defined 11048 #ENDIF 11049 #ENDIF 11050 #ENDIF 11051 11052 #PUSH !Zg 11053 #SET ZG$ 0 11054 11055 #PUSH !Zh 11056 #SET ZH$ 2 // 3 unrestricted params following TO and TO is optional 11057 #IF (!Zl & 1) 11058 #SET ZH$ 3 // Its ok...no fancy checking 11059 #ELSE 11060 #IFSAME !1 GET 11061 #SET ZH$ 1 // 1 means 1 param following TO 11062 #ELSE 11063 #IFSAME DFLT$2$!2 __2__ // is this a complex set message? (more than 1 param) 11064 #ELSE 11065 #IFSAME DFLT$!2 __X__ __F__ // is this a item or form type message? 11066 //#IFSAME DFLT$!2 __F__ // is this a item or form type message? 11067 #SET ZH$ 1 // 1 means 1 param following TO 11068 #ENDIF 11069 #ENDIF 11070 #ENDIF 11071 #ENDIF 11072 11073 PROPERTY$HELP !4 !5 !6 !7 !8 !9 11074 11075 #POP ZH$ 11076 #POP ZG$ 11077 11078 // Precedence of Object ID resolution 11079 // 1. If variable (hopefully local) 11080 // 2. if expression 11081 // 3. If .obj (old style, to be avoided) 11082 // 4. If object access id 11083 11084 #IFDEF !3 // if a variable, constant or expression...it's defined 11085 OBJECT$DEFINE !1 !3 11086 #ELSE 11087 11088 // remove object.OBJ check - must explicitly add .obj if you want it 11089 //#IFDEF !3.OBJ // old style: If global object or defined w/ .obj (ugh) 11090 // OBJECT$DEFINE !1 !3.OBJ 11091 //#ELSE 11092 11093 #IFDEF GET_!3 // if defined as a function 11094 #IF (GET_!3>$40000000) // and an object access method 11095 // replace simple name with expression syntax 11096 OBJECT$DEFINE !1 (!3(Current_object)) 11097 #ELSE // if defined as a function but not an access method. This is an error 11098 #ERROR DFERR_COMP_INVALID_OBJECT_REFERENCE "Already defined as a function" 11099 #ENDIF 11100 #ELSE 11101 // 12.0 change: 11102 // !3 is not defined but we will pass this on and allow the compiler to attempt to resolve it 11103 OBJECT$DEFINE !1 (!3(Current_object)) 11104 11105 //// not yet defined. We could either forward ref as object or 11106 //// declare an error. For now let's just do an error. 11107 //#ERROR DFERR_COMP_INVALID_OBJECT_REFERENCE Object .not. yet defined 11108 //// here is how we would forward ref as obj 11109 ////Register_object !3 11110 ////!A [] OBJ$!1 (!3(Current_object)) |VL 11111 #ENDIF 11112 11113 //#ENDIF 11114 #ENDIF 11115#ENDCOMMAND 11116 11117#COMMAND OBJECT$DEFINE R R 11118 !A [] OBJ$!1 !2 |VL 11119#ENDCOMMAND 11120 11121// this forces the param passed to be subsituted for an expression 11122// you can directly dpush an expression 11123#COMMAND DPUSH$EXP R . 11124 #DPUSH !1 11125#ENDCOMMAND 11126 11127 11128 11129 11130#COMMAND PROPERTY$HELP 11131 #IF (!0>0) 11132 // check that none of the params are indicators. We wrap this in an IFLOGICAL because the # test 11133 // also fires on other symbols like EQ 11134 #IFLOGICAL !1 11135 #CHECK !1 _# 11136 #ENDIF 11137 #IFSAME !1 FIELD 11138 #IFCLASS !2 F // test for file element 11139 #PUSH !h 11140 #SET H$ %!2 // get the fieldnumber of parameter 11141 PROPERTY$HELP |CI!h !3 !4 !5 !6 !7 !8 !9 11142 #POP H$ 11143 #ELSE 11144 #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNKNOWN FIELD: !2 11145 #ENDIF 11146 #ELSE 11147 #IFSAME !1 FILE_FIELD 11148 #IFCLASS !2 F // test for file element 11149 #PUSH !h 11150 #PUSH !g 11151 #SET H$ %!2 // get the fieldnumber of parameter 11152 #SET G$ !2 // get the filenumber of parameter 11153 PROPERTY$HELP |CI!g |CI!h !3 !4 !5 !6 !7 !8 !9 11154 #POP G$ 11155 #POP H$ 11156 #ELSE 11157 #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNKNOWN FILE_FIELD: !2 11158 #ENDIF 11159 #ELSE 11160 11161 #IFSAME !1 OF // "of" should have already been processed. This is an error 11162 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX INVALID USE OF 'OF' 11163 #SET ZH$ 4 // 4 means error occurred 11164 #ELSE 11165 11166 // Check that TO is used properly. 11167 #IFSAME !1 TO 11168 #IF (!Zl & 1) 11169 #ELSE 11170 #IF (!Zh=3) // TO already encountered. TOO many Tos 11171 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX TOO MANY 'TO' 11172 #SET ZH$ 4 // 4 means error occurred 11173 #ELSE 11174 #IF (!0=1) // missing param after to 11175 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX NO VALUE FOLLOWING 'TO' 11176 #SET ZH$ 4 // 4 means error occurred 11177 #ELSE 11178 #SET ZH$ 3 // Mark as found a to. May get changed if an error 11179 #IF (!Zh=1) // A GET or ITEM SET without a TO yet 11180 #IF (!0>2) // too many params after the to 11181 #IFSAME !1 FIELD // if FIELD we expect another param 11182 #ELSE 11183 #IFSAME !1 FILE_FIELD // if FILE_FIELD we expect another param 11184 #ELSE 11185 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX TOO MANY PARAMS AFTER 'TO' 11186 #SET ZH$ 4 // 4 means error occurred 11187 #ENDIF 11188 #ENDIF 11189 #ENDIF 11190 #ENDIF 11191 #ENDIF 11192 #ENDIF 11193 #ENDIF 11194 #ELSE 11195 #IFSAME !1 ITEM 11196 #ELSE 11197 #SET ZG$ !ZG 11198 #IFDEF !1 11199 #DPUSH !1 11200 #ELSE 11201 #IFCLASS !1 0123456789ABCDEF 11202 #DPUSH !1 11203 #ELSE 11204 //#IFDEF MSG_!1 11205 // #DPUSH MSG_!1 11206 //#ELSE 11207 // #DPUSH |CI0 11208 // #FREF MSG_!1 !a,!Zg 11209 //#ENDIF 11210 11211 #IFDEF GET_!1 // if defined as a function 11212 // This would support passing of object names as parameters. Not supported 11213 // for now. 11214 #IF (GET_!1>$40000000) // and an object access method..we will help out 11215 // replace simple name with expression syntax 11216 DPUSH$EXP (!1(current_object)) 11217 #ELSE // if defined as a function but not an access method. This is an error 11218 #DPUSH !1 // will generate an Error 11219 #ENDIF 11220 #ELSE // If undefined 11221 // this could be msg_!1 but we will call than an error 11222 //#DPUSH !1 // will generate an Error 11223 #IFDEF MSG_!1 11224 #DPUSH MSG_!1 11225 #ELSE 11226 #DPUSH |CI0 11227 #FREF MSG_!1 !a,!Zg 11228 #ENDIF 11229 11230 #ENDIF 11231 #ENDIF 11232 #ENDIF 11233 #ENDIF 11234 #ENDIF 11235 11236 #ENDIF 11237 #IF (!Zh<4) // 4 indicates an error occurred 11238 PROPERTY$HELP !2 !3 !4 !5 !6 !7 !8 !9 // as long as there is still no error 11239 #ENDIF 11240 #ENDIF 11241 #ENDIF 11242 #ELSE 11243 #IF (!Zh<3) // If 1 or 2, TO was never found 11244 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX MISSING 'TO' KEYWORD 11245 #ENDIF 11246 #ENDIF 11247#ENDCOMMAND 11248 11249// 11250////old 11251//#COMMAND PROPERTY$HELP 11252// #IF (!0>0) 11253// #IFSAME !1 OF // "of" should have already been processed. This is an error 11254// #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX INVALID USE OF 'OF' 11255// #SET ZH$ 4 // 4 means error occurred 11256// #ELSE 11257// // Check that TO is used properly. 11258// #IFSAME !1 TO 11259// #IF (!Zl & 1) 11260// #ELSE 11261// #IF (!Zh=3) // TO already encountered. TOO many Tos 11262// #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX TOO MANY 'TO' 11263// #SET ZH$ 4 // 4 means error occurred 11264// #ELSE 11265// #IF (!0=1) // missing param after to 11266// #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX NO VALUE FOLLOWING 'TO' 11267// #SET ZH$ 4 // 4 means error occurred 11268// #ELSE 11269// #IF (!Zh=1) // A GET or ITEM SET without a TO yet 11270// #IF (!0>2) // too many params after the to 11271// #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX TOO MANY PARAMS AFTER 'TO' 11272// #SET ZH$ 4 // 4 means error occurred 11273// #ELSE 11274// #SET ZH$ 3 // Mark as found a to 11275// #ENDIF 11276// #ELSE // If here a non-item SET 11277// #SET ZH$ 3 // Mark as found a to 11278// #ENDIF 11279// #ENDIF 11280// #ENDIF 11281// #ENDIF 11282// #ELSE 11283// #IFSAME !1 ITEM 11284// #ELSE 11285// #SET ZG$ !ZG 11286// #IFDEF !1 11287// #DPUSH !1 11288// #ELSE 11289// #IFCLASS !1 0123456789ABCDEF 11290// #DPUSH !1 11291// #ELSE 11292// //#IFDEF MSG_!1 11293// // #DPUSH MSG_!1 11294// //#ELSE 11295// // #DPUSH |CI0 11296// // #FREF MSG_!1 !a,!Zg 11297// //#ENDIF 11298// 11299// #IFDEF GET_!1 // if defined as a function 11300// // This would support passing of object names as parameters. Not supported 11301// // for now. 11302// #IF (GET_!1>$40000000) // and an object access method..we will help out 11303// // replace simple name with expression syntax 11304// DPUSH$EXP (!1(current_object)) 11305// #ELSE // if defined as a function but not an access method. This is an error 11306// #DPUSH !1 // will generate an Error 11307// #ENDIF 11308// #ELSE // If undefined 11309// // this could be msg_!1 but we will call than an error 11310// //#DPUSH !1 // will generate an Error 11311// #IFDEF MSG_!1 11312// #DPUSH MSG_!1 11313// #ELSE 11314// #DPUSH |CI0 11315// #FREF MSG_!1 !a,!Zg 11316// #ENDIF 11317// 11318// #ENDIF 11319// #ENDIF 11320// #ENDIF 11321// #ENDIF 11322// #ENDIF 11323// #ENDIF 11324// #IF (!Zh<4) // 4 indicates an error occurred 11325// PROPERTY$HELP !2 !3 !4 !5 !6 !7 !8 !9 // as long as there is still no error 11326// #ENDIF 11327// #ELSE 11328// #IF (!Zh<3) // If 1 or 2, TO was never found 11329// #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX MISSING 'TO' KEYWORD 11330// #ENDIF 11331// #ENDIF 11332//#ENDCOMMAND 11333 11334// Changes: 1. support "OF" as well as "TO". OF is preferred 11335// 2. Check location of "OF" keyword 11336// 3. Check for improper message type (expression) 11337// 4. If sent directly within class (not method)...error 11338#COMMAND SEND RSD#OBLG 11339 11340 #IF ( (!Zl & 1)=0) 11341 // we expect message to be msg_xxx, constant or local var. 11342 // Actually locals are weird, but much more acceptable 11343 #IFCLASS !1 "EFWV" // if exp, file, window or global...weird 11344 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX Unusual Usage: Variable or Expression used as message 11345 #ENDIF 11346 11347 #IF (!b = 2) // within class but not in object or method 11348 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Messages in class should be in method 11349 #ENDIF 11350 #ENDIF 11351 11352 #DATA 11353 #IFDEF !1 11354 #DPUSH !1 11355 #ELSE 11356 11357 #IFNDEF MANGLE_NAMES 11358 11359 #IFDEF MSG_!1 11360 #DPUSH MSG_!1 11361 #ELSE 11362 #DPUSH |CI0 11363 #FREF MSG_!1 !a,0 11364 #ENDIF 11365 11366 #ELSE 11367 11368 #IFSAME !2 TO OF 11369 #IFDEF MSG_!1 11370 #DPUSH MSG_!1 11371 #ELSE 11372 #MANG MSG_!1 !4 !5 !6 !7 !8 !9 11373 #IFDEF !? 11374 #IFSAME FILE_FIELD !2 !3 !4 !5 !6 !7 !8 !9 11375 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "FILE_FIELD keyword not allowed in Overloaded messages" 11376 #ELSE 11377 #IFSAME FIELD !2 !3 !4 !5 !6 !7 !8 !9 11378 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "FIELD keyword not allowed in Overloaded messages" 11379 #ENDIF 11380 #ENDIF 11381 #DPUSH !? 11382 #ELSE // message undefined. push obj function fixup. 11383 #DPUSH |CI0 11384 #FREF !? !a,0 11385 #ENDIF 11386 #ENDIF 11387 #ELSE 11388 #IFDEF MSG_!1 11389 #DPUSH MSG_!1 11390 #ELSE 11391 #MANG MSG_!1 !2 !3 !4 !5 !6 !7 !8 !9 11392 #IFDEF !? 11393 #IFSAME FILE_FIELD !2 !3 !4 !5 !6 !7 !8 !9 11394 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "FILE_FIELD keyword not allowed in Overloaded messages" 11395 #ELSE 11396 #IFSAME FIELD !2 !3 !4 !5 !6 !7 !8 !9 11397 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "FIELD keyword not allowed in Overloaded messages" 11398 #ENDIF 11399 #ENDIF 11400 #DPUSH !? 11401 #ELSE 11402 #DPUSH |CI0 // can't tell if it's object or global. push object. 11403 #FREF !? !a,0 11404 #ENDIF 11405 #ENDIF 11406 #ENDIF 11407 11408 #ENDIF // Name Mangling Case 11409 11410 #ENDIF 11411 #IFSAME !2 TO OF // support both OF (suggested) and TO (old) 11412 SEND$HELP !4 !5 !6 !7 !8 !9 11413 SEND$CMD TO TO !3 11414 #ELSE 11415 SEND$HELP !2 !3 !4 !5 !6 !7 !8 !9 11416 SEND$CMD TO TO CURRENT_OBJECT 11417 #ENDIF 11418#ENDCOMMAND 11419 11420#COMMAND SEND$CMD 11421 #IFSAME !1 !2 11422 #IFDEF !3 // if a variable, constant or expression...it's defined 11423 OBJECT$SEND$DEFINE !3 11424 #ELSE 11425 // remove .obj resolution. must manually add this 11426 //#IFDEF !3.OBJ // old style: If global object or defined w/ .obj (ugh) 11427 // OBJECT$SEND$DEFINE !3.OBJ 11428 //#ELSE 11429 #IFDEF GET_!3 // if defined as a function 11430 #IF (GET_!3>$40000000) // and an object access method 11431 // replace simple name with expression syntax 11432 OBJECT$SEND$DEFINE (!3(Current_object)) 11433 #ELSE // if defined as a function but not an access method. This is an error 11434 #ERROR DFERR_COMP_INVALID_OBJECT_REFERENCE "Already defined as a function" 11435 #ENDIF 11436 #ELSE 11437 // 12.0 change: 11438 // !3 is not defined but we will pass this on and allow the compiler to attempt to resolve it 11439 OBJECT$SEND$DEFINE (!3(Current_object)) 11440 11441 //// not yet defined. We could either forward ref as object or 11442 //// declare an error. For now let's just do an error. 11443 //#ERROR DFERR_COMP_INVALID_OBJECT_REFERENCE Object .Not. yet defined 11444 //// here is how we would forward ref as obj 11445 ////!A [] OBJ$SEND |CI0 |VL 11446 ////#FREF (!3(Current_object)) !a 11447 #ENDIF 11448 //#ENDIF 11449 #ENDIF 11450 #ELSE 11451 !A [] OBJ$SEND CURRENT_OBJECT |VL 11452 #ENDIF 11453#ENDCOMMAND 11454 11455#COMMAND OBJECT$SEND$DEFINE R 11456 !A [] OBJ$SEND !1 |VL 11457#ENDCOMMAND 11458 11459 11460#COMMAND SEND$HELP 11461 #IF (!0>0) 11462 // check that none of the params are indicators. We wrap this in an IFLOGICAL because the # test 11463 // also fires on other symbols like EQ 11464 #IFLOGICAL !1 11465 #CHECK !1 _# 11466 #ENDIF 11467 #IFSAME !1 OF TO 11468 #ERROR DFERR_COMP_INVALID_MESSAGE_SYNTAX INVALID POSITION FOR '!1' 11469 #ELSE 11470 #IFSAME !1 FIELD 11471 #IFCLASS !2 F // test for file element 11472 #PUSH !h 11473 #SET H$ %!2 // get the fieldnumber of parameter 11474 SEND$HELP |CI!h !3 !4 !5 !6 !7 !8 !9 11475 #POP H$ 11476 #ELSE 11477 #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNKNOWN FIELD: !2 11478 #ENDIF 11479 #ELSE 11480 #IFSAME !1 FILE_FIELD 11481 #IFCLASS !2 F // test for file element 11482 #PUSH !h 11483 #PUSH !g 11484 #SET H$ %!2 // get the fieldnumber of parameter 11485 #SET G$ !2 // get the filenumber of parameter 11486 SEND$HELP |CI!g |CI!h !3 !4 !5 !6 !7 !8 !9 11487 #POP G$ 11488 #POP H$ 11489 #ELSE 11490 #ERROR DFERR_COMP_UNDEFINED_SYMBOL_IN_ARGUMENT UNKNOWN FILE_FIELD: !2 11491 #ENDIF 11492 #ELSE 11493 // As of 10.1 we will support passing of object names as parameters. 11494 #IFDEF !1 // if value is defined, just use it 11495 #DPUSH !1 11496 #ELSE 11497 #IFCLASS !1 0123456789ABCDEF // this allows one to pass hex constants (e.g. $C003, NOENTER) 11498 #DPUSH !1 11499 #ELSE // not defined, see if this is an object, referecne 11500 #IFDEF GET_!1 // if defined as a function and is an object access, use it 11501 #IF (GET_!1>$40000000) 11502 DPUSH$EXP (!1(current_object)) 11503 #ELSE 11504 #DPUSH !1 // will generate a symbol not defined error 11505 #ENDIF 11506 #ELSE 11507 #DPUSH !1 // will generate a symbol not defined error 11508 #ENDIF 11509 #ENDIF 11510 #ENDIF 11511 SEND$HELP !2 !3 !4 !5 !6 !7 !8 !9 11512 #ENDIF 11513 #ENDIF 11514 #ENDIF 11515 #ENDIF 11516#ENDCOMMAND 11517 11518// Create Move command that will move object access methods 11519// to a var with simple name 11520#COMMAND MOVE R "TO" R . 11521 #IFDEF !1 // if Move Var to Var...normal move. 11522 MoveVar !1 !2 !3 11523 #ELSE 11524 #IFDEF GET_!1 // if defined as a function 11525 #IF (GET_!1>$40000000) // If move Object-access to (var|property) 11526 MoveObj !1 !2 !3 11527 #ELSE 11528 MoveVar !1 !2 !3 // this will generate an error 11529 #ENDIF 11530 #ELSE 11531 MoveVar !1 !2 !3 // will gen an error 11532 #ENDIF 11533 #ENDIF 11534#ENDCOMMAND 11535 11536//#COMMAND MOVEVAR #L "TO" #GLEURC . 11537// #IFCLASS !1 "G" // MOVE INDICATOR // 12.0 note: this logic, which has been in fmac forever 11538// #CHECK !1 _VWFC // would never work. 11539// !A [] $4020 !1 |GB[0] !3 IN$GLALL |3 11540// #ELSE 11541// // Type independent move as of 2.3 11542// !A [] $086 !1 !3 11543// #ENDIF 11544//#ENDCOMMAND 11545 11546// changed for 12.0 to support moving indicators 11547 11548#COMMAND MOVEVAR GL "TO" GLEURC . 11549 // The ability to move to and from indicators was added to 12.0 along with the #IFLOGICAL compiler command. 11550 // This allows developers to treat indicators just like booleans removing the need to create 11551 // indicate and indicator commands. The Move command can now and should be used for all assignments. 11552 #IFCLASS !1 "G" // allowing this case through hangs the compiler .. error is reported already above in argument check 11553 #ELSE 11554 #IFLOGICAL !1 11555 #IFLOGICAL !3 11556 Indicate !3 as [!1] // Move Indicator to Indicator becomes: Indicate Indicator as [Indicator] 11557 #ELSE 11558 Movevar (!1) to !3 // Move Indicator to Var 11559 #ENDIF 11560 #ELSE 11561 #IFLOGICAL !3 11562 // if dest is indicator, check source to decide what kind of statement to build 11563 #IFSAME !1 true false dftrue dffalse 11564 Indicate !3 !1 // Move true|false to Indicator becomes: Indicate Indicator true|false 11565 #ELSE 11566 #IFCLASS !1 _E 11567 Indicate !3 as !1 // Move (exp) to Indicator becomes: Indicate Indicator as (exp) 11568 #ELSE 11569 Indicate !3 as (!1) // Move var to Indicator becomes: Indicate Indicator as (var) 11570 #ENDIF 11571 #ENDIF 11572 #ELSE 11573 // if source and dest are both not indicators use the standard Move logic 11574 //Type independent move as of 2.3 11575 !A [] $086 !1 !3 11576 #ENDIF 11577 #ENDIF 11578 #ENDIF 11579#ENDCOMMAND 11580 11581 11582#COMMAND MOVEOBJ #L "TO" #GLEURC . 11583 11584 #IFDEF GET_!1 // if defined as a function 11585 #IF (GET_!1>$40000000) // If move Object-access to (var|property) 11586 MoveVar (!1(Current_object)) to !3 11587 #ELSE 11588 #ERROR DFERR_COMP_INVALID_OBJECT_REFERENCE "Already defined as a function" 11589 #ENDIF 11590 #ELSE 11591 #ERROR DFERR_COMP_INVALID_OBJECT_REFERENCE "Object not yet defined" 11592 #ENDIF 11593 11594#ENDCOMMAND 11595 11596 11597// changes: Check that object name is not already a global/class function 11598// Add alternate access syntax @Name 11599// check that the name is not an internal function 11600// MG: 7/2/99 No mangling here for object access method, because no parameters. 11601// If we decide to mangle on return type (not likely) we can change this and 11602// use MARG. 11603 11604#COMMAND REGISTER_OBJECT R . 11605 #IFDEF UI.EXISTS 11606 #ELSE 11607 USE UI 11608 #ENDIF 11609 11610 // check for following errors 11611 // 1. name defined as internal function 11612 // 2. name defined as overloaded function 11613 // 3. name defined as global function 11614 // 4. name defined as non-overloaded class function 11615 11616 #IF ( (!Zl & 1)=0) 11617 #IFSAME FN$!1 __F__ 11618 #ERROR DFERR_COMP_ILLEGAL_OBJECT_DEFINTION !1 is an internal function name 11619 #ENDIF 11620 #ENDIF 11621 11622 // check if name is already used for overloaded function, if so, error 11623 #IFDEF GET_!1_OVERLOADED 11624 #ERROR DFERR_COMP_ILLEGAL_OBJECT_DEFINTION !1 Already defined as a overloaded function 11625 #ELSE 11626 // Check that object name is not already a global or class function. 11627 #IFDEF GET_!1 11628 #IF (GET_!1<$40000001) 11629 #IF (GET_!1<0) 11630 #ERROR DFERR_COMP_ILLEGAL_OBJECT_DEFINTION !1 Already defined as a global function 11631 #ELSE 11632 #ERROR DFERR_COMP_ILLEGAL_OBJECT_DEFINTION !1 Already defined as a function/Property 11633 #ENDIF 11634 #ENDIF 11635 #ELSE 11636 #REPLACE GET_!1 |CI!ZH 11637 #FREG GET_!1 RETURNS INTEGER 11638 // register additional object access methods 11639 // #REPLACE @!1 (!1(current_object)) 11640 #ENDIF // if Get_ defined 11641 #ENDIF // if Get_ overloaded 11642 11643#ENDCOMMAND 11644 11645// Changes: Check for Global error (used to check !1) 11646// Check for Object access name error 11647// Check that the name is not a global name 11648 11649#COMMAND REGISTER_FUNCTION R 11650 #IFDEF UI.EXISTS 11651 #ELSE 11652 USE UI 11653 #ENDIF 11654 11655 #IF ( (!Zl & 1)=0) 11656 #IFSAME FN$!1 __F__ 11657 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION !1 is an internal function name 11658 #ENDIF 11659 #ENDIF 11660 11661 #IFSAME RETURNS !2 !3 !4 !5 !6 !7 !8 !9 11662 #ELSE 11663 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX MISSING KEYWORD RETURNS ON FUNCTION DECLARATION 11664 #ENDIF 11665 11666 #IFSAME !2 GLOBAL 11667 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION GLOBAL FUNCTIONS CANNOT BE REGISTERED 11668 #ELSE 11669 // Check if non-mangled symbol is already defined. 11670 // If it is, it might be an object name...error 11671 // also make sure new function is not an overload..error 11672 #IFDEF GET_!1 11673 11674 #IF (GET_!1<0) 11675 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION !1 is already defined as a global function 11676 #ENDIF 11677 11678 #IF (GET_!1>$40000000) 11679 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION !1 is already defined as an object 11680 #ENDIF 11681 11682 #IFDEF MANGLE_NAMES 11683 #IFSAME OVERLOADED !2 !3 !4 !5 !6 !7 !8 !9 11684 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION This Method Was Previously Defined As Non-Overloaded 11685 #ENDIF 11686 #ENDIF 11687 // Validate the argument list. 11688 CHECK$METHOD$ARGUMENT$LIST !2 !3 !4 !5 !6 !7 !8 !9 11689 // We will get more chance of matching fixups (and creating fewer errors) if we just register the function anyway. 11690 // The parameter list could generate the right name and if it does later fixups will resolve correctly without error. 11691 // It's possible that the list changes the mangled name. If it does, when the function is fixed, fixup errors may 11692 // appear. They can be fixed then. 11693 MESSAGE$ADDRESS GET_!1 // Generate the constant for message identifier. Message$Address checks if it already exists. 11694 #ELSE 11695 // Verify that the argument list is syntactically correct. 11696 CHECK$METHOD$ARGUMENT$LIST !2 !3 !4 !5 !6 !7 !8 !9 11697 11698 // Create the constant identifier for the message if it's not already defined. 11699 #IFNDEF MANGLE_NAMES 11700 MESSAGE$ADDRESS GET_!1 11701 #ELSE 11702 #IFSAME OVERLOADED !2 !3 !4 !5 !6 !7 !8 !9 11703 // we don't support Byref with overloading 11704 #IFSAME BYREF !2 !3 !4 !5 !6 !7 !8 !9 11705 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "BYREF not allowed in overloaded methods" 11706 #ENDIF 11707 #MARG GET_!1 !2 !3 !4 !5 !6 !7 !8 !9 // Genearte the mangled symbol. 11708 MESSAGE$ADDRESS !? // Generate the message identifer. 11709 // if this is the first time we've defined this, create overloaded symbol 11710 #IFNDEF GET_!1_OVERLOADED 11711 #REPLACE GET_!1_OVERLOADED |CI1 11712 #ENDIF 11713 #ELSE 11714 // We are defining a non-overload function. Make sure we have not already 11715 // defined it as overloaded 11716 #IFDEF GET_!1_OVERLOADED 11717 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION !1 is already defined as an overloaded function 11718 #ELSE 11719 MESSAGE$ADDRESS GET_!1 11720 #ENDIF 11721 #ENDIF 11722 #ENDIF 11723 #ENDIF 11724 11725 // Register the function here. 11726 #IFNDEF MANGLE_NAMES 11727 #IFSAME !2 FOR 11728 #FREG GET_!1 !4 !5 !6 !7 !8 !9 11729 #ELSE 11730 #FREG GET_!1 !2 !3 !4 !5 !6 !7 !8 !9 11731 #ENDIF 11732 #ELSE 11733 #IFSAME OVERLOADED !2 !3 !4 !5 !6 !7 !8 !9 11734 #IFSAME !2 FOR 11735 #FREG !? !4 !5 !6 !7 !8 !9 11736 #ELSE 11737 #FREG !? !2 !3 !4 !5 !6 !7 !8 !9 11738 #ENDIF 11739 #ELSE 11740 #IFSAME !2 FOR 11741 #FREG GET_!1 !4 !5 !6 !7 !8 !9 11742 #ELSE 11743 #FREG GET_!1 !2 !3 !4 !5 !6 !7 !8 !9 11744 #ENDIF 11745 #ENDIF 11746 #ENDIF 11747 11748 #ENDIF // Not a global 11749 11750#ENDCOMMAND 11751 11752// Changes: Check for Object access name error 11753#COMMAND FUNCTION R 11754 11755 #IF ( (!Zl & 1)=0) 11756 #IFSAME FN$!1 __F__ 11757 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION !1 is an internal function name 11758 #ENDIF 11759 #ENDIF 11760 11761 11762 #IFDEF MANGLE_NAMES 11763 #IFDEF GET_!1 11764 #IF (GET_!1>$40000000) 11765 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION !1 is already defined as an object 11766 #ENDIF 11767 #ENDIF 11768 #IFSAME RETURNS !2 !3 !4 !5 !6 !7 !8 !9 11769 #ELSE 11770 #ERROR DFERR_COMP_INVALID_METHOD_SYNTAX MISSING KEYWORD RETURNS ON FUNCTION DECLARATION 11771 #ENDIF 11772 HANDLE$MESSAGE GET !1 !2 !3 !4 !5 !6 !7 !8 !9 11773 #ELSE 11774 #IFDEF GET_!1 11775 #IF (GET_!1>$40000000) 11776 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION !1 is already defined as an object 11777 #ENDIF 11778 #ENDIF 11779 HANDLE$MESSAGE GET_!1 !2 !3 !4 !5 !6 !7 !8 !9 11780 #ENDIF 11781 11782#ENDCOMMAND 11783 11784// called by Set/Get 11785// Changes: 1. If in object and msg_consruct_object..error 11786// 2. Cannot nest methods (already was there) 11787// 3. Methods not allowed in class child-objects 11788// 4. If on desktop and not Global/for..is for cDesktop 11789// 11790 11791//#IFDEF MANGLE_NAMES 11792 #COMMAND HANDLE$MESSAGE$HELP RGOBL# 11793 #IFSAME !1 MSG 11794 #PREG !2 !3 !4 !5 !6 !7 !8 !9 11795 #ELSE 11796 #FREG !2 !3 !4 !5 !6 !7 !8 !9 11797 #ENDIF 11798 #ENDCOMMAND 11799//#ENDIF 11800 11801#COMMAND HANDLE$MESSAGE RGOBL# 11802 11803 // support new 8.3 syntax for desktop methods (e.g. procedure Foo DESKTOP .....) 11804 #IFNDEF MANGLE_NAMES 11805 #IFSAME !2 DESKTOP 11806 #IFDEF IS$WINDOWS 11807 Handle$message$2 !1 For cDesktop !3 !4 !5 !6 !7 !8 !9 11808 #ELSE 11809 Handle$message$2 !1 For Desktop !3 !4 !5 !6 !7 !8 !9 11810 #ENDIF 11811 #ELSE 11812 Handle$message$2 !1 !2 !3 !4 !5 !6 !7 !8 !9 11813 #ENDIF 11814 #ELSE 11815 #IFSAME !3 DESKTOP 11816 #IFDEF IS$WINDOWS 11817 Handle$message$2 !1 !2 For cDesktop !4 !5 !6 !7 !8 !9 11818 #ELSE 11819 Handle$message$2 !1 !2 For Desktop !4 !5 !6 !7 !8 !9 11820 #ENDIF 11821 #ELSE 11822 Handle$message$2 !1 !2 !3 !4 !5 !6 !7 !8 !9 11823 #ENDIF 11824 #ENDIF 11825#ENDCOMMAND 11826 11827#COMMAND HANDLE$MESSAGE$2 RGOBL# 11828 11829 #IFDEF UI.EXISTS 11830 #ELSE 11831 USE UI 11832 #ENDIF 11833 11834 // if the publish meta-attribute is set, we want to generate the RegisterInterface command before we do anything in this new method. 11835 // we will also check as many things as possible to make sure this is a valid place for this. We expect this: 11836 // 1. to appear in classes and not objects 11837 // 2. cannot be global, FOR, or desktop 11838 // 3. cannnot be override 11839 11840 // If the meta attribute Published is true, we handle special case for webapps. 11841 // note I am not checking for the Mangle_names ifdef - I just assume it's true (hasn't been unset for many versions). 11842 #IFMATTR Published true // This is true if the Published attribute is active and its value is true 11843 // method must be an object method and not For, global or overloaded 11844 #IFSAME !3 GLOBAL FOR OVERLOADED // any of these are not allowed. Note that DESKTOP is already converted to For cDesktop at this point 11845 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT "The Publish meta tag cannot be used with GLOBAL, DESKTOP, FOR, or OVERLOADED methods." 11846 #ELSE 11847 #IF (!b = 1) // the only valid place for this is within a method within an object. 11848 MESSAGE$ADDRESS !1_!2 // create id symbol for this message. We do this to avoid fowward reference error in registerInterface 11849 #SPUSH 11850 #PUBLISH // This creates the Send RegisterInterface line and puts the result in !$, based on the original source line which is expected to be something like Function Foo Integer iArg... 11851 !$ // This would then actually call Send RegisterInterface 11852 #REM !$ 11853 #SPOP 11854 #ELSE 11855 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT "The Publish meta tag can only be used within methods defined directly inside of objects." 11856 #ENDIF 11857 #ENDIF 11858 #ENDIF 11859 11860 11861 11862 // procedure construct_object only allowed in class 11863 #IF (!b & 1) // if in object 11864 #IFDEF MANGLE_NAMES 11865 #IFSAME !1 MSG 11866 #IFSAME !2 CONSTRUCT_OBJECT 11867 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Construct_object .not. allowed in objects 11868 #ENDIF 11869 #ENDIF 11870 #ELSE 11871 #IFSAME !1 MSG_CONSTRUCT_OBJECT 11872 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Construct_object .not. allowed in objects 11873 #ENDIF 11874 #ENDIF 11875 #ENDIF 11876 11877 // not allowed to nest methods 11878 // Check flag to determine whether we are already in a method. 11879 #IF (!b & 4) 11880 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Procedures and Functions may .not. be nested. 11881 #ELSE 11882 // non global methods are not allowed class child-objects 11883 11884 #IFNDEF MANGLE_NAMES 11885 11886 #IFSAME !2 GLOBAL 11887 #ELSE 11888 #IF ((!b & 3)=3) // if in class object 11889 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Methods .not. allowed in class child-objects 11890 #ENDIF 11891 #ENDIF 11892 11893 #ELSE 11894 11895 #IFSAME !3 GLOBAL 11896 #ELSE 11897 #IF ((!b & 3)=3) // if in class object 11898 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Methods .not. allowed in class child-objects 11899 #ENDIF 11900 #ENDIF 11901 11902 #ENDIF 11903 #ENDIF 11904 11905 // Give error if the stack symbol NUM_ARGUMENTS is defined. 11906 #CHECK NUM_ARGUMENTS _T 11907 11908 // 11909 #SET ZN$ !n // static nesting level 11910 #SET ZM$ 0 // # objects in method 11911 #PUSH !Zg 11912 #PUSH !Za 11913 #SET ZA$ !a 11914 #PUSH !Zu 11915 #DATA 11916 #STKSYM // forget all old stack symbols 11917 #SET B$ (!b | 4) // set flag to in_procedure 11918 11919 // This was changed to allow us to prohibit arguments with num_arguments inside the scope of a function. 11920 #REPLACE NUM_ARGUMENTS |SI0 // define the arg count 11921 11922 #IFDEF MANGLE_NAMES 11923 #SREP __@INSIDE_FUNCTION@__ |CI1 // lets other commands check that they are inside a function scope. 11924 #ENDIF 11925 11926 #IFNDEF MANGLE_NAMES 11927 11928 11929 #ELSE 11930 11931 // This is the mangling code. 11932 11933 #IFSAME !3 GLOBAL 11934 #DPUSH |CI0 // No message 11935 #DPUSH |CI0 // for no class 11936 // Check if overloaded symbol is already defined. 11937 #IFSAME OVERLOADED !4 !5 !6 !7 !8 !9 11938 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION Global functions/procedures cannot be overloaded 11939 #ELSE 11940 #IFDEF !1_!2_OVERLOADED 11941 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION This Method Was Previously Defined As Overloaded 11942 #ELSE 11943 #IFDEF !1_!2 11944 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION Global method !1 !2 Already Defined 11945 #ELSE 11946 #SET ZG$ (0-!a-2) // make it negative to distuinguish it 11947 #REPLACE !1_!2 |CI!Zg 11948 #ENDIF 11949 #ENDIF 11950 #ENDIF 11951 CHECK$METHOD$ARGUMENT$LIST !4 !5 !6 !7 !8 !9 11952 #IF (!0>1) // do we have arguments? 11953 #SET ZG$ 1 // starting argument number 11954 DEFINE_ARGUMENTS !4 !5 !6 !7 !8 !9 11955 #ENDIF 11956 11957 HANDLE$MESSAGE$HELP !1 !1_!2 !3 !4 !5 !6 !7 !8 !9 11958 11959 #ELSE // not global functions 11960 11961 // make sure message is not already defined as a global 11962 #IFDEF !1_!2 11963 #IF (!1_!2<0) // if defined as a global already, we have an error 11964 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION !1 !2 already defined as a Global method 11965 #ENDIF 11966 #ENDIF 11967 11968 // Mangling case & Using FOR 11969 #IFSAME !3 FOR // are we explicit about the class? 11970 11971 #IFSAME OVERLOADED !5 !6 !7 !8 !9 11972 #IFDEF !1_!2 11973 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION This Method Was Previously Defined As non-overloaded 11974 #ELSE 11975 // we don't support Byref with overloading 11976 #IFSAME BYREF !5 !6 !7 !8 !9 11977 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "BYREF not allowed in overloaded methods" 11978 #ENDIF 11979 // Mangle name of method. 11980 #MARG !1_!2 !5 !6 !7 !8 !9 11981 // Also lock name without parameters and sugar. 11982 #IFNDEF !1_!2_OVERLOADED 11983 #REPLACE !1_!2_OVERLOADED |CI1 11984 #ENDIF 11985 MESSAGE$ADDRESS !? // create id symbol for this message 11986 #DPUSH !? 11987 #ENDIF 11988 #ELSE // FOR class, but not an overloaded function. 11989 11990 #IFDEF !1_!2_OVERLOADED 11991 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION This Method Was Previously Defined As Overloaded 11992 #ELSE 11993 MESSAGE$ADDRESS !1_!2 // create id symbol for this message 11994 #DPUSH !1_!2 11995 #ENDIF 11996 11997 #ENDIF 11998 11999 #IFDEF !4 12000 #IFSAME !4 DESKTOP 12001 #IFDEF IS$WINDOWS 12002 #DPUSH U_cObject // Message for the desktop class 12003 #ELSE 12004 #DPUSH U_DESKTOP // Message for the desktop class 12005 #ENDIF 12006 #ELSE 12007 #DPUSH !4 // Message for the named class 12008 #ENDIF 12009 #ELSE 12010 #CHECK U_!4 _RSDNU // Check the class to see if it exists. 12011 #DPUSH U_!4 // Message for the named class 12012 #ENDIF 12013 12014 CHECK$METHOD$ARGUMENT$LIST !5 !6 !7 !8 !9 12015 12016 #IF (!0>3) 12017 #SET ZG$ 1 // starting argument number 12018 DEFINE_ARGUMENTS !5 !6 !7 !8 !9 12019 #ENDIF 12020 12021 #IFSAME OVERLOADED !4 !5 !6 !7 !8 !9 // Non global 12022 HANDLE$MESSAGE$HELP !1 !? !5 !6 !7 !8 !9 12023 #ELSE 12024 HANDLE$MESSAGE$HELP !1 !1_!2 !5 !6 !7 !8 !9 12025 #ENDIF 12026 12027 #ELSE // Method is declared in a class or in an object 12028 #IF (!b & 2) // obj_flag == in_class? 12029 #ELSE 12030 #IF (!b & 1) // in_object, instance method 12031 !A [] CLONE$CLASS // if in object, clone the class 12032 #ENDIF 12033 #ENDIF 12034 12035 #IFSAME OVERLOADED !3 !4 !5 !6 !7 !8 !9 12036 #IFDEF !1_!2 12037 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION This Method Was Previously Defined As non-overloaded 12038 #ELSE 12039 // we don't support Byref with overloading 12040 #IFSAME BYREF !3 !4 !5 !6 !7 !8 !9 12041 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION "BYREF not allowed in overloaded methods" 12042 #ENDIF 12043 #MARG !1_!2 !3 !4 !5 !6 !7 !8 !9 12044 MESSAGE$ADDRESS !? 12045 #IFNDEF !1_!2_OVERLOADED 12046 #REPLACE !1_!2_OVERLOADED |CI1 12047 #ENDIF 12048 #DPUSH !? // the message 12049 #ENDIF 12050 #ELSE 12051 // a non-overlaoded message 12052 #IFDEF !1_!2_OVERLOADED 12053 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION This Method Was Previously Defined As Overloaded 12054 #ELSE 12055 MESSAGE$ADDRESS !1_!2 // create id symbol for this message 12056 #DPUSH !1_!2 12057 #ENDIF 12058 #ENDIF 12059 12060 // push the proper destination for the message 12061 #IF (!b & 2) // obj_flag == in_class? 12062 #DPUSH U_!$ // handle msg for "current class" 12063 #ELSE 12064 #IF (!b & 1) // in_object, instance method 12065 #DPUSH |CI0 // handle for objects class 12066 #ELSE // Message is out on desktop and not identfied w/ FOR Xxxxx 12067 #IFDEF IS$WINDOWS // 8.3: if windows we are going to place this on the cDesktop object 12068 // which will allow all objects to delegate to it, which is probably 12069 // what people expect. Prior to 8.3, it create a "for desktop" so all classes/objects 12070 // immediately understood this. This represents a change in behavior. 12071 #REM Ambiguous methods on .DESKTOP. are .not. recommended (Obsolete technique) 12072 // this is not a real error but we can use this to look at ambiguous desktop methods to make make sure 12073 // that they are being used in the proper 8.3 style. This warning is controlled by the method 12074 // Compiler_desktop_method_warnings ON|OFF (OFF is default) 12075 #IF (!Zl & 4) 12076 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION Ambiguous method on .Desktop. Should be "Desktop" or "Global" or moved. 12077 #ENDIF 12078 #DPUSH U_cObject // Message for the desktop (UI_OBJECT) class. Not advised for VDF after 8.2 12079 #ELSE 12080 #DPUSH U_DESKTOP // Message for the desktop (UI_OBJECT) class. Not advised for VDF after 8.2 12081 #ENDIF 12082 #ENDIF // stand alone message that gets defined as U_DESKTOP 12083 #ENDIF // end of else of object method 12084 CHECK$METHOD$ARGUMENT$LIST !3 !4 !5 !6 !7 !8 !9 12085 #IF (!0>1) // do we have arguments? 12086 #SET ZG$ 1 // starting argument number 12087 DEFINE_ARGUMENTS !3 !4 !5 !6 !7 !8 !9 12088 #ENDIF 12089 12090 #IFSAME OVERLOADED !3 !4 !5 !6 !7 !8 !9 12091 HANDLE$MESSAGE$HELP !1 !? !3 !4 !5 !6 !7 !8 !9 12092 #ELSE 12093 HANDLE$MESSAGE$HELP !1 !1_!2 !3 !4 !5 !6 !7 !8 !9 12094 #ENDIF 12095 12096 #ENDIF // class method 12097 #ENDIF 12098 #ENDIF // mangling case 12099 12100// !A [] HANDLE$FOR |CI0 |VL // handle the message 12101 !A [] $0454 |CI0 |VL 12102 #FREF OBJ$!Za$ENDPROC !a // fref the end procedure line 12103 12104 #IFDEF MANGLE_NAMES 12105 // MG added code here to check the parameter count. 12106 #IFDEF !1_!2_OVERLOADED 12107 // Check parameter count 12108 #DATA 12109 #DPUSH NUM_ARGUMENTS 12110 #DPUSH |CI!Zg 12111 #DPUSH !? 12112 12113 #IFSAME !1 GET 12114 #DPUSH |CI1 12115 #ELSE 12116 #IFSAME !1 MSG 12117 #DPUSH |CI2 12118 #ELSE 12119 #IFSAME !1 SET 12120 #DPUSH |CI3 12121 #ENDIF 12122 #ENDIF 12123 #ENDIF 12124 !A [] $0467 |CI0 |VL 12125 #FORBID NUM_ARGUMENTS 300 "NUM_ARGUMENTS was used in an overloaded method" 12126 #ENDIF 12127 #ENDIF 12128 #SET ZG$ 0 // starting argument number for locals 12129 12130 // JJT - changed in 9.1. This used to occur when the first local was created. Since this is executed at runtime 12131 // this created a situation where the first local might be in a block that is not executed. When moved to here 12132 // the local init command is always executed. We still strongly discourage the declartion of variables anywhere 12133 // accept the top of a method block. This simply fixes and unintended side-effect of our implementation. 12134 //!A [] LOCAL$ARGUMENT |CI0 // Create the command to save the local count, 12135 !A [] $0456 |CI0 12136 #FREF OBJ$!Za$LNUM !a // and tell flex to update it later. 12137 12138#ENDCOMMAND 12139 12140#COMMAND ITEM_LIST . 12141 #PUSH !Zd 12142 #SET ZD$ |CI-1 // -1 means in an item list. 12143 12144 #PUSH !Zg 12145 #PUSH !Zj 12146 #SET ZJ$ !a 12147 #PUSH !Zj 12148 #SET ZG$ 0 // Set the item counter to zero. This is used to 12149 // count and assign ID's to the items. 12150 !A [] OBJ$ILIST |CI0 // Create the command to save the item count, 12151 #FREF OBJ$!Zj$INUM !a // and tell flex to update it later. 12152#ENDCOMMAND 12153 12154 12155#COMMAND END_ITEM_LIST . 12156 #POP ZJ$ 12157 #REPLACE OBJ$!Zj$INUM |CI!Zg // Update the count in the ITEM_LIST cmd. 12158 !A [] OBJ$ENDILIST OBJ$!Zj$INUM // Tell runtime this is the end of list. 12159 #POP ZJ$ 12160 #POP ZG$ 12161 #POP ZD$ // Restore "in item list" marker 12162#ENDCOMMAND 12163 12164#COMMAND ENTRY_ITEM R 12165 #IF (!Zd = -1) // if within a On_item group 12166 ENTRY$ITEM !1 !2 !3 !4 !5 !6 !7 !8 !9 12167 #ELSE 12168 #IF (!0>1) 12169 ENTRY$ITEM !1 !2 !3 !4 !5 !6 !7 !8 !9 12170 #ELSE 12171 #IFCLASS !1 "F" 12172 #PUSH !h 12173 #PUSH !g 12174 #SET H$ %!1 // get the fieldnumber of parameter 12175 #SET G$ !1 // get the filenumber of parameter 12176 Send Bind_Data |CI!g |CI!h 12177 #POP G$ 12178 #POP H$ 12179 #ELSE 12180 ENTRY$ITEM !1 !2 !3 !4 !5 !6 !7 !8 !9 12181 #ENDIF 12182 #ENDIF 12183 #ENDIF 12184#ENDCOMMAND 12185 12186#COMMAND ENTRY$ITEM R 12187 #SET ZG$ !ZG 12188 #DATA 12189 #IFCLASS !1 "EC" 12190 #ENTOPT {$C0A0=!1,$C002,$C003,!2} 12191 #ELSE 12192 #ENTOPT {$C0A0=!1,!2} 12193 #ENDIF 12194 !A [] OBJ$ENTRY$ITEM |CI0 |VL 12195#ENDCOMMAND 12196 12197#COMMAND REPLACE_CLASS_NAME R R 12198 #IFDEF U_!2 12199 #Replace U_!1 U_!2 12200 #IFSUB '!2$SC' 12201 #Replace !1$SC !2$SC 12202 #ENDIF 12203 #IFSUB '!2$SM' 12204 #Replace !1$SM !2$SM 12205 #ENDIF 12206 #IFSUB '!2$EM' 12207 #Replace !1$EM !2$EM 12208 #ENDIF 12209 #ENDIF 12210#ENDCOMMAND 12211 12212#COMMAND ON_KEY RULGBO#SDN "SEND" RLGBO#SDN """TO""OF""PRIVATE" _DNOB """PRIVATE" . 12213 #IFSAME !4 PRIVATE 12214 ON_KEY !1 !2 !3 TO |CI-1 PRIVATE 12215 #ELSE 12216 #DATA 12217 #DPUSH !1 12218 #IFSAME !4 TO OF 12219 #IFDEF !5 12220 #DPUSH !5 12221 #ELSE 12222 //#IFDEF !5.OBJ 12223 // #DPUSH !5.OBJ 12224 //#ELSE 12225 // #DPUSH |CI0 12226 // #FREF !5.OBJ !a,1 12227 //#ENDIF 12228 #IFDEF GET_!5 // if defined as a function 12229 #IF (GET_!5>$40000000) // and an object access method..we will help out 12230 // replace simple name with expression syntax 12231 DPUSH$EXP (!5(current_object)) 12232 #ELSE // if defined as a function but not an access method. This is an error 12233 #DPUSH !5 // will generate an Error 12234 #ENDIF 12235 #ELSE // If undefined 12236 // 12.0 change. If not defined, this will get pushed as an object expression 12237 // allowing one to not have to use register_object if the object is defined later 12238 // in the file. 12239 DPUSH$EXP (!5(current_object)) 12240 //#DPUSH !5 // will generate an Error 12241 #ENDIF 12242 #ENDIF 12243 #ELSE 12244 #DPUSH |CI-1 12245 #ENDIF 12246 #IFSAME !6 PRIVATE 12247 #DPUSH |CI1 12248 #ENDIF 12249 #IFDEF !3 12250 !A [] OBJ$ONKEY !3 |VL 12251 #ELSE 12252 #IFDEF MSG_!3 12253 !A [] OBJ$ONKEY MSG_!3 |VL 12254 #ELSE // else the command is defined in flex code 12255 !A [] OBJ$ONKEY |CI0 |VL // get flex to fix the fwd ref 12256 #FREF MSG_!3 !a 12257 #ENDIF 12258 #ENDIF 12259 #ENDIF 12260#ENDCOMMAND 12261 12262#COMMAND ON_ITEM NDI """SEND""BEGIN_PULL_DOWN" 12263 #IF (!0<2) 12264 #IF (!0<1) 12265 ON_ITEM '' SEND MSG_NONE 12266 #ELSE 12267 ON_ITEM !1 SEND MSG_NONE 12268 #ENDIF 12269 #ELSE 12270 #IFSAME !1 SEND 12271 ON_ITEM '' !1 !2 !3 !4 !5 !6 !7 !8 !9 12272 #ELSE 12273 #IFSAME !2 SEND 12274 #SET ZG$ !ZG // Increment the item counter 12275 #IFSAME !4 TO OF 12276 #CHECK !6 . 12277 #DATA 12278 #IFDEF !3 12279 #DPUSH !3 // Push the (variable) message 12280 #ELSE 12281 #IFDEF MSG_!3 12282 #DPUSH MSG_!3 // Push the constant message 12283 #ELSE 12284 #DPUSH |CI0 12285 #FREF MSG_!3 !a,0 // Forward fef the message 12286 #ENDIF 12287 #ENDIF 12288 #IFDEF !5 12289 #DPUSH !5 // Push the (expression, var) dest object 12290 #ELSE 12291 //#IFDEF !5.OBJ 12292 // #DPUSH !5.OBJ // Push the global object 12293 //#ELSE 12294 // #DPUSH |CI0 12295 // #FREF !5.OBJ !a,1 // Forward ref the object 12296 //#ENDIF 12297 12298 #IFDEF GET_!5 // if defined as a function 12299 #IF (GET_!5>$40000000) // and an object access method..we will help out 12300 // this is where we can get tricky and use access methods 12301 DPUSH$EXP (!5(current_object)) 12302 #ELSE // if defined as a function but not an access method. This is an error 12303 #DPUSH !5 // will generate an Error 12304 #ENDIF 12305 #ELSE // If object name not defined (this is a new block for 12.0) 12306 // 12.0 change. If not defined, this will get pushed as an object expression 12307 // allowing one to not have to use register_object if the object is defined later 12308 // in the file. 12309 DPUSH$EXP (!5(current_object)) 12310 #ENDIF 12311 #ENDIF 12312 12313 !A [] OBJ$ITEM_EXEC !1 |VL 12314 12315 #ELSE 12316 #IF (!0 > 3) 12317 #CHECK !4 "TO" 12318 #ENDIF 12319 #IFDEF MSG_!3 12320 !A [] OBJ$ITEM MSG_!3 !1 // Create the item passing name and value. 12321 #ELSE 12322 #IFDEF !3 12323 !A [] OBJ$ITEM !3 !1 // Create the item passing name and value. 12324 #ELSE 12325 !A [] OBJ$ITEM |CI0 !1 // Create the item passing name and value. 12326 #FREF MSG_!3 !a // fix value later with procedure address 12327 #ENDIF 12328 #ENDIF 12329 #ENDIF 12330 #ELSE 12331 #IFSAME !2 BEGIN_PULL_DOWN 12332 #CHECK !3 _R 12333 REGISTER_OBJECT !3 12334 ON_ITEM !1 SEND ACTIVATE_PULL_DOWN TO (!3(CURRENT_OBJECT)) 12335 #IFSUB 'END_MENU' 12336 CREATE_MENU !3 SUB_LOCATION !4 !5 !6 !7 !8 !9 12337 #ELSE 12338 #ERROR DFERR_COMP_INVALID_ARGUMENT "BEGIN_PULL_DOWN" REQUIRES MENU_SYSTEM PACKAGE 12339 #ENDIF 12340 #ENDIF 12341 #ENDIF 12342 #ENDIF 12343 #ENDIF 12344#ENDCOMMAND 12345 12346//****************************************************************************// 12347// // 12348// Returns the field number of a fieldnumber passed. // 12349// // 12350// USAGE: // 12351// GET_FIELDNUMBER FlexErrs.Note to MyVar // 12352// // 12353//****************************************************************************// 12354 12355#COMMAND GET_FIELDNUMBER R "TO" R . 12356 #PUSH !g 12357 #SET G$ %!1 12358 Move |CI!g to !3 12359 #POP G$ 12360#ENDCOMMAND 12361 12362 12363 12364//****************************************************************************// 12365// // 12366// Returns the file number of a fieldnumber passed. // 12367// // 12368// USAGE: // 12369// GET_FILENUMBER FlexErrs.Note to MyVar // 12370// // 12371//****************************************************************************// 12372 12373#COMMAND GET_FILENUMBER R "TO" R . 12374 #PUSH !g 12375 #SET G$ !1 12376 Move |CI!g to !3 12377 #POP G$ 12378#ENDCOMMAND 12379 12380// Private command to start event loop for web applications (added in vdf9.1) 12381// 12382#COMMAND START_WEBAPP . 12383 !A [] $468 12384#ENDCOMMAND 12385 12386// Used by Web-services to properly convert data-types 12387// for XML/web services 12388 12389// Convert from XML to VDF: 12390// ConvertFromXml eType sData to sData 12391// 12392#COMMAND ConvertFromXML R R "TO" R 12393 #DATA 12394 #DPUSH !1 12395 #DPUSH !2 12396 #DPUSH !4 12397 !A [] $2ED |CI0 |VL 12398#ENDCOMMAND 12399 12400// Convert to XML from VDF: 12401// ConvertToXml eType sData to sData 12402// 12403#COMMAND ConvertToXML R R "TO" R 12404 #DATA 12405 #DPUSH !1 12406 #DPUSH !2 12407 #DPUSH !4 12408 !A [] $2EE |CI0 |VL 12409#ENDCOMMAND 12410 12411// Used in 11.0 to handle structs/arrays in client web-services. Reads and writes from a ValueTree to the variable. 12412// The type of variable is determined by the variable type you use. Value tree is: 12413// Struct tValueTree 12414// String sValue // data value. Value only exists if there are no children 12415// tValueTree[] children // child values. If a struct or array, we have children and no value 12416// End_Struct 12417// 12418 12419#COMMAND ValueTreeSerializeParameter R "TO" R 12420 !A [] $2ef !1 !3 12421#ENDCOMMAND 12422 12423#COMMAND ValueTreeDeserializeParameter R "TO" R 12424 !A [] $2f0 !1 !3 12425#ENDCOMMAND 12426 12427 12428 12429// sets !q to num of dimensions. !q must be initialized before this is called 12430#COMMAND ARRAY_DIM_COUNT_HELPER R 12431 #IFADIM !1 12432 #SET Q$ !Q 12433 ARRAY_DIM_COUNT_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12434 #ENDIF 12435#ENDCOMMAND 12436 12437// dpushes the size of each dimension 12438#COMMAND ARRAY_DIM_SIZE_HELPER R 12439 #IFADIM !1 12440 #SPUSH 12441 #DIMSTRIP !1 12442 #DPUSH !$ 12443 #SPOP 12444 ARRAY_DIM_SIZE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12445 #ENDIF 12446#ENDCOMMAND 12447 12448#COMMAND ARRAY_LOCAL_VARIABLE_REPLACE_HELPER R 12449 #IFADIM !1 12450 ARRAY_LOCAL_VARIABLE_REPLACE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12451 #ELSE 12452 #IFSAME !$ K 12453 #REPLACE !1 |SA!ZG!$!qV!h 12454 #ELSE 12455 #REPLACE !1 |SA!ZG!$!q 12456 #ENDIF 12457 #ENDIF 12458#ENDCOMMAND 12459 12460#COMMAND ARRAY_GLOBAL_VARIABLE_REPLACE_HELPER R 12461 #IFADIM !1 12462 ARRAY_GLOBAL_VARIABLE_REPLACE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12463 #ELSE 12464 #IFSAME !$ K 12465 #REPLACE !1 |VA!v!$!qV!h 12466 #ELSE 12467 #REPLACE !1 |VA!v!$!q 12468 #ENDIF 12469 #ENDIF 12470#ENDCOMMAND 12471 12472#COMMAND ARRAY_ARGUMENT_REPLACE_HELPER R 12473 #IFADIM !1 // first skip past all []s 12474 ARRAY_ARGUMENT_REPLACE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12475 #ELSE 12476 // start of line is now either "BYREF VarName" or "varName" 12477 #IFSAME !1 BYREF 12478 #IFSAME !$ K 12479 #REPLACE !2 |RA-!ZG!$!qV!h 12480 #ELSE 12481 #REPLACE !2 |RA-!ZG!$!q 12482 #ENDIF 12483 #ELSE 12484 #IFSAME !$ K 12485 #REPLACE !1 |SA-!ZG!$!qV!h 12486 #ELSE 12487 #REPLACE !1 |SA-!ZG!$!q 12488 #ENDIF 12489 #ENDIF 12490 #ENDIF 12491#ENDCOMMAND 12492 12493#COMMAND ARRAY_INIT_HELPER R 12494 #IFADIM !1 12495 ARRAY_INIT_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12496 #ELSE 12497 !A [] $088 !1 |VL 12498 #ENDIF 12499#ENDCOMMAND 12500 12501#COMMAND LOCAL$ARRAY T R R 12502 #DATA 12503 #SET Q$ 0 12504 ARRAY_DIM_COUNT_HELPER !2 !3 !4 !5 !6 !7 !8 !9 // sets !q to num of dims 12505 #PUSH !q // we need this a bit later 12506 #DPUSH |CI!q //Push the number of dimensions 12507 12508 #PUSH !g 12509 #DTYPE G$ !1 12510 #IF (!g=19) 12511 #PUSH !h 12512 #STRG H$ !1 12513 #SPUSH 12514 #DTSYM !1 // moves datatype Letter ID into !$ 12515 ARRAY_LOCAL_VARIABLE_REPLACE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12516 #SPOP 12517 #DPUSH |CI19 12518 #DPUSH |CI!h 12519 #POP H$ 12520 #ELSE 12521 #PUSH !g 12522 #SPUSH 12523 #DTSYM !1 // moves datatype Letter ID into !$ 12524 ARRAY_LOCAL_VARIABLE_REPLACE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12525 #SPOP 12526 #POP G$ 12527 #DPUSH |CI!g //Push the element type 12528 #ENDIF 12529 #POP G$ 12530 12531 ARRAY_DIM_SIZE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 //Push the size of each dimension 12532 ARRAY_INIT_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12533 12534 // at the moment only support multiple array variables with single dimension arrays 12535 // e.g. "integer[] i1 i2" is allowed, "integer[][] i1 i2" is not allowed. 12536 // this limit was created because it will be very difficult to make fmac do this and this should be a rare occurance. 12537 #POP Q$ // number of dimensions 12538 #IF (!q>1) // if more than one dimension 12539 #IF (!0>(!q+2)) // num of params must be num of dimensions plus 2 12540 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT 'Multi Dimensional array variables must be defined one per line' 12541 #ENDIF 12542 #ELSE 12543 #IF (!0>3) 12544 LOCAL$ARRAY !1 !2 !4 !5 !6 !7 !8 !9 12545 #ENDIF 12546 #ENDIF 12547 12548#ENDCOMMAND 12549 12550#COMMAND GLOBAL$ARRAY T R R 12551 #DATA 12552 12553 #SET Q$ 0 12554 ARRAY_DIM_COUNT_HELPER !2 !3 !4 !5 !6 !7 !8 !9 // sets !q to num of dims 12555 #PUSH !q // we need this a bit later 12556 ARRAY_DIM_SIZE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 //Push the size of each dimension 12557 12558 #PUSH !g 12559 #DTYPE G$ !1 12560 #IF (!g=19) 12561 #PUSH !h 12562 #STRG H$ !1 12563 #DPUSH |CI!h 12564 #DPUSH |CI19 12565 #DPUSH |CI!q //Push the number of dimensions 12566 #ARRV V$ 12567 #SPUSH 12568 #DTSYM !1 // moves datatype Letter ID into !$ 12569 ARRAY_GLOBAL_VARIABLE_REPLACE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12570 #SPOP 12571 #POP H$ 12572 #ELSE 12573 #DPUSH |CI!g //Push the element type 12574 #DPUSH |CI!q //Push the number of dimensions 12575 #ARRV V$ 12576 #SPUSH 12577 #DTSYM !1 // moves datatype Letter ID into !$ 12578 ARRAY_GLOBAL_VARIABLE_REPLACE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12579 #SPOP 12580 #ENDIF 12581 #POP G$ 12582 12583 // at the moment only support multiple array variables with single dimension arrays 12584 // e.g. "integer[] i1 i2" is allowed, "integer[][] i1 i2" is not allowed. 12585 // this limit was created because it will be very difficult to make fmac do this and this should be a rare occurance. 12586 #POP Q$ // number of dimensions 12587 #IF (!q>1) // if more than one dimension 12588 #IF (!0>(!q+2)) // num of params must be num of dimensions plus 2 12589 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT 'Multi Dimensional array variables must be defined one per line' 12590 #ENDIF 12591 #ELSE 12592 #IF (!0>3) 12593 Global$Array !1 !2 !4 !5 !6 !7 !8 !9 12594 #ENDIF 12595 #ENDIF 12596 12597#ENDCOMMAND 12598 12599#COMMAND DEFINE_SCALAR_ARGUMENT 12600 #PUSH !q 12601 #DTYPE Q$ !1 12602 #IF (!q=-1) // undefined type error 12603 #ERROR DFERR_COMP_INVALID_DATATYPE (!1) 12604 #ELSE 12605 #IF (!q=19) // a struct 12606 #PUSH !h 12607 #STRG H$ !1 12608 #IFSAME !2 BYREF 12609 #REPLACE !3 |RK-!ZGV!h 12610 #ELSE 12611 #REPLACE !2 |SK-!ZGV!h 12612 #ENDIF 12613 #POP H$ 12614 #ELSE // not a struct 12615 #SPUSH 12616 #DTSYM !1 // moves datatype Letter ID into !$ 12617 #IFSAME !2 BYREF 12618 #REPLACE !3 |R!$-!ZG 12619 #ELSE 12620 #REPLACE !2 |S!$-!ZG 12621 #ENDIF 12622 #SPOP 12623 #ENDIF 12624 #ENDIF 12625 #POP Q$ 12626#ENDCOMMAND 12627 12628#COMMAND DEFINE_ARRAY_ARGUMENT T R R 12629 #SET Q$ 0 12630 ARRAY_DIM_COUNT_HELPER !2 !3 !4 !5 !6 !7 !8 !9 // sets !q to num of dims 12631 12632 #PUSH !g 12633 #DTYPE G$ !1 12634 #IF (!g=-1) // undefined type error 12635 #ERROR DFERR_COMP_INVALID_DATATYPE (!1) 12636 #ELSE 12637 #IF (!g=19) 12638 #PUSH !h 12639 #STRG H$ !1 12640 #SPUSH 12641 #DTSYM !1 // moves datatype Letter ID into !$ 12642 ARRAY_ARGUMENT_REPLACE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12643 #SPOP 12644 #POP H$ 12645 #ELSE 12646 #SPUSH 12647 #DTSYM !1 // moves datatype Letter ID into !$ 12648 ARRAY_ARGUMENT_REPLACE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 12649 #SPOP 12650 #ENDIF 12651 #ENDIF 12652 #POP G$ 12653#ENDCOMMAND 12654 12655#COMMAND DEFINE_ARGUMENTS 12656 #IF (!0>0) 12657 #IFSAME !1 OVERLOADED 12658 DEFINE_ARGUMENTS !2 !3 !4 !5 !6 !7 !8 !9 12659 #ElSE 12660 #IFSAME !1 RETURNS 12661 #ELSE 12662 #IFADIM !2 12663 DEFINE_ARRAY_ARGUMENT !1 !2 !3 !4 !5 !6 !7 !8 !9 12664 #ELSE 12665 DEFINE_SCALAR_ARGUMENT !1 !2 !3 !4 !5 !6 !7 !8 !9 12666 #ENDIF 12667 DEFINE_NEXT_ARGUMENT !2 !3 !4 !5 !6 !7 !8 !9 12668 #ENDIF 12669 #ENDIF 12670 #ENDIF 12671#ENDCOMMAND 12672 12673// get next argument. Skip past all []s and the BYREF symbol 12674#COMMAND DEFINE_NEXT_ARGUMENT 12675 #IF (!0>0) 12676 #IFADIM !1 12677 DEFINE_NEXT_ARGUMENT !2 !3 !4 !5 !6 !7 !8 !9 12678 #ELSE 12679 #IFSAME !1 BYREF 12680 DEFINE_ARGUMENTS !3 !4 !5 !6 !7 !8 !9 12681 #ELSE 12682 DEFINE_ARGUMENTS !2 !3 !4 !5 !6 !7 !8 !9 12683 #ENDIF 12684 #ENDIF 12685 #ENDIF 12686#ENDCOMMAND 12687 12688 12689#COMMAND SCALAR$PROPERTY R R 12690 #IFSAME !3 PRIVATE 12691 PROPERTY !1 !$.!2 PUBLIC !4 12692 #ELSE 12693 #IFSAME !3 PUBLIC 12694 12695 // Check property for proper placement 12696 // 1. Must be in class or object 12697 // 2. Cannot be in a child object defined by a class 12698 // 3. If in class, must be in procedure (constructor) 12699 // 4. If in object, must not be in procedure. 12700 12701 #IF ((!Zl & 1) = 0) 12702 #IF (!b & 3 ) // Within class or object? It should be 12703 #IF ((!b & 3)=3 ) // but not both....Error 12704 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Property cannot be defined in an object within a class 12705 #ELSE 12706 #IF (!b & 2) // in-class: Must be within a method (constructor) 12707 #IF ( (!b & 4)=0) // in-class and not in method...bad 12708 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Class Property must be defined within a constructor procedure 12709 #ENDIF 12710 #ELSE // in-object: Cannot be in method 12711 #IF (!b & 4) // if within object and within method...an error 12712 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Object Property cannot be in a method 12713 #ENDIF 12714 #ENDIF 12715 #ENDIF 12716 #ELSE 12717 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Property can only be defined within a class or object 12718 #ENDIF 12719 #ENDIF 12720 12721 #IF (!b & 1 ) // if within object 12722 !A [] CLONE$CLASS // Create a new class 12723 #ENDIF 12724 12725 #IF ( (!Zl & 1)=0) 12726 #IFSAME FN$!2 __F__ 12727 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION !2 is an internal function name 12728 #ENDIF 12729 #ENDIF 12730 12731 // Check for GET_ name conflicts as follows: 12732 // 1. If defined as an overloaded message - error 12733 // 2. If defined as object access - error 12734 // 3. If defined as global method - error 12735 12736 #IFDEF GET_!2_OVERLOADED 12737 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION This GET Method Was Previously Defined As Overloaded 12738 #ELSE 12739 #IFDEF GET_!2 12740 #IF (GET_!2>$40000000) 12741 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION GET !2 is already defined as an object name 12742 #ELSE 12743 #IF (GET_!2<0) 12744 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION GET !2 is already defined as a global function 12745 #ENDIF // note else condition...defined as proeprty or class function...this is ok 12746 #ENDIF 12747 #ELSE 12748 MESSAGE$ADDRESS GET_!2 12749 #ENDIF 12750 #ENDIF 12751 12752 #DATA // Start the property 12753 12754 #DPUSH GET_!2 // Push the get property id 12755 #FREG GET_!2 RETURNS !1 12756 12757 // Make sure Set message not defined as overloaded or global 12758 #IFDEF SET_!2_OVERLOADED 12759 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION This SET Method Was Previously Defined As Overloaded 12760 #ELSE 12761 #IFDEF SET_!2 12762 #IF (SET_!2<0) 12763 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION SET !2 is already defined as a global message 12764 #ENDIF 12765 #ELSE 12766 MESSAGE$ADDRESS SET_!2 12767 #ENDIF 12768 #ENDIF 12769 12770 #DPUSH SET_!2 // Push the set property id 12771 #PREG SET_!2 !1 12772 #DTYPE Q$ !1 // get the property type in q 12773 #DPUSH |CI!q // push the type 12774 #IF (!q=19) 12775 //It's a struct, so we must push the struct metadata as well 12776 #PUSH !h 12777 #STRG H$ !1 12778 #DPUSH |CI!h 12779 #POP H$ 12780 #ENDIF 12781 #IF (!0 > 3) 12782 #DPUSH !4 12783 //#ELSE // 10/30/1997: If no default param is passed force 12784 //SF - This has been moved to the runtime now 12785 //SF - We may want to change this logic and not provide a default value at all. 12786 //The runtime can easily be changed to handle this better. 12787 //#IFSAME !1 ROWID 12788 // //Do nothing, RowID should not have a default value 12789 // //i.e. there are no constant RowIDs, and string to RowID conversion is illegal 12790 //#ELSE 12791 // #IFSAME !1 STRING DATETIME TIME TIMESPAN // a default value. String types require 12792 // #DPUSH |CS'' // a string, all others are numeric. This 12793 // #ELSE // fixes a problem in the runtime where 12794 // #DPUSH |CI0 // dates and numbers did not initialize properly 12795 // #ENDIF // when no initial param was passed in the command 12796 //#ENDIF 12797 #ENDIF 12798 !A [] CREATE$PROPERTY |CI0 |VL 12799 #ELSE 12800 // this supports syntax of "property Integer Prop 10" 12801 PROPERTY !1 !2 PUBLIC !3 12802 #ENDIF 12803 #ENDIF 12804#ENDCOMMAND 12805 12806#COMMAND ARRAY_PROPERTY_NAME_HELPER2 R R 12807 // Check property for proper placement 12808 // 1. Must be in class or object 12809 // 2. Cannot be in a child object defined by a class 12810 // 3. If in class, must be in procedure (constructor) 12811 // 4. If in object, must not be in procedure. 12812 12813 #IF ((!Zl & 1) = 0) 12814 #IF (!b & 3 ) // Within class or object? It should be 12815 #IF ((!b & 3)=3 ) // but not both....Error 12816 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Property cannot be defined in an object within a class 12817 #ELSE 12818 #IF (!b & 2) // in-class: Must be within a method (constructor) 12819 #IF ( (!b & 4)=0) // in-class and not in method...bad 12820 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Class Property must be defined within a constructor procedure 12821 #ENDIF 12822 #ELSE // in-object: Cannot be in method 12823 #IF (!b & 4) // if within object and within method...an error 12824 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Object Property cannot be in a method 12825 #ENDIF 12826 #ENDIF 12827 #ENDIF 12828 #ELSE 12829 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT Property can only be defined within a class or object 12830 #ENDIF 12831 #ENDIF 12832 12833 #IF (!b & 1 ) // if within object 12834 !A [] CLONE$CLASS // Create a new class 12835 #ENDIF 12836 12837 #IF ( (!Zl & 1)=0) 12838 #IFSAME FN$!2 __F__ 12839 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION !2 is an internal function name 12840 #ENDIF 12841 #ENDIF 12842 12843 // Check for GET_ name conflicts as follows: 12844 // 1. If defined as an overloaded message - error 12845 // 2. If defined as object access - error 12846 // 3. If defined as global method - error 12847 12848 #IFDEF GET_!2_OVERLOADED 12849 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION This GET Method Was Previously Defined As Overloaded 12850 #ELSE 12851 #IFDEF GET_!2 12852 #IF (GET_!2>$40000000) 12853 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION GET !2 is already defined as an object name 12854 #ELSE 12855 #IF (GET_!2<0) 12856 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION GET !2 is already defined as a global function 12857 #ENDIF // note else condition...defined as proeprty or class function...this is ok 12858 #ENDIF 12859 #ELSE 12860 MESSAGE$ADDRESS GET_!2 12861 #ENDIF 12862 #ENDIF 12863 12864 #DPUSH GET_!2 // Push the get property id 12865 12866 #FREG GET_!2 RETURNS !1 |GB[] //Make it array type by appending [], the number of dimensions are not used here 12867 12868 // Make sure Set message not defined as overloaded or global 12869 #IFDEF SET_!2_OVERLOADED 12870 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION This SET Method Was Previously Defined As Overloaded 12871 #ELSE 12872 #IFDEF SET_!2 12873 #IF (SET_!2<0) 12874 #ERROR DFERR_COMP_ILLEGAL_PROPERTY_DEFINTION SET !2 is already defined as a global message 12875 #ENDIF 12876 #ELSE 12877 MESSAGE$ADDRESS SET_!2 12878 #ENDIF 12879 #ENDIF 12880 12881 #DPUSH SET_!2 // Push the set property id 12882 #PREG SET_!2 !1 |GB[] //Make it array type by appending [], the number of dimensions are not used here 12883#ENDCOMMAND 12884 12885 12886#COMMAND ARRAY_PROPERTY_NAME_HELPER R R 12887 #IFADIM !2 12888 ARRAY_PROPERTY_NAME_HELPER !1 !3 !4 !5 !6 !7 !8 !9 12889 #ELSE 12890 #IFSAME !3 PRIVATE 12891 ARRAY_PROPERTY_NAME_HELPER !1 !$.!2 PUBLIC !4 !5 !6 !7 !8 !9 12892 #ELSE 12893 #IFSAME !3 PUBLIC 12894 ARRAY_PROPERTY_NAME_HELPER2 !1 !2 !3 !4 !5 !6 !7 !8 !9 12895 #ELSE 12896 ARRAY_PROPERTY_NAME_HELPER !1 !2 PUBLIC !3 !4 !5 !6 !7 !8 !9 12897 #ENDIF 12898 #ENDIF 12899 #ENDIF 12900#ENDCOMMAND 12901 12902#COMMAND ARRAY$PROPERTY R R 12903 #DATA // Start the property 12904 12905 //Push the get and set messages 12906 ARRAY_PROPERTY_NAME_HELPER !1 !2 !3 !4 !5 !6 !7 !8 !9 12907 12908 #DPUSH |CI21 // Push ARGARRAY 12909 #SET Q$ 0 12910 ARRAY_DIM_COUNT_HELPER !2 !3 !4 !5 !6 !7 !8 !9 // sets !q to num of dims 12911 #DPUSH |CI!q //Push the number of dimensions 12912 12913 #DTYPE Q$ !1 // get the property type in q 12914 #DPUSH |CI!q // Push the array type 12915 #IF (!q=19) 12916 //It's a struct, so we must push the struct metadata as well 12917 #PUSH !h 12918 #STRG H$ !1 12919 #DPUSH |CI!h 12920 #POP H$ 12921 #ENDIF 12922 ARRAY_DIM_SIZE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 //Push the size of each dimension 12923 !A [] CREATE$PROPERTY |CI0 |VL 12924#ENDCOMMAND 12925 12926#COMMAND PROPERTY R R 12927 #PUSH !q 12928 #DTYPE Q$ !1 // get the property type in q 12929 #IF (!q=-1) // undefined type error 12930 #ERROR DFERR_COMP_INVALID_DATATYPE (!1) 12931 #ELSE 12932 #IFADIM !2 12933 ARRAY$PROPERTY !1 !2 !3 !4 !5 !6 !7 !8 !9 12934 #ELSE 12935 SCALAR$PROPERTY !1 !2 !3 !4 !5 !6 !7 !8 !9 12936 #ENDIF 12937 #ENDIF 12938 #POP Q$ 12939#ENDCOMMAND 12940 12941// note that this command also creates a symbol _struct_XYZ where XYZ is the struct name. This can 12942// be used with #ifdef to see if a struct is defined 12943#COMMAND STRUCT R 12944 #IFDEF __@INSIDE_STRUCT@__ 12945 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT "STRUCT command within a STRUCT. Structs cannot be Nested" 12946 #ELSE 12947 #STRU !1 12948 #SREP __@INSIDE_STRUCT@__ |CI1 // lets other commands check that they are inside a struct scope. 12949 #ENDIF 12950#ENDCOMMAND 12951 12952#COMMAND END_STRUCT 12953 #IFNDEF __@INSIDE_STRUCT@__ 12954 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT "END_STRUCT command without STRUCT" 12955 #ELSE 12956 #STRE 12957 #UNDEF __@INSIDE_STRUCT@__ // Leaving struct declaration 12958 #ENDIF 12959#ENDCOMMAND 12960 12961#COMMAND STRUCT_SCALAR_MEMBER R R 12962 #PUSH !q 12963 #DTYPE Q$ !1 // get the property type in q 12964 #IF (!q =-1) 12965 #ERROR DFERR_COMP_INVALID_DATATYPE (!1) 12966 #ELSE 12967 #IF (!q=19) 12968 #PUSH !h 12969 #STRG H$ !1 12970 #STRM STRUCT |CI!h !2 12971 #POP H$ 12972 #ELSE 12973 #STRM SCALAR |CI!q !2 12974 #ENDIF 12975 #ENDIF 12976 #POP Q$ 12977#ENDCOMMAND 12978 12979#COMMAND STRUCT_ARRAY_TYPE_HELPER R 12980 #PUSH !q 12981 #DTYPE Q$ !1 // get the property type in q 12982 #IF (!q =-1) 12983 #ERROR DFERR_COMP_INVALID_DATATYPE (!1) 12984 #ELSE 12985 #IF (!q=19) 12986 #PUSH !h 12987 #STRG H$ !1 12988 #DPUSH |CI!h 12989 #DPUSH |CI19 12990 #POP H$ 12991 #ELSE 12992 #DPUSH |CI!q 12993 #ENDIF 12994 #ENDIF 12995 #POP Q$ 12996#ENDCOMMAND 12997 12998#COMMAND STRUCT_ARRAY_MEMBER_HELPER R 12999 #IFADIM !1 13000 STRUCT_ARRAY_MEMBER_HELPER !2 !3 !4 !5 !6 !7 !8 !9 13001 #ELSE 13002 #STRM ARRAY !1 13003 #ENDIF 13004#ENDCOMMAND 13005 13006#COMMAND STRUCT_ARRAY_MEMBER T R R 13007 #DATA 13008 ARRAY_DIM_SIZE_HELPER !2 !3 !4 !5 !6 !7 !8 !9 13009 STRUCT_ARRAY_TYPE_HELPER !1 13010 #SET Q$ 0 13011 ARRAY_DIM_COUNT_HELPER !2 !3 !4 !5 !6 !7 !8 !9 // sets !q to num of dims 13012 #DPUSH |CI!q //Push the number of dimensions 13013 STRUCT_ARRAY_MEMBER_HELPER !2 !3 !4 !5 !6 !7 !8 !9 13014#ENDCOMMAND 13015 13016 13017#COMMAND Local$Scalar R R 13018 #CHECK !2 _RT 13019 #PUSH !q 13020 #DTYPE Q$ !1 // get the property type in q 13021 #IF (!q=19) 13022 //It's a struct 13023 #PUSH !h 13024 #STRG H$ !1 13025 #REPLACE !2 |SK!ZGV!h 13026 #POP H$ 13027 #ELSE 13028 #SPUSH 13029 #DTSYM !1 // moves datatype Letter ID into !$ 13030 #REPLACE !2 |S!$!ZG 13031 #SPOP 13032 #ENDIF 13033 #POP Q$ 13034 13035 #IF (!0>2) 13036 Local$Scalar !1 !3 !4 !5 !6 !7 !8 !9 13037 #ENDIF 13038#ENDCOMMAND 13039 13040#COMMAND LOCAL R R // T T 13041 #IFDEF __@INSIDE_FUNCTION@__ 13042 #PUSH !q 13043 #DTYPE Q$ !1 13044 #IF (!q=-1) 13045 #ERROR DFERR_COMP_INVALID_DATATYPE (!1) 13046 #ELSE 13047 #IFADIM !2 13048 Local$Array !1 !2 !3 !4 !5 !6 !7 !8 !9 13049 #ELSE 13050 Local$Scalar !1 !2 !3 !4 !5 !6 !7 !8 !9 13051 #ENDIF 13052 #ENDIF 13053 #POP Q$ 13054 #ELSE 13055 #ERROR DFERR_COMP_ILLEGAL_CODE_PLACEMENT LOCAL Variables can only be defined within methods 13056 #ENDIF 13057#ENDCOMMAND 13058 13059 13060//#COMMAND GLOBAL$Scalar R R 13061 13062// #CHECK !2 _RT 13063 13064// #IFSAME !1 STRING 13065// // strings are treated as special because they have a set of values. 13066// #IF (!0>2) 13067// #IFDEF !3 13068// #CHECK !3 _VSWDF 13069// #STR V$ !3 13070// #REPLACE !2 |VS!v 13071// #IF (!0>3) 13072// Global$Scalar !1 !4 !5 !6 !7 !8 !9 13073// #ENDIF 13074// #ELSE 13075// #STR V$ 80 13076// #REPLACE !2 |VS!v 13077// Global$Scalar !1 !3 !4 !5 !6 !7 !8 !9 13078// #ENDIF 13079// #ELSE 13080// #STR V$ 80 13081// #REPLACE !2 |VS!v 13082// #ENDIF 13083// #ELSE 13084// #PUSH !q 13085// #DTYPE Q$ !1 // get the property type in q 13086// #IF (!q=19) 13087// //It's a struct 13088// #PUSH !h 13089// #STRG H$ !1 13090// #STRV V$ !h 13091// #REPLACE !2 |VK!vV!h 13092// #POP H$ 13093// #ELSE 13094// #SPUSH 13095//// #SET $$ TYPE$SYMBOL$!1 13096//// #REM arg is !$ 13097//// Scalar$Variable$Help !2 TYPE$SYMBOL$G$!1 // V 13098//// Scalar$Variable$Help !2 !$ V 13099// #DTSYM !1 13100// #REPLACE !2 |V!$!v // ZG 13101// #REM !2 ------------------------------------ 13102// #SPOP 13103 13104// #ENDIF 13105// #POP Q$ 13106 13107// #IF (!0>2) 13108// GLOBAL$Scalar !1 !3 !4 !5 !6 !7 !8 !9 13109// #ENDIF 13110//#ENDCOMMAND 13111 13112 13113#COMMAND GLOBAL_VARIABLE R R 13114 #PUSH !q 13115 #DTYPE Q$ !1 13116 #IF (!q=-1) 13117 #ERROR DFERR_COMP_INVALID_DATATYPE (!1) 13118 #ELSE 13119 #IFADIM !2 // if a global array, treat as such 13120 Global$Array !1 !2 !3 !4 !5 !6 !7 !8 !9 13121 #ELSE 13122 Global$Scalar !1 !2 !3 !4 !5 !6 !7 !8 !9 13123 #ENDIF // if aDim 13124 #ENDIF // if (!q=-1) 13125 #POP Q$ 13126#ENDCOMMAND 13127 13128#COMMAND Global$Scalar 13129 #IF (!0>0) 13130 #CHECK !2 _RT 13131 13132 #IFSAME !1 STRING 13133 // strings are treated as special because they have a set of values. 13134 #IF (!0>2) 13135 #IFDEF !3 13136 #CHECK !3 _VSWDF 13137 #STR V$ !3 13138 #REPLACE !2 |VS!v 13139 #IF (!0>3) 13140 Global$Scalar !1 !4 !5 !6 !7 !8 !9 13141 #ENDIF 13142 #ELSE 13143 #STR V$ 80 13144 #REPLACE !2 |VS!v 13145 Global$Scalar !1 !3 !4 !5 !6 !7 !8 !9 13146 #ENDIF 13147 #ELSE 13148 #STR V$ 80 13149 #REPLACE !2 |VS!v 13150 #ENDIF 13151 #ELSE 13152 #IFSAME !1 INTEGER 13153 #REPLACE !2 |VI!D 13154 #ELSE 13155 #IFSAME !1 DATE 13156 #NUM V$ 13157 #REPLACE !2 |VD!v 13158 #ELSE 13159 #IFSAME !1 NUMBER 13160 #NUM V$ 13161 #REPLACE !2 |VN!v 13162 #ELSE 13163 #IFSAME !1 REAL 13164 #REAL V$ 13165 #REPLACE !2 |VR!v 13166 #ELSE 13167 #IFSAME !1 ADDRESS 13168 #ADDRESS V$ 13169 #REPLACE !2 |VX!v 13170 #ELSE 13171 #IFSAME !1 BIGINT 13172 #BIGINT V$ 13173 #REPLACE !2 |VH!v 13174 #ELSE 13175 #IFSAME !1 TIME 13176 #TIME V$ 13177 #REPLACE !2 |VT!v 13178 #ELSE 13179 #IFSAME !1 DATETIME 13180 #STAM V$ 13181 #REPLACE !2 |VM!v 13182 #ELSE 13183 #IFSAME !1 FLOAT 13184 #FLOAT V$ 13185 #REPLACE !2 |VF!v 13186 #ELSE 13187 #IFSAME !1 CHAR 13188 #CHAR V$ 13189 #REPLACE !2 |VY!v 13190 #ELSE 13191 #IFSAME !1 UCHAR 13192 #UCHAR V$ 13193 #REPLACE !2 |VC!v 13194 #ELSE 13195 #IFSAME !1 SHORT 13196 #SHORT V$ 13197 #REPLACE !2 |VW!v 13198 #ELSE 13199 #IFSAME !1 USHORT 13200 #USHORT V$ 13201 #REPLACE !2 |VU!v 13202 #ELSE 13203 #IFSAME !1 UINTEGER 13204 #ULONG V$ 13205 #REPLACE !2 |VV!v 13206 #ELSE 13207 #IFSAME !1 BOOLEAN 13208 #BIT V$ 13209 #REPLACE !2 |VZ!v 13210 #ELSE 13211 #IFSAME !1 UBIGINT 13212 #BIGU V$ 13213 #REPLACE !2 |VG!v 13214 #ELSE 13215 #IFSAME !1 CURRENCY 13216 #CURR V$ 13217 #REPLACE !2 |VO!v 13218 #ELSE 13219 #IFSAME !1 TIMESPAN 13220 #SPAN V$ 13221 #REPLACE !2 |VP!v 13222 #ELSE 13223 #IFSAME !1 DECIMAL 13224 #BIGN V$ 13225 #REPLACE !2 |VQ!v 13226 #ELSE 13227 #IFSAME !1 VARIANT 13228 #VRNT V$ 13229 #REPLACE !2 |VJ!v 13230 #ELSE 13231 #IFSAME !1 ROWID 13232 #ROWI V$ 13233 #REPLACE !2 |V@!v 13234 #ELSE 13235 #PUSH !h 13236 #STRG H$ !1 13237 #IF !h 13238 #STRV V$ !h 13239 #REPLACE !2 |VK!vV!h 13240 #ELSE 13241 #ERROR DFERR_COMP_INVALID_DATATYPE (!1) 13242 #ENDIF 13243 #POP H$ 13244 #ENDIF // RowID 13245 #ENDIF // Variant 13246 #ENDIF // Decimal 13247 #ENDIF // TimeSpan 13248 #ENDIF // Currenct 13249 #ENDIF // UBigInt 13250 #ENDIF // Boolean 13251 #ENDIF // UInteger 13252 #ENDIF // UShort 13253 #ENDIF // Short 13254 #ENDIF // UChar 13255 #ENDIF // Char 13256 #ENDIF // Float 13257 #ENDIF // TimeDate 13258 #ENDIF // Time 13259 #ENDIF // BigInt 13260 #ENDIF // address 13261 #ENDIF // real 13262 #ENDIF // number 13263 #ENDIF // date 13264 #ENDIF // integer 13265 #IF (!0>2) 13266 Global$Scalar !1 !3 !4 !5 !6 !7 !8 !9 13267 #ENDIF 13268 #ENDIF // end of string 13269 #ENDIF // if there are parameters 13270#ENDCOMMAND 13271 13272// External function command declairs the external entry point to 13273// The DF system. The compiler creates a reference to the function 13274// complete with return type and parameter information. The macro 13275// also generates code that retains the name of the function and the 13276// name of the library in a runtime array. This array is used when 13277// the DLL is "loaded". 13278 13279#COMMAND SET_DEFAULT_CALLTYPE _R . 13280 #IF (!1=16) 13281 #SET ZK$ 1 13282 #ELSE 13283 #SET ZK$ 0 13284 #ENDIF 13285#ENDCOMMAND 13286 13287 13288//External_Function FunctionName "FunctionName" DLLName {Parameters ...} Returns DataType 13289#COMMAND EXTERNAL_FUNCTION 13290 #IF !Zk=0 13291 EXTERNAL$FUNCTION $54C LOAD_ON_USE GET_ !1 !2 !3 !4 !5 !6 !7 !8 !9 13292 #ELSE 13293 EXTERNAL$FUNCTION $54D LOAD_ON_USE GET_ !1 !2 !3 !4 !5 !6 !7 !8 !9 13294 #ENDIF 13295#ENDCOMMAND 13296 13297#COMMAND EXTERNAL_PROCEDURE 13298 #IF !Zk=0 13299 EXTERNAL$FUNCTION $54C LOAD_ON_USE MSG_ !1 !2 !3 !4 !5 !6 !7 !8 !9 13300 #ELSE 13301 EXTERNAL$FUNCTION $54D LOAD_ON_USE MSG_ !1 !2 !3 !4 !5 !6 !7 !8 !9 13302 #ENDIF 13303#ENDCOMMAND 13304 13305#COMMAND EXTERNAL_FUNCTION16 13306 EXTERNAL$FUNCTION $54D LOAD_ON_USE GET_ !1 !2 !3 !4 !5 !6 !7 !8 !9 13307#ENDCOMMAND 13308 13309#COMMAND EXTERNAL_PROCEDURE16 13310 EXTERNAL$FUNCTION $54D LOAD_ON_USE MSG_ !1 !2 !3 !4 !5 !6 !7 !8 !9 13311#ENDCOMMAND 13312 13313#COMMAND EXTERNAL_FUNCTION32 13314 EXTERNAL$FUNCTION $54C LOAD_ON_USE GET_ !1 !2 !3 !4 !5 !6 !7 !8 !9 13315#ENDCOMMAND 13316 13317#COMMAND EXTERNAL_PROCEDURE32 13318 EXTERNAL$FUNCTION $54C LOAD_ON_USE MSG_ !1 !2 !3 !4 !5 !6 !7 !8 !9 13319#ENDCOMMAND 13320 13321//External$Function Command Flag GET_|MSG_ FunctionName {"FunctionName"} DLLName {Parameters ...} Returns DataType 13322#COMMAND EXTERNAL$FUNCTION _R _R "GET_""MSG_" TR RIDN 13323 #IFTYPE !5 S 13324 13325 // check that the function name is not one of our reserved internal functions 13326 #IFSAME !3 GET_ 13327 #IFSAME FN$!4 __F__ 13328 #ERROR DFERR_COMP_ILLEGAL_EXTERNAL_FUNCTION_DEFINTION !4 is an internal function name 13329 #ENDIF 13330 #ENDIF 13331 13332 #IFDEF !3!4 // if defined as object, function, property, external, an error 13333 // We have an error. This just generates more accurate information 13334 #IFSAME !3 GET_ // function errors can be name already used as Object, global function, or reg function 13335 #IF (GET_!4>$40000000) 13336 #ERROR DFERR_COMP_ILLEGAL_EXTERNAL_FUNCTION_DEFINTION !4 is already defined as an object 13337 #ELSE 13338 #IF (GET_!4<0) 13339 #ERROR DFERR_COMP_ILLEGAL_EXTERNAL_FUNCTION_DEFINTION !4 is already defined as a global function 13340 #ELSE 13341 #ERROR DFERR_COMP_ILLEGAL_METHOD_DEFINTION !4 is already defined as a function or external_function 13342 #ENDIF 13343 #ENDIF 13344 #ELSE // if procecure it can be global or regular 13345 #IF (MSG_!4<0) 13346 #ERROR DFERR_COMP_ILLEGAL_EXTERNAL_FUNCTION_DEFINTION !4 is already defined as a global procedure 13347 #ELSE 13348 #ERROR DFERR_COMP_ILLEGAL_EXTERNAL_FUNCTION_DEFINTION !4 is already defined as a procedure or external_procedure 13349 #ENDIF 13350 #ENDIF 13351 #ELSE 13352 MESSAGE$ADDRESS !3!4 // create any symbol (for global) 13353 CHECK$METHOD$ARGUMENT$LIST !7 !8 !9 13354 #DATA 13355 #FREG !3!4 GLOBAL !7 !8 !9 13356 #DPUSH !3!4 // Message ID 13357 #DPUSH !2 // Load Type 13358 #DPUSH |CS"!6" // DLL Name 13359 #DPUSH !5 // Function Name 13360 GET$RETURN$TYPE !7 !8 !9 // Push Return Type 13361 !A [] !1 |CI0 |VL 13362 #ENDIF 13363 #ELSE 13364 EXTERNAL$FUNCTION !1 !2 !3 !4 |CS"!4" !5 !6 !7 !8 !9 13365 #ENDIF 13366#ENDCOMMAND 13367 13368#COMMAND GET$RETURN$TYPE 13369 #IF !0=1 13370 #IFSAME !1 INTEGER 13371 #DPUSH |CI3 13372 #ELSE 13373 #IFSAME !1 UINTEGER 13374 #DPUSH |CI15 13375 #ELSE 13376 #IFSAME !1 STRING 13377 #DPUSH |CI0 13378 #ELSE 13379 #IFSAME !1 REAL 13380 #DPUSH |CI5 13381 #ELSE 13382 #IFSAME !1 FLOAT 13383 #DPUSH |CI10 13384 #ELSE 13385 #IFSAME !1 ADDRESS 13386 #DPUSH |CI7 13387 #ELSE 13388 #IFSAME !1 SHORT 13389 #DPUSH |CI13 13390 #ELSE 13391 #IFSAME !1 USHORT 13392 #DPUSH |CI14 13393 #ELSE 13394 #IFSAME !1 CHAR 13395 #DPUSH |CI11 13396 #ELSE 13397 #IFSAME !1 UCHAR 13398 #DPUSH |CI12 13399 #ELSE 13400 #IFSAME !1 BOOLEAN 13401 #DPUSH |CI3 // Push an int for boolean return type 13402 #ELSE 13403 #DPUSH |CI3 // Push an int return value anyway 13404 #ERROR DFERR_COMP_ILLEGAL_RETURN_TYPE Unknown return type for external function 13405 #ENDIF 13406 #ENDIF 13407 #ENDIF 13408 #ENDIF 13409 #ENDIF 13410 #ENDIF 13411 #ENDIF 13412 #ENDIF 13413 #ENDIF 13414 #ENDIF 13415 #ENDIF 13416 #ELSE 13417 GET$RETURN$TYPE !2 !3 !4 !5 !6 !7 !8 !9 13418 #ENDIF 13419#ENDCOMMAND 13420 13421// Commands used for active-x stuff. Moved from flexcom20_base.pkg. The Embed_activeX_resource stuff results in very 13422// strange long errors if this command i snot always available. 13423#COMMAND Include_ActiveX_Resource R R 13424 #BSTR V$ file storage !1 !2 13425 Set psResourceData to |VS!v 13426#ENDCOMMAND 13427 13428#COMMAND EMBED_ACTIVEX_RESOURCE 13429 #BSTR V$ READ BASE64RESOURCE 13430#ENDCOMMAND 13431 13432#COMMAND END_EMBED_ACTIVEX_RESOURCE 13433 Set psResourceData to |VS!v 13434#ENDCOMMAND 13435 13436// for internal use only for generating the errordisplay stack dump dialog 13437// ErrorDisplay iErrorLine sMessage sCaption sOkText sCopyText 13438#COMMAND ErrorDisplay R R R R R 13439 #DATA 13440 #DPUSH !1 13441 #DPUSH !2 13442 #DPUSH !3 13443 #DPUSH !4 13444 #DPUSH !5 13445 !A[] $57 |VL 13446#ENDCOMMAND 13447 13448 13449// Low level command that can be used within error handlers (e.g. error_report) to get a string of the current call stack. 13450#COMMAND CALLSTACKDUMP R 13451 !A [] $058 !1 13452#ENDCOMMAND 13453 13454// This forces the entire application to use the old MSXML3 parser. 13455// This must be used before you create any XML object. Only provided 13456// for backwards compatibility. Added 15.1 13457#COMMAND USE_LEGACY_XML_LIB 13458 !A [] $057c 13459#ENDCOMMAND 13460