BlankPage: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
No edit summary
Tag: Reverted
No edit summary
 
(12 intermediate revisions by the same user not shown)
Line 68: Line 68:
</gallery>
</gallery>
<!-- additional availability notes go below here -->
<!-- additional availability notes go below here -->
* The capability to load from ''memory'' was introduced in '''QB64-PE''' ''v3.5.0''.
* The capability to load from ''memory'' was introduced in '''QB64-PE v3.5.0'''.




Line 81: Line 81:
{{CodeEnd}}
{{CodeEnd}}
{{Small|This template allows for a short author credit.}}
{{Small|This template allows for a short author credit.}}
{{PreStart}}
'''Note:''' To avoid the annoying task of manually inserting the templates
in your code examples, since v3.7.0 you may simply write your example
in the IDE and later use the menu "File > Export As > Wiki example" to
export a completely prepared code block, which you can paste "as is"
into the Wiki page.


Oh, and by the way, this ''preformatted text block'' is also new. Generally
it's the same as a ''fixed text block'' shown above, but it uses horizontal
scrollers instead of stretching the text box and it has a more plain
appearance. If you want avoid the horizontal scroller, then restrict
yourself to a line length of max. 72 characters.
{{PreEnd}}


: The output block is available for the SCREEN 0 background colors 0-7
: The output block is available for the SCREEN 0 background colors 0-7
Line 91: Line 103:


{{PageSeeAlso}}
{{PageSeeAlso}}
* [https://qb64phoenix.com/forum/showthread.php?tid=1066 Featured in our "Keyword of the Day" series]
* [[Keyword Reference - Alphabetical]]
* [[Keyword Reference - Alphabetical]]
* [[Keyword Reference - By usage]]
* [[Keyword Reference - By usage]]
Line 96: Line 109:


{{PageNavigation}}
{{PageNavigation}}
{{CodeStart}}
{{Text|<nowiki>'All variables will be of type LONG unless explicitly defined</nowiki>|#919191}}
{{Cl|DEFLNG}} A-Z
{{Text|<nowiki>'All arrays will be dynamically allocated so they can be REDIM-ed</nowiki>|#919191}}
{{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$DYNAMIC}}
{{Text|<nowiki>'We need console access to support command-line compilation via the -x command line compile option</nowiki>|#919191}}
{{Cm|$CONSOLE}}
{{Text|<nowiki>'Initially the "SCREEN" will be hidden, if the -x option is used it will never be created</nowiki>|#919191}}
{{Cm|$SCREENHIDE}}
{{Cm|$EXEICON}}:{{Text|<nowiki>'./qb64pe.ico'</nowiki>|#919191}}
{{Cm|$VERSIONINFO}}:CompanyName=QB64 Phoenix Edition
{{Cm|$VERSIONINFO}}:FileDescription=QB64 IDE and Compiler
{{Cm|$VERSIONINFO}}:InternalName=qb64pe.bas
{{Cm|$VERSIONINFO}}:LegalCopyright=MIT
{{Cm|$VERSIONINFO}}:LegalTrademarks=
{{Cm|$VERSIONINFO}}:OriginalFilename=qb64pe.exe
{{Cm|$VERSIONINFO}}:ProductName=QB64-PE
{{Cm|$VERSIONINFO}}:Comments=QB64 is a modern extended BASIC programming language that retains QB4.5/QBasic compatibility and compiles native binaries for Windows, Linux and macOS.
{{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'global\version.bas'</nowiki>|#919191}}
{{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'global\settings.bas'</nowiki>|#919191}}
{{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'global\constants.bas'</nowiki>|#919191}}
{{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'subs_functions\extensions\opengl\opengl_global.bas'</nowiki>|#919191}}
{{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'utilities\ini-manager\ini.bi'</nowiki>|#919191}}
{{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'utilities\s-buffer\simplebuffer.bi'</nowiki>|#919191}}
{{Cl|DEFLNG}} A-Z
{{Text|<nowiki>'-------- Optional IDE Component (1/2) --------</nowiki>|#919191}}
{{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'ide\ide_global.bas'</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} OName({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'Operation Name</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} PL({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'Priority Level</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} PP_TypeMod({{Text|0|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}, PP_ConvertedMod({{Text|0|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'Prepass Name Conversion variables.</nowiki>|#919191}}
{{Text|Set_OrderOfOperations|#55FF55}}
{{Cl|DIM}} {{Cl|SHARED}} NoExeSaved {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} vWatchOn, vWatchRecompileAttempts, vWatchDesiredState, vWatchErrorCall$
{{Cl|DIM}} {{Cl|SHARED}} vWatchNewVariable$, vWatchVariableExclusions$
vWatchErrorCall$ = {{Text|<nowiki>"if (stop_program) {*__LONG_VWATCH_LINENUMBER=0; SUB_VWATCH((ptrszint*)vwatch_global_vars,(ptrszint*)vwatch_local_vars);};if(new_error){bkp_new_error=new_error;new_error=0;*__LONG_VWATCH_LINENUMBER=-1; SUB_VWATCH((ptrszint*)vwatch_global_vars,(ptrszint*)vwatch_local_vars);new_error=bkp_new_error;};"</nowiki>|#FFB100}}
vWatchVariableExclusions$ = {{Text|<nowiki>"@__LONG_VWATCH_LINENUMBER@__LONG_VWATCH_SUBLEVEL@__LONG_VWATCH_GOTO@"</nowiki>|#FFB100}} + _
              {{Text|<nowiki>"@__STRING_VWATCH_SUBNAME@__STRING_VWATCH_CALLSTACK@__ARRAY_BYTE_VWATCH_BREAKPOINTS"</nowiki>|#FFB100}} + _
              {{Text|<nowiki>"@__ARRAY_BYTE_VWATCH_SKIPLINES@__STRING_VWATCH_INTERNALSUBNAME@__ARRAY_STRING_VWATCH_STACK@"</nowiki>|#FFB100}}
{{Cl|DIM}} {{Cl|SHARED}} nativeDataTypes$
nativeDataTypes$ = {{Text|<nowiki>"@_OFFSET@OFFSET@_UNSIGNED _OFFSET@UNSIGNED OFFSET@_BIT@BIT@_UNSIGNED _BIT@UNSIGNED BIT@_BYTE@_UNSIGNED _BYTE@BYTE@UNSIGNED BYTE@INTEGER@_UNSIGNED INTEGER@UNSIGNED INTEGER@LONG@_UNSIGNED LONG@UNSIGNED LONG@_INTEGER64@INTEGER64@_UNSIGNED _INTEGER64@UNSIGNED INTEGER64@SINGLE@DOUBLE@_FLOAT@FLOAT@STRING@"</nowiki>|#FFB100}}
{{Cl|DIM}} {{Cl|SHARED}} qb64prefix_set_recompileAttempts, qb64prefix_set_desiredState
{{Cl|DIM}} {{Cl|SHARED}} opex_recompileAttempts, opex_desiredState
{{Cl|DIM}} {{Cl|SHARED}} opexarray_recompileAttempts, opexarray_desiredState
{{Cl|REDIM}} EveryCaseSet({{Text|100|#F580B1}}), SelectCaseCounter {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|LONG}}
{{Cl|REDIM}} SelectCaseHasCaseBlock({{Text|100|#F580B1}})
{{Cl|DIM}} ExecLevel({{Text|255|#F580B1}}), ExecCounter {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|REDIM}} {{Cl|SHARED}} UserDefine({{Text|1|#F580B1}}, {{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'0 element is the name, 1 element is the string value</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} InValidLine({{Text|10000|#F580B1}}) {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|DIM}} DefineElse({{Text|255|#F580B1}}) {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|DIM}} {{Cl|SHARED}} UserDefineCount {{Cl|AS}} {{Cl|INTEGER}}, UserDefineList$
UserDefineList$ = {{Text|<nowiki>"@DEFINED@UNDEFINED@WINDOWS@WIN@LINUX@MAC@MACOSX@32BIT@64BIT@VERSION@"</nowiki>|#FFB100}}
UserDefine({{Text|0|#F580B1}}, {{Text|0|#F580B1}}) = {{Text|<nowiki>"WINDOWS"</nowiki>|#FFB100}}: UserDefine({{Text|0|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}}
UserDefine({{Text|0|#F580B1}}, {{Text|2|#F580B1}}) = {{Text|<nowiki>"LINUX"</nowiki>|#FFB100}}
UserDefine({{Text|0|#F580B1}}, {{Text|3|#F580B1}}) = {{Text|<nowiki>"MAC"</nowiki>|#FFB100}}: UserDefine({{Text|0|#F580B1}}, {{Text|4|#F580B1}}) = {{Text|<nowiki>"MACOSX"</nowiki>|#FFB100}}
UserDefine({{Text|0|#F580B1}}, {{Text|5|#F580B1}}) = {{Text|<nowiki>"32BIT"</nowiki>|#FFB100}}: UserDefine({{Text|0|#F580B1}}, {{Text|6|#F580B1}}) = {{Text|<nowiki>"64BIT"</nowiki>|#FFB100}}
UserDefine({{Text|0|#F580B1}}, {{Text|7|#F580B1}}) = {{Text|<nowiki>"VERSION"</nowiki>|#FFB100}}
{{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"WIN"</nowiki>|#FFB100}}) {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, {{Text|0|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}} {{Cl|ELSE}} UserDefine({{Text|1|#F580B1}}, {{Text|0|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}
{{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"LINUX"</nowiki>|#FFB100}}) {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, {{Text|2|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}} {{Cl|ELSE}} UserDefine({{Text|1|#F580B1}}, {{Text|2|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}
{{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"MAC"</nowiki>|#FFB100}}) {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, {{Text|3|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|4|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}} {{Cl|ELSE}} UserDefine({{Text|1|#F580B1}}, {{Text|3|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|4|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}
{{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"32BIT"</nowiki>|#FFB100}}) {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, {{Text|5|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|6|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}} {{Cl|ELSE}} UserDefine({{Text|1|#F580B1}}, {{Text|5|#F580B1}}) = {{Text|<nowiki>"0"</nowiki>|#FFB100}}: UserDefine({{Text|1|#F580B1}}, {{Text|6|#F580B1}}) = {{Text|<nowiki>"-1"</nowiki>|#FFB100}}
UserDefine({{Text|1|#F580B1}}, {{Text|7|#F580B1}}) = Version$
{{Cl|DIM}} {{Cl|SHARED}} QB64_uptime!
QB64_uptime! = {{Cl|TIMER (function)|TIMER}}
NoInternalFolder:
{{Cl|IF}} {{Cl|_DIREXISTS}}({{Text|<nowiki>"internal"</nowiki>|#FFB100}}) = {{Text|0|#F580B1}} {{Cl|THEN}}
    {{Cl|_SCREENSHOW}}
    {{Cl|PRINT}} {{Text|<nowiki>"QB64-PE cannot locate the 'internal' folder"</nowiki>|#FFB100}}
    {{Cl|PRINT}}
    {{Cl|PRINT}} {{Text|<nowiki>"Check that QB64-PE has been extracted properly."</nowiki>|#FFB100}}
    {{Cl|PRINT}} {{Text|<nowiki>"For MacOSX, launch 'qb64pe_start.command' or enter './qb64pe' in Terminal."</nowiki>|#FFB100}}
    {{Cl|PRINT}} {{Text|<nowiki>"For Linux, in the console enter './qb64pe'."</nowiki>|#FFB100}}
    {{Cl|DO}}
        {{Cl|_LIMIT}} {{Text|1|#F580B1}}
    {{Cl|DO...LOOP|LOOP UNTIL}} {{Cl|INKEY$}} <> {{Text|<nowiki>""</nowiki>|#FFB100}}
    {{Cl|SYSTEM}} {{Text|1|#F580B1}}
{{Cl|END IF}}
{{Cl|DIM}} {{Cl|SHARED}} Include_GDB_Debugging_Info {{Text|<nowiki>'set using "options.bin"</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} DEPENDENCY_LAST
{{Cl|CONST}} DEPENDENCY_LOADFONT = {{Text|1|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
{{Cl|CONST}} DEPENDENCY_AUDIO_CONVERSION = {{Text|2|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
{{Cl|CONST}} DEPENDENCY_AUDIO_DECODE = {{Text|3|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
{{Cl|CONST}} DEPENDENCY_AUDIO_OUT = {{Text|4|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
{{Cl|CONST}} DEPENDENCY_GL = {{Text|5|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
{{Cl|CONST}} DEPENDENCY_IMAGE_CODEC = {{Text|6|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
{{Cl|CONST}} DEPENDENCY_CONSOLE_ONLY = {{Text|7|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}} {{Text|<nowiki>'=2 if via -g switch, =1 if via metacommand $CONSOLE:ONLY</nowiki>|#919191}}
{{Cl|CONST}} DEPENDENCY_SOCKETS = {{Text|8|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
{{Cl|CONST}} DEPENDENCY_PRINTER = {{Text|9|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
{{Cl|CONST}} DEPENDENCY_ICON = {{Text|10|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
{{Cl|CONST}} DEPENDENCY_SCREENIMAGE = {{Text|11|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}}
{{Cl|CONST}} DEPENDENCY_DEVICEINPUT = {{Text|12|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}} {{Text|<nowiki>'removes support for gamepad input if not present</nowiki>|#919191}}
{{Cl|CONST}} DEPENDENCY_ZLIB = {{Text|13|#F580B1}}: DEPENDENCY_LAST = DEPENDENCY_LAST + {{Text|1|#F580B1}} {{Text|<nowiki>'ZLIB library linkage, if desired, for compression/decompression.</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} DEPENDENCY({{Text|1|#F580B1}} {{Cl|TO}} DEPENDENCY_LAST)
{{Cl|DIM}} {{Cl|SHARED}} UseGL {{Text|<nowiki>'declared SUB _GL (no params)</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} OS_BITS {{Cl|AS}} {{Cl|LONG}}, WindowTitle {{Cl|AS}} {{Cl|STRING}}
OS_BITS = {{Text|64|#F580B1}}: {{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"[32BIT]"</nowiki>|#FFB100}}) {{Cl|THEN}} OS_BITS = {{Text|32|#F580B1}}
{{Cl|IF}} OS_BITS = {{Text|32|#F580B1}} {{Cl|THEN}} WindowTitle = {{Text|<nowiki>"QB64 Phoenix Edition (x32)"</nowiki>|#FFB100}} {{Cl|ELSE}} WindowTitle = {{Text|<nowiki>"QB64 Phoenix Edition (x64)"</nowiki>|#FFB100}}
{{Cl|_TITLE}} WindowTitle
{{Cl|DIM}} {{Cl|SHARED}} ConsoleMode, No_C_Compile_Mode, NoIDEMode
{{Cl|DIM}} {{Cl|SHARED}} ShowWarnings {{Cl|AS}} {{Cl|_BYTE}}, QuietMode {{Cl|AS}} {{Cl|_BYTE}}, CMDLineFile {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} MonochromeLoggingMode {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|TYPE}} usedVarList
    {{Cl|AS}} {{Cl|LONG}} id, linenumber, includeLevel, includedLine, {{Text|scope|#55FF55}}, localIndex
    {{Cl|AS}} {{Cl|LONG}} arrayElementSize
    {{Cl|AS}} {{Cl|_BYTE}} used, watch, isarray, displayFormat {{Text|<nowiki>'displayFormat: 0=DEC;1=HEX;2=BIN;3=OCT</nowiki>|#919191}}
    {{Cl|AS}} {{Cl|STRING}} name, cname, varType, includedFile, subfunc
    {{Cl|AS}} {{Cl|STRING}} watchRange, indexes, elements, elementTypes {{Text|<nowiki>'for Arrays and UDTs</nowiki>|#919191}}
    {{Cl|AS}} {{Cl|STRING}} elementOffset, storage
{{Cl|END TYPE}}
{{Cl|REDIM}} {{Cl|SHARED}} backupUsedVariableList({{Text|1000|#F580B1}}) {{Cl|AS}} usedVarList
{{Cl|DIM}} {{Cl|SHARED}} typeDefinitions$, backupTypeDefinitions$
{{Cl|DIM}} {{Cl|SHARED}} totalVariablesCreated {{Cl|AS}} {{Cl|LONG}}, totalMainVariablesCreated {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} bypassNextVariable {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|DIM}} {{Cl|SHARED}} totalWarnings {{Cl|AS}} {{Cl|LONG}}, warningListItems {{Cl|AS}} {{Cl|LONG}}, lastWarningHeader {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} duplicateConstWarning {{Cl|AS}} {{Cl|_BYTE}}, warningsissued {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|DIM}} {{Cl|SHARED}} emptySCWarning {{Cl|AS}} {{Cl|_BYTE}}, maxLineNumber {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ExeIconSet {{Cl|AS}} {{Cl|LONG}}, qb64prefix$, qb64prefix_set
{{Cl|DIM}} {{Cl|SHARED}} VersionInfoSet {{Cl|AS}} {{Cl|_BYTE}}
{{Text|<nowiki>'Variables to handle $VERSIONINFO metacommand:</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} viFileVersionNum$, viProductVersionNum$, viCompanyName$
{{Cl|DIM}} {{Cl|SHARED}} viFileDescription$, viFileVersion$, viInternalName$
{{Cl|DIM}} {{Cl|SHARED}} viLegalCopyright$, viLegalTrademarks$, viOriginalFilename$
{{Cl|DIM}} {{Cl|SHARED}} viProductName$, viProductVersion$, viComments$, viWeb$
{{Cl|DIM}} {{Cl|SHARED}} NoChecks
{{Cl|DIM}} {{Cl|SHARED}} Console
{{Cl|DIM}} {{Cl|SHARED}} ScreenHide
{{Cl|DIM}} {{Cl|SHARED}} Asserts
{{Cl|DIM}} {{Cl|SHARED}} OptMax {{Cl|AS}} {{Cl|LONG}}
OptMax = {{Text|256|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} Opt({{Text|1|#F580B1}} {{Cl|TO}} OptMax, {{Text|1|#F580B1}} {{Cl|TO}} {{Text|10|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
{{Text|<nowiki>'  (1,1)="READ"</nowiki>|#919191}}
{{Text|<nowiki>'  (1,2)="WRITE"</nowiki>|#919191}}
{{Text|<nowiki>'  (1,3)="READ WRITE"</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} OptWords({{Text|1|#F580B1}} {{Cl|TO}} OptMax, {{Text|1|#F580B1}} {{Cl|TO}} {{Text|10|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'The number of words of each opt () element</nowiki>|#919191}}
{{Text|<nowiki>'  (1,1)=1 '"READ"</nowiki>|#919191}}
{{Text|<nowiki>'  (1,2)=1 '"WRITE"</nowiki>|#919191}}
{{Text|<nowiki>'  (1,3)=2 '"READ WRITE"</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} T({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'The type of the entry</nowiki>|#919191}}
{{Text|<nowiki>'  t is 0 for ? opts</nowiki>|#919191}}
{{Text|<nowiki>'  ---------- 0 means ? , 1+ means a symbol or {}block ----------</nowiki>|#919191}}
{{Text|<nowiki>'  t is 1 for symbol opts</nowiki>|#919191}}
{{Text|<nowiki>'  t is the number of rhs opt () index enteries for {READ|WRITE|READ WRITE} like opts</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} Lev({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'The indwelling level of each opt () element (the lowest is 0)</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} EntryLev({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'The level required from which this opt () can be validly be entered/checked-for</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} DitchLev({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'The lowest level recorded between the previous Opt and this Opt</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} DontPass({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'Set to 1 or 0, with 1 meaning don't pass</nowiki>|#919191}}
{{Text|<nowiki>'Determines whether the opt () entry needs to actually be passed to the C++ sub/function</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} TempList({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|REDIM}} {{Cl|SHARED}} PassRule({{Text|1|#F580B1}} {{Cl|TO}} OptMax) {{Cl|AS}} {{Cl|LONG}}
{{Text|<nowiki>'0 means no pass rule</nowiki>|#919191}}
{{Text|<nowiki>'negative values refer to an opt () element</nowiki>|#919191}}
{{Text|<nowiki>'positive values refer to a flag value</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} LevelEntered(OptMax) {{Text|<nowiki>'up to 64 levels supported</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} separgs(OptMax + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
{{Cl|REDIM}} {{Cl|SHARED}} separgslayout(OptMax + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
{{Cl|REDIM}} {{Cl|SHARED}} separgs2(OptMax + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
{{Cl|REDIM}} {{Cl|SHARED}} separgslayout2(OptMax + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} E
{{Cl|DIM}} {{Cl|SHARED}} ResolveStaticFunctions
{{Cl|REDIM}} {{Cl|SHARED}} ResolveStaticFunction_File({{Text|1|#F580B1}} {{Cl|TO}} {{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
{{Cl|REDIM}} {{Cl|SHARED}} ResolveStaticFunction_Name({{Text|1|#F580B1}} {{Cl|TO}} {{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
{{Cl|REDIM}} {{Cl|SHARED}} ResolveStaticFunction_Method({{Text|1|#F580B1}} {{Cl|TO}} {{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} Error_Happened {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} Error_Message {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} os {{Cl|AS}} {{Cl|STRING}}
os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}}
{{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"[LINUX]"</nowiki>|#FFB100}}) {{Cl|THEN}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}}
{{Cl|DIM}} {{Cl|SHARED}} MacOSX {{Cl|AS}} {{Cl|LONG}}
{{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"[MACOSX]"</nowiki>|#FFB100}}) {{Cl|THEN}} MacOSX = {{Text|1|#F580B1}}
{{Cl|DIM}} {{Cl|SHARED}} inline_DATA
{{Cl|IF}} MacOSX {{Cl|THEN}} inline_DATA = {{Text|1|#F580B1}}
{{Cl|DIM}} {{Cl|SHARED}} BATCHFILE_EXTENSION {{Cl|AS}} {{Cl|STRING}}
BATCHFILE_EXTENSION = {{Text|<nowiki>".bat"</nowiki>|#FFB100}}
{{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}} BATCHFILE_EXTENSION = {{Text|<nowiki>".sh"</nowiki>|#FFB100}}
{{Cl|IF}} MacOSX {{Cl|THEN}} BATCHFILE_EXTENSION = {{Text|<nowiki>".command"</nowiki>|#FFB100}}
{{Cl|DIM}} inlinedatastr({{Text|255|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
{{Cl|FOR}} i = {{Text|0|#F580B1}} {{Cl|TO}} {{Text|255|#F580B1}}
    inlinedatastr(i) = {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>","</nowiki>|#FFB100}}
{{Cl|NEXT}}
{{Cl|DIM}} {{Cl|SHARED}} extension {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} path.exe$, path.source$, lastBinaryGenerated$
extension$ = {{Text|<nowiki>".exe"</nowiki>|#FFB100}}
{{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}} extension$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'no extension under Linux</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} pathsep {{Cl|AS}} {{Cl|STRING}} * {{Text|1|#F580B1}}
pathsep$ = {{Text|<nowiki>"\"</nowiki>|#FFB100}}
{{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}} pathsep$ = {{Text|<nowiki>"/"</nowiki>|#FFB100}}
{{Text|<nowiki>'note: QB64 handles OS specific path separators automatically except under SHELL calls</nowiki>|#919191}}
{{Cl|ON ERROR}} {{Cl|GOTO}} qberror_test
{{Cl|DIM}} {{Cl|SHARED}} tmpdir {{Cl|AS}} {{Cl|STRING}}, tmpdir2 {{Cl|AS}} {{Cl|STRING}}
{{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}} tmpdir$ = {{Text|<nowiki>".\internal\temp\"</nowiki>|#FFB100}}: tmpdir2$ = {{Text|<nowiki>"..\\temp\\"</nowiki>|#FFB100}}
{{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}} tmpdir$ = {{Text|<nowiki>"./internal/temp/"</nowiki>|#FFB100}}: tmpdir2$ = {{Text|<nowiki>"../temp/"</nowiki>|#FFB100}}
{{Cl|IF}} {{Cl|NOT}} {{Cl|_DIREXISTS}}(tmpdir$) {{Cl|THEN}} {{Cl|MKDIR}} tmpdir$
{{Cl|DECLARE LIBRARY}}
    {{Cl|FUNCTION}} {{Text|getpid&|#55FF55}} ()
{{Cl|END DECLARE}}
thisinstancepid = {{Text|getpid&|#55FF55}}
{{Cl|DIM}} {{Cl|SHARED}} tempfolderindex
{{Cl|IF}} {{Cl|INSTR}}({{Cl|_OS$}}, {{Text|<nowiki>"LINUX"</nowiki>|#FFB100}}) {{Cl|THEN}}
    fh = {{Cl|FREEFILE}}
    {{Cl|OPEN}} {{Text|<nowiki>".\internal\temp\tempfoldersearch.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|RANDOM}} {{Cl|OPEN|AS}} #fh {{Cl|OPEN|LEN}} = {{Cl|OPEN|LEN}}(tempfolderindex)
    tempfolderrecords = {{Cl|LOF}}(fh) / {{Cl|LEN}}(tempfolderindex)
    i = {{Text|1|#F580B1}}
    {{Cl|IF}} tempfolderrecords = {{Text|0|#F580B1}} {{Cl|THEN}}
        {{Text|<nowiki>'first run ever?</nowiki>|#919191}}
        {{Cl|PUT}} #fh, {{Text|1|#F580B1}}, thisinstancepid
    {{Cl|ELSE}}
        {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} tempfolderrecords
            {{Text|<nowiki>'check if any of the temp folders is being used = pid still active</nowiki>|#919191}}
            {{Cl|GET}} #fh, i, tempfoldersearch
            {{Cl|SHELL}} {{Cl|_HIDE}} {{Text|<nowiki>"ps -p "</nowiki>|#FFB100}} + {{Cl|STR$}}(tempfoldersearch) + {{Text|<nowiki>" > /dev/null 2>&1; echo $? > internal/temp/checkpid.bin"</nowiki>|#FFB100}}
            fh2 = {{Cl|FREEFILE}}
            {{Cl|OPEN}} {{Text|<nowiki>"internal/temp/checkpid.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|BINARY}} {{Cl|OPEN|AS}} #fh2
            {{Cl|LINE INPUT (file statement)|LINE INPUT}} #fh2, checkpid$
            {{Cl|CLOSE}} #fh2
            {{Cl|IF}} {{Cl|VAL}}(checkpid$) = {{Text|1|#F580B1}} {{Cl|THEN}}
                {{Text|<nowiki>'This temp folder was locked by an instance that's no longer active, so</nowiki>|#919191}}
                {{Text|<nowiki>'this will be our temp folder</nowiki>|#919191}}
                {{Cl|PUT}} #fh, i, thisinstancepid
                {{Cl|EXIT FOR}}
            {{Cl|END IF}}
        {{Cl|NEXT}}
        {{Cl|IF}} i > tempfolderrecords {{Cl|THEN}}
            {{Text|<nowiki>'All indexes were busy. Let's initiate a new one:</nowiki>|#919191}}
            {{Cl|PUT}} #fh, i, thisinstancepid
        {{Cl|END IF}}
    {{Cl|END IF}}
    {{Cl|CLOSE}} #fh
    {{Cl|IF}} i > {{Text|1|#F580B1}} {{Cl|THEN}}
        tmpdir$ = {{Text|<nowiki>"./internal/temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"/"</nowiki>|#FFB100}}: tmpdir2$ = {{Text|<nowiki>"../temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"/"</nowiki>|#FFB100}}
        {{Cl|IF}} {{Cl|_DIREXISTS}}(tmpdir$) = {{Text|0|#F580B1}} {{Cl|THEN}}
            {{Cl|MKDIR}} tmpdir$
        {{Cl|END IF}}
    {{Cl|END IF}}
    {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"temp.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|LOCK}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|WRITE}} {{Cl|OPEN|AS}} #26
{{Cl|ELSE}}
    {{Cl|ON ERROR}} {{Cl|GOTO}} qberror_test
    E = {{Text|0|#F580B1}}
    i = {{Text|1|#F580B1}}
    {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"temp.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|LOCK}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|WRITE}} {{Cl|OPEN|AS}} #26
    {{Cl|DO...LOOP|DO WHILE}} E
        i = i + {{Text|1|#F580B1}}
        {{Cl|IF}} i = {{Text|1000|#F580B1}} {{Cl|THEN}} {{Cl|PRINT}} {{Text|<nowiki>"Unable to locate the 'internal' folder"</nowiki>|#FFB100}}: {{Cl|END}} {{Text|1|#F580B1}}
        {{Cl|MKDIR}} {{Text|<nowiki>".\internal\temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i)
        {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}} tmpdir$ = {{Text|<nowiki>".\internal\temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"\"</nowiki>|#FFB100}}: tmpdir2$ = {{Text|<nowiki>"..\\temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"\\"</nowiki>|#FFB100}}
        {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}} tmpdir$ = {{Text|<nowiki>"./internal/temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"/"</nowiki>|#FFB100}}: tmpdir2$ = {{Text|<nowiki>"../temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"/"</nowiki>|#FFB100}}
        E = {{Text|0|#F580B1}}
        {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"temp.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|LOCK}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|WRITE}} {{Cl|OPEN|AS}} #26
    {{Cl|LOOP}}
{{Cl|END IF}}
{{Text|<nowiki>'temp folder established</nowiki>|#919191}}
tempfolderindex = i
{{Cl|IF}} i > {{Text|1|#F580B1}} {{Cl|THEN}}
    {{Text|<nowiki>'create modified version of qbx.cpp</nowiki>|#919191}}
    {{Cl|OPEN}} {{Text|<nowiki>".\internal\c\qbx"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>".cpp"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN|AS}} #2
    {{Cl|OPEN}} {{Text|<nowiki>".\internal\c\qbx.cpp"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|BINARY}} {{Cl|OPEN|AS}} #1
    {{Cl|DO...LOOP|DO UNTIL}} {{Cl|EOF}}({{Text|1|#F580B1}})
        {{Cl|LINE INPUT (file statement)|LINE INPUT}} #1, a$
        x = {{Cl|INSTR}}(a$, {{Text|<nowiki>"..\\temp\\"</nowiki>|#FFB100}}): {{Cl|IF}} x {{Cl|THEN}} a$ = {{Cl|LEFT$}}(a$, x - {{Text|1|#F580B1}}) + {{Text|<nowiki>"..\\temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"\\"</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(a$, {{Cl|LEN}}(a$) - (x + {{Text|9|#F580B1}}))
        x = {{Cl|INSTR}}(a$, {{Text|<nowiki>"../temp/"</nowiki>|#FFB100}}): {{Cl|IF}} x {{Cl|THEN}} a$ = {{Cl|LEFT$}}(a$, x - {{Text|1|#F580B1}}) + {{Text|<nowiki>"../temp"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>"/"</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(a$, {{Cl|LEN}}(a$) - (x + {{Text|7|#F580B1}}))
        {{Cl|PRINT (file statement)|PRINT}} #2, a$
    {{Cl|LOOP}}
    {{Cl|CLOSE}} #1, #2
{{Cl|END IF}}
{{Cl|IF}} Debug {{Cl|THEN}} {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"debug.txt"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN|AS}} #9
{{Cl|ON ERROR}} {{Cl|GOTO}} qberror
{{Cl|DIM}} {{Cl|SHARED}} tempfolderindexstr {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'appended to "Untitled"</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} tempfolderindexstr2 {{Cl|AS}} {{Cl|STRING}}
{{Cl|IF}} tempfolderindex <> {{Text|1|#F580B1}} {{Cl|THEN}} tempfolderindexstr$ = {{Text|<nowiki>"("</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(tempfolderindex) + {{Text|<nowiki>")"</nowiki>|#FFB100}}: tempfolderindexstr2$ = {{Text|str2$|#55FF55}}(tempfolderindex)
{{Cl|DIM}} {{Cl|SHARED}} idedebuginfo
{{Cl|DIM}} {{Cl|SHARED}} seperateargs_error
{{Cl|DIM}} {{Cl|SHARED}} seperateargs_error_message {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} compfailed
{{Cl|DIM}} {{Cl|SHARED}} reginternalsubfunc
{{Cl|DIM}} {{Cl|SHARED}} reginternalvariable
{{Cl|DIM}} {{Cl|SHARED}} symboltype_size
symboltype_size = {{Text|0|#F580B1}}
{{Cl|DIM}} {{Cl|SHARED}} use_global_byte_elements
use_global_byte_elements = {{Text|0|#F580B1}}
{{Text|<nowiki>'compiler-side IDE data & definitions</nowiki>|#919191}}
{{Text|<nowiki>'SHARED variables "passed" to/from the compiler & IDE</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} idecommand {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'a 1 byte message-type code, followed by optional string data</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} idereturn {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'used to pass formatted-lines and return information back to the IDE</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} ideerror {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} idecompiled {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} idemode {{Text|<nowiki>'1 if using the IDE to compile</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} ideerrorline {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'set by qb64-error(...) to the line number it would have reported, this number</nowiki>|#919191}}
{{Text|<nowiki>'is later passed to the ide in message #8</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} idemessage {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'set by qb64-error(...) to the error message to be reported, this</nowiki>|#919191}}
{{Text|<nowiki>'is later passed to the ide in message #8</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} optionexplicit {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|DIM}} {{Cl|SHARED}} optionexplicitarray {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|DIM}} {{Cl|SHARED}} optionexplicit_cmd {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|DIM}} {{Cl|SHARED}} ideStartAtLine {{Cl|AS}} {{Cl|LONG}}, errorLineInInclude {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} warningInInclude {{Cl|AS}} {{Cl|LONG}}, warningInIncludeLine {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} outputfile_cmd$
{{Cl|DIM}} {{Cl|SHARED}} compilelog$
{{Text|<nowiki>'</nowiki>|#919191}}{{Cm|$INCLUDE}}:{{Text|<nowiki>'global\IDEsettings.bas'</nowiki>|#919191}}
{{Cl|DIM}} OutputIsRelativeToStartDir {{Cl|AS}} {{Cl|LONG}}
CMDLineFile = {{Text|ParseCMDLineArgs$|#55FF55}}
{{Cl|IF}} CMDLineFile <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} {{Cl|_FILEEXISTS}}({{Cl|_STARTDIR$}} + {{Text|<nowiki>"/"</nowiki>|#FFB100}} + CMDLineFile) {{Cl|THEN}}
    CMDLineFile = {{Cl|_STARTDIR$}} + {{Text|<nowiki>"/"</nowiki>|#FFB100}} + CMDLineFile
    OutputIsRelativeToStartDir = {{Text|-1|#F580B1}}
{{Cl|END IF}}
{{Cl|IF}} ConsoleMode {{Cl|THEN}}
    {{Cl|_DEST}} {{Cl|_CONSOLE}}
{{Cl|ELSE}}
    {{Cl|_CONSOLE}} {{Cl|OFF}}
    {{Cl|_SCREENSHOW}}
    {{Cl|_ICON}}
{{Cl|END IF}}
{{Text|<nowiki>'the function ?=ide(?) should always be passed 0, it returns a message code number, any further information</nowiki>|#919191}}
{{Text|<nowiki>'is passed back in idereturn</nowiki>|#919191}}
{{Text|<nowiki>'message code numbers:</nowiki>|#919191}}
{{Text|<nowiki>'0  no ide present  (auto defined array ide() return 0)</nowiki>|#919191}}
{{Text|<nowiki>'1  launch ide & with passed filename (compiler->ide)</nowiki>|#919191}}
{{Text|<nowiki>'2  begin new compilation with returned line of code (compiler<-ide)</nowiki>|#919191}}
{{Text|<nowiki>'  [2][line of code]</nowiki>|#919191}}
{{Text|<nowiki>'3  request next line (compiler->ide)</nowiki>|#919191}}
{{Text|<nowiki>'  [3]</nowiki>|#919191}}
{{Text|<nowiki>'4  next line of code returned (compiler<-ide)</nowiki>|#919191}}
{{Text|<nowiki>'  [4][line of code]</nowiki>|#919191}}
{{Text|<nowiki>'5  no more lines of code exist (compiler<-ide)</nowiki>|#919191}}
{{Text|<nowiki>'  [5]</nowiki>|#919191}}
{{Text|<nowiki>'6  code is OK/ready (compiler->ide)</nowiki>|#919191}}
{{Text|<nowiki>'  [6]</nowiki>|#919191}}
{{Text|<nowiki>'7  repass the code from the beginning (compiler->ide)</nowiki>|#919191}}
{{Text|<nowiki>'  [7]</nowiki>|#919191}}
{{Text|<nowiki>'8  an error has occurred with 'this' message on 'this' line(compiler->ide)</nowiki>|#919191}}
{{Text|<nowiki>'  [8][error message][line as LONG]</nowiki>|#919191}}
{{Text|<nowiki>'9  C++ compile (if necessary) and run with 'this' name (compiler<-ide)</nowiki>|#919191}}
{{Text|<nowiki>'  [9][name(no path, no .bas)]</nowiki>|#919191}}
{{Text|<nowiki>'10 The line requires more time to process</nowiki>|#919191}}
{{Text|<nowiki>'      Pass-back 'line of code' using method [4] when ready</nowiki>|#919191}}
{{Text|<nowiki>'  [10][line of code]</nowiki>|#919191}}
{{Text|<nowiki>'11 ".EXE file created" message</nowiki>|#919191}}
{{Text|<nowiki>'12    The name of the exe I'll create is '...' (compiler->ide)</nowiki>|#919191}}
{{Text|<nowiki>'  [12][exe name without .exe]</nowiki>|#919191}}
{{Text|<nowiki>'255    A qb error happened in the IDE (compiler->ide)</nowiki>|#919191}}
{{Text|<nowiki>'  note: detected by the fact that ideerror was not set to 0</nowiki>|#919191}}
{{Text|<nowiki>'  [255]</nowiki>|#919191}}
{{Text|<nowiki>'hash table data</nowiki>|#919191}}
{{Cl|TYPE}} HashListItem
    Flags {{Cl|AS}} {{Cl|LONG}}
    Reference {{Cl|AS}} {{Cl|LONG}}
    NextItem {{Cl|AS}} {{Cl|LONG}}
    PrevItem {{Cl|AS}} {{Cl|LONG}}
    LastItem {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'note: this value is only valid on the first item in the list</nowiki>|#919191}}
    {{Text|<nowiki>'note: name is stored in a seperate array of strings</nowiki>|#919191}}
{{Cl|END TYPE}}
{{Cl|DIM}} {{Cl|SHARED}} HashFind_NextListItem {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} HashFind_Reverse {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} HashFind_SearchFlags {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} HashFind_Name {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} HashRemove_LastFound {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} HashListSize {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} HashListNext {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} HashListFreeSize {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} HashListFreeLast {{Cl|AS}} {{Cl|LONG}}
{{Text|<nowiki>'hash lookup tables</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} hash1char({{Text|255|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} hash2char({{Text|65535|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|FOR}} x = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|26|#F580B1}}
    hash1char({{Text|64|#F580B1}} + x) = x
    hash1char({{Text|96|#F580B1}} + x) = x
{{Cl|NEXT}}
hash1char({{Text|95|#F580B1}}) = {{Text|27|#F580B1}} {{Text|<nowiki>'_</nowiki>|#919191}}
hash1char({{Text|48|#F580B1}}) = {{Text|28|#F580B1}} {{Text|<nowiki>'0</nowiki>|#919191}}
hash1char({{Text|49|#F580B1}}) = {{Text|29|#F580B1}} {{Text|<nowiki>'1</nowiki>|#919191}}
hash1char({{Text|50|#F580B1}}) = {{Text|30|#F580B1}} {{Text|<nowiki>'2</nowiki>|#919191}}
hash1char({{Text|51|#F580B1}}) = {{Text|31|#F580B1}} {{Text|<nowiki>'3</nowiki>|#919191}}
hash1char({{Text|52|#F580B1}}) = {{Text|23|#F580B1}} {{Text|<nowiki>'4 'note: x, y, z and beginning alphabet letters avoided because of common usage (eg. a2, y3)</nowiki>|#919191}}
hash1char({{Text|53|#F580B1}}) = {{Text|22|#F580B1}} {{Text|<nowiki>'5</nowiki>|#919191}}
hash1char({{Text|54|#F580B1}}) = {{Text|20|#F580B1}} {{Text|<nowiki>'6</nowiki>|#919191}}
hash1char({{Text|55|#F580B1}}) = {{Text|19|#F580B1}} {{Text|<nowiki>'7</nowiki>|#919191}}
hash1char({{Text|56|#F580B1}}) = {{Text|18|#F580B1}} {{Text|<nowiki>'8</nowiki>|#919191}}
hash1char({{Text|57|#F580B1}}) = {{Text|17|#F580B1}} {{Text|<nowiki>'9</nowiki>|#919191}}
{{Cl|FOR}} c1 = {{Text|0|#F580B1}} {{Cl|TO}} {{Text|255|#F580B1}}
    {{Cl|FOR}} c2 = {{Text|0|#F580B1}} {{Cl|TO}} {{Text|255|#F580B1}}
        hash2char(c1 + c2 * {{Text|256|#F580B1}}) = hash1char(c1) + hash1char(c2) * {{Text|32|#F580B1}}
    {{Cl|NEXT}}
{{Cl|NEXT}}
{{Text|<nowiki>'init</nowiki>|#919191}}
HashListSize = {{Text|65536|#F580B1}}
HashListNext = {{Text|1|#F580B1}}
HashListFreeSize = {{Text|1024|#F580B1}}
HashListFreeLast = {{Text|0|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} HashList({{Text|1|#F580B1}} {{Cl|TO}} HashListSize) {{Cl|AS}} HashListItem
{{Cl|REDIM}} {{Cl|SHARED}} HashListName({{Text|1|#F580B1}} {{Cl|TO}} HashListSize) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} HashListFree({{Text|1|#F580B1}} {{Cl|TO}} HashListFreeSize) {{Cl|AS}} {{Cl|LONG}}
{{Cl|REDIM}} {{Cl|SHARED}} HashTable({{Text|16777215|#F580B1}}) {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'64MB lookup table with indexes to the hashlist</nowiki>|#919191}}
{{Cl|CONST}} HASHFLAG_LABEL = {{Text|2|#F580B1}}
{{Cl|CONST}} HASHFLAG_TYPE = {{Text|4|#F580B1}}
{{Cl|CONST}} HASHFLAG_RESERVED = {{Text|8|#F580B1}}
{{Cl|CONST}} HASHFLAG_OPERATOR = {{Text|16|#F580B1}}
{{Cl|CONST}} HASHFLAG_CUSTOMSYNTAX = {{Text|32|#F580B1}}
{{Cl|CONST}} HASHFLAG_SUB = {{Text|64|#F580B1}}
{{Cl|CONST}} HASHFLAG_FUNCTION = {{Text|128|#F580B1}}
{{Cl|CONST}} HASHFLAG_UDT = {{Text|256|#F580B1}}
{{Cl|CONST}} HASHFLAG_UDTELEMENT = {{Text|512|#F580B1}}
{{Cl|CONST}} HASHFLAG_CONSTANT = {{Text|1024|#F580B1}}
{{Cl|CONST}} HASHFLAG_VARIABLE = {{Text|2048|#F580B1}}
{{Cl|CONST}} HASHFLAG_ARRAY = {{Text|4096|#F580B1}}
{{Cl|CONST}} HASHFLAG_XELEMENTNAME = {{Text|8192|#F580B1}}
{{Cl|CONST}} HASHFLAG_XTYPENAME = {{Text|16384|#F580B1}}
{{Cl|TYPE}} Label_Type
    State {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|_BYTE}} {{Text|<nowiki>'0=label referenced, 1=label created</nowiki>|#919191}}
    cn {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
    {{Text|Scope|#55FF55}} {{Cl|AS}} {{Cl|LONG}}
    Data_Offset {{Cl|AS}} {{Cl|_INTEGER64}} {{Text|<nowiki>'offset within data</nowiki>|#919191}}
    Data_Referenced {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|_BYTE}} {{Text|<nowiki>'set to 1 if data is referenced (data_offset will be used to create the data offset variable)</nowiki>|#919191}}
    Error_Line {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'the line number to reference on errors</nowiki>|#919191}}
    Scope_Restriction {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'cannot exist inside this scope (post checked)</nowiki>|#919191}}
    SourceLineNumber {{Cl|AS}} {{Cl|LONG}}
{{Cl|END TYPE}}
{{Cl|DIM}} {{Cl|SHARED}} nLabels, Labels_Ubound
Labels_Ubound = {{Text|100|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} Labels({{Text|1|#F580B1}} {{Cl|TO}} Labels_Ubound) {{Cl|AS}} Label_Type
{{Cl|DIM}} {{Cl|SHARED}} Empty_Label {{Cl|AS}} Label_Type
{{Cl|DIM}} {{Cl|SHARED}} PossibleSubNameLabels {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'format: name+sp+name+sp+name <-ucase$'d</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} SubNameLabels {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'format: name+sp+name+sp+name <-ucase$'d</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} CreatingLabel {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} AllowLocalName {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} DataOffset
{{Cl|DIM}} {{Cl|SHARED}} prepass
{{Cl|DIM}} {{Cl|SHARED}} autoarray
{{Cl|DIM}} {{Cl|SHARED}} ontimerid, onkeyid, onstrigid
{{Cl|DIM}} {{Cl|SHARED}} revertmaymusthave({{Text|1|#F580B1}} {{Cl|TO}} {{Text|10000|#F580B1}})
{{Cl|DIM}} {{Cl|SHARED}} revertmaymusthaven
{{Cl|DIM}} {{Cl|SHARED}} linecontinuation
{{Cl|DIM}} {{Cl|SHARED}} dim2typepassback {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'passes back correct case sensitive version of type</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} inclevel
{{Cl|DIM}} {{Cl|SHARED}} incname({{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'must be full path as given</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} inclinenumber({{Text|100|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} incerror {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} fix046 {{Cl|AS}} {{Cl|STRING}}
fix046$ = {{Text|<nowiki>"__"</nowiki>|#FFB100}} + {{Text|<nowiki>"ASCII"</nowiki>|#FFB100}} + {{Text|<nowiki>"_"</nowiki>|#FFB100}} + {{Text|<nowiki>"CHR"</nowiki>|#FFB100}} + {{Text|<nowiki>"_"</nowiki>|#FFB100}} + {{Text|<nowiki>"046"</nowiki>|#FFB100}} + {{Text|<nowiki>"__"</nowiki>|#FFB100}} {{Text|<nowiki>'broken up to avoid detection for layout reversion</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} layout {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'passed to IDE</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} layoutok {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'tracks status of entire line</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} layoutcomment {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} tlayout {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'temporary layout string set by supporting functions</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} layoutdone {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'tracks status of single command</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} fooindwel
{{Cl|DIM}} {{Cl|SHARED}} alphanumeric({{Text|255|#F580B1}})
{{Cl|FOR}} i = {{Text|48|#F580B1}} {{Cl|TO}} {{Text|57|#F580B1}}
    alphanumeric(i) = {{Text|-1|#F580B1}}
{{Cl|NEXT}}
{{Cl|FOR}} i = {{Text|65|#F580B1}} {{Cl|TO}} {{Text|90|#F580B1}}
    alphanumeric(i) = {{Text|-1|#F580B1}}
{{Cl|NEXT}}
{{Cl|FOR}} i = {{Text|97|#F580B1}} {{Cl|TO}} {{Text|122|#F580B1}}
    alphanumeric(i) = {{Text|-1|#F580B1}}
{{Cl|NEXT}}
{{Text|<nowiki>'_ is treated as an alphabet letter</nowiki>|#919191}}
alphanumeric({{Text|95|#F580B1}}) = {{Text|-1|#F580B1}}
{{Cl|DIM}} {{Cl|SHARED}} isalpha({{Text|255|#F580B1}})
{{Cl|FOR}} i = {{Text|65|#F580B1}} {{Cl|TO}} {{Text|90|#F580B1}}
    isalpha(i) = {{Text|-1|#F580B1}}
{{Cl|NEXT}}
{{Cl|FOR}} i = {{Text|97|#F580B1}} {{Cl|TO}} {{Text|122|#F580B1}}
    isalpha(i) = {{Text|-1|#F580B1}}
{{Cl|NEXT}}
{{Text|<nowiki>'_ is treated as an alphabet letter</nowiki>|#919191}}
isalpha({{Text|95|#F580B1}}) = {{Text|-1|#F580B1}}
{{Cl|DIM}} {{Cl|SHARED}} isnumeric({{Text|255|#F580B1}})
{{Cl|FOR}} i = {{Text|48|#F580B1}} {{Cl|TO}} {{Text|57|#F580B1}}
    isnumeric(i) = {{Text|-1|#F580B1}}
{{Cl|NEXT}}
{{Cl|DIM}} {{Cl|SHARED}} lfsinglechar({{Text|255|#F580B1}})
lfsinglechar({{Text|40|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'(</nowiki>|#919191}}
lfsinglechar({{Text|41|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>')</nowiki>|#919191}}
lfsinglechar({{Text|42|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'*</nowiki>|#919191}}
lfsinglechar({{Text|43|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'+</nowiki>|#919191}}
lfsinglechar({{Text|45|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'-</nowiki>|#919191}}
lfsinglechar({{Text|47|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'/</nowiki>|#919191}}
lfsinglechar({{Text|60|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'<</nowiki>|#919191}}
lfsinglechar({{Text|61|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'=</nowiki>|#919191}}
lfsinglechar({{Text|62|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'></nowiki>|#919191}}
lfsinglechar({{Text|92|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'\</nowiki>|#919191}}
lfsinglechar({{Text|94|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'^</nowiki>|#919191}}
lfsinglechar({{Text|44|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>',</nowiki>|#919191}}
lfsinglechar({{Text|46|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'.</nowiki>|#919191}}
lfsinglechar({{Text|58|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>':</nowiki>|#919191}}
lfsinglechar({{Text|59|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>';</nowiki>|#919191}}
lfsinglechar({{Text|35|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'# (file no only)</nowiki>|#919191}}
lfsinglechar({{Text|36|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'$ (metacommand only)</nowiki>|#919191}}
lfsinglechar({{Text|63|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'? (print macro)</nowiki>|#919191}}
lfsinglechar({{Text|95|#F580B1}}) = {{Text|1|#F580B1}} {{Text|<nowiki>'_</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} nextrunlineindex {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} lineinput3buffer {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} lineinput3index {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} dimstatic {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} staticarraylist {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} staticarraylistn {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} commonarraylist {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} commonarraylistn {{Cl|AS}} {{Cl|LONG}}
{{Text|<nowiki>'CONST support</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} constmax {{Cl|AS}} {{Cl|LONG}}
constmax = {{Text|100|#F580B1}}
{{Cl|DIM}} {{Cl|SHARED}} constlast {{Cl|AS}} {{Cl|LONG}}
constlast = {{Text|-1|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} constname(constmax) {{Cl|AS}} {{Cl|STRING}}
{{Cl|REDIM}} {{Cl|SHARED}} constcname(constmax) {{Cl|AS}} {{Cl|STRING}}
{{Cl|REDIM}} {{Cl|SHARED}} constnamesymbol(constmax) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'optional name symbol</nowiki>|#919191}}
{{Text|<nowiki>' `1 and `no-number must be handled correctly</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED constlastshared AS LONG 'so any defined inside a sub/function after this index can be "forgotten" when sub/function exits</nowiki>|#919191}}
{{Text|<nowiki>'constlastshared = -1</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} consttype(constmax) {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'variable type number</nowiki>|#919191}}
{{Text|<nowiki>'consttype determines storage</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} constinteger(constmax) {{Cl|AS}} {{Cl|_INTEGER64}}
{{Cl|REDIM}} {{Cl|SHARED}} constuinteger(constmax) {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|_INTEGER64}}
{{Cl|REDIM}} {{Cl|SHARED}} constfloat(constmax) {{Cl|AS}} {{Cl|_FLOAT}}
{{Cl|REDIM}} {{Cl|SHARED}} conststring(constmax) {{Cl|AS}} {{Cl|STRING}}
{{Cl|REDIM}} {{Cl|SHARED}} constsubfunc(constmax) {{Cl|AS}} {{Cl|LONG}}
{{Cl|REDIM}} {{Cl|SHARED}} constdefined(constmax) {{Cl|AS}} {{Cl|LONG}}
{{Text|<nowiki>'UDT</nowiki>|#919191}}
{{Text|<nowiki>'names</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} lasttype {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} lasttypeelement {{Cl|AS}} {{Cl|LONG}}
{{Cl|TYPE}} idstruct
    n {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}} {{Text|<nowiki>'name</nowiki>|#919191}}
    cn {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}} {{Text|<nowiki>'case sensitive version of n</nowiki>|#919191}}
    arraytype {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'similar to t</nowiki>|#919191}}
    arrayelements {{Cl|AS}} {{Cl|INTEGER}}
    staticarray {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'set for arrays declared in the main module with static elements</nowiki>|#919191}}
    mayhave {{Cl|AS}} {{Cl|STRING}} * {{Text|8|#F580B1}} {{Text|<nowiki>'mayhave and musthave are exclusive of each other</nowiki>|#919191}}
    musthave {{Cl|AS}} {{Cl|STRING}} * {{Text|8|#F580B1}}
    t {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'type</nowiki>|#919191}}
    tsize {{Cl|AS}} {{Cl|LONG}}
    subfunc {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'if function=1, sub=2 (max 100 arguments)</nowiki>|#919191}}
    Dependency {{Cl|AS}} {{Cl|INTEGER}}
    internal_subfunc {{Cl|AS}} {{Cl|INTEGER}}
    callname {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
    ccall {{Cl|AS}} {{Cl|INTEGER}}
    overloaded {{Cl|AS}} {{Cl|_BYTE}}
    args {{Cl|AS}} {{Cl|INTEGER}}
    minargs {{Cl|AS}} {{Cl|INTEGER}}
    arg {{Cl|AS}} {{Cl|STRING}} * {{Text|400|#F580B1}} {{Text|<nowiki>'similar to t</nowiki>|#919191}}
    argsize {{Cl|AS}} {{Cl|STRING}} * {{Text|400|#F580B1}} {{Text|<nowiki>'similar to tsize (used for fixed length strings)</nowiki>|#919191}}
    specialformat {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
    secondargmustbe {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
    secondargcantbe {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
    ret {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'the value it returns if it is a function (again like t)</nowiki>|#919191}}
    insubfunc {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
    insubfuncn {{Cl|AS}} {{Cl|LONG}}
    share {{Cl|AS}} {{Cl|INTEGER}}
    nele {{Cl|AS}} {{Cl|STRING}} * {{Text|100|#F580B1}}
    nelereq {{Cl|AS}} {{Cl|STRING}} * {{Text|100|#F580B1}}
    linkid {{Cl|AS}} {{Cl|LONG}}
    linkarg {{Cl|AS}} {{Cl|INTEGER}}
    staticscope {{Cl|AS}} {{Cl|INTEGER}}
    {{Text|<nowiki>'For variables which are arguments passed to a sub/function</nowiki>|#919191}}
    sfid {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'id number of variable's parent sub/function</nowiki>|#919191}}
    sfarg {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'argument/parameter # within call (1=first)</nowiki>|#919191}}
    hr_syntax {{Cl|AS}} {{Cl|STRING}}
{{Cl|END TYPE}}
{{Cl|DIM}} {{Cl|SHARED}} id {{Cl|AS}} idstruct
{{Cl|DIM}} {{Cl|SHARED}} idn {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ids_max {{Cl|AS}} {{Cl|LONG}}
ids_max = {{Text|1024|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} ids({{Text|1|#F580B1}} {{Cl|TO}} ids_max) {{Cl|AS}} idstruct
{{Cl|REDIM}} {{Cl|SHARED}} cmemlist({{Text|1|#F580B1}} {{Cl|TO}} ids_max + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'variables that must be in cmem</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} sfcmemargs({{Text|1|#F580B1}} {{Cl|TO}} ids_max + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|100|#F580B1}} {{Text|<nowiki>'s/f arg that must be in cmem</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} arrayelementslist({{Text|1|#F580B1}} {{Cl|TO}} ids_max + {{Text|1|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'arrayelementslist (like cmemlist) helps to resolve the number of elements in arrays with an unknown number of elements. Note: arrays with an unknown number of elements have .arrayelements=-1</nowiki>|#919191}}
{{Text|<nowiki>'create blank id template for idclear to copy (stops strings being set to chr$(0))</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} cleariddata {{Cl|AS}} idstruct
cleariddata.cn = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.n = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.mayhave = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.musthave = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.callname = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.arg = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.argsize = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.specialformat = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.secondargmustbe = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.secondargcantbe = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.insubfunc = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.nele = {{Text|<nowiki>""</nowiki>|#FFB100}}
cleariddata.nelereq = {{Text|<nowiki>""</nowiki>|#FFB100}}
{{Cl|DIM}} {{Cl|SHARED}} ISSTRING {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ISFLOAT {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ISUNSIGNED {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ISPOINTER {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ISFIXEDLENGTH {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ISINCONVENTIONALMEMORY {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ISOFFSETINBITS {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ISARRAY {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ISREFERENCE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ISUDT {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ISOFFSET {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} STRINGTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} BITTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} UBITTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} BYTETYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} UBYTETYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} INTEGERTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} UINTEGERTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} LONGTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} ULONGTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} INTEGER64TYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} UINTEGER64TYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} SINGLETYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} DOUBLETYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} FLOATTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} OFFSETTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} UOFFSETTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} UDTTYPE {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} gosubid {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} redimoption {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} dimoption {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} arraydesc {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} qberrorhappened {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} qberrorcode {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} qberrorline {{Cl|AS}} {{Cl|INTEGER}}
{{Text|<nowiki>'COMMON SHARED defineaz() AS STRING</nowiki>|#919191}}
{{Text|<nowiki>'COMMON SHARED defineextaz() AS STRING</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} sourcefile {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'the full path and filename</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} file {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'name of the file (without .bas or path)</nowiki>|#919191}}
{{Text|<nowiki>'COMMON SHARED separgs() AS STRING</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} constequation {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} DynamicMode {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} findidsecondarg {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} findanotherid {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} findidinternal {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} currentid {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'is the index of the last ID accessed</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} linenumber {{Cl|AS}} {{Cl|LONG}}, reallinenumber {{Cl|AS}} {{Cl|LONG}}, totallinenumber {{Cl|AS}} {{Cl|LONG}}, definingtypeerror {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} wholeline {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} firstLineNumberLabelvWatch {{Cl|AS}} {{Cl|LONG}}, lastLineNumberLabelvWatch {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} vWatchUsedLabels {{Cl|AS}} {{Cl|STRING}}, vWatchUsedSkipLabels {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} linefragment {{Cl|AS}} {{Cl|STRING}}
{{Text|<nowiki>'COMMON SHARED bitmask() AS _INTEGER64</nowiki>|#919191}}
{{Text|<nowiki>'COMMON SHARED bitmaskinv() AS _INTEGER64</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} arrayprocessinghappened {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} stringprocessinghappened {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} cleanupstringprocessingcall {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} inputfunctioncalled {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|DIM}} {{Cl|SHARED}} recompile {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'forces recompilation</nowiki>|#919191}}
{{Text|<nowiki>'COMMON SHARED cmemlist() AS INTEGER</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} optionbase {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} addmetastatic {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} addmetadynamic {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} addmetainclude {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} closedmain {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} module {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} subfunc {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} subfuncn {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} closedsubfunc {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|DIM}} {{Cl|SHARED}} subfuncid {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} defdatahandle {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} dimsfarray {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} dimshared {{Cl|AS}} {{Cl|INTEGER}}
{{Text|<nowiki>'Allows passing of known elements to recompilation</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} sflistn {{Cl|AS}} {{Cl|INTEGER}}
{{Text|<nowiki>'COMMON SHARED sfidlist() AS LONG</nowiki>|#919191}}
{{Text|<nowiki>'COMMON SHARED sfarglist() AS INTEGER</nowiki>|#919191}}
{{Text|<nowiki>'COMMON SHARED sfelelist() AS INTEGER</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} glinkid {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} glinkarg {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} typname2typsize {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} uniquenumbern {{Cl|AS}} {{Cl|LONG}}
{{Text|<nowiki>'CLEAR , , 16384</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} bitmask({{Text|1|#F580B1}} {{Cl|TO}} {{Text|64|#F580B1}}) {{Cl|AS}} {{Cl|_INTEGER64}}
{{Cl|DIM}} {{Cl|SHARED}} bitmaskinv({{Text|1|#F580B1}} {{Cl|TO}} {{Text|64|#F580B1}}) {{Cl|AS}} {{Cl|_INTEGER64}}
{{Cl|DIM}} {{Cl|SHARED}} defineextaz({{Text|1|#F580B1}} {{Cl|TO}} {{Text|27|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
{{Cl|DIM}} {{Cl|SHARED}} defineaz({{Text|1|#F580B1}} {{Cl|TO}} {{Text|27|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'27 is an underscore</nowiki>|#919191}}
ISSTRING = {{Text|1073741824|#F580B1}}
ISFLOAT = {{Text|536870912|#F580B1}}
ISUNSIGNED = {{Text|268435456|#F580B1}}
ISPOINTER = {{Text|134217728|#F580B1}}
ISFIXEDLENGTH = {{Text|67108864|#F580B1}} {{Text|<nowiki>'only set for strings with pointer flag</nowiki>|#919191}}
ISINCONVENTIONALMEMORY = {{Text|33554432|#F580B1}}
ISOFFSETINBITS = {{Text|16777216|#F580B1}}
ISARRAY = {{Text|8388608|#F580B1}}
ISREFERENCE = {{Text|4194304|#F580B1}}
ISUDT = {{Text|2097152|#F580B1}}
ISOFFSET = {{Text|1048576|#F580B1}}
STRINGTYPE = ISSTRING + ISPOINTER
BITTYPE = {{Text|1&|#F580B1}} + ISPOINTER + ISOFFSETINBITS
UBITTYPE = {{Text|1&|#F580B1}} + ISPOINTER + ISUNSIGNED + ISOFFSETINBITS {{Text|<nowiki>'QB64 will also support BIT*n, eg. DIM bitarray[10] AS _UNSIGNED _BIT*10</nowiki>|#919191}}
BYTETYPE = {{Text|8&|#F580B1}} + ISPOINTER
UBYTETYPE = {{Text|8&|#F580B1}} + ISPOINTER + ISUNSIGNED
INTEGERTYPE = {{Text|16&|#F580B1}} + ISPOINTER
UINTEGERTYPE = {{Text|16&|#F580B1}} + ISPOINTER + ISUNSIGNED
LONGTYPE = {{Text|32&|#F580B1}} + ISPOINTER
ULONGTYPE = {{Text|32&|#F580B1}} + ISPOINTER + ISUNSIGNED
INTEGER64TYPE = {{Text|64&|#F580B1}} + ISPOINTER
UINTEGER64TYPE = {{Text|64&|#F580B1}} + ISPOINTER + ISUNSIGNED
SINGLETYPE = {{Text|32&|#F580B1}} + ISFLOAT + ISPOINTER
DOUBLETYPE = {{Text|64&|#F580B1}} + ISFLOAT + ISPOINTER
FLOATTYPE = {{Text|256&|#F580B1}} + ISFLOAT + ISPOINTER {{Text|<nowiki>'8-32 bytes</nowiki>|#919191}}
OFFSETTYPE = {{Text|64&|#F580B1}} + ISOFFSET + ISPOINTER: {{Cl|IF}} OS_BITS = {{Text|32|#F580B1}} {{Cl|THEN}} OFFSETTYPE = {{Text|32&|#F580B1}} + ISOFFSET + ISPOINTER
UOFFSETTYPE = {{Text|64&|#F580B1}} + ISOFFSET + ISUNSIGNED + ISPOINTER: {{Cl|IF}} OS_BITS = {{Text|32|#F580B1}} {{Cl|THEN}} UOFFSETTYPE = {{Text|32&|#F580B1}} + ISOFFSET + ISUNSIGNED + ISPOINTER
UDTTYPE = ISUDT + ISPOINTER
{{Cl|DIM}} {{Cl|SHARED}} statementn {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} everycasenewcase {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} controllevel {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'0=not in a control block</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} controltype({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
{{Text|<nowiki>'1=IF (awaiting END IF)</nowiki>|#919191}}
{{Text|<nowiki>'2=FOR (awaiting NEXT)</nowiki>|#919191}}
{{Text|<nowiki>'3=DO (awaiting LOOP [UNTIL|WHILE param])</nowiki>|#919191}}
{{Text|<nowiki>'4=DO WHILE/UNTIL (awaiting LOOP)</nowiki>|#919191}}
{{Text|<nowiki>'5=WHILE (awaiting WEND)</nowiki>|#919191}}
{{Text|<nowiki>'6=$IF (precompiler)</nowiki>|#919191}}
{{Text|<nowiki>'10=SELECT CASE qbs (awaiting END SELECT/CASE)</nowiki>|#919191}}
{{Text|<nowiki>'11=SELECT CASE int64 (awaiting END SELECT/CASE)</nowiki>|#919191}}
{{Text|<nowiki>'12=SELECT CASE uint64 (awaiting END SELECT/CASE)</nowiki>|#919191}}
{{Text|<nowiki>'13=SELECT CASE LONG double (awaiting END SELECT/CASE/CASE ELSE)</nowiki>|#919191}}
{{Text|<nowiki>'14=SELECT CASE float ...</nowiki>|#919191}}
{{Text|<nowiki>'15=SELECT CASE double</nowiki>|#919191}}
{{Text|<nowiki>'16=SELECT CASE int32</nowiki>|#919191}}
{{Text|<nowiki>'17=SELECT CASE uint32</nowiki>|#919191}}
{{Text|<nowiki>'18=CASE (awaiting END SELECT/CASE/CASE ELSE)</nowiki>|#919191}}
{{Text|<nowiki>'19=CASE ELSE (awaiting END SELECT)</nowiki>|#919191}}
{{Text|<nowiki>'32=SUB/FUNCTION (awaiting END SUB/FUNCTION)</nowiki>|#919191}}
{{Cl|DIM}} controlid({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} controlvalue({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} controlstate({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} controlref({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'the line number the control was created on</nowiki>|#919191}}
{{Text|<nowiki>'</nowiki>|#919191}}
{{Text|<nowiki>' Collection of flags indicating which unstable features should be used during compilation</nowiki>|#919191}}
{{Text|<nowiki>'</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} unstableFlags({{Text|1|#F580B1}} {{Cl|TO}} {{Text|2|#F580B1}}) {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|DIM}} UNSTABLE_MIDI {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} UNSTABLE_HTTP {{Cl|AS}} {{Cl|LONG}}
UNSTABLE_MIDI = {{Text|1|#F580B1}}
UNSTABLE_HTTP = {{Text|2|#F580B1}}
{{Cl|ON ERROR}} {{Cl|GOTO}} qberror
i2&& = {{Text|1|#F580B1}}
{{Cl|FOR}} i&& = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|64|#F580B1}}
    bitmask(i&&) = i2&&
    bitmaskinv(i&&) = {{Cl|NOT}} i2&&
    i2&& = i2&& + {{Text|2|#F580B1}} ^ i&&
{{Cl|NEXT}}
{{Cl|DIM}} id2 {{Cl|AS}} idstruct
cleanupstringprocessingcall$ = {{Text|<nowiki>"qbs_cleanup(qbs_tmp_base,"</nowiki>|#FFB100}}
{{Cl|DIM}} {{Cl|SHARED}} sfidlist({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|DIM}} {{Cl|SHARED}} sfarglist({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|DIM}} {{Cl|SHARED}} sfelelist({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
{{Text|<nowiki>'----------------ripgl.bas--------------------------------------------------------------------------------</nowiki>|#919191}}
{{Text|gl_scan_header|#55FF55}}
{{Text|<nowiki>'----------------ripgl.bas--------------------------------------------------------------------------------</nowiki>|#919191}}
{{Text|<nowiki>'-----------------------QB64 COMPILER ONCE ONLY SETUP CODE ENDS HERE---------------------------------------</nowiki>|#919191}}
{{Cl|IF}} NoIDEMode {{Cl|THEN}} IDE_AutoPosition = {{Text|0|#F580B1}}: {{Cl|GOTO}} noide
{{Cl|DIM}} FileDropEnabled {{Cl|AS}} {{Cl|_BYTE}}
{{Cl|IF}} FileDropEnabled = {{Text|0|#F580B1}} {{Cl|THEN}} FileDropEnabled = {{Text|-1|#F580B1}}: {{Cl|_ACCEPTFILEDROP}}
{{Cl|IF}} IDE_AutoPosition {{Cl|AND (boolean)|AND}} {{Cl|NOT}} IDE_BypassAutoPosition {{Cl|THEN}} {{Cl|_SCREENMOVE}} IDE_LeftPosition, IDE_TopPosition
idemode = {{Text|1|#F580B1}}
sendc$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'no initial message</nowiki>|#919191}}
{{Cl|IF}} CMDLineFile <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} sendc$ = {{Cl|CHR$}}({{Text|1|#F580B1}}) + CMDLineFile
sendcommand:
idecommand$ = sendc$
C = {{Text|ide|#55FF55}}({{Text|0|#F580B1}})
ideerror = {{Text|0|#F580B1}}
{{Cl|IF}} C = {{Text|0|#F580B1}} {{Cl|THEN}} idemode = {{Text|0|#F580B1}}: {{Cl|GOTO}} noide
c$ = idereturn$
{{Cl|IF}} C = {{Text|2|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'begin</nowiki>|#919191}}
    ideerrorline = {{Text|0|#F580B1}} {{Text|<nowiki>'addresses invalid prepass error line numbers being reported</nowiki>|#919191}}
    idepass = {{Text|1|#F580B1}}
    {{Cl|GOTO}} fullrecompile
    ideret1:
    wholeline$ = c$
    {{Cl|GOTO}} ideprepass
    ideret2:
    {{Cl|IF}} lastLineReturn {{Cl|THEN}} {{Cl|GOTO}} lastLineReturn
    sendc$ = {{Cl|CHR$}}({{Text|3|#F580B1}}) {{Text|<nowiki>'request next line</nowiki>|#919191}}
    {{Cl|GOTO}} sendcommand
{{Cl|END IF}}
{{Cl|IF}} C = {{Text|4|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'next line</nowiki>|#919191}}
    {{Cl|IF}} idepass = {{Text|1|#F580B1}} {{Cl|THEN}}
        wholeline$ = c$
        {{Cl|GOTO}} ideprepass
        {{Text|<nowiki>'(returns to ideret2: above)</nowiki>|#919191}}
    {{Cl|END IF}}
    {{Text|<nowiki>'assume idepass>1</nowiki>|#919191}}
    a3$ = c$
    continuelinefrom = {{Text|0|#F580B1}}
    {{Cl|GOTO}} ide4
    ideret4:
    {{Cl|IF}} lastLineReturn {{Cl|THEN}} {{Cl|GOTO}} lastLineReturn
    sendc$ = {{Cl|CHR$}}({{Text|3|#F580B1}}) {{Text|<nowiki>'request next line</nowiki>|#919191}}
    {{Cl|GOTO}} sendcommand
{{Cl|END IF}}
{{Cl|IF}} C = {{Text|5|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'end of program reached</nowiki>|#919191}}
    lastLine = {{Text|1|#F580B1}}
    lastLineReturn = {{Text|1|#F580B1}}
    {{Cl|IF}} idepass = {{Text|1|#F580B1}} {{Cl|THEN}}
        wholeline$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
        {{Cl|GOTO}} ideprepass
        {{Text|<nowiki>'(returns to ideret2: above, then to lastLinePrepassReturn below)</nowiki>|#919191}}
    {{Cl|END IF}}
    {{Text|<nowiki>'idepass>1</nowiki>|#919191}}
    a3$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
    continuelinefrom = {{Text|0|#F580B1}}
    {{Cl|GOTO}} ide4 {{Text|<nowiki>'returns to ideret4, then to lastLinePrepassReturn below</nowiki>|#919191}}
    lastLineReturn:
    lastLineReturn = {{Text|0|#F580B1}}
    lastLine = {{Text|0|#F580B1}}
    {{Cl|IF}} idepass = {{Text|1|#F580B1}} {{Cl|THEN}}
        {{Text|<nowiki>'prepass complete</nowiki>|#919191}}
        idepass = {{Text|2|#F580B1}}
        {{Cl|GOTO}} ide3
        ideret3:
        sendc$ = {{Cl|CHR$}}({{Text|7|#F580B1}}) {{Text|<nowiki>'repass request</nowiki>|#919191}}
        firstLine = {{Text|1|#F580B1}}
        {{Cl|GOTO}} sendcommand
    {{Cl|END IF}}
    {{Text|<nowiki>'assume idepass=2</nowiki>|#919191}}
    {{Text|<nowiki>'finalize program</nowiki>|#919191}}
    {{Cl|GOTO}} ide5
    ideret5: {{Text|<nowiki>'note: won't return here if a recompile was required!</nowiki>|#919191}}
    sendc$ = {{Cl|CHR$}}({{Text|6|#F580B1}}) {{Text|<nowiki>'ready</nowiki>|#919191}}
    idecompiled = {{Text|0|#F580B1}}
    {{Cl|GOTO}} sendcommand
{{Cl|END IF}}
{{Cl|IF}} C = {{Text|9|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'run</nowiki>|#919191}}
    {{Cl|IF}} idecompiled = {{Text|0|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'exe needs to be compiled</nowiki>|#919191}}
        file$ = c$
        {{Text|<nowiki>'locate accessible file and truncate</nowiki>|#919191}}
        f$ = file$
        path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
        {{Cl|IF}} SaveExeWithSource {{Cl|THEN}}
            {{Cl|IF}} {{Cl|LEN}}(ideprogname) {{Cl|THEN}} path.exe$ = idepath$ + pathsep$
        {{Cl|END IF}}
        i = {{Text|1|#F580B1}}
        nextexeindex:
        {{Cl|IF}} {{Cl|_FILEEXISTS}}(path.exe$ + file$ + extension$) {{Cl|THEN}}
            E = {{Text|0|#F580B1}}
            {{Cl|ON ERROR}} {{Cl|GOTO}} qberror_test
            {{Cl|KILL}} path.exe$ + file$ + extension$
            {{Cl|ON ERROR}} {{Cl|GOTO}} qberror
            {{Cl|IF}} E = {{Text|1|#F580B1}} {{Cl|THEN}}
                i = i + {{Text|1|#F580B1}}
                file$ = f$ + {{Text|<nowiki>"("</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(i) + {{Text|<nowiki>")"</nowiki>|#FFB100}}
                {{Cl|GOTO}} nextexeindex
            {{Cl|END IF}}
        {{Cl|END IF}}
        {{Text|<nowiki>'inform IDE of name change if necessary (IDE will respond with message 9 and corrected name)</nowiki>|#919191}}
        {{Cl|IF}} i <> {{Text|1|#F580B1}} {{Cl|THEN}}
            sendc$ = {{Cl|CHR$}}({{Text|12|#F580B1}}) + file$
            {{Cl|GOTO}} sendcommand
        {{Cl|END IF}}
        ideerrorline = {{Text|0|#F580B1}} {{Text|<nowiki>'addresses C++ comp. error's line number</nowiki>|#919191}}
        {{Cl|GOTO}} ide6
        ideret6:
        idecompiled = {{Text|1|#F580B1}}
    {{Cl|END IF}}
    {{Cl|IF}} iderunmode = {{Text|2|#F580B1}} {{Cl|THEN}}
        sendc$ = {{Cl|CHR$}}({{Text|11|#F580B1}}) {{Text|<nowiki>'.EXE file created</nowiki>|#919191}}
        {{Cl|GOTO}} sendcommand
    {{Cl|END IF}}
    {{Text|<nowiki>'execute program</nowiki>|#919191}}
    {{Cl|IF}} iderunmode = {{Text|1|#F580B1}} {{Cl|THEN}}
        {{Cl|IF}} NoExeSaved {{Cl|THEN}}
            {{Text|<nowiki>'This is the section which deals with if the user selected to run the program without</nowiki>|#919191}}
            {{Text|<nowiki>'saving an EXE file to the disk.</nowiki>|#919191}}
            {{Text|<nowiki>'We start off by first running the EXE, and then we delete it from the drive.</nowiki>|#919191}}
            {{Text|<nowiki>'making it a temporary file when all is said and done.</nowiki>|#919191}}
            {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
                {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}({{Cl|CHR$}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Cl|CHR$}}({{Text|34|#F580B1}})) + ModifyCOMMAND$ {{Text|<nowiki>'run the newly created program</nowiki>|#919191}}
                {{Cl|SHELL}} {{Cl|_HIDE}} {{Cl|_DONTWAIT}} {{Text|<nowiki>"del "</nowiki>|#FFB100}} + {{Text|QuotedFilename$|#55FF55}}({{Cl|CHR$}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Cl|CHR$}}({{Text|34|#F580B1}})) {{Text|<nowiki>'kill it</nowiki>|#919191}}
            {{Cl|END IF}}
            {{Cl|IF}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}}
            {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
                {{Cl|IF}} {{Cl|LEFT$}}(lastBinaryGenerated$, {{Cl|LEN}}(path.exe$)) = path.exe$ {{Cl|THEN}}
                    {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}(lastBinaryGenerated$) + ModifyCOMMAND$
                    {{Cl|KILL}} lastBinaryGenerated$
                {{Cl|ELSE}}
                    {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$
                    {{Cl|KILL}} path.exe$ + lastBinaryGenerated$
                {{Cl|END IF}}
            {{Cl|END IF}}
            {{Cl|IF}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
            NoExeSaved = {{Text|0|#F580B1}} {{Text|<nowiki>'reset the flag for a temp EXE</nowiki>|#919191}}
            sendc$ = {{Cl|CHR$}}({{Text|6|#F580B1}}) {{Text|<nowiki>'ready</nowiki>|#919191}}
            {{Cl|GOTO}} sendcommand
        {{Cl|END IF}}
        {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|SHELL}} {{Cl|_DONTWAIT}} {{Text|QuotedFilename$|#55FF55}}({{Cl|CHR$}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Cl|CHR$}}({{Text|34|#F580B1}})) + ModifyCOMMAND$
        {{Cl|IF}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}}
        {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} {{Cl|LEFT$}}(lastBinaryGenerated$, {{Cl|LEN}}(path.exe$)) = path.exe$ {{Cl|THEN}}
                {{Cl|SHELL}} {{Cl|_DONTWAIT}} {{Text|QuotedFilename$|#55FF55}}(lastBinaryGenerated$) + ModifyCOMMAND$
            {{Cl|ELSE}}
                {{Cl|SHELL}} {{Cl|_DONTWAIT}} {{Text|QuotedFilename$|#55FF55}}(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$
            {{Cl|END IF}}
        {{Cl|END IF}}
        {{Cl|IF}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
    {{Cl|ELSE}}
        {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}({{Cl|CHR$}}({{Text|34|#F580B1}}) + lastBinaryGenerated$ + {{Cl|CHR$}}({{Text|34|#F580B1}})) + ModifyCOMMAND$
        {{Cl|IF}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}}
        {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} {{Cl|LEFT$}}(lastBinaryGenerated$, {{Cl|LEN}}(path.exe$)) = path.exe$ {{Cl|THEN}}
                {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}(lastBinaryGenerated$) + ModifyCOMMAND$
            {{Cl|ELSE}}
                {{Cl|SHELL}} {{Text|QuotedFilename$|#55FF55}}(path.exe$ + lastBinaryGenerated$) + ModifyCOMMAND$
            {{Cl|END IF}}
        {{Cl|END IF}}
        {{Cl|IF}} path.exe$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} {{Cl|THEN}} path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
        {{Cl|DO}}: {{Cl|DO...LOOP|LOOP UNTIL}} {{Cl|INKEY$}} = {{Text|<nowiki>""</nowiki>|#FFB100}}
        {{Cl|DO}}: {{Cl|DO...LOOP|LOOP UNTIL}} {{Cl|_KEYHIT}} = {{Text|0|#F580B1}}
    {{Cl|END IF}}
    {{Cl|IF}} idemode {{Cl|THEN}}
        {{Text|<nowiki>'Darken fg/bg colors</nowiki>|#919191}}
        dummy = {{Text|DarkenFGBG|#55FF55}}({{Text|0|#F580B1}})
    {{Cl|END IF}}
    {{Cl|IF}} vWatchOn {{Cl|THEN}}
        sendc$ = {{Cl|CHR$}}({{Text|254|#F580B1}}) {{Text|<nowiki>'launch debug interface</nowiki>|#919191}}
    {{Cl|ELSE}}
        sendc$ = {{Cl|CHR$}}({{Text|6|#F580B1}}) {{Text|<nowiki>'ready</nowiki>|#919191}}
    {{Cl|END IF}}
    {{Cl|GOTO}} sendcommand
{{Cl|END IF}}
{{Cl|PRINT}} {{Text|<nowiki>"Invalid IDE message"</nowiki>|#FFB100}}: {{Cl|END}}
ideerror:
{{Cl|IF}} {{Cl|INSTR}}(idemessage$, sp$) {{Cl|THEN}}
    {{Text|<nowiki>'Something went wrong here, so let's give a generic error message to the user.</nowiki>|#919191}}
    {{Text|<nowiki>'(No error message should contain sp$ - that is, CHR$(13), when not in Debug mode)</nowiki>|#919191}}
    terrmsg$ = {{Cl|_ERRORMESSAGE$}}
    {{Cl|IF}} terrmsg$ = {{Text|<nowiki>"No error"</nowiki>|#FFB100}} {{Cl|THEN}} terrmsg$ = {{Text|<nowiki>"Internal error"</nowiki>|#FFB100}}
    idemessage$ = {{Text|<nowiki>"Compiler error (check for syntax errors) ("</nowiki>|#FFB100}} + terrmsg$ + {{Text|<nowiki>":"</nowiki>|#FFB100}}
    {{Cl|IF}} {{Cl|ERR}} {{Cl|THEN}} idemessage$ = idemessage$ + {{Text|str2$|#55FF55}}({{Cl|ERR}}) + {{Text|<nowiki>"-"</nowiki>|#FFB100}}
    {{Cl|IF}} {{Cl|_ERRORLINE}} {{Cl|THEN}} idemessage$ = idemessage$ + {{Text|str2$|#55FF55}}({{Cl|_ERRORLINE}})
    {{Cl|IF}} {{Cl|_INCLERRORLINE}} {{Cl|THEN}} idemessage$ = idemessage$ + {{Text|<nowiki>"-"</nowiki>|#FFB100}} + {{Cl|_INCLERRORFILE$}} + {{Text|<nowiki>"-"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}({{Cl|_INCLERRORLINE}})
    idemessage$ = idemessage$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}
    {{Cl|IF}} inclevel > {{Text|0|#F580B1}} {{Cl|THEN}} idemessage$ = idemessage$ + incerror$
{{Cl|END IF}}
sendc$ = {{Cl|CHR$}}({{Text|8|#F580B1}}) + idemessage$ + {{Cl|MKL$}}(ideerrorline)
{{Cl|GOTO}} sendcommand
noide:
{{Cl|IF}} (qb64versionprinted = {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} ConsoleMode = {{Text|0|#F580B1}}) {{Cl|AND (boolean)|AND}} {{Cl|NOT}} QuietMode {{Cl|THEN}}
    qb64versionprinted = {{Text|-1|#F580B1}}
    {{Cl|PRINT}} {{Text|<nowiki>"QB64-PE Compiler V"</nowiki>|#FFB100}} + Version$
{{Cl|END IF}}
{{Cl|IF}} CMDLineFile = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
    {{Cl|LINE INPUT}} ; {{Text|<nowiki>"COMPILE (.bas)>"</nowiki>|#FFB100}}, f$
{{Cl|ELSE}}
    f$ = CMDLineFile
{{Cl|END IF}}
f$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}(f$))
{{Cl|IF}} {{Text|FileHasExtension|#55FF55}}(f$) = {{Text|0|#F580B1}} {{Cl|THEN}} f$ = f$ + {{Text|<nowiki>".bas"</nowiki>|#FFB100}}
sourcefile$ = f$
CMDLineFile = sourcefile$
{{Text|<nowiki>'derive name from sourcefile</nowiki>|#919191}}
f$ = {{Text|RemoveFileExtension$|#55FF55}}(f$)
path.exe$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
currentdir$ = {{Cl|_CWD$}}
path.source$ = {{Text|getfilepath$|#55FF55}}(sourcefile$)
{{Cl|IF}} {{Cl|LEN}}(path.source$) {{Cl|THEN}}
    {{Cl|IF}} {{Cl|_DIREXISTS}}(path.source$) = {{Text|0|#F580B1}} {{Cl|THEN}}
        {{Cl|PRINT}}
        {{Cl|PRINT}} {{Text|<nowiki>"Cannot locate source file: "</nowiki>|#FFB100}} + sourcefile$
        {{Cl|IF}} ConsoleMode {{Cl|THEN}} {{Cl|SYSTEM}} {{Text|1|#F580B1}}
        {{Cl|END}} {{Text|1|#F580B1}}
    {{Cl|END IF}}
    {{Cl|CHDIR}} path.source$
    path.source$ = {{Cl|_CWD$}}
    {{Cl|IF}} {{Cl|RIGHT$}}(path.source$, {{Text|1|#F580B1}}) <> pathsep$ {{Cl|THEN}} path.source$ = path.source$ + pathsep$
    {{Cl|CHDIR}} currentdir$
{{Cl|END IF}}
{{Cl|IF}} SaveExeWithSource {{Cl|THEN}} path.exe$ = path.source$
{{Cl|FOR}} x = {{Cl|LEN}}(f$) {{Cl|TO}} {{Text|1|#F580B1}} {{Cl|STEP}} {{Text|-1|#F580B1}}
    a$ = {{Cl|MID$ (function)|MID$}}(f$, x, {{Text|1|#F580B1}})
    {{Cl|IF}} a$ = {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} a$ = {{Text|<nowiki>"\"</nowiki>|#FFB100}} {{Cl|THEN}}
        f$ = {{Cl|RIGHT$}}(f$, {{Cl|LEN}}(f$) - x)
        {{Cl|EXIT FOR}}
    {{Cl|END IF}}
{{Cl|NEXT}}
file$ = f$
{{Text|<nowiki>'if cmemlist(currentid+1)<>0 before calling regid the variable</nowiki>|#919191}}
{{Text|<nowiki>'MUST be defined in cmem!</nowiki>|#919191}}
fullrecompile:
{{Cl|IF}} idemode = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|NOT}} QuietMode {{Cl|THEN}}
    {{Cl|PRINT}}
    {{Cl|PRINT}} {{Text|<nowiki>"Beginning C++ output from QB64 code... "</nowiki>|#FFB100}}
{{Cl|END IF}}
BU_DEPENDENCY_CONSOLE_ONLY = DEPENDENCY(DEPENDENCY_CONSOLE_ONLY)
{{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|UBOUND}}(DEPENDENCY): DEPENDENCY(i) = {{Text|0|#F580B1}}: {{Cl|NEXT}}
DEPENDENCY(DEPENDENCY_CONSOLE_ONLY) = BU_DEPENDENCY_CONSOLE_ONLY {{Cl|AND}} {{Text|2|#F580B1}} {{Text|<nowiki>'Restore -g switch if used</nowiki>|#919191}}
Error_Happened = {{Text|0|#F580B1}}
{{Cl|FOR}} closeall = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|255|#F580B1}}: {{Cl|CLOSE}} closeall: {{Cl|NEXT}}
{{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"temp.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|LOCK}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|WRITE}} {{Cl|OPEN|AS}} #26 {{Text|<nowiki>'relock</nowiki>|#919191}}
bh = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"dyninfo.txt"</nowiki>|#FFB100}})
{{Cl|IF}} Debug {{Cl|THEN}} {{Cl|CLOSE}} #9: {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"debug.txt"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN|AS}} #9
{{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} ids_max + {{Text|1|#F580B1}}
    arrayelementslist(i) = {{Text|0|#F580B1}}
    cmemlist(i) = {{Text|0|#F580B1}}
    sfcmemargs(i) = {{Text|<nowiki>""</nowiki>|#FFB100}}
{{Cl|NEXT}}
{{Text|<nowiki>'erase cmemlist</nowiki>|#919191}}
{{Text|<nowiki>'erase sfcmemargs</nowiki>|#919191}}
lastunresolved = {{Text|-1|#F580B1}} {{Text|<nowiki>'first pass</nowiki>|#919191}}
sflistn = {{Text|-1|#F580B1}} {{Text|<nowiki>'no entries</nowiki>|#919191}}
SubNameLabels = sp {{Text|<nowiki>'QB64 will perform a repass to resolve sub names used as labels</nowiki>|#919191}}
vWatchDesiredState = {{Text|0|#F580B1}}
vWatchRecompileAttempts = {{Text|0|#F580B1}}
qb64prefix_set_desiredState = {{Text|0|#F580B1}}
qb64prefix_set_recompileAttempts = {{Text|0|#F580B1}}
opex_desiredState = {{Text|0|#F580B1}}
opex_recompileAttempts = {{Text|0|#F580B1}}
opexarray_desiredState = {{Text|0|#F580B1}}
opexarray_recompileAttempts = {{Text|0|#F580B1}}
recompile:
vWatchOn = vWatchDesiredState
{{Text|vWatchVariable|#55FF55}} {{Text|<nowiki>""</nowiki>|#FFB100}}, {{Text|-1|#F580B1}} {{Text|<nowiki>'reset internal variables list</nowiki>|#919191}}
qb64prefix_set = qb64prefix_set_desiredState
qb64prefix$ = {{Text|<nowiki>"_"</nowiki>|#FFB100}}
optionexplicit = opex_desiredState
{{Cl|IF}} optionexplicit_cmd = {{Text|-1|#F580B1}} {{Cl|AND (boolean)|AND}} NoIDEMode = {{Text|1|#F580B1}} {{Cl|THEN}} optionexplicit = {{Text|-1|#F580B1}}
optionexplicitarray = opexarray_desiredState
lastLineReturn = {{Text|0|#F580B1}}
lastLine = {{Text|0|#F580B1}}
firstLine = {{Text|1|#F580B1}}
Resize = {{Text|0|#F580B1}}
Resize_Scale = {{Text|0|#F580B1}}
UseGL = {{Text|0|#F580B1}}
Error_Happened = {{Text|0|#F580B1}}
{{Text|HashClear|#55FF55}} {{Text|<nowiki>'clear the hash table</nowiki>|#919191}}
{{Text|<nowiki>'add reserved words to hashtable</nowiki>|#919191}}
f = HASHFLAG_TYPE + HASHFLAG_RESERVED
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_UNSIGNED"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_BIT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_BYTE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"INTEGER"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LONG"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_INTEGER64"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_OFFSET"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SINGLE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DOUBLE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_FLOAT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"STRING"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ANY"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
f = HASHFLAG_OPERATOR + HASHFLAG_RESERVED
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"NOT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"IMP"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"EQV"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"AND"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"OR"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"XOR"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"MOD"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
f = HASHFLAG_RESERVED + HASHFLAG_CUSTOMSYNTAX
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LIST"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"BASE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"_EXPLICIT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"AS"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"IS"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"OFF"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ON"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"STOP"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"TO"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"USING"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'PUT(graphics) statement:</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"PRESET"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"PSET"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'OPEN statement:</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"FOR"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"OUTPUT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"RANDOM"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"BINARY"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"APPEND"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SHARED"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ACCESS"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LOCK"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"READ"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"WRITE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'LINE statement:</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"STEP"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'WIDTH statement:</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LPRINT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'VIEW statement:</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"PRINT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
f = HASHFLAG_RESERVED + HASHFLAG_XELEMENTNAME + HASHFLAG_XTYPENAME
{{Text|<nowiki>'A</nowiki>|#919191}}
{{Text|<nowiki>'B</nowiki>|#919191}}
{{Text|<nowiki>'C</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"COMMON"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"CALL"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"CASE"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"COM"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"CONST"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'D</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DATA"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DECLARE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEF"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEFDBL"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEFINT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEFLNG"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEFSNG"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DEFSTR"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DIM"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"DO"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|<nowiki>'E</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ERROR"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON ...)</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ELSEIF"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"ENDIF"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"EXIT"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|<nowiki>'F</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"FIELD"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'G</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"GOSUB"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"GOTO"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'H</nowiki>|#919191}}
{{Text|<nowiki>'I</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"INPUT"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(INPUT$ function exists, so conflicts if allowed as custom syntax)</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"IF"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'K</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"KEY"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
{{Text|<nowiki>'L</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LET"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LOOP"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"LEN"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(LEN function exists, so conflicts if allowed as custom syntax)</nowiki>|#919191}}
{{Text|<nowiki>'M</nowiki>|#919191}}
{{Text|<nowiki>'N</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"NEXT"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|<nowiki>'O</nowiki>|#919191}}
{{Text|<nowiki>'P</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"PLAY"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"PEN"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
{{Text|<nowiki>'Q</nowiki>|#919191}}
{{Text|<nowiki>'R</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"REDIM"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"REM"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"RESTORE"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"RESUME"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"RETURN"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"RUN"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|<nowiki>'S</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"STATIC"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"STRIG"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SEG"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SELECT"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SUB"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"SCREEN"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}}
{{Text|<nowiki>'T</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"THEN"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"TIMER"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME - HASHFLAG_XTYPENAME, {{Text|0|#F580B1}} {{Text|<nowiki>'(ON...)</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}}, f - HASHFLAG_XELEMENTNAME, {{Text|0|#F580B1}}
{{Text|<nowiki>'U</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"UNTIL"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"UEVENT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'V</nowiki>|#919191}}
{{Text|<nowiki>'W</nowiki>|#919191}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"WEND"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|HashAdd|#55FF55}} {{Text|<nowiki>"WHILE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Text|<nowiki>'X</nowiki>|#919191}}
{{Text|<nowiki>'Y</nowiki>|#919191}}
{{Text|<nowiki>'Z</nowiki>|#919191}}
{{Text|<nowiki>'clear/init variables</nowiki>|#919191}}
Console = {{Text|0|#F580B1}}
ScreenHide = {{Text|0|#F580B1}}
Asserts = {{Text|0|#F580B1}}
ResolveStaticFunctions = {{Text|0|#F580B1}}
dynamiclibrary = {{Text|0|#F580B1}}
dimsfarray = {{Text|0|#F580B1}}
dimstatic = {{Text|0|#F580B1}}
AllowLocalName = {{Text|0|#F580B1}}
PossibleSubNameLabels = sp {{Text|<nowiki>'QB64 will perform a repass to resolve sub names used as labels</nowiki>|#919191}}
use_global_byte_elements = {{Text|0|#F580B1}}
dimshared = {{Text|0|#F580B1}}: dimmethod = {{Text|0|#F580B1}}: dimoption = {{Text|0|#F580B1}}: redimoption = {{Text|0|#F580B1}}: commonoption = {{Text|0|#F580B1}}
mylib$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: mylibopt$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
declaringlibrary = {{Text|0|#F580B1}}
nLabels = {{Text|0|#F580B1}}
dynscope = {{Text|0|#F580B1}}
elsefollowup = {{Text|0|#F580B1}}
ontimerid = {{Text|0|#F580B1}}: onkeyid = {{Text|0|#F580B1}}: onstrigid = {{Text|0|#F580B1}}
commonarraylist = {{Text|<nowiki>""</nowiki>|#FFB100}}: commonarraylistn = {{Text|0|#F580B1}}
staticarraylist = {{Text|<nowiki>""</nowiki>|#FFB100}}: staticarraylistn = {{Text|0|#F580B1}}
fooindwel = {{Text|0|#F580B1}}
layout = {{Text|<nowiki>""</nowiki>|#FFB100}}
layoutok = {{Text|0|#F580B1}}
NoChecks = {{Text|0|#F580B1}}
inclevel = {{Text|0|#F580B1}}
errorLineInInclude = {{Text|0|#F580B1}}
addmetainclude$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
nextrunlineindex = {{Text|1|#F580B1}}
lasttype = {{Text|0|#F580B1}}
lasttypeelement = {{Text|0|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} udtxname({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} udtxcname({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} udtxsize({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|REDIM}} {{Cl|SHARED}} udtxbytealign({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'first element MUST be on a byte alignment & size is a multiple of 8</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} udtxnext({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|REDIM}} {{Cl|SHARED}} udtxvariable({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}} {{Text|<nowiki>'true if the udt contains variable length elements</nowiki>|#919191}}
{{Text|<nowiki>'elements</nowiki>|#919191}}
{{Cl|REDIM}} {{Cl|SHARED}} udtename({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} udtecname({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}} * {{Text|256|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} udtebytealign({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|INTEGER}}
{{Cl|REDIM}} {{Cl|SHARED}} udtesize({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|REDIM}} {{Cl|SHARED}} udtetype({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|REDIM}} {{Cl|SHARED}} udtetypesize({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|REDIM}} {{Cl|SHARED}} udtearrayelements({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|REDIM}} {{Cl|SHARED}} udtenext({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
definingtype = {{Text|0|#F580B1}}
definingtypeerror = {{Text|0|#F580B1}}
constlast = {{Text|-1|#F580B1}}
{{Text|<nowiki>'constlastshared = -1</nowiki>|#919191}}
closedmain = {{Text|0|#F580B1}}
addmetastatic = {{Text|0|#F580B1}}
addmetadynamic = {{Text|0|#F580B1}}
DynamicMode = {{Text|0|#F580B1}}
optionbase = {{Text|0|#F580B1}}
ExeIconSet = {{Text|0|#F580B1}}
VersionInfoSet = {{Text|0|#F580B1}}
viFileVersionNum$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viProductVersionNum$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viCompanyName$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
viFileDescription$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viFileVersion$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viInternalName$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
viLegalCopyright$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viLegalTrademarks$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viOriginalFilename$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
viProductName$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viProductVersion$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viComments$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: viWeb$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
DataOffset = {{Text|0|#F580B1}}
statementn = {{Text|0|#F580B1}}
everycasenewcase = {{Text|0|#F580B1}}
qberrorhappened = {{Text|0|#F580B1}}: qberrorcode = {{Text|0|#F580B1}}: qberrorline = {{Text|0|#F580B1}}
{{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|27|#F580B1}}: defineaz(i) = {{Text|<nowiki>"SINGLE"</nowiki>|#FFB100}}: defineextaz(i) = {{Text|<nowiki>"!"</nowiki>|#FFB100}}: {{Cl|NEXT}}
controllevel = {{Text|0|#F580B1}}
findidsecondarg$ = {{Text|<nowiki>""</nowiki>|#FFB100}}: findanotherid = {{Text|0|#F580B1}}: findidinternal = {{Text|0|#F580B1}}: currentid = {{Text|0|#F580B1}}
linenumber = {{Text|0|#F580B1}}
wholeline$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
linefragment$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
idn = {{Text|0|#F580B1}}
arrayprocessinghappened = {{Text|0|#F580B1}}
stringprocessinghappened = {{Text|0|#F580B1}}
inputfunctioncalled = {{Text|0|#F580B1}}
subfuncn = {{Text|0|#F580B1}}
closedsubfunc = {{Text|0|#F580B1}}
subfunc = {{Text|<nowiki>""</nowiki>|#FFB100}}
SelectCaseCounter = {{Text|0|#F580B1}}
ExecCounter = {{Text|0|#F580B1}}
UserDefineCount = {{Text|7|#F580B1}}
totalVariablesCreated = {{Text|0|#F580B1}}
typeDefinitions$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
totalMainVariablesCreated = {{Text|0|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} usedVariableList({{Text|1000|#F580B1}}) {{Cl|AS}} usedVarList
totalWarnings = {{Text|0|#F580B1}}
duplicateConstWarning = {{Text|0|#F580B1}}
emptySCWarning = {{Text|0|#F580B1}}
warningListItems = {{Text|0|#F580B1}}
lastWarningHeader = {{Text|<nowiki>""</nowiki>|#FFB100}}
vWatchUsedLabels = {{Cl|SPACE$}}({{Text|1000|#F580B1}})
vWatchUsedSkipLabels = {{Cl|SPACE$}}({{Text|1000|#F580B1}})
firstLineNumberLabelvWatch = {{Text|0|#F580B1}}
{{Cl|REDIM}} {{Cl|SHARED}} warning$({{Text|1000|#F580B1}})
{{Cl|REDIM}} {{Cl|SHARED}} warningLines({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|REDIM}} {{Cl|SHARED}} warningIncLines({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|LONG}}
{{Cl|REDIM}} {{Cl|SHARED}} warningIncFiles({{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|STRING}}
maxLineNumber = {{Text|0|#F580B1}}
uniquenumbern = {{Text|0|#F580B1}}
{{Text|<nowiki>''create a type for storing memory blocks</nowiki>|#919191}}
{{Text|<nowiki>''UDT</nowiki>|#919191}}
{{Text|<nowiki>''names</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED lasttype AS LONG</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtxname(1000) AS STRING * 256</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtxcname(1000) AS STRING * 256</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtxsize(1000) AS LONG</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtxbytealign(1000) AS INTEGER 'first element MUST be on a byte alignment & size is a multiple of 8</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtxnext(1000) AS LONG</nowiki>|#919191}}
{{Text|<nowiki>''elements</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED lasttypeelement AS LONG</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtename(1000) AS STRING * 256</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtecname(1000) AS STRING * 256</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtebytealign(1000) AS INTEGER</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtesize(1000) AS LONG</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtetype(1000) AS LONG</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtetypesize(1000) AS LONG</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtearrayelements(1000) AS LONG</nowiki>|#919191}}
{{Text|<nowiki>'DIM SHARED udtenext(1000) AS LONG</nowiki>|#919191}}
{{Text|<nowiki>'import _MEM type</nowiki>|#919191}}
ptrsz = OS_BITS \ {{Text|8|#F580B1}}
lasttype = lasttype + {{Text|1|#F580B1}}: i = lasttype
udtxname(i) = {{Text|<nowiki>"_MEM"</nowiki>|#FFB100}}
udtxcname(i) = {{Text|<nowiki>"_MEM"</nowiki>|#FFB100}}
udtxsize(i) = ((ptrsz) * {{Text|5|#F580B1}} + ({{Text|4|#F580B1}}) * {{Text|2|#F580B1}} + ({{Text|8|#F580B1}}) * {{Text|1|#F580B1}}) * {{Text|8|#F580B1}}
udtxbytealign(i) = {{Text|1|#F580B1}}
lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
udtename(i2) = {{Text|<nowiki>"OFFSET"</nowiki>|#FFB100}}
udtecname(i2) = {{Text|<nowiki>"OFFSET"</nowiki>|#FFB100}}
udtebytealign(i2) = {{Text|1|#F580B1}}
udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
udtxnext(i) = i2
i3 = i2
lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
udtename(i2) = {{Text|<nowiki>"SIZE"</nowiki>|#FFB100}}
udtecname(i2) = {{Text|<nowiki>"SIZE"</nowiki>|#FFB100}}
udtebytealign(i2) = {{Text|1|#F580B1}}
udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
udtenext(i3) = i2
i3 = i2
lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
udtename(i2) = {{Text|<nowiki>"$_LOCK_ID"</nowiki>|#FFB100}}
udtecname(i2) = {{Text|<nowiki>"$_LOCK_ID"</nowiki>|#FFB100}}
udtebytealign(i2) = {{Text|1|#F580B1}}
udtetype(i2) = INTEGER64TYPE: udtesize(i2) = {{Text|64|#F580B1}}
udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
udtenext(i3) = i2
i3 = i2
lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
udtename(i2) = {{Text|<nowiki>"$_LOCK_OFFSET"</nowiki>|#FFB100}}
udtecname(i2) = {{Text|<nowiki>"$_LOCK_OFFSET"</nowiki>|#FFB100}}
udtebytealign(i2) = {{Text|1|#F580B1}}
udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
udtenext(i3) = i2
i3 = i2
lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
udtename(i2) = {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}}
udtecname(i2) = {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}}
udtebytealign(i2) = {{Text|1|#F580B1}}
udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
udtenext(i3) = i2
i3 = i2
lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
udtename(i2) = {{Text|<nowiki>"ELEMENTSIZE"</nowiki>|#FFB100}}
udtecname(i2) = {{Text|<nowiki>"ELEMENTSIZE"</nowiki>|#FFB100}}
udtebytealign(i2) = {{Text|1|#F580B1}}
udtetype(i2) = OFFSETTYPE: udtesize(i2) = ptrsz * {{Text|8|#F580B1}}
udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
udtenext(i3) = i2
udtenext(i2) = {{Text|0|#F580B1}}
i3 = i2
lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
udtename(i2) = {{Text|<nowiki>"IMAGE"</nowiki>|#FFB100}}
udtecname(i2) = {{Text|<nowiki>"IMAGE"</nowiki>|#FFB100}}
udtebytealign(i2) = {{Text|1|#F580B1}}
udtetype(i2) = LONGTYPE: udtesize(i2) = {{Text|32|#F580B1}}
udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
udtenext(i3) = i2
udtenext(i2) = {{Text|0|#F580B1}}
i3 = i2
lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}: i2 = lasttypeelement
udtename(i2) = {{Text|<nowiki>"SOUND"</nowiki>|#FFB100}}
udtecname(i2) = {{Text|<nowiki>"SOUND"</nowiki>|#FFB100}}
udtebytealign(i2) = {{Text|1|#F580B1}}
udtetype(i2) = LONGTYPE: udtesize(i2) = {{Text|32|#F580B1}}
udtetypesize(i2) = {{Text|0|#F580B1}} {{Text|<nowiki>'tsize</nowiki>|#919191}}
udtenext(i3) = i2
udtenext(i2) = {{Text|0|#F580B1}}
{{Text|<nowiki>' Reset all unstable flags</nowiki>|#919191}}
{{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|UBOUND}}(unstableFlags): unstableFlags(i) = {{Text|0|#F580B1}}: {{Cl|NEXT}}
{{Text|<nowiki>' Indicates if a MIDI sound font was selected</nowiki>|#919191}}
{{Text|<nowiki>'</nowiki>|#919191}}
{{Text|<nowiki>' Captures both the line number and line contents for error reporting later-on</nowiki>|#919191}}
{{Text|<nowiki>' in the compilation process</nowiki>|#919191}}
MidiSoundFontSet = {{Text|0|#F580B1}}
MidiSoundFontLine$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
{{Text|<nowiki>' If MidiSoundFont$ is blank, then the default is used</nowiki>|#919191}}
MidiSoundFont$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
{{Text|<nowiki>'begin compilation</nowiki>|#919191}}
{{Cl|FOR}} closeall = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|255|#F580B1}}: {{Cl|CLOSE}} closeall: {{Cl|NEXT}}
{{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"temp.bin"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|LOCK}} {{Cl|OPEN#File_ACCESS_and_LOCK_Permissions|WRITE}} {{Cl|OPEN|AS}} #26 {{Text|<nowiki>'relock</nowiki>|#919191}}
bh = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"icon.rc"</nowiki>|#FFB100}})
{{Cl|IF}} Debug {{Cl|THEN}} {{Cl|CLOSE}} #9: {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"debug.txt"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|APPEND}} {{Cl|OPEN|AS}} #9
{{Cl|IF}} idemode = {{Text|0|#F580B1}} {{Cl|THEN}}
    qberrorhappened = {{Text|-1|#F580B1}}
    {{Cl|OPEN}} sourcefile$ {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|INPUT}} {{Cl|OPEN|AS}} #1
    qberrorhappened1:
    {{Cl|IF}} qberrorhappened = {{Text|1|#F580B1}} {{Cl|THEN}}
        {{Cl|PRINT}}
        {{Cl|PRINT}} {{Text|<nowiki>"Cannot locate source file: "</nowiki>|#FFB100}} + sourcefile$
        {{Cl|IF}} ConsoleMode {{Cl|THEN}} {{Cl|SYSTEM}} {{Text|1|#F580B1}}
        {{Cl|END}} {{Text|1|#F580B1}}
    {{Cl|ELSE}}
        {{Cl|CLOSE}} #1
    {{Cl|END IF}}
    qberrorhappened = {{Text|0|#F580B1}}
{{Cl|END IF}}
{{Text|reginternal|#55FF55}}
{{Cl|IF}} qb64prefix_set {{Cl|THEN}}
    qb64prefix$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
    {{Text|<nowiki>'re-add internal keywords without the "_" prefix</nowiki>|#919191}}
    {{Text|reginternal|#55FF55}}
    f = HASHFLAG_TYPE + HASHFLAG_RESERVED
    {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"UNSIGNED"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
    {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"BIT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
    {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"BYTE"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
    {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"INTEGER64"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
    {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"OFFSET"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
    {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"FLOAT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
    f = HASHFLAG_RESERVED + HASHFLAG_CUSTOMSYNTAX
    {{Text|HashAdd|#55FF55}} {{Text|<nowiki>"EXPLICIT"</nowiki>|#FFB100}}, f, {{Text|0|#F580B1}}
{{Cl|END IF}}
{{Cl|DIM}} {{Cl|SHARED}} GlobTxtBuf: GlobTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"global.txt"</nowiki>|#FFB100}})
defdatahandle = GlobTxtBuf
{{Cl|IF}} iderecompile {{Cl|THEN}}
    iderecompile = {{Text|0|#F580B1}}
    idepass = {{Text|1|#F580B1}} {{Text|<nowiki>'prepass must be done again</nowiki>|#919191}}
    sendc$ = {{Cl|CHR$}}({{Text|7|#F580B1}}) {{Text|<nowiki>'repass request</nowiki>|#919191}}
    {{Cl|GOTO}} sendcommand
{{Cl|END IF}}
{{Cl|IF}} idemode {{Cl|THEN}} {{Cl|GOTO}} ideret1
{{Text|lineinput3load|#55FF55}} sourcefile$
{{Cl|DO}}
    {{Text|<nowiki>'### STEVE EDIT FOR CONST EXPANSION 10/11/2013</nowiki>|#919191}}
    wholeline$ = {{Text|lineinput3$|#55FF55}}
    {{Cl|IF}} wholeline$ = {{Cl|CHR$}}({{Text|13|#F580B1}}) {{Cl|THEN}} {{Cl|EXIT DO}}
    ideprepass:
    prepassLastLine:
    {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} firstLine <> {{Text|0|#F580B1}} {{Cl|THEN}}
        lineBackup$ = wholeline$ {{Text|<nowiki>'backup the real line (will be blank when lastline is set)</nowiki>|#919191}}
        forceIncludeFromRoot$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
        {{Cl|IF}} vWatchOn {{Cl|THEN}}
            addingvWatch = {{Text|1|#F580B1}}
            {{Cl|IF}} firstLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch.bi"</nowiki>|#FFB100}}
            {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch.bm"</nowiki>|#FFB100}}
        {{Cl|ELSE}}
            {{Text|<nowiki>'IF firstLine <> 0 THEN forceIncludeFromRoot$ = "internal\support\vwatch\vwatch_stub.bi"</nowiki>|#919191}}
            {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch_stub.bm"</nowiki>|#FFB100}}
        {{Cl|END IF}}
        firstLine = {{Text|0|#F580B1}}: lastLine = {{Text|0|#F580B1}}
        {{Cl|IF}} {{Cl|LEN}}(forceIncludeFromRoot$) {{Cl|THEN}} {{Cl|GOTO}} forceInclude_prepass
        forceIncludeCompleted_prepass:
        addingvWatch = {{Text|0|#F580B1}}
        wholeline$ = lineBackup$
    {{Cl|END IF}}
    wholestv$ = wholeline$ {{Text|<nowiki>'### STEVE EDIT FOR CONST EXPANSION 10/11/2013</nowiki>|#919191}}
    prepass = {{Text|1|#F580B1}}
    layout = {{Text|<nowiki>""</nowiki>|#FFB100}}
    layoutok = {{Text|0|#F580B1}}
    linenumber = linenumber + {{Text|1|#F580B1}}
    reallinenumber = reallinenumber + {{Text|1|#F580B1}}
    {{Cl|DO...LOOP|DO UNTIL}} linenumber < {{Cl|UBOUND}}(InValidLine) {{Text|<nowiki>'color information flag for each line</nowiki>|#919191}}
        {{Cl|REDIM}} {{Cl|_PRESERVE}} InValidLine({{Cl|UBOUND}}(InValidLine) + {{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|_BYTE}}
    {{Cl|LOOP}}
    InValidLine(linenumber) = {{Text|0|#F580B1}}
    {{Cl|IF}} {{Cl|LEN}}(wholeline$) {{Cl|THEN}}
        {{Cl|IF}} {{Cl|UCASE$}}({{Cl|_TRIM$}}(wholeline$)) = {{Text|<nowiki>"$NOPREFIX"</nowiki>|#FFB100}} {{Cl|THEN}}
            qb64prefix_set_desiredState = {{Text|1|#F580B1}}
            {{Cl|IF}} qb64prefix_set = {{Text|0|#F580B1}} {{Cl|THEN}}
                {{Cl|IF}} qb64prefix_set_recompileAttempts = {{Text|0|#F580B1}} {{Cl|THEN}}
                    qb64prefix_set_recompileAttempts = qb64prefix_set_recompileAttempts + {{Text|1|#F580B1}}
                    {{Cl|GOTO}} do_recompile
                {{Cl|END IF}}
            {{Cl|END IF}}
        {{Cl|END IF}}
        wholeline$ = {{Text|lineformat|#55FF55}}(wholeline$)
        {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
        temp$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|UCASE$}}(wholestv$)))
        {{Cl|IF}} temp$ = {{Text|<nowiki>"$COLOR:0"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} qb64prefix_set {{Cl|THEN}}
                addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color0_noprefix.bi"</nowiki>|#FFB100}}
            {{Cl|ELSE}}
                addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color0.bi"</nowiki>|#FFB100}}
            {{Cl|END IF}}
            {{Cl|GOTO}} finishedlinepp
        {{Cl|END IF}}
        {{Cl|IF}} temp$ = {{Text|<nowiki>"$COLOR:32"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} qb64prefix_set {{Cl|THEN}}
                addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color32_noprefix.bi"</nowiki>|#FFB100}}
            {{Cl|ELSE}}
                addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color32.bi"</nowiki>|#FFB100}}
            {{Cl|END IF}}
            {{Cl|GOTO}} finishedlinepp
        {{Cl|END IF}}
        {{Cl|IF}} temp$ = {{Text|<nowiki>"$DEBUG"</nowiki>|#FFB100}} {{Cl|THEN}}
            vWatchDesiredState = {{Text|1|#F580B1}}
            {{Cl|IF}} vWatchOn = {{Text|0|#F580B1}} {{Cl|THEN}}
                {{Cl|IF}} vWatchRecompileAttempts = {{Text|0|#F580B1}} {{Cl|THEN}}
                    {{Text|<nowiki>'this is the first time a conflict has occurred, so react immediately with a full recompilation using the desired state</nowiki>|#919191}}
                    vWatchRecompileAttempts = vWatchRecompileAttempts + {{Text|1|#F580B1}}
                    {{Cl|GOTO}} do_recompile
                {{Cl|ELSE}}
                    {{Text|<nowiki>'continue compilation to retrieve the final state requested and act on that as required</nowiki>|#919191}}
                {{Cl|END IF}}
            {{Cl|END IF}}
        {{Cl|END IF}}
        {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|4|#F580B1}}) = {{Text|<nowiki>"$IF "</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} {{Cl|RIGHT$}}(temp$, {{Text|5|#F580B1}}) <> {{Text|<nowiki>" THEN"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$IF without THEN"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|4|#F580B1}})) {{Text|<nowiki>'strip off the $IF and extra spaces</nowiki>|#919191}}
            temp$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, {{Cl|LEN}}(temp$) - {{Text|4|#F580B1}})) {{Text|<nowiki>'and strip off the THEN and extra spaces</nowiki>|#919191}}
            temp = {{Cl|INSTR}}(temp$, {{Text|<nowiki>"="</nowiki>|#FFB100}})
            ExecCounter = ExecCounter + {{Text|1|#F580B1}}
            ExecLevel(ExecCounter) = {{Text|-1|#F580B1}} {{Text|<nowiki>'default to a skip value</nowiki>|#919191}}
            DefineElse(ExecCounter) = {{Text|1|#F580B1}} {{Text|<nowiki>'1 says we have an $IF statement at this level</nowiki>|#919191}}
            result = {{Text|EvalPreIF|#55FF55}}(temp$, a$)
            {{Cl|IF}} a$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|GOTO}} errmes
            {{Cl|IF}} result <> {{Text|0|#F580B1}} {{Cl|THEN}}
                ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
                {{Cl|IF}} ExecLevel(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|4|#F580B1}} {{Text|<nowiki>'Else if used and conditon found</nowiki>|#919191}}
            {{Cl|END IF}}
            {{Cl|GOTO}} finishedlinepp {{Text|<nowiki>'and then we're finished -- and at this point we didn't make a match so we exit with a DONT READ type flag on our code.</nowiki>|#919191}}
        {{Cl|END IF}}
        {{Cl|IF}} temp$ = {{Text|<nowiki>"$ELSE"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$IF block already has $ELSE statement in it"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|2|#F580B1}} {{Text|<nowiki>'set the flag to declare an $ELSE already in this block</nowiki>|#919191}}
            {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|4|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'If we executed code in a previous IF or ELSE IF statement, we can't do it here</nowiki>|#919191}}
                ExecLevel(ExecCounter) = {{Text|-1|#F580B1}} {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
            {{Cl|ELSE}}
                ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'If we were processing code before, code after this segment is going to be SKIPPED</nowiki>|#919191}}
            {{Cl|END IF}}
            {{Cl|GOTO}} finishedlinepp
        {{Cl|END IF}}
        {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|5|#F580B1}}) = {{Text|<nowiki>"$ELSE"</nowiki>|#FFB100}} {{Cl|THEN}} {{Text|<nowiki>'looking for $ELSE IF</nowiki>|#919191}}
            temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|6|#F580B1}}))
            {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|3|#F580B1}}) = {{Text|<nowiki>"IF "</nowiki>|#FFB100}} {{Cl|THEN}}
                {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF cannot follow $ELSE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                {{Cl|IF}} {{Cl|RIGHT$}}(temp$, {{Text|5|#F580B1}}) <> {{Text|<nowiki>" THEN"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF without THEN"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|4|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'If we executed code in a previous IF or ELSE IF statement, we can't do it here</nowiki>|#919191}}
                    ExecLevel(ExecCounter) = {{Text|-1|#F580B1}}
                    {{Cl|GOTO}} finishedlinepp
                {{Cl|END IF}}
                temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|3|#F580B1}})) {{Text|<nowiki>'strip off the IF and extra spaces</nowiki>|#919191}}
                temp$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, {{Cl|LEN}}(temp$) - {{Text|4|#F580B1}})) {{Text|<nowiki>'and strip off the THEN and extra spaces</nowiki>|#919191}}
                result = {{Text|EvalPreIF|#55FF55}}(temp$, a$)
                {{Cl|IF}} a$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|GOTO}} errmes
                {{Cl|IF}} result <> {{Text|0|#F580B1}} {{Cl|THEN}}
                    ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
                    {{Cl|IF}} ExecLevel(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|4|#F580B1}} {{Text|<nowiki>'Else if used and conditon found</nowiki>|#919191}}
                {{Cl|END IF}}
                {{Cl|GOTO}} finishedlinepp {{Text|<nowiki>'and then we're finished -- and at this point we didn't make a match so we exit with a DONT READ type flag on our code.</nowiki>|#919191}}
            {{Cl|END IF}}
        {{Cl|END IF}}
        {{Cl|IF}} temp$ = {{Text|<nowiki>"$END IF"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} temp$ = {{Text|<nowiki>"$ENDIF"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$END IF without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Text|<nowiki>'We no longer have an $IF block at this level</nowiki>|#919191}}
            ExecCounter = ExecCounter - {{Text|1|#F580B1}}
            {{Cl|GOTO}} finishedlinepp
        {{Cl|END IF}}
        {{Cl|IF}} ExecLevel(ExecCounter) {{Cl|THEN}}
            {{Cl|DO...LOOP|DO UNTIL}} linenumber < {{Cl|UBOUND}}(InValidLine)
                {{Cl|REDIM}} {{Cl|_PRESERVE}} InValidLine({{Cl|UBOUND}}(InValidLine) + {{Text|1000|#F580B1}}) {{Cl|AS}} {{Cl|_BYTE}}
            {{Cl|LOOP}}
            InValidLine(linenumber) = {{Text|-1|#F580B1}}
            {{Cl|GOTO}} finishedlinepp {{Text|<nowiki>'we don't check for anything inside lines that we've marked for skipping</nowiki>|#919191}}
        {{Cl|END IF}}
        {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|7|#F580B1}}) = {{Text|<nowiki>"$ERROR "</nowiki>|#FFB100}} {{Cl|THEN}}
            temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|7|#F580B1}}))
            a$ = {{Text|<nowiki>"Compilation check failed: "</nowiki>|#FFB100}} + temp$
            {{Cl|GOTO}} errmes
        {{Cl|END IF}}
        {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|5|#F580B1}}) = {{Text|<nowiki>"$LET "</nowiki>|#FFB100}} {{Cl|THEN}}
            temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|5|#F580B1}})) {{Text|<nowiki>'simply shorten our string to parse</nowiki>|#919191}}
            {{Text|<nowiki>'For starters, let's make certain that we have 3 elements to deal with</nowiki>|#919191}}
            temp = {{Cl|INSTR}}(temp$, {{Text|<nowiki>"="</nowiki>|#FFB100}}) {{Text|<nowiki>'without an = in there, we can't get a value from the left and right side</nowiki>|#919191}}
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid Syntax.  $LET <flag> = <value>"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            l$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, temp - {{Text|1|#F580B1}})): r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, temp + {{Text|1|#F580B1}}))
            {{Text|<nowiki>'then validate to make certain the left side looks proper</nowiki>|#919191}}
            {{Cl|IF}} {{Text|validname|#55FF55}}(l$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid flag name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            {{Cl|IF}} {{Cl|LEFT$}}(r$, {{Text|1|#F580B1}}) = {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}} r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(r$, {{Text|2|#F580B1}}))
            {{Cl|IF}} {{Cl|RIGHT$}}(r$, {{Text|1|#F580B1}}) = {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}} r$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(r$, {{Cl|LEN}}(r$) - {{Text|1|#F580B1}}))
            {{Cl|IF}} {{Cl|LEFT$}}(r$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"-"</nowiki>|#FFB100}} {{Cl|THEN}}
                r1$ = {{Text|<nowiki>"-"</nowiki>|#FFB100}}
                r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(r$, {{Text|2|#F580B1}}))
            {{Cl|ELSE}}
                r1$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
            {{Cl|END IF}}
            {{Text|<nowiki>'then validate to make certain the left side looks proper</nowiki>|#919191}}
            {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(r$)
                a = {{Cl|ASC (function)|ASC}}(r$, i)
                {{Cl|SELECT CASE}} a
                    {{Cl|CASE}} {{Text|32|#F580B1}}
                    {{Cl|CASE}} {{Text|46|#F580B1}} {{Text|<nowiki>'periods are fine.</nowiki>|#919191}}
                        r1$ = r1$ + {{Text|<nowiki>"."</nowiki>|#FFB100}}
                    {{Cl|CASE}} {{Cl|IS}} < {{Text|48|#F580B1}}, {{Cl|IS}} > {{Text|90|#F580B1}}
                        a$ = {{Text|<nowiki>"Invalid value"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                    {{Cl|CASE}} {{Cl|ELSE}}
                        r1$ = r1$ + {{Cl|CHR$}}(a)
                {{Cl|END SELECT}}
            {{Cl|NEXT}}
            r$ = r1$
            {{Text|<nowiki>'First look to see if we have an existing setting like this and if so, update it</nowiki>|#919191}}
            {{Cl|FOR}} i = {{Text|8|#F580B1}} {{Cl|TO}} UserDefineCount {{Text|<nowiki>'UserDefineCount 1-7 are reserved for automatic OS/BIT detection & version</nowiki>|#919191}}
                {{Cl|IF}} UserDefine({{Text|0|#F580B1}}, i) = l$ {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, i) = r$: {{Cl|GOTO}} finishedlinepp
            {{Cl|NEXT}}
            {{Text|<nowiki>'Otherwise create a new setting and set the initial value for it</nowiki>|#919191}}
            UserDefineCount = UserDefineCount + {{Text|1|#F580B1}}
            {{Cl|IF}} UserDefineCount > {{Cl|UBOUND}}(UserDefine, {{Text|2|#F580B1}}) {{Cl|THEN}}
                {{Cl|REDIM}} {{Cl|_PRESERVE}} UserDefine({{Text|1|#F580B1}}, {{Cl|UBOUND}}(UserDefine, {{Text|2|#F580B1}}) + {{Text|10|#F580B1}}) {{Text|<nowiki>'Add another 10 elements to the array so it'll expand as the user adds to it</nowiki>|#919191}}
            {{Cl|END IF}}
            UserDefine({{Text|0|#F580B1}}, UserDefineCount) = l$
            UserDefine({{Text|1|#F580B1}}, UserDefineCount) = r$
            {{Cl|GOTO}} finishedlinepp
        {{Cl|END IF}}
        {{Text|<nowiki>' We check for Unstable flags during the preprocessing step because it</nowiki>|#919191}}
        {{Text|<nowiki>' impacts what valid commands there are in all the other steps</nowiki>|#919191}}
        {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|10|#F580B1}}) = {{Text|<nowiki>"$UNSTABLE:"</nowiki>|#FFB100}} {{Cl|THEN}}
            token$ = {{Cl|UCASE$}}({{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|11|#F580B1}}))))
            {{Cl|SELECT CASE}} token$
                {{Cl|CASE}} {{Text|<nowiki>"MIDI"</nowiki>|#FFB100}}
                    {{Cl|IF}} {{Cl|NOT}} UseMiniaudioBackend {{Cl|THEN}}
                        a$ = {{Text|<nowiki>"Midi is not supported with the old OpenAL audio backend."</nowiki>|#FFB100}}
                        {{Cl|GOTO}} errmes
                    {{Cl|END IF}}
                    unstableFlags(UNSTABLE_MIDI) = {{Text|-1|#F580B1}}
                {{Cl|CASE}} {{Text|<nowiki>"HTTP"</nowiki>|#FFB100}}
                    unstableFlags(UNSTABLE_HTTP) = {{Text|-1|#F580B1}}
                    {{Text|regUnstableHttp|#55FF55}}
                {{Cl|CASE}} {{Cl|ELSE}}
                    a$ = {{Text|<nowiki>"Unrecognized unstable flag "</nowiki>|#FFB100}} + {{Text|AddQuotes$|#55FF55}}(token$)
                    {{Cl|GOTO}} errmes
            {{Cl|END SELECT}}
        {{Cl|END IF}}
        cwholeline$ = wholeline$
        wholeline$ = {{Text|eleucase$|#55FF55}}(wholeline$) {{Text|<nowiki>'********REMOVE THIS LINE LATER********</nowiki>|#919191}}
        addmetadynamic = {{Text|0|#F580B1}}: addmetastatic = {{Text|0|#F580B1}}
        wholelinen = {{Text|numelements|#55FF55}}(wholeline$)
        {{Cl|IF}} wholelinen {{Cl|THEN}}
            wholelinei = {{Text|1|#F580B1}}
            {{Text|<nowiki>'skip line number?</nowiki>|#919191}}
            e$ = {{Text|getelement$|#55FF55}}(wholeline$, {{Text|1|#F580B1}})
            {{Cl|IF}} ({{Cl|ASC (function)|ASC}}(e$) >= {{Text|48|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|ASC (function)|ASC}}(e$) <= {{Text|59|#F580B1}}) {{Cl|OR (boolean)|OR}} {{Cl|ASC (function)|ASC}}(e$) = {{Text|46|#F580B1}} {{Cl|THEN}} wholelinei = {{Text|2|#F580B1}}: {{Cl|GOTO}} ppskpl
            {{Text|<nowiki>'skip 'POSSIBLE' line label?</nowiki>|#919191}}
            {{Cl|IF}} wholelinen >= {{Text|2|#F580B1}} {{Cl|THEN}}
                x2 = {{Cl|INSTR}}(wholeline$, sp + {{Text|<nowiki>":"</nowiki>|#FFB100}} + sp): x3 = x2 + {{Text|2|#F580B1}}
                {{Cl|IF}} x2 = {{Text|0|#F580B1}} {{Cl|THEN}}
                    {{Cl|IF}} {{Cl|RIGHT$}}(wholeline$, {{Text|2|#F580B1}}) = sp + {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|THEN}} x2 = {{Cl|LEN}}(wholeline$) - {{Text|1|#F580B1}}: x3 = x2 + {{Text|1|#F580B1}}
                {{Cl|END IF}}
                {{Cl|IF}} x2 {{Cl|THEN}}
                    e$ = {{Cl|LEFT$}}(wholeline$, x2 - {{Text|1|#F580B1}})
                    {{Cl|IF}} {{Text|validlabel|#55FF55}}(e$) {{Cl|THEN}}
                        wholeline$ = {{Cl|RIGHT$}}(wholeline$, {{Cl|LEN}}(wholeline$) - x3)
                        cwholeline$ = {{Cl|RIGHT$}}(cwholeline$, {{Cl|LEN}}(wholeline$) - x3)
                        wholelinen = {{Text|numelements|#55FF55}}(wholeline$)
                        {{Cl|GOTO}} ppskpl
                    {{Cl|END IF}} {{Text|<nowiki>'valid</nowiki>|#919191}}
                {{Cl|END IF}} {{Text|<nowiki>'includes ":"</nowiki>|#919191}}
            {{Cl|END IF}} {{Text|<nowiki>'wholelinen>=2</nowiki>|#919191}}
            ppskpl:
            {{Cl|IF}} wholelinei <= wholelinen {{Cl|THEN}}
                {{Text|<nowiki>'----------------------------------------</nowiki>|#919191}}
                a$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                ca$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                ppblda:
                e$ = {{Text|getelement$|#55FF55}}(wholeline$, wholelinei)
                ce$ = {{Text|getelement$|#55FF55}}(cwholeline$, wholelinei)
                {{Cl|IF}} e$ = {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} e$ = {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} e$ = {{Text|<nowiki>"THEN"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} e$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
                    {{Cl|IF}} {{Cl|LEN}}(a$) {{Cl|THEN}}
                        {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|PRINT (file statement)|PRINT}} #9, {{Text|<nowiki>"PP["</nowiki>|#FFB100}} + a$ + {{Text|<nowiki>"]"</nowiki>|#FFB100}}
                        n = {{Text|numelements|#55FF55}}(a$)
                        firstelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|1|#F580B1}})
                        secondelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|2|#F580B1}})
                        thirdelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|3|#F580B1}})
                        {{Text|<nowiki>'========================================</nowiki>|#919191}}
                        {{Cl|IF}} n = {{Text|2|#F580B1}} {{Cl|AND (boolean)|AND}} firstelement$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} (secondelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}}) {{Cl|THEN}}
                            closedsubfunc = {{Text|-1|#F580B1}}
                        {{Cl|END IF}}
                        {{Text|<nowiki>'declare library</nowiki>|#919191}}
                        {{Cl|IF}} declaringlibrary {{Cl|THEN}}
                            {{Cl|IF}} firstelement$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} {{Cl|THEN}}
                                {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|OR (boolean)|OR}} secondelement$ <> {{Text|<nowiki>"DECLARE"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END DECLARE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                declaringlibrary = {{Text|0|#F580B1}}
                                {{Cl|GOTO}} finishedlinepp
                            {{Cl|END IF}} {{Text|<nowiki>'end declare</nowiki>|#919191}}
                            declaringlibrary = {{Text|2|#F580B1}}
                            {{Cl|IF}} firstelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} firstelement$ = {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}} {{Cl|THEN}} subfuncn = subfuncn - {{Text|1|#F580B1}}: {{Cl|GOTO}} declaresubfunc
                            a$ = {{Text|<nowiki>"Expected SUB/FUNCTION definition or END DECLARE (#2)"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                        {{Cl|END IF}}
                        {{Text|<nowiki>'UDT TYPE definition</nowiki>|#919191}}
                        {{Cl|IF}} definingtype {{Cl|THEN}}
                            i = definingtype
                            {{Cl|IF}} n >= {{Text|1|#F580B1}} {{Cl|THEN}}
                                {{Cl|IF}} firstelement$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} {{Cl|THEN}}
                                    {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|OR (boolean)|OR}} secondelement$ <> {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    {{Cl|IF}} udtxnext(i) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"No elements defined in TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    definingtype = {{Text|0|#F580B1}}
                                    {{Text|<nowiki>'create global buffer for SWAP space</nowiki>|#919191}}
                                    siz$ = {{Text|str2$|#55FF55}}(udtxsize(i) \ {{Text|8|#F580B1}})
                                    {{Text|WriteBufLine|#55FF55}} GlobTxtBuf, {{Text|<nowiki>"char *g_tmp_udt_"</nowiki>|#FFB100}} + {{Cl|RTRIM$}}(udtxname(i)) + {{Text|<nowiki>"=(char*)malloc("</nowiki>|#FFB100}} + siz$ + {{Text|<nowiki>");"</nowiki>|#FFB100}}
                                    {{Text|<nowiki>'print "END TYPE";udtxsize(i);udtxbytealign(i)</nowiki>|#919191}}
                                    {{Cl|GOTO}} finishedlinepp
                                {{Cl|END IF}}
                            {{Cl|END IF}}
                            {{Cl|IF}} n < {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name AS type, AS type element-list, or END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                            n$ = firstelement$
                            {{Cl|IF}} n$ <> {{Text|<nowiki>"AS"</nowiki>|#FFB100}} {{Cl|THEN}}
                                {{Text|<nowiki>'traditional variable-name AS type syntax, single-element</nowiki>|#919191}}
                                lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}
                                i2 = lasttypeelement
                                {{Cl|WHILE}} i2 > {{Cl|UBOUND}}(udtenext): {{Text|increaseUDTArrays|#55FF55}}: {{Cl|WEND}}
                                udtenext(i2) = {{Text|0|#F580B1}}
                                ii = {{Text|2|#F580B1}}
                                udtearrayelements(i2) = {{Text|0|#F580B1}}
                                {{Cl|IF}} ii >= n {{Cl|OR (boolean)|OR}} {{Text|getelement$|#55FF55}}(a$, ii) <> {{Text|<nowiki>"AS"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name AS type, AS type element-list, or END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                t$ = {{Text|getelements$|#55FF55}}(a$, ii + {{Text|1|#F580B1}}, n)
                                {{Cl|IF}} t$ = {{Cl|RTRIM$}}(udtxname(definingtype)) {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid self-reference"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                typ = {{Text|typname2typ|#55FF55}}(t$)
                                {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                                {{Cl|IF}} typ = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Undefined type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                typsize = typname2typsize
                                {{Cl|IF}} {{Text|validname|#55FF55}}(n$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                udtename(i2) = n$
                                udtecname(i2) = {{Text|getelement$|#55FF55}}(ca$, {{Text|1|#F580B1}})
                                NormalTypeBlock:
                                typeDefinitions$ = typeDefinitions$ + {{Cl|MKL$}}(i2) + {{Cl|MKL$}}({{Cl|LEN}}(n$)) + n$
                                udtetype(i2) = typ
                                udtetypesize(i2) = typsize
                                hashname$ = n$
                                {{Text|<nowiki>'check for name conflicts (any similar reserved or element from current UDT)</nowiki>|#919191}}
                                hashchkflags = HASHFLAG_RESERVED + HASHFLAG_UDTELEMENT
                                hashres = {{Text|HashFind|#55FF55}}(hashname$, hashchkflags, hashresflags, hashresref)
                                {{Cl|DO...LOOP|DO WHILE}} hashres
                                    {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} HASHFLAG_UDTELEMENT {{Cl|THEN}}
                                        {{Cl|IF}} hashresref = i {{Cl|THEN}} a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    {{Cl|END IF}}
                                    {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} HASHFLAG_RESERVED {{Cl|THEN}}
                                        {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} (HASHFLAG_TYPE + HASHFLAG_CUSTOMSYNTAX + HASHFLAG_OPERATOR + HASHFLAG_XELEMENTNAME) {{Cl|THEN}} a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    {{Cl|END IF}}
                                    {{Cl|IF}} hashres <> {{Text|1|#F580B1}} {{Cl|THEN}} hashres = {{Text|HashFindCont|#55FF55}}(hashresflags, hashresref) {{Cl|ELSE}} hashres = {{Text|0|#F580B1}}
                                {{Cl|LOOP}}
                                {{Text|<nowiki>'add to hash table</nowiki>|#919191}}
                                {{Text|HashAdd|#55FF55}} hashname$, HASHFLAG_UDTELEMENT, i
                                {{Text|<nowiki>'Calculate element's size</nowiki>|#919191}}
                                {{Cl|IF}} typ {{Cl|AND (boolean)|AND}} ISUDT {{Cl|THEN}}
                                    u = typ {{Cl|AND}} {{Text|511|#F580B1}}
                                    udtesize(i2) = udtxsize(u)
                                    {{Cl|IF}} udtxbytealign(u) {{Cl|THEN}} udtxbytealign(i) = {{Text|1|#F580B1}}: udtebytealign(i2) = {{Text|1|#F580B1}}
                                    {{Cl|IF}} udtxvariable(u) {{Cl|THEN}} udtxvariable(i) = {{Text|-1|#F580B1}}
                                {{Cl|ELSE}}
                                    {{Cl|IF}} (typ {{Cl|AND (boolean)|AND}} ISSTRING) {{Cl|THEN}}
                                        {{Cl|IF}} (typ {{Cl|AND (boolean)|AND}} ISFIXEDLENGTH) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                            udtesize(i2) = OFFSETTYPE {{Cl|AND}} {{Text|511|#F580B1}}
                                            udtxvariable(i) = {{Text|-1|#F580B1}}
                                        {{Cl|ELSE}}
                                            udtesize(i2) = typsize * {{Text|8|#F580B1}}
                                        {{Cl|END IF}}
                                        udtxbytealign(i) = {{Text|1|#F580B1}}: udtebytealign(i2) = {{Text|1|#F580B1}}
                                    {{Cl|ELSE}}
                                        udtesize(i2) = typ {{Cl|AND}} {{Text|511|#F580B1}}
                                        {{Cl|IF}} (typ {{Cl|AND (boolean)|AND}} ISOFFSETINBITS) = {{Text|0|#F580B1}} {{Cl|THEN}} udtxbytealign(i) = {{Text|1|#F580B1}}: udtebytealign(i2) = {{Text|1|#F580B1}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'Increase block size</nowiki>|#919191}}
                                {{Cl|IF}} udtebytealign(i2) {{Cl|THEN}}
                                    {{Cl|IF}} udtxsize(i) {{Cl|MOD}} {{Text|8|#F580B1}} {{Cl|THEN}}
                                        udtxsize(i) = udtxsize(i) + ({{Text|8|#F580B1}} - (udtxsize(i) {{Cl|MOD}} {{Text|8|#F580B1}}))
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                udtxsize(i) = udtxsize(i) + udtesize(i2)
                                {{Text|<nowiki>'Link element to previous element</nowiki>|#919191}}
                                {{Cl|IF}} udtxnext(i) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    udtxnext(i) = i2
                                {{Cl|ELSE}}
                                    udtenext(i2 - {{Text|1|#F580B1}}) = i2
                                {{Cl|END IF}}
                                {{Text|<nowiki>'print "+"+rtrim$(udtename(i2));udtetype(i2);udtesize(i2);udtebytealign(i2);udtxsize(i)</nowiki>|#919191}}
                                {{Cl|IF}} newAsTypeBlockSyntax {{Cl|THEN}} {{Cl|RETURN}}
                                {{Cl|GOTO}} finishedlinepp
                            {{Cl|ELSE}}
                                {{Text|<nowiki>'new AS type variable-list syntax, multiple elements</nowiki>|#919191}}
                                ii = {{Text|2|#F580B1}}
                                {{Cl|IF}} ii >= n {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name AS type, AS type element-list, or END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                previousElement$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                                t$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                                lastElement$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                                buildTypeName:
                                lastElement$ = {{Text|getelement$|#55FF55}}(a$, ii)
                                {{Cl|IF}} lastElement$ <> {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} lastElement$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
                                    n$ = lastElement$
                                    cn$ = {{Text|getelement$|#55FF55}}(ca$, ii)
                                    {{Cl|IF}} {{Cl|LEN}}(previousElement$) {{Cl|THEN}} t$ = t$ + previousElement$ + {{Text|<nowiki>" "</nowiki>|#FFB100}}
                                    previousElement$ = n$
                                    lastElement$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                                    ii = ii + {{Text|1|#F580B1}}
                                    {{Cl|GOTO}} buildTypeName
                                {{Cl|END IF}}
                                t$ = {{Cl|RTRIM$}}(t$)
                                {{Cl|IF}} t$ = {{Cl|RTRIM$}}(udtxname(definingtype)) {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid self-reference"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                typ = {{Text|typname2typ|#55FF55}}(t$)
                                {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                                {{Cl|IF}} typ = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Undefined type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                typsize = typname2typsize
                                previousElement$ = lastElement$
                                nexttypeelement:
                                lasttypeelement = lasttypeelement + {{Text|1|#F580B1}}
                                i2 = lasttypeelement
                                {{Cl|WHILE}} i2 > {{Cl|UBOUND}}(udtenext): {{Text|increaseUDTArrays|#55FF55}}: {{Cl|WEND}}
                                udtenext(i2) = {{Text|0|#F580B1}}
                                udtearrayelements(i2) = {{Text|0|#F580B1}}
                                udtename(i2) = n$
                                udtecname(i2) = cn$
                                {{Cl|IF}} {{Text|validname|#55FF55}}(n$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                newAsTypeBlockSyntax = {{Text|-1|#F580B1}}
                                {{Cl|GOSUB}} NormalTypeBlock
                                newAsTypeBlockSyntax = {{Text|0|#F580B1}}
                                getNextElement:
                                ii = ii + {{Text|1|#F580B1}}
                                lastElement$ = {{Text|getelement$|#55FF55}}(a$, ii)
                                {{Cl|IF}} lastElement$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|GOTO}} finishedlinepp
                                {{Cl|IF}} ii = n {{Cl|AND (boolean)|AND}} lastElement$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                {{Cl|IF}} lastElement$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}}
                                    {{Cl|IF}} previousElement$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    previousElement$ = lastElement$
                                    {{Cl|GOTO}} getNextElement
                                {{Cl|END IF}}
                                n$ = lastElement$
                                {{Cl|IF}} previousElement$ <> {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ,"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                previousElement$ = lastElement$
                                cn$ = {{Text|getelement$|#55FF55}}(ca$, ii)
                                {{Cl|GOTO}} nexttypeelement
                            {{Cl|END IF}}
                        {{Cl|END IF}} {{Text|<nowiki>'definingtype</nowiki>|#919191}}
                        {{Cl|IF}} definingtype {{Cl|AND (boolean)|AND}} n >= {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                        {{Cl|IF}} n >= {{Text|1|#F580B1}} {{Cl|THEN}}
                            {{Cl|IF}} firstelement$ = {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}} {{Cl|THEN}}
                                {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected TYPE typename"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                lasttype = lasttype + {{Text|1|#F580B1}}
                                typeDefinitions$ = typeDefinitions$ + {{Cl|MKL$}}({{Text|-1|#F580B1}}) + {{Cl|MKL$}}(lasttype)
                                definingtype = lasttype
                                i = definingtype
                                {{Cl|WHILE}} i > {{Cl|UBOUND}}(udtenext): {{Text|increaseUDTArrays|#55FF55}}: {{Cl|WEND}}
                                {{Cl|IF}} {{Text|validname|#55FF55}}(secondelement$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                typeDefinitions$ = typeDefinitions$ + {{Cl|MKL$}}({{Cl|LEN}}(secondelement$)) + secondelement$
                                udtxname(i) = secondelement$
                                udtxcname(i) = {{Text|getelement|#55FF55}}(ca$, {{Text|2|#F580B1}})
                                udtxnext(i) = {{Text|0|#F580B1}}
                                udtxsize(i) = {{Text|0|#F580B1}}
                                udtxvariable(i) = {{Text|0|#F580B1}}
                                hashname$ = secondelement$
                                hashflags = HASHFLAG_UDT
                                {{Text|<nowiki>'check for name conflicts (any similar reserved/sub/function/UDT name)</nowiki>|#919191}}
                                hashchkflags = HASHFLAG_RESERVED + HASHFLAG_SUB + HASHFLAG_FUNCTION + HASHFLAG_UDT
                                hashres = {{Text|HashFind|#55FF55}}(hashname$, hashchkflags, hashresflags, hashresref)
                                {{Cl|DO...LOOP|DO WHILE}} hashres
                                    allow = {{Text|0|#F580B1}}
                                    {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} (HASHFLAG_SUB + HASHFLAG_FUNCTION) {{Cl|THEN}}
                                        allow = {{Text|1|#F580B1}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} HASHFLAG_RESERVED {{Cl|THEN}}
                                        {{Cl|IF}} (hashresflags {{Cl|AND (boolean)|AND}} (HASHFLAG_TYPE + HASHFLAG_OPERATOR + HASHFLAG_CUSTOMSYNTAX + HASHFLAG_XTYPENAME)) = {{Text|0|#F580B1}} {{Cl|THEN}} allow = {{Text|1|#F580B1}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} allow = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    {{Cl|IF}} hashres <> {{Text|1|#F580B1}} {{Cl|THEN}} hashres = {{Text|HashFindCont|#55FF55}}(hashresflags, hashresref) {{Cl|ELSE}} hashres = {{Text|0|#F580B1}}
                                {{Cl|LOOP}}
                                {{Text|<nowiki>'add to hash table</nowiki>|#919191}}
                                {{Text|HashAdd|#55FF55}} hashname$, hashflags, i
                                {{Cl|GOTO}} finishedlinepp
                            {{Cl|END IF}}
                        {{Cl|END IF}}
                        {{Cl|IF}} n >= {{Text|1|#F580B1}} {{Cl|AND (boolean)|AND}} firstelement$ = {{Text|<nowiki>"CONST"</nowiki>|#FFB100}} {{Cl|THEN}}
                            {{Text|<nowiki>'l$ = "CONST"</nowiki>|#919191}}
                            {{Text|<nowiki>'DEF... do not change type, the expression is stored in a suitable type</nowiki>|#919191}}
                            {{Text|<nowiki>'based on its value if type isn't forced/specified</nowiki>|#919191}}
                            {{Cl|IF}} subfuncn > {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} closedsubfunc <> {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Statement cannot be placed between SUB/FUNCTIONs"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                            {{Text|<nowiki>'convert periods to _046_</nowiki>|#919191}}
                            i2 = {{Cl|INSTR}}(a$, sp + {{Text|<nowiki>"."</nowiki>|#FFB100}} + sp)
                            {{Cl|IF}} i2 {{Cl|THEN}}
                                {{Cl|DO}}
                                    a$ = {{Cl|LEFT$}}(a$, i2 - {{Text|1|#F580B1}}) + fix046$ + {{Cl|RIGHT$}}(a$, {{Cl|LEN}}(a$) - i2 - {{Text|2|#F580B1}})
                                    ca$ = {{Cl|LEFT$}}(ca$, i2 - {{Text|1|#F580B1}}) + fix046$ + {{Cl|RIGHT$}}(ca$, {{Cl|LEN}}(ca$) - i2 - {{Text|2|#F580B1}})
                                    i2 = {{Cl|INSTR}}(a$, sp + {{Text|<nowiki>"."</nowiki>|#FFB100}} + sp)
                                {{Cl|DO...LOOP|LOOP UNTIL}} i2 = {{Text|0|#F580B1}}
                                n = {{Text|numelements|#55FF55}}(a$)
                                firstelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|1|#F580B1}}): secondelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|2|#F580B1}}): thirdelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|3|#F580B1}})
                            {{Cl|END IF}}
                            {{Cl|IF}} n < {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected CONST name = value/expression"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                            i = {{Text|2|#F580B1}}
                            constdefpendingpp:
                            pending = {{Text|0|#F580B1}}
                            n$ = {{Text|getelement$|#55FF55}}(ca$, i): i = i + {{Text|1|#F580B1}}
                            typeoverride = {{Text|0|#F580B1}}
                            s$ = {{Text|removesymbol$|#55FF55}}(n$)
                            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                            {{Cl|IF}} s$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
                                typeoverride = {{Text|typname2typ|#55FF55}}(s$)
                                {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                                {{Cl|IF}} typeoverride {{Cl|AND (boolean)|AND}} ISFIXEDLENGTH {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid constant type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                {{Cl|IF}} typeoverride = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid constant type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                            {{Cl|END IF}}
                            {{Cl|IF}} {{Text|getelement$|#55FF55}}(a$, i) <> {{Text|<nowiki>"="</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ="</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                            i = i + {{Text|1|#F580B1}}
                            {{Text|<nowiki>'get expression</nowiki>|#919191}}
                            e$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                            readable_e$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                            B = {{Text|0|#F580B1}}
                            {{Cl|FOR}} i2 = i {{Cl|TO}} n
                                e2$ = {{Text|getelement$|#55FF55}}(ca$, i2)
                                {{Cl|IF}} e2$ = {{Text|<nowiki>"("</nowiki>|#FFB100}} {{Cl|THEN}} B = B + {{Text|1|#F580B1}}
                                {{Cl|IF}} e2$ = {{Text|<nowiki>")"</nowiki>|#FFB100}} {{Cl|THEN}} B = B - {{Text|1|#F580B1}}
                                {{Cl|IF}} e2$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} B = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    pending = {{Text|1|#F580B1}}
                                    i = i2 + {{Text|1|#F580B1}}
                                    {{Cl|IF}} i > n - {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected CONST ... , name = value/expression"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    {{Cl|EXIT FOR}}
                                {{Cl|END IF}}
                                {{Cl|IF}} {{Cl|LEN}}(e$) = {{Text|0|#F580B1}} {{Cl|THEN}} e$ = e2$ {{Cl|ELSE}} e$ = e$ + sp + e2$
                                e3$ = e2$
                                {{Cl|IF}} {{Cl|LEN}}(e2$) > {{Text|1|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|ASC (function)|ASC}}(e2$, {{Text|1|#F580B1}}) = {{Text|34|#F580B1}} {{Cl|THEN}}
                                        removeComma = {{Cl|_INSTRREV}}(e2$, {{Text|<nowiki>","</nowiki>|#FFB100}})
                                        e3$ = {{Cl|LEFT$}}(e2$, removeComma - {{Text|1|#F580B1}})
                                    {{Cl|ELSE}}
                                        removeComma = {{Cl|INSTR}}(e2$, {{Text|<nowiki>","</nowiki>|#FFB100}})
                                        e3$ = {{Cl|MID$ (function)|MID$}}(e2$, removeComma + {{Text|1|#F580B1}})
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} {{Cl|LEN}}(readable_e$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    readable_e$ = e3$
                                {{Cl|ELSE}}
                                    readable_e$ = readable_e$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + e3$
                                {{Cl|END IF}}
                            {{Cl|NEXT}}
                            {{Text|<nowiki>'intercept current expression and pass it through Evaluate_Expression$</nowiki>|#919191}}
                            {{Text|<nowiki>'(unless it is a literal string)</nowiki>|#919191}}
                            {{Cl|IF}} {{Cl|LEFT$}}(readable_e$, {{Text|1|#F580B1}}) <> {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}}
                                temp1$ = {{Cl|_TRIM$}}({{Text|Evaluate_Expression$|#55FF55}}(readable_e$))
                                {{Cl|IF}} {{Cl|LEFT$}}(temp1$, {{Text|5|#F580B1}}) <> {{Text|<nowiki>"ERROR"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} e$ <> temp1$ {{Cl|THEN}}
                                    e$ = {{Text|lineformat|#55FF55}}(temp1$) {{Text|<nowiki>'retrieve parseable format</nowiki>|#919191}}
                                {{Cl|ELSE}}
                                    {{Cl|IF}} temp1$ = {{Text|<nowiki>"ERROR - Division By Zero"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = temp1$: {{Cl|GOTO}} errmes
                                    {{Cl|IF}} {{Cl|INSTR}}(temp1$, {{Text|<nowiki>"Improper operations"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        a$ = {{Text|<nowiki>"Invalid CONST expression.14"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                            {{Cl|END IF}}
                            {{Text|<nowiki>'Proceed as usual</nowiki>|#919191}}
                            e$ = {{Text|fixoperationorder|#55FF55}}(e$)
                            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                            e$ = {{Text|evaluateconst|#55FF55}}(e$, t)
                            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                            {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}} {{Text|<nowiki>'string type</nowiki>|#919191}}
                                {{Cl|IF}} typeoverride {{Cl|THEN}}
                                    {{Cl|IF}} (typeoverride {{Cl|AND (boolean)|AND}} ISSTRING) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Type mismatch"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                {{Cl|END IF}}
                            {{Cl|ELSE}} {{Text|<nowiki>'not a string type</nowiki>|#919191}}
                                {{Cl|IF}} typeoverride {{Cl|THEN}}
                                    {{Cl|IF}} typeoverride {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}} a$ = {{Text|<nowiki>"Type mismatch"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                {{Cl|END IF}}
                                {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISFLOAT {{Cl|THEN}}
                                    constval## = {{Cl|_CV}}({{Cl|_FLOAT}}, e$)
                                    constval&& = constval##
                                    constval~&& = constval&&
                                {{Cl|ELSE}}
                                    {{Cl|IF}} (t {{Cl|AND (boolean)|AND}} ISUNSIGNED) {{Cl|AND (boolean)|AND}} (t {{Cl|AND (boolean)|AND}} {{Text|511|#F580B1}}) = {{Text|64|#F580B1}} {{Cl|THEN}}
                                        constval~&& = {{Cl|_CV}}({{Cl|_UNSIGNED}} {{Cl|_INTEGER64}}, e$)
                                        constval&& = constval~&&
                                        constval## = constval&&
                                    {{Cl|ELSE}}
                                        constval&& = {{Cl|_CV}}({{Cl|_INTEGER64}}, e$)
                                        constval## = constval&&
                                        constval~&& = constval&&
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'override type?</nowiki>|#919191}}
                                {{Cl|IF}} typeoverride {{Cl|THEN}}
                                    {{Text|<nowiki>'range check required here (noted in todo)</nowiki>|#919191}}
                                    t = typeoverride
                                {{Cl|END IF}}
                            {{Cl|END IF}} {{Text|<nowiki>'not a string type</nowiki>|#919191}}
                            constlast = constlast + {{Text|1|#F580B1}}
                            {{Cl|IF}} constlast > constmax {{Cl|THEN}}
                                constmax = constmax * {{Text|2|#F580B1}}
                                {{Cl|REDIM}} {{Cl|_PRESERVE}} constname(constmax) {{Cl|AS}} {{Cl|STRING}}
                                {{Cl|REDIM}} {{Cl|_PRESERVE}} constcname(constmax) {{Cl|AS}} {{Cl|STRING}}
                                {{Cl|REDIM}} {{Cl|_PRESERVE}} constnamesymbol(constmax) {{Cl|AS}} {{Cl|STRING}} {{Text|<nowiki>'optional name symbol</nowiki>|#919191}}
                                {{Cl|REDIM}} {{Cl|_PRESERVE}} consttype(constmax) {{Cl|AS}} {{Cl|LONG}} {{Text|<nowiki>'variable type number</nowiki>|#919191}}
                                {{Cl|REDIM}} {{Cl|_PRESERVE}} constinteger(constmax) {{Cl|AS}} {{Cl|_INTEGER64}}
                                {{Cl|REDIM}} {{Cl|_PRESERVE}} constuinteger(constmax) {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|_INTEGER64}}
                                {{Cl|REDIM}} {{Cl|_PRESERVE}} constfloat(constmax) {{Cl|AS}} {{Cl|_FLOAT}}
                                {{Cl|REDIM}} {{Cl|_PRESERVE}} conststring(constmax) {{Cl|AS}} {{Cl|STRING}}
                                {{Cl|REDIM}} {{Cl|_PRESERVE}} constsubfunc(constmax) {{Cl|AS}} {{Cl|LONG}}
                                {{Cl|REDIM}} {{Cl|_PRESERVE}} constdefined(constmax) {{Cl|AS}} {{Cl|LONG}}
                            {{Cl|END IF}}
                            i2 = constlast
                            constsubfunc(i2) = subfuncn
                            {{Text|<nowiki>'IF subfunc = "" THEN constlastshared = i2</nowiki>|#919191}}
                            {{Cl|IF}} {{Text|validname|#55FF55}}(n$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                            constname(i2) = {{Cl|UCASE$}}(n$)
                            hashname$ = n$
                            {{Text|<nowiki>'check for name conflicts (any similar: reserved, sub, function, constant)</nowiki>|#919191}}
                            allow = {{Text|0|#F580B1}}
                            const_recheck:
                            hashchkflags = HASHFLAG_RESERVED + HASHFLAG_SUB + HASHFLAG_FUNCTION + HASHFLAG_CONSTANT
                            hashres = {{Text|HashFind|#55FF55}}(hashname$, hashchkflags, hashresflags, hashresref)
                            {{Cl|DO...LOOP|DO WHILE}} hashres
                                {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} HASHFLAG_CONSTANT {{Cl|THEN}}
                                    {{Cl|IF}} constsubfunc(hashresref) = subfuncn {{Cl|THEN}}
                                        {{Text|<nowiki>'If merely redefining a CONST with same value</nowiki>|#919191}}
                                        {{Text|<nowiki>'just issue a warning instead of an error</nowiki>|#919191}}
                                        issueWarning = {{Text|0|#F580B1}}
                                        {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}}
                                            {{Cl|IF}} conststring(hashresref) = e$ {{Cl|THEN}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = e$
                                        {{Cl|ELSE}}
                                            {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISFLOAT {{Cl|THEN}}
                                                {{Cl|IF}} constfloat(hashresref) = constval## {{Cl|THEN}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = {{Cl|STR$}}(constval##)
                                            {{Cl|ELSE}}
                                                {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISUNSIGNED {{Cl|THEN}}
                                                    {{Cl|IF}} constuinteger(hashresref) = constval~&& {{Cl|THEN}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = {{Cl|STR$}}(constval~&&)
                                                {{Cl|ELSE}}
                                                    {{Cl|IF}} constinteger(hashresref) = constval&& {{Cl|THEN}} issueWarning = {{Text|-1|#F580B1}}: thisconstval$ = {{Cl|STR$}}(constval&&)
                                                {{Cl|END IF}}
                                            {{Cl|END IF}}
                                        {{Cl|END IF}}
                                        {{Cl|IF}} issueWarning {{Cl|THEN}}
                                            {{Cl|IF}} {{Cl|NOT}} IgnoreWarnings {{Cl|THEN}}
                                                {{Text|addWarning|#55FF55}} linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|<nowiki>"duplicate constant definition"</nowiki>|#FFB100}}, n$ + {{Text|<nowiki>" ="</nowiki>|#FFB100}} + thisconstval$
                                            {{Cl|END IF}}
                                            {{Cl|GOTO}} constAddDone
                                        {{Cl|ELSE}}
                                            a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} HASHFLAG_RESERVED {{Cl|THEN}}
                                    a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                {{Cl|END IF}}
                                {{Cl|IF}} hashresflags {{Cl|AND (boolean)|AND}} (HASHFLAG_SUB + HASHFLAG_FUNCTION) {{Cl|THEN}}
                                    {{Cl|IF}} ids(hashresref).internal_subfunc = {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} {{Cl|RTRIM$}}(ids(hashresref).musthave) <> {{Text|<nowiki>"$"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}} a$ = {{Text|<nowiki>"Name already in use ("</nowiki>|#FFB100}} + hashname$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                {{Cl|END IF}}
                                {{Cl|IF}} hashres <> {{Text|1|#F580B1}} {{Cl|THEN}} hashres = {{Text|HashFindCont|#55FF55}}(hashresflags, hashresref) {{Cl|ELSE}} hashres = {{Text|0|#F580B1}}
                            {{Cl|LOOP}}
                            {{Text|<nowiki>'add to hash table</nowiki>|#919191}}
                            {{Text|HashAdd|#55FF55}} hashname$, HASHFLAG_CONSTANT, i2
                            constdefined(i2) = {{Text|1|#F580B1}}
                            constcname(i2) = n$
                            constnamesymbol(i2) = {{Text|typevalue2symbol$|#55FF55}}(t)
                            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                            consttype(i2) = t
                            {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}}
                                conststring(i2) = e$
                            {{Cl|ELSE}}
                                {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISFLOAT {{Cl|THEN}}
                                    constfloat(i2) = constval##
                                {{Cl|ELSE}}
                                    {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISUNSIGNED {{Cl|THEN}}
                                        constuinteger(i2) = constval~&&
                                    {{Cl|ELSE}}
                                        constinteger(i2) = constval&&
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                            {{Cl|END IF}}
                            constAddDone:
                            {{Cl|IF}} pending {{Cl|THEN}}
                                {{Text|<nowiki>'l$ = l$ + sp2 + ","</nowiki>|#919191}}
                                {{Cl|GOTO}} constdefpendingpp
                            {{Cl|END IF}}
                            {{Text|<nowiki>'layoutdone = 1: IF LEN(layout$) THEN layout$ = layout$ + sp + l$ ELSE layout$ = l$</nowiki>|#919191}}
                            {{Cl|GOTO}} finishedlinepp
                        {{Cl|END IF}}
                        {{Text|<nowiki>'DEFINE</nowiki>|#919191}}
                        d = {{Text|0|#F580B1}}
                        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DEFINT"</nowiki>|#FFB100}} {{Cl|THEN}} d = {{Text|1|#F580B1}}
                        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DEFLNG"</nowiki>|#FFB100}} {{Cl|THEN}} d = {{Text|1|#F580B1}}
                        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DEFSNG"</nowiki>|#FFB100}} {{Cl|THEN}} d = {{Text|1|#F580B1}}
                        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DEFDBL"</nowiki>|#FFB100}} {{Cl|THEN}} d = {{Text|1|#F580B1}}
                        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DEFSTR"</nowiki>|#FFB100}} {{Cl|THEN}} d = {{Text|1|#F580B1}}
                        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"_DEFINE"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} (firstelement$ = {{Text|<nowiki>"DEFINE"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} qb64prefix_set = {{Text|1|#F580B1}}) {{Cl|THEN}} d = {{Text|1|#F580B1}}
                        {{Cl|IF}} d {{Cl|THEN}}
                            predefining = {{Text|1|#F580B1}}: {{Cl|GOTO}} predefine
                            predefined: predefining = {{Text|0|#F580B1}}
                            {{Cl|GOTO}} finishedlinepp
                        {{Cl|END IF}}
                        {{Text|<nowiki>'declare library</nowiki>|#919191}}
                        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DECLARE"</nowiki>|#FFB100}} {{Cl|THEN}}
                            {{Cl|IF}} secondelement$ = {{Text|<nowiki>"LIBRARY"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"DYNAMIC"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"CUSTOMTYPE"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"STATIC"</nowiki>|#FFB100}} {{Cl|THEN}}
                                declaringlibrary = {{Text|1|#F580B1}}
                                indirectlibrary = {{Text|0|#F580B1}}
                                {{Cl|IF}} secondelement$ = {{Text|<nowiki>"CUSTOMTYPE"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"DYNAMIC"</nowiki>|#FFB100}} {{Cl|THEN}} indirectlibrary = {{Text|1|#F580B1}}
                                {{Cl|GOTO}} finishedlinepp
                            {{Cl|END IF}}
                        {{Cl|END IF}}
                        {{Text|<nowiki>'SUB/FUNCTION</nowiki>|#919191}}
                        dynamiclibrary = {{Text|0|#F580B1}}
                        declaresubfunc:
                        firstelement$ = {{Text|getelement$|#55FF55}}(a$, {{Text|1|#F580B1}})
                        sf = {{Text|0|#F580B1}}
                        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}} {{Cl|THEN}} sf = {{Text|1|#F580B1}}
                        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|THEN}} sf = {{Text|2|#F580B1}}
                        {{Cl|IF}} sf {{Cl|THEN}}
                            subfuncn = subfuncn + {{Text|1|#F580B1}}
                            closedsubfunc = {{Text|0|#F580B1}}
                            {{Cl|IF}} n = {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected name after SUB/FUNCTION"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                            {{Text|<nowiki>'convert periods to _046_</nowiki>|#919191}}
                            i2 = {{Cl|INSTR}}(a$, sp + {{Text|<nowiki>"."</nowiki>|#FFB100}} + sp)
                            {{Cl|IF}} i2 {{Cl|THEN}}
                                {{Cl|DO}}
                                    a$ = {{Cl|LEFT$}}(a$, i2 - {{Text|1|#F580B1}}) + fix046$ + {{Cl|RIGHT$}}(a$, {{Cl|LEN}}(a$) - i2 - {{Text|2|#F580B1}})
                                    ca$ = {{Cl|LEFT$}}(ca$, i2 - {{Text|1|#F580B1}}) + fix046$ + {{Cl|RIGHT$}}(ca$, {{Cl|LEN}}(ca$) - i2 - {{Text|2|#F580B1}})
                                    i2 = {{Cl|INSTR}}(a$, sp + {{Text|<nowiki>"."</nowiki>|#FFB100}} + sp)
                                {{Cl|DO...LOOP|LOOP UNTIL}} i2 = {{Text|0|#F580B1}}
                                n = {{Text|numelements|#55FF55}}(a$)
                                firstelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|1|#F580B1}}): secondelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|2|#F580B1}}): thirdelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|3|#F580B1}})
                            {{Cl|END IF}}
                            n$ = {{Text|getelement$|#55FF55}}(ca$, {{Text|2|#F580B1}})
                            symbol$ = {{Text|removesymbol$|#55FF55}}(n$)
                            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                            {{Cl|IF}} sf = {{Text|2|#F580B1}} {{Cl|AND (boolean)|AND}} symbol$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Type symbols after a SUB name are invalid"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                            {{Text|<nowiki>'remove STATIC (which is ignored)</nowiki>|#919191}}
                            e$ = {{Text|getelement$|#55FF55}}(a$, n): {{Cl|IF}} e$ = {{Text|<nowiki>"STATIC"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Cl|LEFT$}}(a$, {{Cl|LEN}}(a$) - {{Text|7|#F580B1}}): ca$ = {{Cl|LEFT$}}(ca$, {{Cl|LEN}}(ca$) - {{Text|7|#F580B1}}): n = n - {{Text|1|#F580B1}}
                            {{Text|<nowiki>'check for ALIAS</nowiki>|#919191}}
                            aliasname$ = n$ {{Text|<nowiki>'use given name by default</nowiki>|#919191}}
                            {{Cl|IF}} n > {{Text|2|#F580B1}} {{Cl|THEN}}
                                e$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}})
                                {{Cl|IF}} e$ = {{Text|<nowiki>"ALIAS"</nowiki>|#FFB100}} {{Cl|THEN}}
                                    {{Cl|IF}} declaringlibrary = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"ALIAS can only be used with DECLARE LIBRARY"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    {{Cl|IF}} n = {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ALIAS name-in-library"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    e$ = {{Text|getelement$|#55FF55}}(ca$, {{Text|4|#F580B1}})
                                    {{Text|<nowiki>'strip string content (optional)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEFT$}}(e$, {{Text|1|#F580B1}}) = {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}}
                                        e$ = {{Cl|RIGHT$}}(e$, {{Cl|LEN}}(e$) - {{Text|1|#F580B1}})
                                        x = {{Cl|INSTR}}(e$, {{Cl|CHR$}}({{Text|34|#F580B1}})): {{Cl|IF}} x = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
                                        e$ = {{Cl|LEFT$}}(e$, x - {{Text|1|#F580B1}})
                                    {{Cl|END IF}}
                                    {{Text|<nowiki>'strip fix046$ (created by unquoted periods)</nowiki>|#919191}}
                                    {{Cl|DO...LOOP|DO WHILE}} {{Cl|INSTR}}(e$, fix046$)
                                        x = {{Cl|INSTR}}(e$, fix046$): e$ = {{Cl|LEFT$}}(e$, x - {{Text|1|#F580B1}}) + {{Text|<nowiki>"."</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(e$, {{Cl|LEN}}(e$) - x + {{Text|1|#F580B1}} - {{Cl|LEN}}(fix046$))
                                    {{Cl|LOOP}}
                                    {{Text|<nowiki>'validate alias name</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(e$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ALIAS name-in-library"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    {{Cl|FOR}} x = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(e$)
                                        a = {{Cl|ASC (function)|ASC}}(e$, x)
                                        {{Cl|IF}} alphanumeric(a) = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} a <> ASC_FULLSTOP {{Cl|AND (boolean)|AND}} a <> ASC_COLON {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ALIAS name-in-library"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                    {{Cl|NEXT}}
                                    aliasname$ = e$
                                    {{Text|<nowiki>'remove ALIAS section from line</nowiki>|#919191}}
                                    {{Cl|IF}} n <= {{Text|4|#F580B1}} {{Cl|THEN}} a$ = {{Text|getelements|#55FF55}}(a$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}})
                                    {{Cl|IF}} n >= {{Text|5|#F580B1}} {{Cl|THEN}} a$ = {{Text|getelements|#55FF55}}(a$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}}) + sp + {{Text|getelements|#55FF55}}(a$, {{Text|5|#F580B1}}, n)
                                    {{Cl|IF}} n <= {{Text|4|#F580B1}} {{Cl|THEN}} ca$ = {{Text|getelements|#55FF55}}(ca$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}})
                                    {{Cl|IF}} n >= {{Text|5|#F580B1}} {{Cl|THEN}} ca$ = {{Text|getelements|#55FF55}}(ca$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}}) + sp + {{Text|getelements|#55FF55}}(ca$, {{Text|5|#F580B1}}, n)
                                    n = n - {{Text|2|#F580B1}}
                                {{Cl|END IF}}
                            {{Cl|END IF}}
                            {{Cl|IF}} declaringlibrary {{Cl|THEN}}
                                {{Cl|IF}} indirectlibrary {{Cl|THEN}}
                                    aliasname$ = n$ {{Text|<nowiki>'override the alias name</nowiki>|#919191}}
                                {{Cl|END IF}}
                            {{Cl|END IF}}
                            params = {{Text|0|#F580B1}}
                            params$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                            paramsize$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                            nele$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                            nelereq$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                            {{Cl|IF}} n > {{Text|2|#F580B1}} {{Cl|THEN}}
                                e$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}})
                                {{Cl|IF}} e$ <> {{Text|<nowiki>"("</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ("</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                e$ = {{Text|getelement$|#55FF55}}(a$, n)
                                {{Cl|IF}} e$ <> {{Text|<nowiki>")"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected )"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                {{Cl|IF}} n < {{Text|4|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ( ... )"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                {{Cl|IF}} n = {{Text|4|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} nosfparams
                                B = {{Text|0|#F580B1}}
                                a2$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                                {{Cl|FOR}} i = {{Text|4|#F580B1}} {{Cl|TO}} n - {{Text|1|#F580B1}}
                                    e$ = {{Text|getelement$|#55FF55}}(a$, i)
                                    {{Cl|IF}} e$ = {{Text|<nowiki>"("</nowiki>|#FFB100}} {{Cl|THEN}} B = B + {{Text|1|#F580B1}}
                                    {{Cl|IF}} e$ = {{Text|<nowiki>")"</nowiki>|#FFB100}} {{Cl|THEN}} B = B - {{Text|1|#F580B1}}
                                    {{Cl|IF}} e$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} B = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} i = n - {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected , ... )"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                        getlastparam:
                                        {{Cl|IF}} a2$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ... ,"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                        a2$ = {{Cl|LEFT$}}(a2$, {{Cl|LEN}}(a2$) - {{Text|1|#F580B1}})
                                        {{Text|<nowiki>'possible format: [BYVAL]a[%][(1)][AS][type]</nowiki>|#919191}}
                                        n2 = {{Text|numelements|#55FF55}}(a2$)
                                        array = {{Text|0|#F580B1}}
                                        t2$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                                        i2 = {{Text|1|#F580B1}}
                                        e$ = {{Text|getelement$|#55FF55}}(a2$, i2): i2 = i2 + {{Text|1|#F580B1}}
                                        byvalue = {{Text|0|#F580B1}}
                                        {{Cl|IF}} e$ = {{Text|<nowiki>"BYVAL"</nowiki>|#FFB100}} {{Cl|THEN}}
                                            {{Cl|IF}} declaringlibrary = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"BYVAL can currently only be used with DECLARE LIBRARY"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                            e$ = {{Text|getelement$|#55FF55}}(a2$, i2): i2 = i2 + {{Text|1|#F580B1}}: byvalue = {{Text|1|#F580B1}}
                                        {{Cl|END IF}}
                                        n2$ = e$
                                        symbol2$ = {{Text|removesymbol$|#55FF55}}(n2$)
                                        {{Cl|IF}} {{Text|validname|#55FF55}}(n2$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                        {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                                        m = {{Text|0|#F580B1}}
                                        {{Cl|FOR}} i2 = i2 {{Cl|TO}} n2
                                            e$ = {{Text|getelement$|#55FF55}}(a2$, i2)
                                            {{Cl|IF}} e$ = {{Text|<nowiki>"("</nowiki>|#FFB100}} {{Cl|THEN}}
                                                {{Cl|IF}} m <> {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Syntax error - too many opening brackets"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                                m = {{Text|1|#F580B1}}
                                                array = {{Text|1|#F580B1}}
                                                {{Cl|GOTO}} gotaa
                                            {{Cl|END IF}}
                                            {{Cl|IF}} e$ = {{Text|<nowiki>")"</nowiki>|#FFB100}} {{Cl|THEN}}
                                                {{Cl|IF}} m <> {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Syntax error - closing bracket without opening bracket"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                                m = {{Text|2|#F580B1}}
                                                {{Cl|GOTO}} gotaa
                                            {{Cl|END IF}}
                                            {{Cl|IF}} e$ = {{Text|<nowiki>"AS"</nowiki>|#FFB100}} {{Cl|THEN}}
                                                {{Cl|IF}} m <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} m <> {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Syntax error - check your brackets"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                                m = {{Text|3|#F580B1}}
                                                {{Cl|GOTO}} gotaa
                                            {{Cl|END IF}}
                                            {{Cl|IF}} m = {{Text|1|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} gotaa {{Text|<nowiki>'ignore contents of bracket</nowiki>|#919191}}
                                            {{Cl|IF}} m <> {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Syntax error - check your brackets"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                            {{Cl|IF}} t2$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} t2$ = e$ {{Cl|ELSE}} t2$ = t2$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + e$
                                            gotaa:
                                        {{Cl|NEXT}} i2
                                        params = params + {{Text|1|#F580B1}}: {{Cl|IF}} params > {{Text|100|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"SUB/FUNCTION exceeds 100 parameter limit"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                        argnelereq = {{Text|0|#F580B1}}
                                        {{Cl|IF}} symbol2$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} t2$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Syntax error - check parameter types"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                        {{Cl|IF}} t2$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} e$ = {{Text|<nowiki>"AS"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected AS type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                        {{Cl|IF}} t2$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} t2$ = symbol2$
                                        {{Cl|IF}} t2$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
                                            {{Cl|IF}} {{Cl|LEFT$}}(n2$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"_"</nowiki>|#FFB100}} {{Cl|THEN}} v = {{Text|27|#F580B1}} {{Cl|ELSE}} v = {{Cl|ASC (function)|ASC}}({{Cl|UCASE$}}(n2$)) - {{Text|64|#F580B1}}
                                            t2$ = defineaz(v)
                                        {{Cl|END IF}}
                                        paramsize = {{Text|0|#F580B1}}
                                        {{Cl|IF}} array = {{Text|1|#F580B1}} {{Cl|THEN}}
                                            t = {{Text|typname2typ|#55FF55}}(t2$)
                                            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                                            {{Cl|IF}} t = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Illegal SUB/FUNCTION parameter"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                            {{Cl|IF}} (t {{Cl|AND (boolean)|AND}} ISFIXEDLENGTH) {{Cl|THEN}} paramsize = typname2typsize
                                            t = t + ISARRAY
                                            {{Text|<nowiki>'check for recompilation override</nowiki>|#919191}}
                                            {{Cl|FOR}} i10 = {{Text|0|#F580B1}} {{Cl|TO}} sflistn
                                                {{Cl|IF}} sfidlist(i10) = idn + {{Text|1|#F580B1}} {{Cl|THEN}}
                                                    {{Cl|IF}} sfarglist(i10) = params {{Cl|THEN}}
                                                        argnelereq = sfelelist(i10)
                                                    {{Cl|END IF}}
                                                {{Cl|END IF}}
                                            {{Cl|NEXT}}
                                        {{Cl|ELSE}}
                                            t = {{Text|typname2typ|#55FF55}}(t2$)
                                            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                                            {{Cl|IF}} t = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Illegal SUB/FUNCTION parameter"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                            {{Cl|IF}} (t {{Cl|AND (boolean)|AND}} ISFIXEDLENGTH) {{Cl|THEN}} paramsize = typname2typsize
                                            {{Cl|IF}} byvalue {{Cl|THEN}}
                                                {{Cl|IF}} t {{Cl|AND (boolean)|AND}} ISPOINTER {{Cl|THEN}} t = t - ISPOINTER
                                            {{Cl|END IF}}
                                        {{Cl|END IF}}
                                        nelereq$ = nelereq$ + {{Cl|CHR$}}(argnelereq)
                                        {{Text|<nowiki>'consider changing 0 in following line too!</nowiki>|#919191}}
                                        nele$ = nele$ + {{Cl|CHR$}}({{Text|0|#F580B1}})
                                        paramsize$ = paramsize$ + {{Cl|MKL$}}(paramsize)
                                        params$ = params$ + {{Cl|MKL$}}(t)
                                        a2$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                                    {{Cl|ELSE}}
                                        a2$ = a2$ + e$ + sp
                                        {{Cl|IF}} i = n - {{Text|1|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} getlastparam
                                    {{Cl|END IF}}
                                {{Cl|NEXT}} i
                            {{Cl|END IF}} {{Text|<nowiki>'n>2</nowiki>|#919191}}
                            nosfparams:
                            {{Cl|IF}} sf = {{Text|1|#F580B1}} {{Cl|THEN}}
                                {{Text|<nowiki>'function</nowiki>|#919191}}
                                {{Text|clearid|#55FF55}}
                                id.n = n$
                                id.subfunc = {{Text|1|#F580B1}}
                                id.callname = {{Text|<nowiki>"FUNC_"</nowiki>|#FFB100}} + {{Cl|UCASE$}}(n$)
                                {{Cl|IF}} declaringlibrary {{Cl|THEN}}
                                    id.ccall = {{Text|1|#F580B1}}
                                    {{Cl|IF}} indirectlibrary = {{Text|0|#F580B1}} {{Cl|THEN}} id.callname = aliasname$
                                {{Cl|END IF}}
                                id.args = params
                                id.arg = params$
                                id.argsize = paramsize$
                                id.nele = nele$
                                id.nelereq = nelereq$
                                {{Cl|IF}} symbol$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
                                    id.ret = {{Text|typname2typ|#55FF55}}(symbol$)
                                    {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                                {{Cl|ELSE}}
                                    {{Cl|IF}} {{Cl|LEFT$}}(n$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"_"</nowiki>|#FFB100}} {{Cl|THEN}} v = {{Text|27|#F580B1}} {{Cl|ELSE}} v = {{Cl|ASC (function)|ASC}}({{Cl|UCASE$}}(n$)) - {{Text|64|#F580B1}}
                                    symbol$ = defineaz(v)
                                    id.ret = {{Text|typname2typ|#55FF55}}(symbol$)
                                    {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                                {{Cl|END IF}}
                                {{Cl|IF}} id.ret = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid FUNCTION return type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                                {{Cl|IF}} declaringlibrary {{Cl|THEN}}
                                    ctype$ = {{Text|typ2ctyp$|#55FF55}}(id.ret, {{Text|<nowiki>""</nowiki>|#FFB100}})
                                    {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                                    {{Cl|IF}} ctype$ = {{Text|<nowiki>"qbs"</nowiki>|#FFB100}} {{Cl|THEN}} ctype$ = {{Text|<nowiki>"char*"</nowiki>|#FFB100}}
                                    id.callname = {{Text|<nowiki>"(  "</nowiki>|#FFB100}} + ctype$ + {{Text|<nowiki>"  )"</nowiki>|#FFB100}} + {{Cl|RTRIM$}}(id.callname)
                                {{Cl|END IF}}
                                s$ = {{Cl|LEFT$}}(symbol$, {{Text|1|#F580B1}})
                                {{Cl|IF}} s$ <> {{Text|<nowiki>"~"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"`"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"%"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"&"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"!"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"#"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} s$ <> {{Text|<nowiki>"$"</nowiki>|#FFB100}} {{Cl|THEN}}
                                    symbol$ = {{Text|type2symbol$|#55FF55}}(symbol$)
                                    {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                                {{Cl|END IF}}
                                id.mayhave = symbol$
                                {{Cl|IF}} id.ret {{Cl|AND (boolean)|AND}} ISPOINTER {{Cl|THEN}}
                                    {{Cl|IF}} (id.ret {{Cl|AND (boolean)|AND}} ISSTRING) = {{Text|0|#F580B1}} {{Cl|THEN}} id.ret = id.ret - ISPOINTER
                                {{Cl|END IF}}
                                {{Text|regid|#55FF55}}
                                {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                            {{Cl|ELSE}}
                                {{Text|<nowiki>'sub</nowiki>|#919191}}
                                {{Text|clearid|#55FF55}}
                                id.n = n$
                                id.subfunc = {{Text|2|#F580B1}}
                                id.callname = {{Text|<nowiki>"SUB_"</nowiki>|#FFB100}} + {{Cl|UCASE$}}(n$)
                                {{Cl|IF}} declaringlibrary {{Cl|THEN}}
                                    id.ccall = {{Text|1|#F580B1}}
                                    {{Cl|IF}} indirectlibrary = {{Text|0|#F580B1}} {{Cl|THEN}} id.callname = aliasname$
                                {{Cl|END IF}}
                                id.args = params
                                id.arg = params$
                                id.argsize = paramsize$
                                id.nele = nele$
                                id.nelereq = nelereq$
                                {{Cl|IF}} {{Cl|UCASE$}}(n$) = {{Text|<nowiki>"_GL"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} params = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} UseGL = {{Text|0|#F580B1}} {{Cl|THEN}} reginternalsubfunc = {{Text|1|#F580B1}}: UseGL = {{Text|1|#F580B1}}: id.n = {{Text|<nowiki>"_GL"</nowiki>|#FFB100}}: DEPENDENCY(DEPENDENCY_GL) = {{Text|1|#F580B1}}
                                {{Text|regid|#55FF55}}
                                reginternalsubfunc = {{Text|0|#F580B1}}
                                {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                            {{Cl|END IF}}
                        {{Cl|END IF}}
                        {{Text|<nowiki>'========================================</nowiki>|#919191}}
                        finishedlinepp:
                        firstLine = {{Text|0|#F580B1}}
                    {{Cl|END IF}}
                    a$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                    ca$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                {{Cl|ELSE}}
                    {{Cl|IF}} a$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = e$: ca$ = ce$ {{Cl|ELSE}} a$ = a$ + sp + e$: ca$ = ca$ + sp + ce$
                {{Cl|END IF}}
                {{Cl|IF}} wholelinei <= wholelinen {{Cl|THEN}} wholelinei = wholelinei + {{Text|1|#F580B1}}: {{Cl|GOTO}} ppblda
                {{Text|<nowiki>'----------------------------------------</nowiki>|#919191}}
            {{Cl|END IF}} {{Text|<nowiki>'wholelinei<=wholelinen</nowiki>|#919191}}
        {{Cl|END IF}} {{Text|<nowiki>'wholelinen</nowiki>|#919191}}
    {{Cl|END IF}} {{Text|<nowiki>'len(wholeline$)</nowiki>|#919191}}
    {{Text|<nowiki>'Include Manager #1</nowiki>|#919191}}
    {{Cl|IF}} {{Cl|LEN}}(addmetainclude$) {{Cl|THEN}}
        {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|PRINT (file statement)|PRINT}} #9, {{Text|<nowiki>"Pre-pass:INCLUDE$-ing file:'"</nowiki>|#FFB100}} + addmetainclude$ + {{Text|<nowiki>"':On line"</nowiki>|#FFB100}}; linenumber
        a$ = addmetainclude$: addmetainclude$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'read/clear message</nowiki>|#919191}}
        {{Cl|IF}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}}
            includingFromRoot = {{Text|0|#F580B1}}
            forceIncludingFile = {{Text|0|#F580B1}}
            forceInclude_prepass:
            {{Cl|IF}} forceIncludeFromRoot$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
                a$ = forceIncludeFromRoot$
                forceIncludeFromRoot$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                forceIncludingFile = {{Text|1|#F580B1}}
                includingFromRoot = {{Text|1|#F580B1}}
            {{Cl|END IF}}
        {{Cl|END IF}}
        {{Cl|IF}} inclevel = {{Text|100|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Too many indwelling INCLUDE files"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
        {{Text|<nowiki>'1. Verify file exists (location is either (a)relative to source file or (b)absolute)</nowiki>|#919191}}
        fh = {{Text|99|#F580B1}} + inclevel + {{Text|1|#F580B1}}
        firstTryMethod = {{Text|1|#F580B1}}
        {{Cl|IF}} includingFromRoot <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}} firstTryMethod = {{Text|2|#F580B1}}
        {{Cl|FOR}} try = firstTryMethod {{Cl|TO}} {{Text|2|#F580B1}} {{Text|<nowiki>'if including file from root, do not attempt including from relative location</nowiki>|#919191}}
            {{Cl|IF}} try = {{Text|1|#F580B1}} {{Cl|THEN}}
                {{Cl|IF}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}}
                    {{Cl|IF}} idemode {{Cl|THEN}} p$ = idepath$ + pathsep$ {{Cl|ELSE}} p$ = {{Text|getfilepath$|#55FF55}}(sourcefile$)
                {{Cl|ELSE}}
                    p$ = {{Text|getfilepath$|#55FF55}}(incname(inclevel))
                {{Cl|END IF}}
                f$ = p$ + a$
            {{Cl|END IF}}
            {{Cl|IF}} try = {{Text|2|#F580B1}} {{Cl|THEN}} f$ = a$
            {{Cl|IF}} {{Cl|_FILEEXISTS}}(f$) {{Cl|THEN}}
                qberrorhappened = {{Text|-3|#F580B1}}
                {{Text|<nowiki>'We're using the faster LINE INPUT, which requires a BINARY open.</nowiki>|#919191}}
                {{Cl|OPEN}} f$ {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|BINARY}} {{Cl|OPEN|AS}} #fh
                {{Text|<nowiki>'And another line below edited</nowiki>|#919191}}
                qberrorhappened3:
                {{Cl|IF}} qberrorhappened = {{Text|-3|#F580B1}} {{Cl|THEN}} {{Cl|EXIT FOR}}
            {{Cl|END IF}}
            qberrorhappened = {{Text|0|#F580B1}}
        {{Cl|NEXT}}
        {{Cl|IF}} qberrorhappened <> {{Text|-3|#F580B1}} {{Cl|THEN}} qberrorhappened = {{Text|0|#F580B1}}: a$ = {{Text|<nowiki>"File "</nowiki>|#FFB100}} + a$ + {{Text|<nowiki>" not found"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
        inclevel = inclevel + {{Text|1|#F580B1}}: incname$(inclevel) = f$: inclinenumber(inclevel) = {{Text|0|#F580B1}}
    {{Cl|END IF}} {{Text|<nowiki>'fall through to next section...</nowiki>|#919191}}
    {{Text|<nowiki>'--------------------</nowiki>|#919191}}
    {{Cl|DO...LOOP|DO WHILE}} inclevel
        fh = {{Text|99|#F580B1}} + inclevel
        {{Text|<nowiki>'2. Feed next line</nowiki>|#919191}}
        {{Cl|IF}} {{Cl|EOF}}(fh) = {{Text|0|#F580B1}} {{Cl|THEN}}
            {{Cl|LINE INPUT (file statement)|LINE INPUT}} #fh, x$
            wholeline$ = x$
            inclinenumber(inclevel) = inclinenumber(inclevel) + {{Text|1|#F580B1}}
            {{Text|<nowiki>'create extended error string 'incerror$'</nowiki>|#919191}}
            errorLineInInclude = inclinenumber(inclevel)
            e$ = {{Text|<nowiki>" in line "</nowiki>|#FFB100}} + {{Text|str2|#55FF55}}(inclinenumber(inclevel)) + {{Text|<nowiki>" of "</nowiki>|#FFB100}} + incname$(inclevel) + {{Text|<nowiki>" included"</nowiki>|#FFB100}}
            {{Cl|IF}} inclevel > {{Text|1|#F580B1}} {{Cl|THEN}}
                e$ = e$ + {{Text|<nowiki>" (through "</nowiki>|#FFB100}}
                {{Cl|FOR}} x = {{Text|1|#F580B1}} {{Cl|TO}} inclevel - {{Text|1|#F580B1}} {{Cl|STEP}} {{Text|1|#F580B1}}
                    e$ = e$ + incname$(x)
                    {{Cl|IF}} x < inclevel - {{Text|1|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'a sep is req</nowiki>|#919191}}
                        {{Cl|IF}} x = inclevel - {{Text|2|#F580B1}} {{Cl|THEN}}
                            e$ = e$ + {{Text|<nowiki>" then "</nowiki>|#FFB100}}
                        {{Cl|ELSE}}
                            e$ = e$ + {{Text|<nowiki>", "</nowiki>|#FFB100}}
                        {{Cl|END IF}}
                    {{Cl|END IF}}
                {{Cl|NEXT}}
                e$ = e$ + {{Text|<nowiki>")"</nowiki>|#FFB100}}
            {{Cl|END IF}}
            incerror$ = e$
            linenumber = linenumber - {{Text|1|#F580B1}} {{Text|<nowiki>'lower official linenumber to counter later increment</nowiki>|#919191}}
            {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|PRINT (file statement)|PRINT}} #9, {{Text|<nowiki>"Pre-pass:Feeding INCLUDE$ line:["</nowiki>|#FFB100}} + wholeline$ + {{Text|<nowiki>"]"</nowiki>|#FFB100}}
            {{Cl|IF}} idemode {{Cl|THEN}} sendc$ = {{Cl|CHR$}}({{Text|10|#F580B1}}) + wholeline$: {{Cl|GOTO}} sendcommand {{Text|<nowiki>'passback</nowiki>|#919191}}
            {{Cl|GOTO}} ideprepass
        {{Cl|END IF}}
        {{Text|<nowiki>'3. Close & return control</nowiki>|#919191}}
        {{Cl|CLOSE}} #fh
        inclevel = inclevel - {{Text|1|#F580B1}}
        {{Cl|IF}} forceIncludingFile = {{Text|1|#F580B1}} {{Cl|AND (boolean)|AND}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}}
            forceIncludingFile = {{Text|0|#F580B1}}
            {{Cl|GOTO}} forceIncludeCompleted_prepass
        {{Cl|END IF}}
    {{Cl|LOOP}}
    {{Text|<nowiki>'(end manager)</nowiki>|#919191}}
    {{Cl|IF}} idemode {{Cl|THEN}} {{Cl|GOTO}} ideret2
{{Cl|LOOP}}
{{Text|<nowiki>'add final line</nowiki>|#919191}}
{{Cl|IF}} lastLineReturn = {{Text|0|#F580B1}} {{Cl|THEN}}
    lastLineReturn = {{Text|1|#F580B1}}
    lastLine = {{Text|1|#F580B1}}
    wholeline$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
    {{Cl|GOTO}} prepassLastLine
{{Cl|END IF}}
{{Cl|IF}} definingtype {{Cl|THEN}} definingtype = {{Text|0|#F580B1}} {{Text|<nowiki>'ignore this error so that auto-formatting can be performed and catch it again later</nowiki>|#919191}}
{{Cl|IF}} declaringlibrary {{Cl|THEN}} declaringlibrary = {{Text|0|#F580B1}} {{Text|<nowiki>'ignore this error so that auto-formatting can be performed and catch it again later</nowiki>|#919191}}
totallinenumber = reallinenumber
{{Text|<nowiki>'IF idemode = 0 AND NOT QuietMode THEN PRINT "first pass finished.": PRINT "Translating code... "</nowiki>|#919191}}
{{Text|<nowiki>'prepass finished</nowiki>|#919191}}
lineinput3index = {{Text|1|#F580B1}} {{Text|<nowiki>'reset input line</nowiki>|#919191}}
{{Text|<nowiki>'ide specific</nowiki>|#919191}}
ide3:
addmetainclude$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'reset stray meta-includes</nowiki>|#919191}}
{{Text|<nowiki>'reset altered variables</nowiki>|#919191}}
DataOffset = {{Text|0|#F580B1}}
inclevel = {{Text|0|#F580B1}}
subfuncn = {{Text|0|#F580B1}}
lastLineReturn = {{Text|0|#F580B1}}
lastLine = {{Text|0|#F580B1}}
firstLine = {{Text|1|#F580B1}}
UserDefineCount = {{Text|7|#F580B1}}
{{Cl|FOR}} i = {{Text|0|#F580B1}} {{Cl|TO}} constlast: constdefined(i) = {{Text|0|#F580B1}}: {{Cl|NEXT}} {{Text|<nowiki>'undefine constants</nowiki>|#919191}}
{{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Text|27|#F580B1}}: defineaz(i) = {{Text|<nowiki>"SINGLE"</nowiki>|#FFB100}}: defineextaz(i) = {{Text|<nowiki>"!"</nowiki>|#FFB100}}: {{Cl|NEXT}}
{{Cl|DIM}} {{Cl|SHARED}} DataBinBuf: DataBinBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"data.bin"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} MainTxtBuf: MainTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"main.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} DataTxtBuf: DataTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"maindata.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} RegTxtBuf: RegTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"regsf.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} FreeTxtBuf: FreeTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"mainfree.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} RunTxtBuf: RunTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"runline.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} ErrTxtBuf: ErrTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"mainerr.txt"</nowiki>|#FFB100}})
{{Text|<nowiki>'i. check the value of error_line</nowiki>|#919191}}
{{Text|<nowiki>'ii. jump to the appropriate label</nowiki>|#919191}}
errorlabels = {{Text|0|#F580B1}}
{{Text|WriteBufLine|#55FF55}} ErrTxtBuf, {{Text|<nowiki>"if (error_occurred){ error_occurred=0;"</nowiki>|#FFB100}}
{{Cl|DIM}} {{Cl|SHARED}} ChainTxtBuf: ChainTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"chain.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} InpChainTxtBuf: InpChainTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"inpchain.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} TimeTxtBuf: TimeTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"ontimer.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} TimejTxtBuf: TimejTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"ontimerj.txt"</nowiki>|#FFB100}})
{{Text|<nowiki>'*****#26 used for locking qb64pe</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} KeyTxtBuf: KeyTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"onkey.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} KeyjTxtBuf: KeyjTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"onkeyj.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} StrigTxtBuf: StrigTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"onstrig.txt"</nowiki>|#FFB100}})
{{Cl|DIM}} {{Cl|SHARED}} StrigjTxtBuf: StrigjTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"onstrigj.txt"</nowiki>|#FFB100}})
gosubid = {{Text|1|#F580B1}}
{{Text|<nowiki>'to be included whenever return without a label is called</nowiki>|#919191}}
{{Text|<nowiki>'return [label] in QBASIC was not possible in a sub/function, but QB64 will support this</nowiki>|#919191}}
{{Text|<nowiki>'special codes will represent special return conditions:</nowiki>|#919191}}
{{Text|<nowiki>'0=return from main to calling sub/function/proc by return [NULL];</nowiki>|#919191}}
{{Text|<nowiki>'1... a global number representing a return point after a gosub</nowiki>|#919191}}
{{Text|<nowiki>'note: RETURN [label] should fail if a "return [NULL];" type return is required</nowiki>|#919191}}
{{Cl|DIM}} {{Cl|SHARED}} RetTxtBuf: RetTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"ret0.txt"</nowiki>|#FFB100}})
{{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"if (next_return_point){"</nowiki>|#FFB100}}
{{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"next_return_point--;"</nowiki>|#FFB100}}
{{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"switch(return_point[next_return_point]){"</nowiki>|#FFB100}}
{{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"case 0:"</nowiki>|#FFB100}}
{{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"return;"</nowiki>|#FFB100}}
{{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"break;"</nowiki>|#FFB100}}
continueline = {{Text|0|#F580B1}}
endifs = {{Text|0|#F580B1}}
lineelseused = {{Text|0|#F580B1}}
continuelinefrom = {{Text|0|#F580B1}}
linenumber = {{Text|0|#F580B1}}
reallinenumber = {{Text|0|#F580B1}}
declaringlibrary = {{Text|0|#F580B1}}
{{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"S_0:;"</nowiki>|#FFB100}} {{Text|<nowiki>'note: REQUIRED by run statement</nowiki>|#919191}}
{{Cl|IF}} UseGL {{Cl|THEN}} {{Text|gl_include_content|#55FF55}}
{{Text|<nowiki>'ide specific</nowiki>|#919191}}
{{Cl|IF}} idemode {{Cl|THEN}} {{Cl|GOTO}} ideret3
{{Cl|DO}}
    ide4:
    includeline:
    mainpassLastLine:
    {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} firstLine <> {{Text|0|#F580B1}} {{Cl|THEN}}
        lineBackup$ = a3$ {{Text|<nowiki>'backup the real first line (will be blank when lastline is set)</nowiki>|#919191}}
        forceIncludeFromRoot$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
        {{Cl|IF}} vWatchOn {{Cl|THEN}}
            addingvWatch = {{Text|1|#F580B1}}
            {{Cl|IF}} firstLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch.bi"</nowiki>|#FFB100}}
            {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch.bm"</nowiki>|#FFB100}}
        {{Cl|ELSE}}
            {{Text|<nowiki>'IF firstLine <> 0 THEN forceIncludeFromRoot$ = "internal\support\vwatch\vwatch_stub.bi"</nowiki>|#919191}}
            {{Cl|IF}} lastLine <> {{Text|0|#F580B1}} {{Cl|THEN}} forceIncludeFromRoot$ = {{Text|<nowiki>"internal\support\vwatch\vwatch_stub.bm"</nowiki>|#FFB100}}
        {{Cl|END IF}}
        firstLine = {{Text|0|#F580B1}}: lastLine = {{Text|0|#F580B1}}
        {{Cl|IF}} {{Cl|LEN}}(forceIncludeFromRoot$) {{Cl|THEN}} {{Cl|GOTO}} forceInclude
        forceIncludeCompleted:
        addingvWatch = {{Text|0|#F580B1}}
        a3$ = lineBackup$
    {{Cl|END IF}}
    prepass = {{Text|0|#F580B1}}
    stringprocessinghappened = {{Text|0|#F580B1}}
    {{Cl|IF}} continuelinefrom {{Cl|THEN}}
        start = continuelinefrom
        continuelinefrom = {{Text|0|#F580B1}}
        {{Cl|GOTO}} contline
    {{Cl|END IF}}
    {{Text|<nowiki>'begin a new line</nowiki>|#919191}}
    impliedendif = {{Text|0|#F580B1}}
    THENGOTO = {{Text|0|#F580B1}}
    continueline = {{Text|0|#F580B1}}
    endifs = {{Text|0|#F580B1}}
    lineelseused = {{Text|0|#F580B1}}
    newif = {{Text|0|#F580B1}}
    {{Text|<nowiki>'apply metacommands from previous line</nowiki>|#919191}}
    {{Cl|IF}} addmetadynamic = {{Text|1|#F580B1}} {{Cl|THEN}} addmetadynamic = {{Text|0|#F580B1}}: DynamicMode = {{Text|1|#F580B1}}
    {{Cl|IF}} addmetastatic = {{Text|1|#F580B1}} {{Cl|THEN}} addmetastatic = {{Text|0|#F580B1}}: DynamicMode = {{Text|0|#F580B1}}
    {{Text|<nowiki>'a3$ is passed in idemode and when using $include</nowiki>|#919191}}
    {{Cl|IF}} idemode = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}} a3$ = {{Text|lineinput3$|#55FF55}}
    {{Cl|IF}} a3$ = {{Cl|CHR$}}({{Text|13|#F580B1}}) {{Cl|THEN}} {{Cl|EXIT DO}}
    linenumber = linenumber + {{Text|1|#F580B1}}
    reallinenumber = reallinenumber + {{Text|1|#F580B1}}
    {{Cl|IF}} InValidLine(linenumber) {{Cl|THEN}}
        layoutok = {{Text|1|#F580B1}}
        layout$ = {{Cl|SPACE$}}(controllevel + {{Text|1|#F580B1}}) + {{Cl|LTRIM$}}({{Cl|RTRIM$}}(a3$))
        {{Cl|IF}} idemode {{Cl|GOTO}} ideret4 {{Cl|ELSE}} {{Cl|GOTO}} skipide4
    {{Cl|END IF}}
    layout = {{Text|<nowiki>""</nowiki>|#FFB100}}
    layoutok = {{Text|1|#F580B1}}
    {{Cl|IF}} idemode = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|NOT}} QuietMode {{Cl|THEN}}
        {{Text|<nowiki>'IF LEN(a3$) THEN</nowiki>|#919191}}
        {{Text|<nowiki>'    dotlinecount = dotlinecount + 1: IF dotlinecount >= 100 THEN dotlinecount = 0: PRINT ".";</nowiki>|#919191}}
        {{Text|<nowiki>'END IF</nowiki>|#919191}}
        maxprogresswidth = {{Text|50|#F580B1}} {{Text|<nowiki>'arbitrary</nowiki>|#919191}}
        percentage = {{Cl|INT}}(reallinenumber / totallinenumber * {{Text|100|#F580B1}})
        percentagechars = {{Cl|INT}}(maxprogresswidth * reallinenumber / totallinenumber)
        {{Cl|IF}} percentage <> prevpercentage {{Cl|AND (boolean)|AND}} percentagechars <> prevpercentagechars {{Cl|THEN}}
            prevpercentage = percentage
            prevpercentagechars = percentagechars
            {{Cl|IF}} ConsoleMode {{Cl|THEN}}
                {{Cl|PRINT}} {{Text|<nowiki>"["</nowiki>|#FFB100}} + {{Cl|STRING$}}(percentagechars, {{Text|<nowiki>"."</nowiki>|#FFB100}}) + {{Cl|SPACE$}}(maxprogresswidth - percentagechars) + {{Text|<nowiki>"]"</nowiki>|#FFB100}} + {{Cl|STR$}}(percentage) + {{Text|<nowiki>"%"</nowiki>|#FFB100}};
                {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
                    {{Cl|PRINT}} {{Cl|CHR$}}({{Text|27|#F580B1}}) + {{Text|<nowiki>"[A"</nowiki>|#FFB100}}
                {{Cl|ELSE}}
                    {{Cl|PRINT}} {{Cl|CHR$}}({{Text|13|#F580B1}});
                {{Cl|END IF}}
            {{Cl|ELSE}}
                {{Cl|LOCATE}} , {{Text|1|#F580B1}}
                {{Cl|PRINT}} {{Cl|STRING$}}(percentagechars, {{Text|219|#F580B1}}) + {{Cl|STRING$}}(maxprogresswidth - percentagechars, {{Text|176|#F580B1}}) + {{Cl|STR$}}(percentage) + {{Text|<nowiki>"%"</nowiki>|#FFB100}};
            {{Cl|END IF}}
        {{Cl|END IF}}
    {{Cl|END IF}}
    a3$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}(a3$))
    wholeline = a3$
    layoutoriginal$ = a3$
    layoutcomment$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Text|<nowiki>'clear any previous layout comment</nowiki>|#919191}}
    lhscontrollevel = controllevel
    linefragment = {{Text|<nowiki>"[INFORMATION UNAVAILABLE]"</nowiki>|#FFB100}}
    {{Cl|IF}} {{Cl|LEN}}(a3$) = {{Text|0|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
    {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|PRINT (file statement)|PRINT}} #9, {{Text|<nowiki>"########"</nowiki>|#FFB100}} + a3$ + {{Text|<nowiki>"########"</nowiki>|#FFB100}}
    layoutdone = {{Text|1|#F580B1}} {{Text|<nowiki>'validates layout of any following goto finishednonexec/finishedline</nowiki>|#919191}}
    {{Text|<nowiki>'We've already figured out in the prepass which lines are invalidated by the precompiler</nowiki>|#919191}}
    {{Text|<nowiki>'No need to go over those lines again.</nowiki>|#919191}}
    {{Text|<nowiki>'IF InValidLine(linenumber) THEN goto skipide4 'layoutdone = 0: GOTO finishednonexec</nowiki>|#919191}}
    a3u$ = {{Cl|UCASE$}}(a3$)
    {{Text|<nowiki>'QB64 Metacommands</nowiki>|#919191}}
    {{Cl|IF}} {{Cl|ASC (function)|ASC}}(a3$) = {{Text|36|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'$</nowiki>|#919191}}
        {{Text|<nowiki>'precompiler commands should always be executed FIRST.</nowiki>|#919191}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$END IF"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} a3u$ = {{Text|<nowiki>"$ENDIF"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$END IF without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Text|<nowiki>'We no longer have an $IF block at this level</nowiki>|#919191}}
            ExecCounter = ExecCounter - {{Text|1|#F580B1}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$End If"</nowiki>|#FFB100}})
            controltype(controllevel) = {{Text|0|#F580B1}}
            controllevel = controllevel - {{Text|1|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|4|#F580B1}}) = {{Text|<nowiki>"$IF "</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Text|<nowiki>'prevents code from being placed before 'CASE condition' in a SELECT CASE block</nowiki>|#919191}}
            {{Cl|IF}} SelectCaseCounter > {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} SelectCaseHasCaseBlock(SelectCaseCounter) = {{Text|0|#F580B1}} {{Cl|THEN}}
                a$ = {{Text|<nowiki>"Expected CASE expression"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            {{Cl|END IF}}
            temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(a3u$, {{Text|4|#F580B1}})) {{Text|<nowiki>'strip off the $IF and extra spaces</nowiki>|#919191}}
            temp$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, {{Cl|LEN}}(temp$) - {{Text|4|#F580B1}})) {{Text|<nowiki>'and strip off the THEN and extra spaces</nowiki>|#919191}}
            temp = {{Text|0|#F580B1}}
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"<="</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"=<"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$): tempOp$ = {{Text|<nowiki>"<="</nowiki>|#FFB100}}
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>">="</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"=>"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$): tempOp$ = {{Text|<nowiki>">="</nowiki>|#FFB100}}
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"<>"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"><"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$): tempOp$ = {{Text|<nowiki>"<>"</nowiki>|#FFB100}}
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"="</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>">"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} tempOp$ = {{Text|<nowiki>"<"</nowiki>|#FFB100}}: temp = {{Cl|INSTR}}(temp$, tempOp$)
            ExecCounter = ExecCounter + {{Text|1|#F580B1}}
            ExecLevel(ExecCounter) = {{Text|-1|#F580B1}} {{Text|<nowiki>'default to a skip value</nowiki>|#919191}}
            DefineElse(ExecCounter) = {{Text|1|#F580B1}} {{Text|<nowiki>'1 says we have an $IF statement at this level</nowiki>|#919191}}
            result = {{Text|EvalPreIF|#55FF55}}(temp$, a$)
            {{Cl|IF}} a$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|GOTO}} errmes
            {{Cl|IF}} result <> {{Text|0|#F580B1}} {{Cl|THEN}}
                ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
                {{Cl|IF}} ExecLevel(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|4|#F580B1}} {{Text|<nowiki>'Else if used and conditon found</nowiki>|#919191}}
            {{Cl|END IF}}
            controllevel = controllevel + {{Text|1|#F580B1}}
            controltype(controllevel) = {{Text|6|#F580B1}}
            {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$If "</nowiki>|#FFB100}}) + temp$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>" Then"</nowiki>|#FFB100}}): {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'no = sign in the $IF statement, so we're going to assume the user is doing something like $IF flag</nowiki>|#919191}}
            l$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, temp - {{Text|1|#F580B1}})): r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, temp + {{Cl|LEN}}(tempOp$)))
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$If "</nowiki>|#FFB100}}) + l$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + tempOp$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + r$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>" Then"</nowiki>|#FFB100}})
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$ELSE"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$IF block already has $ELSE statement in it"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|2|#F580B1}} {{Text|<nowiki>'set the flag to declare an $ELSE already in this block</nowiki>|#919191}}
            {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|4|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'If we executed code in a previous IF or ELSE IF statement, we can't do it here</nowiki>|#919191}}
                ExecLevel(ExecCounter) = {{Text|-1|#F580B1}} {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
            {{Cl|ELSE}}
                ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'If we were processing code before, code after this segment is going to be SKIPPED</nowiki>|#919191}}
            {{Cl|END IF}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Else"</nowiki>|#FFB100}})
            lhscontrollevel = lhscontrollevel - {{Text|1|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|5|#F580B1}}) = {{Text|<nowiki>"$ELSE"</nowiki>|#FFB100}} {{Cl|THEN}}
            temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(a3u$, {{Text|6|#F580B1}}))
            {{Cl|IF}} {{Cl|LEFT$}}(temp$, {{Text|3|#F580B1}}) = {{Text|<nowiki>"IF "</nowiki>|#FFB100}} {{Cl|THEN}}
                {{Cl|IF}} DefineElse(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF without $IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF cannot follow $ELSE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                {{Cl|IF}} {{Cl|RIGHT$}}(temp$, {{Text|5|#F580B1}}) <> {{Text|<nowiki>" THEN"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"$ELSE IF without THEN"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|3|#F580B1}})) {{Text|<nowiki>'strip off the IF and extra spaces</nowiki>|#919191}}
                temp$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, {{Cl|LEN}}(temp$) - {{Text|4|#F580B1}})) {{Text|<nowiki>'and strip off the THEN and extra spaces</nowiki>|#919191}}
                {{Cl|IF}} DefineElse(ExecCounter) {{Cl|AND (boolean)|AND}} {{Text|4|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'If we executed code in a previous IF or ELSE IF statement, we can't do it here</nowiki>|#919191}}
                    ExecLevel(ExecCounter) = {{Text|-1|#F580B1}}
                {{Cl|ELSE}}
                    result = {{Text|EvalPreIF|#55FF55}}(temp$, a$)
                    {{Cl|IF}} a$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} {{Cl|GOTO}} errmes
                    {{Cl|IF}} result <> {{Text|0|#F580B1}} {{Cl|THEN}}
                        ExecLevel(ExecCounter) = ExecLevel(ExecCounter - {{Text|1|#F580B1}}) {{Text|<nowiki>'So we inherit the execlevel from above</nowiki>|#919191}}
                        {{Cl|IF}} ExecLevel(ExecCounter) = {{Text|0|#F580B1}} {{Cl|THEN}} DefineElse(ExecCounter) = DefineElse(ExecCounter) {{Cl|OR}} {{Text|4|#F580B1}} {{Text|<nowiki>'Else if used and conditon found</nowiki>|#919191}}
                    {{Cl|END IF}}
                {{Cl|END IF}}
                lhscontrollevel = lhscontrollevel - {{Text|1|#F580B1}}
                temp = {{Cl|INSTR}}(temp$, {{Text|<nowiki>"="</nowiki>|#FFB100}})
                {{Cl|IF}} temp = {{Text|0|#F580B1}} {{Cl|THEN}} layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$ElseIf "</nowiki>|#FFB100}}) + temp$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>" Then"</nowiki>|#FFB100}}): {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'no = sign in the $IF statement, so we're going to assume the user is doing something like $IF flag</nowiki>|#919191}}
                l$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, temp - {{Text|1|#F580B1}})): r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, temp + {{Text|1|#F580B1}}))
                layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$ElseIf "</nowiki>|#FFB100}}) + l$ + {{Text|<nowiki>" = "</nowiki>|#FFB100}} + r$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>" Then"</nowiki>|#FFB100}})
                {{Cl|GOTO}} finishednonexec
            {{Cl|END IF}}
        {{Cl|END IF}}
        {{Cl|IF}} ExecLevel(ExecCounter) {{Cl|THEN}} {{Text|<nowiki>'don't check for any more metacommands except the one's which worth with the precompiler</nowiki>|#919191}}
            layoutdone = {{Text|0|#F580B1}}
            {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'we don't check for anything inside lines that we've marked for skipping</nowiki>|#919191}}
        {{Cl|END IF}}
        {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|5|#F580B1}}) = {{Text|<nowiki>"$LET "</nowiki>|#FFB100}} {{Cl|THEN}}
            temp$ = a3u$
            temp$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, {{Text|5|#F580B1}})) {{Text|<nowiki>'simply shorten our string to parse</nowiki>|#919191}}
            {{Text|<nowiki>'For starters, let's make certain that we have 3 elements to deal with</nowiki>|#919191}}
            temp = {{Cl|INSTR}}(temp$, {{Text|<nowiki>"="</nowiki>|#FFB100}}) {{Text|<nowiki>'without an = in there, we can't get a value from the left and right side</nowiki>|#919191}}
            l$ = {{Cl|RTRIM$}}({{Cl|LEFT$}}(temp$, temp - {{Text|1|#F580B1}})): r$ = {{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(temp$, temp + {{Text|1|#F580B1}}))
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Let "</nowiki>|#FFB100}}) + l$ + {{Text|<nowiki>" = "</nowiki>|#FFB100}} + r$
            {{Text|<nowiki>'First look to see if we have an existing setting like this and if so, update it</nowiki>|#919191}}
            {{Cl|FOR}} i = {{Text|7|#F580B1}} {{Cl|TO}} UserDefineCount {{Text|<nowiki>'UserDefineCount 1-7 are reserved for automatic OS/BIT detection & version</nowiki>|#919191}}
                {{Cl|IF}} UserDefine({{Text|0|#F580B1}}, i) = l$ {{Cl|THEN}} UserDefine({{Text|1|#F580B1}}, i) = r$: {{Cl|GOTO}} finishednonexec
            {{Cl|NEXT}}
            {{Text|<nowiki>'Otherwise create a new setting and set the initial value for it</nowiki>|#919191}}
            UserDefineCount = UserDefineCount + {{Text|1|#F580B1}}
            {{Cl|IF}} UserDefineCount > {{Cl|UBOUND}}(UserDefine, {{Text|2|#F580B1}}) {{Cl|THEN}}
                {{Cl|REDIM}} {{Cl|_PRESERVE}} UserDefine({{Text|1|#F580B1}}, {{Cl|UBOUND}}(UserDefine, {{Text|2|#F580B1}}) + {{Text|10|#F580B1}}) {{Text|<nowiki>'Add another 10 elements to the array so it'll expand as the user adds to it</nowiki>|#919191}}
            {{Cl|END IF}}
            UserDefine({{Text|0|#F580B1}}, UserDefineCount) = l$
            UserDefine({{Text|1|#F580B1}}, UserDefineCount) = r$
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$COLOR:0"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Color:0"</nowiki>|#FFB100}})
            {{Cl|IF}} qb64prefix_set {{Cl|THEN}}
                addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color0_noprefix.bi"</nowiki>|#FFB100}}
            {{Cl|ELSE}}
                addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color0.bi"</nowiki>|#FFB100}}
            {{Cl|END IF}}
            layoutdone = {{Text|1|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$COLOR:32"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Color:32"</nowiki>|#FFB100}})
            {{Cl|IF}} qb64prefix_set {{Cl|THEN}}
                addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color32_noprefix.bi"</nowiki>|#FFB100}}
            {{Cl|ELSE}}
                addmetainclude$ = {{Text|getfilepath$|#55FF55}}({{Cl|COMMAND$}}({{Text|0|#F580B1}})) + {{Text|<nowiki>"internal"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"support"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color"</nowiki>|#FFB100}} + pathsep$ + {{Text|<nowiki>"color32.bi"</nowiki>|#FFB100}}
            {{Cl|END IF}}
            layoutdone = {{Text|1|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$NOPREFIX"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Text|<nowiki>'already set in prepass</nowiki>|#919191}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$NoPrefix"</nowiki>|#FFB100}})
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$VIRTUALKEYBOARD:ON"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Text|<nowiki>'Deprecated; does nothing.</nowiki>|#919191}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VirtualKeyboard:On"</nowiki>|#FFB100}})
            {{Text|addWarning|#55FF55}} linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|<nowiki>"Deprecated feature"</nowiki>|#FFB100}}, {{Text|<nowiki>"$VirtualKeyboard"</nowiki>|#FFB100}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$VIRTUALKEYBOARD:OFF"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Text|<nowiki>'Deprecated; does nothing.</nowiki>|#919191}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VirtualKeyboard:Off"</nowiki>|#FFB100}})
            {{Text|addWarning|#55FF55}} linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|<nowiki>"Deprecated feature"</nowiki>|#FFB100}}, {{Text|<nowiki>"$VirtualKeyboard"</nowiki>|#FFB100}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$DEBUG"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Debug"</nowiki>|#FFB100}})
            {{Cl|IF}} NoIDEMode {{Cl|THEN}}
                {{Text|addWarning|#55FF55}} linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|<nowiki>"$Debug"</nowiki>|#FFB100}}, {{Text|<nowiki>"$Debug features only work from the IDE"</nowiki>|#FFB100}}
            {{Cl|END IF}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$CHECKING:OFF"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Checking:Off"</nowiki>|#FFB100}})
            NoChecks = {{Text|1|#F580B1}}
            {{Cl|IF}} vWatchOn <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} NoIDEMode = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} inclevel = {{Text|0|#F580B1}} {{Cl|THEN}}
                {{Text|addWarning|#55FF55}} linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), {{Text|<nowiki>"$Debug"</nowiki>|#FFB100}}, {{Text|<nowiki>"$Debug features won't work in $Checking:Off blocks"</nowiki>|#FFB100}}
            {{Cl|END IF}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$CHECKING:ON"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Checking:On"</nowiki>|#FFB100}})
            NoChecks = {{Text|0|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$CONSOLE"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Console"</nowiki>|#FFB100}})
            Console = {{Text|1|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$CONSOLE:ONLY"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Console:Only"</nowiki>|#FFB100}})
            DEPENDENCY(DEPENDENCY_CONSOLE_ONLY) = DEPENDENCY(DEPENDENCY_CONSOLE_ONLY) {{Cl|OR}} {{Text|1|#F580B1}}
            Console = {{Text|1|#F580B1}}
            {{Cl|IF}} prepass = {{Text|0|#F580B1}} {{Cl|THEN}}
                {{Cl|IF}} NoChecks = {{Text|0|#F580B1}} {{Cl|THEN}} {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"do{"</nowiki>|#FFB100}}
                {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"sub__dest(func__console());"</nowiki>|#FFB100}}
                {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"sub__source(func__console());"</nowiki>|#FFB100}}
                {{Cl|GOTO}} finishedline2
            {{Cl|ELSE}}
                {{Cl|GOTO}} finishednonexec
            {{Cl|END IF}}
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$ASSERTS"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Asserts"</nowiki>|#FFB100}})
            Asserts = {{Text|1|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$ASSERTS:CONSOLE"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Asserts:Console"</nowiki>|#FFB100}})
            Asserts = {{Text|1|#F580B1}}
            Console = {{Text|1|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$SCREENHIDE"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$ScreenHide"</nowiki>|#FFB100}})
            ScreenHide = {{Text|1|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$SCREENSHOW"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$ScreenShow"</nowiki>|#FFB100}})
            ScreenHide = {{Text|0|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$RESIZE:OFF"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Resize:Off"</nowiki>|#FFB100}})
            Resize = {{Text|0|#F580B1}}: Resize_Scale = {{Text|0|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$RESIZE:ON"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Resize:On"</nowiki>|#FFB100}})
            Resize = {{Text|1|#F580B1}}: Resize_Scale = {{Text|0|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$RESIZE:STRETCH"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Resize:Stretch"</nowiki>|#FFB100}})
            Resize = {{Text|1|#F580B1}}: Resize_Scale = {{Text|1|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} a3u$ = {{Text|<nowiki>"$RESIZE:SMOOTH"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$Resize:Smooth"</nowiki>|#FFB100}})
            Resize = {{Text|1|#F580B1}}: Resize_Scale = {{Text|2|#F580B1}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|12|#F580B1}}) = {{Text|<nowiki>"$VERSIONINFO"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Text|<nowiki>'Embed version info into the final binary (Windows only)</nowiki>|#919191}}
            FirstDelimiter = {{Cl|INSTR}}(a3u$, {{Text|<nowiki>":"</nowiki>|#FFB100}})
            SecondDelimiter = {{Cl|INSTR}}(FirstDelimiter + {{Text|1|#F580B1}}, a3u$, {{Text|<nowiki>"="</nowiki>|#FFB100}})
            {{Cl|IF}} FirstDelimiter = {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} SecondDelimiter = {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} SecondDelimiter = FirstDelimiter + {{Text|1|#F580B1}} {{Cl|THEN}}
                a$ = {{Text|<nowiki>"Expected $VERSIONINFO:key=value"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            {{Cl|END IF}}
            VersionInfoKey$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|MID$ (function)|MID$}}(a3u$, FirstDelimiter + {{Text|1|#F580B1}}, SecondDelimiter - FirstDelimiter - {{Text|1|#F580B1}})))
            VersionInfoValue$ = {{Text|StrReplace$|#55FF55}}({{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|MID$ (function)|MID$}}(a3$, SecondDelimiter + {{Text|1|#F580B1}}))), {{Cl|CHR$}}({{Text|34|#F580B1}}), {{Text|<nowiki>"'"</nowiki>|#FFB100}})
            {{Cl|SELECT CASE}} VersionInfoKey$
                {{Cl|CASE}} {{Text|<nowiki>"FILEVERSION#"</nowiki>|#FFB100}}
                    {{Cl|GOSUB}} ValidateVersion
                    viFileVersionNum$ = VersionInfoValue$
                    {{Cl|IF}} viFileVersion$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} viFileVersion$ = viFileVersionNum$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:FILEVERSION#="</nowiki>|#FFB100}}) + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"PRODUCTVERSION#"</nowiki>|#FFB100}}
                    {{Cl|GOSUB}} ValidateVersion
                    viProductVersionNum$ = VersionInfoValue$
                    {{Cl|IF}} viProductVersion$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} viProductVersion$ = viProductVersionNum$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:PRODUCTVERSION#="</nowiki>|#FFB100}}) + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"COMPANYNAME"</nowiki>|#FFB100}}
                    viCompanyName$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"CompanyName="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"FILEDESCRIPTION"</nowiki>|#FFB100}}
                    viFileDescription$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"FileDescription="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"FILEVERSION"</nowiki>|#FFB100}}
                    viFileVersion$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"FileVersion="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"INTERNALNAME"</nowiki>|#FFB100}}
                    viInternalName$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"InternalName="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"LEGALCOPYRIGHT"</nowiki>|#FFB100}}
                    viLegalCopyright$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"LegalCopyright="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"LEGALTRADEMARKS"</nowiki>|#FFB100}}
                    viLegalTrademarks$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"LegalTrademarks="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"ORIGINALFILENAME"</nowiki>|#FFB100}}
                    viOriginalFilename$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"OriginalFilename="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"PRODUCTNAME"</nowiki>|#FFB100}}
                    viProductName$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"ProductName="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"PRODUCTVERSION"</nowiki>|#FFB100}}
                    viProductVersion$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"ProductVersion="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"COMMENTS"</nowiki>|#FFB100}}
                    viComments$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"Comments="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Text|<nowiki>"WEB"</nowiki>|#FFB100}}
                    viWeb$ = VersionInfoValue$
                    layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$VersionInfo:"</nowiki>|#FFB100}}) + {{Text|<nowiki>"Web="</nowiki>|#FFB100}} + VersionInfoValue$
                {{Cl|CASE}} {{Cl|ELSE}}
                    a$ = {{Text|<nowiki>"Invalid key. (Use FILEVERSION#, PRODUCTVERSION#, CompanyName, FileDescription, FileVersion, InternalName, LegalCopyright, LegalTrademarks, OriginalFilename, ProductName, ProductVersion, Comments or Web)"</nowiki>|#FFB100}}
                    {{Cl|GOTO}} errmes
            {{Cl|END SELECT}}
            VersionInfoSet = {{Text|-1|#F580B1}}
            {{Cl|GOTO}} finishednonexec
            ValidateVersion:
            {{Text|<nowiki>'Check if only numbers and commas (4 comma-separated values)</nowiki>|#919191}}
            {{Cl|IF}} {{Cl|LEN}}(VersionInfoValue$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected $VERSIONINFO:"</nowiki>|#FFB100}} + VersionInfoKey$ + {{Text|<nowiki>"=#,#,#,# (4 comma-separated numeric values: major, minor, revision and build)"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            viCommas = {{Text|0|#F580B1}}
            {{Cl|FOR}} i = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(VersionInfoValue$)
                {{Cl|IF}} {{Cl|ASC (function)|ASC}}(VersionInfoValue$, i) = {{Text|44|#F580B1}} {{Cl|THEN}} viCommas = viCommas + {{Text|1|#F580B1}}
                {{Cl|IF}} {{Cl|INSTR}}({{Text|<nowiki>"0123456789,"</nowiki>|#FFB100}}, {{Cl|MID$ (function)|MID$}}(VersionInfoValue$, i, {{Text|1|#F580B1}})) = {{Text|0|#F580B1}} {{Cl|OR (boolean)|OR}} (i = {{Cl|LEN}}(VersionInfoValue$) {{Cl|AND (boolean)|AND}} viCommas <> {{Text|3|#F580B1}}) {{Cl|OR (boolean)|OR}} {{Cl|RIGHT$}}(VersionInfoValue$, {{Text|1|#F580B1}}) = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}}
                    a$ = {{Text|<nowiki>"Expected $VERSIONINFO:"</nowiki>|#FFB100}} + VersionInfoKey$ + {{Text|<nowiki>"=#,#,#,# (4 comma-separated numeric values: major, minor, revision and build)"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                {{Cl|END IF}}
            {{Cl|NEXT}}
            {{Cl|RETURN}}
        {{Cl|END IF}}
        {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|8|#F580B1}}) = {{Text|<nowiki>"$EXEICON"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Text|<nowiki>'Basic syntax check. Multi-platform.</nowiki>|#919191}}
            {{Cl|IF}} ExeIconSet {{Cl|THEN}} a$ = {{Text|<nowiki>"$EXEICON already defined"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            FirstDelimiter = {{Cl|INSTR}}(a3u$, {{Text|<nowiki>"'"</nowiki>|#FFB100}})
            {{Cl|IF}} FirstDelimiter = {{Text|0|#F580B1}} {{Cl|THEN}}
                a$ = {{Text|<nowiki>"Expected $EXEICON:'filename'"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            {{Cl|ELSE}}
                SecondDelimiter = {{Cl|INSTR}}(FirstDelimiter + {{Text|1|#F580B1}}, a3u$, {{Text|<nowiki>"'"</nowiki>|#FFB100}})
                {{Cl|IF}} SecondDelimiter = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected $EXEICON:'filename'"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            {{Cl|END IF}}
            ExeIconFile$ = {{Cl|RTRIM$}}({{Cl|LTRIM$}}({{Cl|MID$ (function)|MID$}}(a3$, FirstDelimiter + {{Text|1|#F580B1}}, SecondDelimiter - FirstDelimiter - {{Text|1|#F580B1}})))
            {{Cl|IF}} {{Cl|LEN}}(ExeIconFile$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected $EXEICON:'filename'"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$ExeIcon:'"</nowiki>|#FFB100}}) + ExeIconFile$ + {{Text|<nowiki>"'"</nowiki>|#FFB100}} + {{Cl|MID$ (function)|MID$}}(a3$, SecondDelimiter + {{Text|1|#F580B1}})
            IconPath$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
            {{Cl|IF}} {{Cl|LEFT$}}(ExeIconFile$, {{Text|2|#F580B1}}) = {{Text|<nowiki>"./"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} {{Cl|LEFT$}}(ExeIconFile$, {{Text|2|#F580B1}}) = {{Text|<nowiki>".\"</nowiki>|#FFB100}} {{Cl|THEN}}
                {{Text|<nowiki>'Relative to source file's folder</nowiki>|#919191}}
                {{Cl|IF}} NoIDEMode {{Cl|THEN}}
                    IconPath$ = path.source$
                    {{Cl|IF}} {{Cl|LEN}}(IconPath$) > {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|RIGHT$}}(IconPath$, {{Text|1|#F580B1}}) <> pathsep$ {{Cl|THEN}} IconPath$ = IconPath$ + pathsep$
                {{Cl|ELSE}}
                    {{Cl|IF}} {{Cl|LEN}}(ideprogname) {{Cl|THEN}} IconPath$ = idepath$ + pathsep$
                {{Cl|END IF}}
                ExeIconFile$ = IconPath$ + {{Cl|MID$ (function)|MID$}}(ExeIconFile$, {{Text|3|#F580B1}})
            {{Cl|ELSEIF}} {{Cl|INSTR}}(ExeIconFile$, {{Text|<nowiki>"/"</nowiki>|#FFB100}}) {{Cl|OR (boolean)|OR}} {{Cl|INSTR}}(ExeIconFile$, {{Text|<nowiki>"\"</nowiki>|#FFB100}}) {{Cl|THEN}}
                {{Cl|FOR}} i = {{Cl|LEN}}(ExeIconFile$) {{Cl|TO}} {{Text|1|#F580B1}} {{Cl|STEP}} {{Text|-1|#F580B1}}
                    {{Cl|IF}} {{Cl|MID$ (function)|MID$}}(ExeIconFile$, i, {{Text|1|#F580B1}}) = {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} {{Cl|MID$ (function)|MID$}}(ExeIconFile$, i, {{Text|1|#F580B1}}) = {{Text|<nowiki>"\"</nowiki>|#FFB100}} {{Cl|THEN}}
                        IconPath$ = {{Cl|LEFT$}}(ExeIconFile$, i)
                        ExeIconFileOnly$ = {{Cl|MID$ (function)|MID$}}(ExeIconFile$, i + {{Text|1|#F580B1}})
                        {{Cl|IF}} {{Cl|_DIREXISTS}}(IconPath$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"File '"</nowiki>|#FFB100}} + ExeIconFileOnly$ + {{Text|<nowiki>"' not found"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                        currentdir$ = {{Cl|_CWD$}}
                        {{Cl|CHDIR}} IconPath$
                        IconPath$ = {{Cl|_CWD$}}
                        {{Cl|CHDIR}} currentdir$
                        ExeIconFile$ = IconPath$ + pathsep$ + ExeIconFileOnly$
                        {{Cl|EXIT FOR}}
                    {{Cl|END IF}}
                {{Cl|NEXT}}
            {{Cl|END IF}}
            {{Cl|IF}} {{Cl|_FILEEXISTS}}(ExeIconFile$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"File '"</nowiki>|#FFB100}} + ExeIconFile$ + {{Text|<nowiki>"' not found"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            ExeIconSet = linenumber
            {{Text|SetDependency|#55FF55}} DEPENDENCY_ICON
            {{Cl|IF}} NoChecks = {{Text|0|#F580B1}} {{Cl|THEN}} {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"do{"</nowiki>|#FFB100}}
            {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"sub__icon(NULL,NULL,0);"</nowiki>|#FFB100}}
            {{Cl|GOTO}} finishedline2
        {{Cl|END IF}}
        {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|10|#F580B1}}) = {{Text|<nowiki>"$UNSTABLE:"</nowiki>|#FFB100}} {{Cl|THEN}}
            layout$ = {{Text|SCase|#55FF55}}({{Text|<nowiki>"$Unstable:"</nowiki>|#FFB100}})
            token$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|MID$ (function)|MID$}}(a3u$, {{Text|11|#F580B1}})))
            {{Cl|SELECT CASE}} token$
                {{Cl|CASE}} {{Text|<nowiki>"MIDI"</nowiki>|#FFB100}}
                    layout$ = layout$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Midi"</nowiki>|#FFB100}})
                {{Cl|CASE}} {{Text|<nowiki>"HTTP"</nowiki>|#FFB100}}
                    layout$ = layout$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Http"</nowiki>|#FFB100}})
            {{Cl|END SELECT}}
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Cl|IF}} unstableFlags(UNSTABLE_MIDI) {{Cl|THEN}}
            {{Cl|IF}} {{Cl|LEFT$}}(a3u$, {{Text|15|#F580B1}}) = {{Text|<nowiki>"$MIDISOUNDFONT:"</nowiki>|#FFB100}} {{Cl|THEN}}
                {{Cl|IF}} MidiSoundFontSet {{Cl|THEN}}
                    a$ = {{Text|<nowiki>"$MIDISOUNDFONT already defined"</nowiki>|#FFB100}}
                    {{Cl|GOTO}} errmes
                {{Cl|END IF}}
                layout$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"$MidiSoundFont:"</nowiki>|#FFB100}})
                MidiSoundFont$ = {{Cl|LTRIM$}}({{Cl|RTRIM$}}({{Cl|MID$ (function)|MID$}}(a3$, {{Text|16|#F580B1}})))
                {{Cl|IF}} {{Cl|MID$ (function)|MID$}}(MidiSoundFont$, {{Text|1|#F580B1}}, {{Text|1|#F580B1}}) = {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}}
                    {{Text|<nowiki>' We have a quoted filename, verify it is valid</nowiki>|#919191}}
                    {{Text|<nowiki>' We don't touch the filename in the formatting</nowiki>|#919191}}
                    layout$ = layout$ + MidiSoundFont$
                    {{Text|<nowiki>' Strip the leading quote</nowiki>|#919191}}
                    MidiSoundFont$ = {{Cl|MID$ (function)|MID$}}(MidiSoundFont$, {{Text|2|#F580B1}})
                    {{Text|<nowiki>' Verify that there is a quote character at the end</nowiki>|#919191}}
                    {{Cl|IF}} {{Cl|INSTR}}(MidiSoundFont$, {{Cl|CHR$}}({{Text|34|#F580B1}})) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>" character at the end of the file name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                    {{Text|<nowiki>' Verify there are no extra characters after end quote</nowiki>|#919191}}
                    {{Cl|IF}} {{Cl|INSTR}}(MidiSoundFont$, {{Cl|CHR$}}({{Text|34|#F580B1}})) <> {{Cl|LEN}}(MidiSoundFont$) {{Cl|THEN}} a$ = {{Text|<nowiki>"Unexpected characters after the quoted file name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                    MidiSoundFont$ = {{Cl|MID$ (function)|MID$}}(MidiSoundFont$, {{Text|1|#F580B1}}, {{Cl|LEN}}(MidiSoundFont$) - {{Text|1|#F580B1}})
                    {{Cl|IF}} {{Cl|NOT}} {{Cl|_FILEEXISTS}}(MidiSoundFont$) {{Cl|THEN}}
                        a$ = {{Text|<nowiki>"Soundfont file "</nowiki>|#FFB100}} + {{Text|AddQuotes$|#55FF55}}(MidiSoundFont$) + {{Text|<nowiki>" could not be found!"</nowiki>|#FFB100}}
                        {{Cl|GOTO}} errmes
                    {{Cl|END IF}}
                {{Cl|ELSE}}
                    {{Text|<nowiki>' Constant values, only one for now</nowiki>|#919191}}
                    {{Cl|SELECT CASE}} {{Cl|UCASE$}}(MidiSoundFont$)
                        {{Cl|CASE}} {{Text|<nowiki>"DEFAULT"</nowiki>|#FFB100}}
                            layout$ = layout$ + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Default"</nowiki>|#FFB100}})
                            {{Text|<nowiki>' Clear MidiSoundFont$ to indicate the default should be used</nowiki>|#919191}}
                            MidiSoundFont$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                        {{Cl|CASE}} {{Cl|ELSE}}
                            a$ = {{Text|<nowiki>"Unrecognized Soundfont option "</nowiki>|#FFB100}} + {{Text|AddQuotes$|#55FF55}}(MidiSoundFont$)
                            {{Cl|GOTO}} errmes
                    {{Cl|END SELECT}}
                {{Cl|END IF}}
                MidiSoundFontSet = linenumber
                MidiSoundFontLine$ = layout$
                {{Cl|GOTO}} finishednonexec
            {{Cl|END IF}}
        {{Cl|END IF}}
    {{Cl|END IF}} {{Text|<nowiki>'QB64 Metacommands</nowiki>|#919191}}
    {{Cl|IF}} ExecLevel(ExecCounter) {{Cl|THEN}}
        layoutdone = {{Text|0|#F580B1}}
        {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'we don't check for anything inside lines that we've marked for skipping</nowiki>|#919191}}
    {{Cl|END IF}}
    linedataoffset = DataOffset
    entireline$ = {{Text|lineformat|#55FF55}}(a3$): {{Cl|IF}} {{Cl|LEN}}(entireline$) = {{Text|0|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
    {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
    u$ = {{Cl|UCASE$}}(entireline$)
    newif = {{Text|0|#F580B1}}
    {{Text|<nowiki>'Convert "CASE ELSE" to "CASE C-EL" to avoid confusing compiler</nowiki>|#919191}}
    {{Text|<nowiki>'note: CASE does not have to begin on a new line</nowiki>|#919191}}
    s = {{Text|1|#F580B1}}
    i = {{Cl|INSTR}}(s, u$, {{Text|<nowiki>"CASE"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}})
    {{Cl|DO...LOOP|DO WHILE}} i
        skip = {{Text|0|#F580B1}}
        {{Cl|IF}} i <> {{Text|1|#F580B1}} {{Cl|THEN}}
            {{Cl|IF}} {{Cl|MID$ (function)|MID$}}(u$, i - {{Text|1|#F580B1}}, {{Text|1|#F580B1}}) <> sp {{Cl|THEN}} skip = {{Text|1|#F580B1}}
        {{Cl|END IF}}
        {{Cl|IF}} i <> {{Cl|LEN}}(u$) - {{Text|8|#F580B1}} {{Cl|THEN}}
            {{Cl|IF}} {{Cl|MID$ (function)|MID$}}(u$, i + {{Text|9|#F580B1}}, {{Text|1|#F580B1}}) <> sp {{Cl|THEN}} skip = {{Text|1|#F580B1}}
        {{Cl|END IF}}
        {{Cl|IF}} skip = {{Text|0|#F580B1}} {{Cl|THEN}}
            {{Cl|MID$}}(entireline$, i) = {{Text|<nowiki>"CASE"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"C-EL"</nowiki>|#FFB100}}
            u$ = {{Cl|UCASE$}}(entireline$)
        {{Cl|END IF}}
        s = i + {{Text|9|#F580B1}}
        i = {{Cl|INSTR}}(s, u$, {{Text|<nowiki>"CASE"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}})
    {{Cl|LOOP}}
    n = {{Text|numelements|#55FF55}}(entireline$)
    {{Text|<nowiki>'line number?</nowiki>|#919191}}
    a = {{Cl|ASC (function)|ASC}}(entireline$)
    {{Cl|IF}} (a >= {{Text|48|#F580B1}} {{Cl|AND (boolean)|AND}} a <= {{Text|57|#F580B1}}) {{Cl|OR (boolean)|OR}} a = {{Text|46|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'numeric</nowiki>|#919191}}
        label$ = {{Text|getelement|#55FF55}}(entireline$, {{Text|1|#F580B1}})
        {{Cl|IF}} {{Text|validlabel|#55FF55}}(label$) {{Cl|THEN}}
            {{Cl|IF}} closedmain <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} subfunc = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Labels cannot be placed between SUB/FUNCTIONs"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            v = {{Text|HashFind|#55FF55}}(label$, HASHFLAG_LABEL, ignore, r)
            addlabchk100:
            {{Cl|IF}} v {{Cl|THEN}}
                s = Labels(r).{{Text|Scope|#55FF55}}
                {{Cl|IF}} s = subfuncn {{Cl|OR (boolean)|OR}} s = {{Text|-1|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'same scope?</nowiki>|#919191}}
                    {{Cl|IF}} s = {{Text|-1|#F580B1}} {{Cl|THEN}} Labels(r).{{Text|Scope|#55FF55}} = subfuncn {{Text|<nowiki>'acquire scope</nowiki>|#919191}}
                    {{Cl|IF}} Labels(r).State = {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Duplicate label ("</nowiki>|#FFB100}} + {{Cl|RTRIM$}}(Labels(r).cn) + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                    {{Text|<nowiki>'aquire state 0 types</nowiki>|#919191}}
                    tlayout$ = {{Cl|RTRIM$}}(Labels(r).cn)
                    {{Cl|GOTO}} addlabaq100
                {{Cl|END IF}} {{Text|<nowiki>'same scope</nowiki>|#919191}}
                {{Cl|IF}} v = {{Text|2|#F580B1}} {{Cl|THEN}} v = {{Text|HashFindCont|#55FF55}}(ignore, r): {{Cl|GOTO}} addlabchk100
            {{Cl|END IF}}
            {{Text|<nowiki>'does not exist</nowiki>|#919191}}
            nLabels = nLabels + {{Text|1|#F580B1}}: {{Cl|IF}} nLabels > Labels_Ubound {{Cl|THEN}} Labels_Ubound = Labels_Ubound * {{Text|2|#F580B1}}: {{Cl|REDIM}} {{Cl|_PRESERVE}} Labels({{Text|1|#F580B1}} {{Cl|TO}} Labels_Ubound) {{Cl|AS}} Label_Type
            Labels(nLabels) = Empty_Label
            {{Text|HashAdd|#55FF55}} label$, HASHFLAG_LABEL, nLabels
            r = nLabels
            Labels(r).cn = tlayout$
            Labels(r).{{Text|Scope|#55FF55}} = subfuncn
            addlabaq100:
            Labels(r).State = {{Text|1|#F580B1}}
            Labels(r).Data_Offset = linedataoffset
            layout$ = tlayout$
            {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"LABEL_"</nowiki>|#FFB100}} + label$ + {{Text|<nowiki>":;"</nowiki>|#FFB100}}
            {{Cl|IF}} {{Cl|INSTR}}(label$, {{Text|<nowiki>"p"</nowiki>|#FFB100}}) {{Cl|THEN}} {{Cl|MID$}}(label$, {{Cl|INSTR}}(label$, {{Text|<nowiki>"p"</nowiki>|#FFB100}}), {{Text|1|#F580B1}}) = {{Text|<nowiki>"."</nowiki>|#FFB100}}
            {{Cl|IF}} {{Cl|RIGHT$}}(label$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"d"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} {{Cl|RIGHT$}}(label$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"s"</nowiki>|#FFB100}} {{Cl|THEN}} label$ = {{Cl|LEFT$}}(label$, {{Cl|LEN}}(label$) - {{Text|1|#F580B1}})
            {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"last_line="</nowiki>|#FFB100}} + label$ + {{Text|<nowiki>";"</nowiki>|#FFB100}}
            inclinenump$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
            {{Cl|IF}} inclinenumber(inclevel) {{Cl|THEN}}
                inclinenump$ = {{Text|<nowiki>","</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(inclinenumber(inclevel))
                thisincname$ = {{Text|getfilepath$|#55FF55}}(incname$(inclevel))
                thisincname$ = {{Cl|MID$ (function)|MID$}}(incname$(inclevel), {{Cl|LEN}}(thisincname$) + {{Text|1|#F580B1}})
                inclinenump$ = inclinenump$ + {{Text|<nowiki>","</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + thisincname$ + {{Cl|CHR$}}({{Text|34|#F580B1}})
            {{Cl|END IF}}
            {{Cl|IF}} NoChecks = {{Text|0|#F580B1}} {{Cl|THEN}}
                {{Cl|IF}} vWatchOn {{Cl|AND (boolean)|AND}} inclinenumber(inclevel) = {{Text|0|#F580B1}} {{Cl|THEN}} temp$ = vWatchErrorCall$ {{Cl|ELSE}} temp$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"if(qbevent){"</nowiki>|#FFB100}} + temp$ + {{Text|<nowiki>"evnt("</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(linenumber) + inclinenump$ + {{Text|<nowiki>");r=0;}"</nowiki>|#FFB100}}
            {{Cl|END IF}}
            {{Cl|IF}} n = {{Text|1|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
            entireline$ = {{Text|getelements|#55FF55}}(entireline$, {{Text|2|#F580B1}}, n): u$ = {{Cl|UCASE$}}(entireline$): n = n - {{Text|1|#F580B1}}
            {{Text|<nowiki>'note: fall through, numeric labels can be followed by alphanumeric label</nowiki>|#919191}}
        {{Cl|END IF}} {{Text|<nowiki>'validlabel</nowiki>|#919191}}
    {{Cl|END IF}} {{Text|<nowiki>'numeric</nowiki>|#919191}}
    {{Text|<nowiki>'it wasn't a line number</nowiki>|#919191}}
    {{Text|<nowiki>'label?</nowiki>|#919191}}
    {{Text|<nowiki>'note: ignores possibility that this could be a single command SUB/FUNCTION (as in QBASIC?)</nowiki>|#919191}}
    {{Cl|IF}} n >= {{Text|2|#F580B1}} {{Cl|THEN}}
        x2 = {{Cl|INSTR}}(entireline$, sp + {{Text|<nowiki>":"</nowiki>|#FFB100}})
        {{Cl|IF}} x2 {{Cl|THEN}}
            {{Cl|IF}} x2 = {{Cl|LEN}}(entireline$) - {{Text|1|#F580B1}} {{Cl|THEN}} x3 = x2 + {{Text|1|#F580B1}} {{Cl|ELSE}} x3 = x2 + {{Text|2|#F580B1}}
            a$ = {{Cl|LEFT$}}(entireline$, x2 - {{Text|1|#F580B1}})
            CreatingLabel = {{Text|1|#F580B1}}
            {{Cl|IF}} {{Text|validlabel|#55FF55}}(a$) {{Cl|THEN}}
                {{Cl|IF}} {{Text|validname|#55FF55}}(a$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                {{Cl|IF}} closedmain <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} subfunc = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Labels cannot be placed between SUB/FUNCTIONs"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                v = {{Text|HashFind|#55FF55}}(a$, HASHFLAG_LABEL, ignore, r)
                addlabchk:
                {{Cl|IF}} v {{Cl|THEN}}
                    s = Labels(r).{{Text|Scope|#55FF55}}
                    {{Cl|IF}} s = subfuncn {{Cl|OR (boolean)|OR}} s = {{Text|-1|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'same scope?</nowiki>|#919191}}
                        {{Cl|IF}} s = {{Text|-1|#F580B1}} {{Cl|THEN}} Labels(r).{{Text|Scope|#55FF55}} = subfuncn {{Text|<nowiki>'acquire scope</nowiki>|#919191}}
                        {{Cl|IF}} Labels(r).State = {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Duplicate label ("</nowiki>|#FFB100}} + {{Cl|RTRIM$}}(Labels(r).cn) + {{Text|<nowiki>")"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                        {{Text|<nowiki>'aquire state 0 types</nowiki>|#919191}}
                        tlayout$ = {{Cl|RTRIM$}}(Labels(r).cn)
                        {{Cl|GOTO}} addlabaq
                    {{Cl|END IF}} {{Text|<nowiki>'same scope</nowiki>|#919191}}
                    {{Cl|IF}} v = {{Text|2|#F580B1}} {{Cl|THEN}} v = {{Text|HashFindCont|#55FF55}}(ignore, r): {{Cl|GOTO}} addlabchk
                {{Cl|END IF}}
                {{Text|<nowiki>'does not exist</nowiki>|#919191}}
                nLabels = nLabels + {{Text|1|#F580B1}}: {{Cl|IF}} nLabels > Labels_Ubound {{Cl|THEN}} Labels_Ubound = Labels_Ubound * {{Text|2|#F580B1}}: {{Cl|REDIM}} {{Cl|_PRESERVE}} Labels({{Text|1|#F580B1}} {{Cl|TO}} Labels_Ubound) {{Cl|AS}} Label_Type
                Labels(nLabels) = Empty_Label
                {{Text|HashAdd|#55FF55}} a$, HASHFLAG_LABEL, nLabels
                r = nLabels
                Labels(r).cn = tlayout$
                Labels(r).{{Text|Scope|#55FF55}} = subfuncn
                addlabaq:
                Labels(r).State = {{Text|1|#F580B1}}
                Labels(r).Data_Offset = linedataoffset
                Labels(r).SourceLineNumber = linenumber
                {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + tlayout$ + {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|ELSE}} layout$ = tlayout$ + {{Text|<nowiki>":"</nowiki>|#FFB100}}
                {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"LABEL_"</nowiki>|#FFB100}} + a$ + {{Text|<nowiki>":;"</nowiki>|#FFB100}}
                inclinenump$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                {{Cl|IF}} inclinenumber(inclevel) {{Cl|THEN}}
                    inclinenump$ = {{Text|<nowiki>","</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(inclinenumber(inclevel))
                    thisincname$ = {{Text|getfilepath$|#55FF55}}(incname$(inclevel))
                    thisincname$ = {{Cl|MID$ (function)|MID$}}(incname$(inclevel), {{Cl|LEN}}(thisincname$) + {{Text|1|#F580B1}})
                    inclinenump$ = inclinenump$ + {{Text|<nowiki>","</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + thisincname$ + {{Cl|CHR$}}({{Text|34|#F580B1}})
                {{Cl|END IF}}
                {{Cl|IF}} NoChecks = {{Text|0|#F580B1}} {{Cl|THEN}}
                    {{Cl|IF}} vWatchOn {{Cl|AND (boolean)|AND}} inclinenumber(inclevel) = {{Text|0|#F580B1}} {{Cl|THEN}} temp$ = vWatchErrorCall$ {{Cl|ELSE}} temp$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                    {{Text|WriteBufLine|#55FF55}} MainTxtBuf, {{Text|<nowiki>"if(qbevent){"</nowiki>|#FFB100}} + temp$ + {{Text|<nowiki>"evnt("</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(linenumber) + inclinenump$ + {{Text|<nowiki>");r=0;}"</nowiki>|#FFB100}}
                {{Cl|END IF}}
                entireline$ = {{Cl|RIGHT$}}(entireline$, {{Cl|LEN}}(entireline$) - x3): u$ = {{Cl|UCASE$}}(entireline$)
                n = {{Text|numelements|#55FF55}}(entireline$): {{Cl|IF}} n = {{Text|0|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
            {{Cl|END IF}} {{Text|<nowiki>'valid</nowiki>|#919191}}
        {{Cl|END IF}} {{Text|<nowiki>'includes sp+":"</nowiki>|#919191}}
    {{Cl|END IF}} {{Text|<nowiki>'n>=2</nowiki>|#919191}}
    {{Text|<nowiki>'remove leading ":"</nowiki>|#919191}}
    {{Cl|DO...LOOP|DO WHILE}} {{Cl|ASC (function)|ASC}}(u$) = {{Text|58|#F580B1}} {{Text|<nowiki>'":"</nowiki>|#919191}}
        {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp2 + {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|ELSE}} layout$ = {{Text|<nowiki>":"</nowiki>|#FFB100}}
        {{Cl|IF}} {{Cl|LEN}}(u$) = {{Text|1|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
        entireline$ = {{Text|getelements|#55FF55}}(entireline$, {{Text|2|#F580B1}}, n): u$ = {{Cl|UCASE$}}(entireline$): n = n - {{Text|1|#F580B1}}
    {{Cl|LOOP}}
    {{Text|<nowiki>'ELSE at the beginning of a line</nowiki>|#919191}}
    {{Cl|IF}} {{Cl|ASC (function)|ASC}}(u$) = {{Text|69|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'"E"</nowiki>|#919191}}
        e1$ = {{Text|getelement|#55FF55}}(u$, {{Text|1|#F580B1}})
        {{Cl|IF}} e1$ = {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}} {{Cl|THEN}}
            a$ = {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}}
            {{Cl|IF}} n > {{Text|1|#F580B1}} {{Cl|THEN}} continuelinefrom = {{Text|2|#F580B1}}
            {{Cl|GOTO}} gotcommand
        {{Cl|END IF}}
        {{Cl|IF}} e1$ = {{Text|<nowiki>"ELSEIF"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} n < {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ... THEN"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            {{Cl|IF}} {{Text|getelement|#55FF55}}(u$, n) = {{Text|<nowiki>"THEN"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = entireline$: {{Cl|GOTO}} gotcommand
            {{Cl|FOR}} i = {{Text|3|#F580B1}} {{Cl|TO}} n - {{Text|1|#F580B1}}
                {{Cl|IF}} {{Text|getelement|#55FF55}}(u$, i) = {{Text|<nowiki>"THEN"</nowiki>|#FFB100}} {{Cl|THEN}}
                    a$ = {{Text|getelements|#55FF55}}(entireline$, {{Text|1|#F580B1}}, i)
                    continuelinefrom = i + {{Text|1|#F580B1}}
                    {{Cl|GOTO}} gotcommand
                {{Cl|END IF}}
            {{Cl|NEXT}}
            a$ = {{Text|<nowiki>"Expected THEN"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
        {{Cl|END IF}}
    {{Cl|END IF}} {{Text|<nowiki>'"E"</nowiki>|#919191}}
    start = {{Text|1|#F580B1}}
    {{Cl|GOTO}} skipcontinit
    contline:
    n = {{Text|numelements|#55FF55}}(entireline$)
    u$ = {{Cl|UCASE$}}(entireline$)
    skipcontinit:
    {{Text|<nowiki>'jargon:</nowiki>|#919191}}
    {{Text|<nowiki>'lineelseused - counts how many line ELSEs can POSSIBLY follow</nowiki>|#919191}}
    {{Text|<nowiki>'endifs - how many C++ endifs "}" need to be added at the end of the line</nowiki>|#919191}}
    {{Text|<nowiki>'lineelseused - counts the number of indwelling ELSE statements on a line</nowiki>|#919191}}
    {{Text|<nowiki>'impliedendif - stops autoformat from adding "END IF"</nowiki>|#919191}}
    a$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
    {{Cl|FOR}} i = start {{Cl|TO}} n
        e$ = {{Text|getelement|#55FF55}}(u$, i)
        {{Cl|IF}} e$ = {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} i = start {{Cl|THEN}}
                layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp2 + {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|ELSE}} layout$ = {{Text|<nowiki>":"</nowiki>|#FFB100}}
                {{Cl|IF}} i <> n {{Cl|THEN}} continuelinefrom = i + {{Text|1|#F580B1}}
                {{Cl|GOTO}} finishednonexec
            {{Cl|END IF}}
            {{Cl|IF}} i <> n {{Cl|THEN}} continuelinefrom = i
            {{Cl|GOTO}} gotcommand
        {{Cl|END IF}}
        {{Text|<nowiki>'begin scanning an 'IF' statement</nowiki>|#919191}}
        {{Cl|IF}} e$ = {{Text|<nowiki>"IF"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} a$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} newif = {{Text|1|#F580B1}}
        {{Cl|IF}} e$ = {{Text|<nowiki>"THEN"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} (e$ = {{Text|<nowiki>"GOTO"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} newif = {{Text|1|#F580B1}}) {{Cl|THEN}}
            {{Cl|IF}} newif = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"THEN without IF"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            newif = {{Text|0|#F580B1}}
            {{Cl|IF}} lineelseused > {{Text|0|#F580B1}} {{Cl|THEN}} lineelseused = lineelseused - {{Text|1|#F580B1}}
            {{Cl|IF}} e$ = {{Text|<nowiki>"GOTO"</nowiki>|#FFB100}} {{Cl|THEN}}
                {{Cl|IF}} i = n {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected IF expression GOTO label"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                i = i - {{Text|1|#F580B1}}
            {{Cl|END IF}}
            a$ = a$ + sp + e$ {{Text|<nowiki>'+"THEN"/"GOTO"</nowiki>|#919191}}
            {{Cl|IF}} i <> n {{Cl|THEN}} continuelinefrom = i + {{Text|1|#F580B1}}: endifs = endifs + {{Text|1|#F580B1}}
            {{Cl|GOTO}} gotcommand
        {{Cl|END IF}}
        {{Cl|IF}} e$ = {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} start = i {{Cl|THEN}}
                {{Cl|IF}} lineelseused >= {{Text|1|#F580B1}} {{Cl|THEN}}
                    {{Text|<nowiki>'note: more than one else used (in a row) on this line, so close first if with an 'END IF' first</nowiki>|#919191}}
                    {{Text|<nowiki>'note: parses 'END IF' then (after continuelinefrom) parses 'ELSE'</nowiki>|#919191}}
                    {{Text|<nowiki>'consider the following: (square brackets make reading easier)</nowiki>|#919191}}
                    {{Text|<nowiki>'eg. if a=1 then [if b=2 then c=2 else d=2] else e=3</nowiki>|#919191}}
                    impliedendif = {{Text|1|#F580B1}}: a$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"IF"</nowiki>|#FFB100}}
                    endifs = endifs - {{Text|1|#F580B1}}
                    continuelinefrom = i
                    lineelseused = lineelseused - {{Text|1|#F580B1}}
                    {{Cl|GOTO}} gotcommand
                {{Cl|END IF}}
                {{Text|<nowiki>'follow up previously encountered 'ELSE' by applying 'ELSE'</nowiki>|#919191}}
                a$ = {{Text|<nowiki>"ELSE"</nowiki>|#FFB100}}: continuelinefrom = i + {{Text|1|#F580B1}}
                lineelseused = lineelseused + {{Text|1|#F580B1}}
                {{Cl|GOTO}} gotcommand
            {{Cl|END IF}} {{Text|<nowiki>'start=i</nowiki>|#919191}}
            {{Text|<nowiki>'apply everything up to (but not including) 'ELSE'</nowiki>|#919191}}
            continuelinefrom = i
            {{Cl|GOTO}} gotcommand
        {{Cl|END IF}} {{Text|<nowiki>'"ELSE"</nowiki>|#919191}}
        e$ = {{Text|getelement|#55FF55}}(entireline$, i): {{Cl|IF}} a$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = e$ {{Cl|ELSE}} a$ = a$ + sp + e$
    {{Cl|NEXT}}
    {{Text|<nowiki>'we're reached the end of the line</nowiki>|#919191}}
    {{Cl|IF}} endifs > {{Text|0|#F580B1}} {{Cl|THEN}}
        endifs = endifs - {{Text|1|#F580B1}}
        impliedendif = {{Text|1|#F580B1}}: entireline$ = entireline$ + sp + {{Text|<nowiki>":"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"END"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"IF"</nowiki>|#FFB100}}: n = n + {{Text|3|#F580B1}}
        i = i + {{Text|1|#F580B1}} {{Text|<nowiki>'skip the ":" (i is now equal to n+2)</nowiki>|#919191}}
        continuelinefrom = i
        {{Cl|GOTO}} gotcommand
    {{Cl|END IF}}
    gotcommand:
    dynscope = {{Text|0|#F580B1}}
    ca$ = a$
    a$ = {{Text|eleucase$|#55FF55}}(ca$) {{Text|<nowiki>'***REVISE THIS SECTION LATER***</nowiki>|#919191}}
    layoutdone = {{Text|0|#F580B1}}
    linefragment = a$
    {{Cl|IF}} Debug {{Cl|THEN}} {{Cl|PRINT (file statement)|PRINT}} #9, a$
    n = {{Text|numelements|#55FF55}}(a$)
    {{Cl|IF}} n = {{Text|0|#F580B1}} {{Cl|THEN}} {{Cl|GOTO}} finishednonexec
    {{Text|<nowiki>'convert non-UDT dimensioned periods to _046_</nowiki>|#919191}}
    {{Cl|IF}} {{Cl|INSTR}}(ca$, sp + {{Text|<nowiki>"."</nowiki>|#FFB100}} + sp) {{Cl|THEN}}
        a3$ = {{Text|getelement|#55FF55}}(ca$, {{Text|1|#F580B1}})
        except = {{Text|0|#F580B1}}
        aa$ = a3$ + sp {{Text|<nowiki>'rebuilt a$ (always has a trailing spacer)</nowiki>|#919191}}
        lastfuse = {{Text|-1|#F580B1}}
        {{Cl|FOR}} x = {{Text|2|#F580B1}} {{Cl|TO}} n
            a2$ = {{Text|getelement|#55FF55}}(ca$, x)
            {{Cl|IF}} except = {{Text|1|#F580B1}} {{Cl|THEN}} except = {{Text|2|#F580B1}}: {{Cl|GOTO}} udtperiod {{Text|<nowiki>'skip element name</nowiki>|#919191}}
            {{Cl|IF}} a2$ = {{Text|<nowiki>"."</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} x <> n {{Cl|THEN}}
                {{Cl|IF}} except = {{Text|2|#F580B1}} {{Cl|THEN}} except = {{Text|1|#F580B1}}: {{Cl|GOTO}} udtperiod {{Text|<nowiki>'sub-element of UDT</nowiki>|#919191}}
                {{Cl|IF}} a3$ = {{Text|<nowiki>")"</nowiki>|#FFB100}} {{Cl|THEN}}
                    {{Text|<nowiki>'assume it was something like typevar(???).x and treat as a UDT</nowiki>|#919191}}
                    except = {{Text|1|#F580B1}}
                    {{Cl|GOTO}} udtperiod
                {{Cl|END IF}}
                {{Text|<nowiki>'find an ID of that type</nowiki>|#919191}}
                try = {{Text|findid|#55FF55}}({{Cl|UCASE$}}(a3$))
                {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                {{Cl|DO...LOOP|DO WHILE}} try
                    {{Cl|IF}} ((id.t {{Cl|AND (boolean)|AND}} ISUDT) <> {{Text|0|#F580B1}}) {{Cl|OR (boolean)|OR}} ((id.arraytype {{Cl|AND (boolean)|AND}} ISUDT) <> {{Text|0|#F580B1}}) {{Cl|THEN}}
                        except = {{Text|1|#F580B1}}
                        {{Cl|GOTO}} udtperiod
                    {{Cl|END IF}}
                    {{Cl|IF}} try = {{Text|2|#F580B1}} {{Cl|THEN}} findanotherid = {{Text|1|#F580B1}}: try = {{Text|findid|#55FF55}}({{Cl|UCASE$}}(a3$)) {{Cl|ELSE}} try = {{Text|0|#F580B1}}
                    {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                {{Cl|LOOP}}
                {{Text|<nowiki>'not a udt; fuse lhs & rhs with _046_</nowiki>|#919191}}
                {{Cl|IF}} isalpha({{Cl|ASC (function)|ASC}}(a3$)) = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} lastfuse <> x - {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Invalid '.'"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                aa$ = {{Cl|LEFT$}}(aa$, {{Cl|LEN}}(aa$) - {{Text|1|#F580B1}}) + fix046$
                lastfuse = x
                {{Cl|GOTO}} periodfused
            {{Cl|END IF}} {{Text|<nowiki>'"."</nowiki>|#919191}}
            except = {{Text|0|#F580B1}}
            udtperiod:
            aa$ = aa$ + a2$ + sp
            periodfused:
            a3$ = a2$
        {{Cl|NEXT}}
        a$ = {{Cl|LEFT$}}(aa$, {{Cl|LEN}}(aa$) - {{Text|1|#F580B1}})
        ca$ = a$
        a$ = {{Text|eleucase$|#55FF55}}(ca$)
        n = {{Text|numelements|#55FF55}}(a$)
    {{Cl|END IF}}
    arrayprocessinghappened = {{Text|0|#F580B1}}
    firstelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|1|#F580B1}})
    secondelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|2|#F580B1}})
    thirdelement$ = {{Text|getelement|#55FF55}}(a$, {{Text|3|#F580B1}})
    {{Text|<nowiki>'non-executable section</nowiki>|#919191}}
    {{Cl|IF}} n = {{Text|1|#F580B1}} {{Cl|THEN}}
        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"'"</nowiki>|#FFB100}} {{Cl|THEN}} layoutdone = {{Text|1|#F580B1}}: {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'nop</nowiki>|#919191}}
    {{Cl|END IF}}
    {{Cl|IF}} n <= {{Text|2|#F580B1}} {{Cl|THEN}}
        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DATA"</nowiki>|#FFB100}} {{Cl|THEN}}
            l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Data"</nowiki>|#FFB100}})
            {{Cl|IF}} n = {{Text|2|#F580B1}} {{Cl|THEN}}
                e$ = {{Cl|SPACE$}}(({{Cl|LEN}}(secondelement$) - {{Text|1|#F580B1}}) \ {{Text|2|#F580B1}})
                {{Cl|FOR}} x = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(e$)
                    v1 = {{Cl|ASC (function)|ASC}}(secondelement$, x * {{Text|2|#F580B1}})
                    v2 = {{Cl|ASC (function)|ASC}}(secondelement$, x * {{Text|2|#F580B1}} + {{Text|1|#F580B1}})
                    {{Cl|IF}} v1 < {{Text|65|#F580B1}} {{Cl|THEN}} v1 = v1 - {{Text|48|#F580B1}} {{Cl|ELSE}} v1 = v1 - {{Text|55|#F580B1}}
                    {{Cl|IF}} v2 < {{Text|65|#F580B1}} {{Cl|THEN}} v2 = v2 - {{Text|48|#F580B1}} {{Cl|ELSE}} v2 = v2 - {{Text|55|#F580B1}}
                    {{Cl|ASC}}(e$, x) = v1 + v2 * {{Text|16|#F580B1}}
                {{Cl|NEXT}}
                l$ = l$ + sp + e$
            {{Cl|END IF}} {{Text|<nowiki>'n=2</nowiki>|#919191}}
            layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
    {{Cl|END IF}}
    {{Text|<nowiki>'declare library</nowiki>|#919191}}
    {{Cl|IF}} declaringlibrary {{Cl|THEN}}
        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|OR (boolean)|OR}} secondelement$ <> {{Text|<nowiki>"DECLARE"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END DECLARE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            declaringlibrary = {{Text|0|#F580B1}}
            l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"End"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Declare"</nowiki>|#FFB100}})
            layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}} {{Text|<nowiki>'end declare</nowiki>|#919191}}
        declaringlibrary = {{Text|2|#F580B1}}
        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} firstelement$ = {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|GOTO}} declaresubfunc2
        {{Cl|END IF}}
        a$ = {{Text|<nowiki>"Expected SUB/FUNCTION definition or END DECLARE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
    {{Cl|END IF}} {{Text|<nowiki>'declaringlibrary</nowiki>|#919191}}
    {{Text|<nowiki>'check TYPE declarations (created on prepass)</nowiki>|#919191}}
    {{Cl|IF}} definingtype {{Cl|THEN}}
        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"END"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|OR (boolean)|OR}} secondelement$ <> {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END TYPE"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            definingtype = {{Text|0|#F580B1}}
            l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"End"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Type"</nowiki>|#FFB100}})
            layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
            {{Cl|GOTO}} finishednonexec
        {{Cl|END IF}}
        {{Text|<nowiki>'IF n < 3 THEN definingtypeerror = linenumber: a$ = "Expected element-name AS type or AS type element-list": GOTO errmes</nowiki>|#919191}}
        {{Cl|IF}} n < {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected element-name AS type or AS type element-list"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
        definingtype = {{Text|2|#F580B1}}
        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"AS"</nowiki>|#FFB100}} {{Cl|THEN}}
            l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"As"</nowiki>|#FFB100}})
            t$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
            wordsInTypeName = {{Text|0|#F580B1}}
            {{Cl|DO}}
                nextElement$ = {{Text|getelement$|#55FF55}}(a$, {{Text|2|#F580B1}} + wordsInTypeName)
                {{Cl|IF}} nextElement$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}}
                    {{Text|<nowiki>'element-list</nowiki>|#919191}}
                    wordsInTypeName = wordsInTypeName - {{Text|2|#F580B1}}
                    {{Cl|EXIT DO}}
                {{Cl|END IF}}
                wordsInTypeName = wordsInTypeName + {{Text|1|#F580B1}}
                {{Cl|IF}} wordsInTypeName = n - {{Text|2|#F580B1}} {{Cl|THEN}}
                    {{Text|<nowiki>'single element in line</nowiki>|#919191}}
                    wordsInTypeName = wordsInTypeName - {{Text|1|#F580B1}}
                    {{Cl|EXIT DO}}
                {{Cl|END IF}}
            {{Cl|LOOP}}
            t$ = {{Text|getelements$|#55FF55}}(a$, {{Text|2|#F580B1}}, {{Text|2|#F580B1}} + wordsInTypeName)
            typ = {{Text|typname2typ|#55FF55}}(t$)
            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
            {{Cl|IF}} typ = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Undefined type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            {{Cl|IF}} typ {{Cl|AND (boolean)|AND}} ISUDT {{Cl|THEN}}
                {{Cl|IF}} {{Cl|UCASE$}}({{Cl|RTRIM$}}(t$)) = {{Text|<nowiki>"MEM"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} {{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND (boolean)|AND}} {{Text|511|#F580B1}})) = {{Text|<nowiki>"_MEM"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} qb64prefix_set = {{Text|1|#F580B1}} {{Cl|THEN}}
                    t$ = {{Cl|MID$ (function)|MID$}}({{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND}} {{Text|511|#F580B1}})), {{Text|2|#F580B1}})
                {{Cl|ELSE}}
                    t$ = {{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND}} {{Text|511|#F580B1}}))
                {{Cl|END IF}}
                l$ = l$ + sp + t$
            {{Cl|ELSE}}
                l$ = l$ + sp + {{Text|SCase2$|#55FF55}}(t$)
            {{Cl|END IF}}
            {{Text|<nowiki>'Now add each variable:</nowiki>|#919191}}
            {{Cl|FOR}} i = {{Text|3|#F580B1}} + wordsInTypeName {{Cl|TO}} n
                thisElement$ = {{Text|getelement$|#55FF55}}(ca$, i)
                {{Cl|IF}} thisElement$ = {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}}
                    l$ = l$ + thisElement$
                {{Cl|ELSE}}
                    l$ = l$ + sp + thisElement$
                {{Cl|END IF}}
            {{Cl|NEXT}}
            layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
        {{Cl|ELSE}}
            l$ = {{Text|getelement|#55FF55}}(ca$, {{Text|1|#F580B1}}) + sp + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"As"</nowiki>|#FFB100}})
            t$ = {{Text|getelements$|#55FF55}}(a$, {{Text|3|#F580B1}}, n)
            typ = {{Text|typname2typ|#55FF55}}(t$)
            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
            {{Cl|IF}} typ = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Undefined type"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            {{Cl|IF}} typ {{Cl|AND (boolean)|AND}} ISUDT {{Cl|THEN}}
                {{Cl|IF}} {{Cl|UCASE$}}({{Cl|RTRIM$}}(t$)) = {{Text|<nowiki>"MEM"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} {{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND (boolean)|AND}} {{Text|511|#F580B1}})) = {{Text|<nowiki>"_MEM"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} qb64prefix_set = {{Text|1|#F580B1}} {{Cl|THEN}}
                    t$ = {{Cl|MID$ (function)|MID$}}({{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND}} {{Text|511|#F580B1}})), {{Text|2|#F580B1}})
                {{Cl|ELSE}}
                    t$ = {{Cl|RTRIM$}}(udtxcname(typ {{Cl|AND}} {{Text|511|#F580B1}}))
                {{Cl|END IF}}
                l$ = l$ + sp + t$
            {{Cl|ELSE}}
                l$ = l$ + sp + {{Text|SCase2$|#55FF55}}(t$)
            {{Cl|END IF}}
            layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
        {{Cl|END IF}}
        {{Cl|GOTO}} finishednonexec
    {{Cl|END IF}} {{Text|<nowiki>'defining type</nowiki>|#919191}}
    {{Cl|IF}} firstelement$ = {{Text|<nowiki>"TYPE"</nowiki>|#FFB100}} {{Cl|THEN}}
        {{Cl|IF}} n <> {{Text|2|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected TYPE type-name"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
        l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Type"</nowiki>|#FFB100}}) + sp + {{Text|getelement|#55FF55}}(ca$, {{Text|2|#F580B1}})
        layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
        definingtype = {{Text|1|#F580B1}}
        definingtypeerror = linenumber
        {{Cl|GOTO}} finishednonexec
    {{Cl|END IF}}
    {{Text|<nowiki>'skip DECLARE SUB/FUNCTION</nowiki>|#919191}}
    {{Cl|IF}} n >= {{Text|1|#F580B1}} {{Cl|THEN}}
        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"DECLARE"</nowiki>|#FFB100}} {{Cl|THEN}}
            {{Cl|IF}} secondelement$ = {{Text|<nowiki>"LIBRARY"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"DYNAMIC"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"CUSTOMTYPE"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} secondelement$ = {{Text|<nowiki>"STATIC"</nowiki>|#FFB100}} {{Cl|THEN}}
                declaringlibrary = {{Text|1|#F580B1}}
                dynamiclibrary = {{Text|0|#F580B1}}
                customtypelibrary = {{Text|0|#F580B1}}
                indirectlibrary = {{Text|0|#F580B1}}
                staticlinkedlibrary = {{Text|0|#F580B1}}
                x = {{Text|3|#F580B1}}
                l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Declare"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Library"</nowiki>|#FFB100}})
                {{Cl|IF}} secondelement$ = {{Text|<nowiki>"DYNAMIC"</nowiki>|#FFB100}} {{Cl|THEN}}
                    e$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}}): {{Cl|IF}} e$ <> {{Text|<nowiki>"LIBRARY"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected DYNAMIC LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
                    dynamiclibrary = {{Text|1|#F580B1}}
                    x = {{Text|4|#F580B1}}
                    l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Declare"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Dynamic"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Library"</nowiki>|#FFB100}})
                    {{Cl|IF}} n = {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected DECLARE DYNAMIC LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
                    indirectlibrary = {{Text|1|#F580B1}}
                {{Cl|END IF}}
                {{Cl|IF}} secondelement$ = {{Text|<nowiki>"CUSTOMTYPE"</nowiki>|#FFB100}} {{Cl|THEN}}
                    e$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}}): {{Cl|IF}} e$ <> {{Text|<nowiki>"LIBRARY"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected CUSTOMTYPE LIBRARY"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                    customtypelibrary = {{Text|1|#F580B1}}
                    x = {{Text|4|#F580B1}}
                    l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Declare"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"CustomType"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Library"</nowiki>|#FFB100}})
                    indirectlibrary = {{Text|1|#F580B1}}
                {{Cl|END IF}}
                {{Cl|IF}} secondelement$ = {{Text|<nowiki>"STATIC"</nowiki>|#FFB100}} {{Cl|THEN}}
                    e$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}}): {{Cl|IF}} e$ <> {{Text|<nowiki>"LIBRARY"</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected STATIC LIBRARY"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                    x = {{Text|4|#F580B1}}
                    l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Declare"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Static"</nowiki>|#FFB100}} + sp + {{Text|<nowiki>"Library"</nowiki>|#FFB100}})
                    staticlinkedlibrary = {{Text|1|#F580B1}}
                {{Cl|END IF}}
                sfdeclare = {{Text|0|#F580B1}}: sfheader = {{Text|0|#F580B1}}
                {{Cl|IF}} n >= x {{Cl|THEN}}
                    sfdeclare = {{Text|1|#F580B1}}
                    addlibrary:
                    libname$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                    headername$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                    {{Text|<nowiki>'assume library name in double quotes follows</nowiki>|#919191}}
                    {{Text|<nowiki>'assume library is in main qb64pe folder</nowiki>|#919191}}
                    x$ = {{Text|getelement$|#55FF55}}(ca$, x)
                    {{Cl|IF}} {{Cl|ASC (function)|ASC}}(x$) <> {{Text|34|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
                    x$ = {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - {{Text|1|#F580B1}})
                    z = {{Cl|INSTR}}(x$, {{Cl|CHR$}}({{Text|34|#F580B1}}))
                    {{Cl|IF}} z = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
                    x$ = {{Cl|LEFT$}}(x$, z - {{Text|1|#F580B1}})
                    {{Cl|IF}} dynamiclibrary <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|LEN}}(x$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected DECLARE DYNAMIC LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
                    {{Cl|IF}} customtypelibrary <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|LEN}}(x$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected DECLARE CUSTOMTYPE LIBRARY "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"..."</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
                    {{Text|<nowiki>'convert '\\' to '\'</nowiki>|#919191}}
                    {{Cl|WHILE}} {{Cl|INSTR}}(x$, {{Text|<nowiki>"\\"</nowiki>|#FFB100}})
                        z = {{Cl|INSTR}}(x$, {{Text|<nowiki>"\\"</nowiki>|#FFB100}})
                        x$ = {{Cl|LEFT$}}(x$, z - {{Text|1|#F580B1}}) + {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)
                    {{Cl|WEND}}
                    autoformat_x$ = x$ {{Text|<nowiki>'used for autolayout purposes</nowiki>|#919191}}
                    {{Text|<nowiki>'Remove version number from library name</nowiki>|#919191}}
                    {{Text|<nowiki>'Eg. libname:1.0 becomes libname <-> 1.0 which later becomes libname.so.1.0</nowiki>|#919191}}
                    v$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                    striplibver:
                    {{Cl|FOR}} z = {{Cl|LEN}}(x$) {{Cl|TO}} {{Text|1|#F580B1}} {{Cl|STEP}} {{Text|-1|#F580B1}}
                        a = {{Cl|ASC (function)|ASC}}(x$, z)
                        {{Cl|IF}} a = ASC_BACKSLASH {{Cl|OR (boolean)|OR}} a = ASC_FORWARDSLASH {{Cl|THEN}} {{Cl|EXIT FOR}}
                        {{Cl|IF}} a = ASC_FULLSTOP {{Cl|OR (boolean)|OR}} a = ASC_COLON {{Cl|THEN}}
                            {{Cl|IF}} {{Text|isuinteger|#55FF55}}({{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)) {{Cl|THEN}}
                                {{Cl|IF}} {{Cl|LEN}}(v$) {{Cl|THEN}} v$ = {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z) + {{Text|<nowiki>"."</nowiki>|#FFB100}} + v$ {{Cl|ELSE}} v$ = {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)
                                x$ = {{Cl|LEFT$}}(x$, z - {{Text|1|#F580B1}})
                                {{Cl|IF}} a = ASC_COLON {{Cl|THEN}} {{Cl|EXIT FOR}}
                                {{Cl|GOTO}} striplibver
                            {{Cl|ELSE}}
                                {{Cl|EXIT FOR}}
                            {{Cl|END IF}}
                        {{Cl|END IF}}
                    {{Cl|NEXT}}
                    libver$ = v$
                    {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
                        {{Text|<nowiki>'convert forward-slashes to back-slashes</nowiki>|#919191}}
                        {{Cl|DO...LOOP|DO WHILE}} {{Cl|INSTR}}(x$, {{Text|<nowiki>"/"</nowiki>|#FFB100}})
                            z = {{Cl|INSTR}}(x$, {{Text|<nowiki>"/"</nowiki>|#FFB100}})
                            x$ = {{Cl|LEFT$}}(x$, z - {{Text|1|#F580B1}}) + {{Text|<nowiki>"\"</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)
                        {{Cl|LOOP}}
                    {{Cl|END IF}}
                    {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
                        {{Text|<nowiki>'convert any back-slashes to forward-slashes</nowiki>|#919191}}
                        {{Cl|DO...LOOP|DO WHILE}} {{Cl|INSTR}}(x$, {{Text|<nowiki>"\"</nowiki>|#FFB100}})
                            z = {{Cl|INSTR}}(x$, {{Text|<nowiki>"\"</nowiki>|#FFB100}})
                            x$ = {{Cl|LEFT$}}(x$, z - {{Text|1|#F580B1}}) + {{Text|<nowiki>"/"</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)
                        {{Cl|LOOP}}
                    {{Cl|END IF}}
                    {{Text|<nowiki>'Separate path from name</nowiki>|#919191}}
                    libpath$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                    {{Cl|FOR}} z = {{Cl|LEN}}(x$) {{Cl|TO}} {{Text|1|#F580B1}} {{Cl|STEP}} {{Text|-1|#F580B1}}
                        a = {{Cl|ASC (function)|ASC}}(x$, z)
                        {{Cl|IF}} a = {{Text|47|#F580B1}} {{Cl|OR (boolean)|OR}} a = {{Text|92|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'\ or /</nowiki>|#919191}}
                            libpath$ = {{Cl|LEFT$}}(x$, z)
                            x$ = {{Cl|RIGHT$}}(x$, {{Cl|LEN}}(x$) - z)
                            {{Cl|EXIT FOR}}
                        {{Cl|END IF}}
                    {{Cl|NEXT}}
                    {{Text|<nowiki>'Accept ./ and .\ as a reference to the source file</nowiki>|#919191}}
                    {{Text|<nowiki>'folder, replacing it with the actual full path, if available</nowiki>|#919191}}
                    {{Cl|IF}} libpath$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} libpath$ = {{Text|<nowiki>".\"</nowiki>|#FFB100}} {{Cl|THEN}}
                        libpath$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                        {{Cl|IF}} NoIDEMode {{Cl|THEN}}
                            libpath$ = path.source$
                            {{Cl|IF}} {{Cl|LEN}}(libpath$) > {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|RIGHT$}}(libpath$, {{Text|1|#F580B1}}) <> pathsep$ {{Cl|THEN}} libpath$ = libpath$ + pathsep$
                        {{Cl|ELSE}}
                            {{Cl|IF}} {{Cl|LEN}}(ideprogname) {{Cl|THEN}} libpath$ = idepath$ + pathsep$
                        {{Cl|END IF}}
                    {{Cl|END IF}}
                    {{Text|<nowiki>'Create a path which can be used for inline code (uses \\ instead of \)</nowiki>|#919191}}
                    libpath_inline$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
                    {{Cl|FOR}} z = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(libpath$)
                        a = {{Cl|ASC (function)|ASC}}(libpath$, z)
                        libpath_inline$ = libpath_inline$ + {{Cl|CHR$}}(a)
                        {{Cl|IF}} a = {{Text|92|#F580B1}} {{Cl|THEN}} libpath_inline$ = libpath_inline$ + {{Text|<nowiki>"\"</nowiki>|#FFB100}}
                    {{Cl|NEXT}}
                    {{Cl|IF}} {{Cl|LEN}}(x$) {{Cl|THEN}}
                        {{Cl|IF}} dynamiclibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                            {{Text|<nowiki>'Static library</nowiki>|#919191}}
                            {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
                                {{Text|<nowiki>'check for .lib</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = libpath$ + x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}
                                        inlinelibname$ = libpath_inline$ + x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .a</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = libpath$ + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                        inlinelibname$ = libpath_inline$ + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .o</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = libpath$ + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
                                        inlinelibname$ = libpath_inline$ + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .lib</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}
                                        inlinelibname$ = x$ + {{Text|<nowiki>".lib"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .a</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                        inlinelibname$ = x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .o</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
                                        inlinelibname$ = x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                            {{Cl|END IF}} {{Text|<nowiki>'Windows</nowiki>|#919191}}
                            {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
                                {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
                                        {{Text|<nowiki>'check for .dylib (direct)</nowiki>|#919191}}
                                        {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                            {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                                libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath "</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
                                            {{Cl|END IF}}
                                        {{Cl|END IF}}
                                        {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                            {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                                libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath "</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
                                            {{Cl|END IF}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Text|<nowiki>'check for .so (direct)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                            libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath "</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath "</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .a (direct)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                        inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .o (direct)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
                                        inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Text|<nowiki>'check for .so (usr/lib64)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .a (usr/lib64)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
                                        {{Text|<nowiki>'check for .dylib (usr/lib)</nowiki>|#919191}}
                                        {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                            {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                                libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
                                            {{Cl|END IF}}
                                        {{Cl|END IF}}
                                        {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                            {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                                libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
                                            {{Cl|END IF}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Text|<nowiki>'check for .so (usr/lib)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            {{Cl|IF}} {{Cl|LEN}}(libpath$) {{Cl|THEN}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} {{Cl|ELSE}} mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .a (usr/lib)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'--------------------------(without path)------------------------------</nowiki>|#919191}}
                                {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
                                        {{Text|<nowiki>'check for .dylib (direct)</nowiki>|#919191}}
                                        {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                            {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                                libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
                                            {{Cl|END IF}}
                                        {{Cl|END IF}}
                                        {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                            {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                                libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
                                            {{Cl|END IF}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Text|<nowiki>'check for .so (direct)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath ./ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .a (direct)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .o (direct)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".o"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Text|<nowiki>'check for .so (usr/lib64)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib64/ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .a (usr/lib64)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} staticlinkedlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
                                        {{Text|<nowiki>'check for .dylib (usr/lib)</nowiki>|#919191}}
                                        {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                            {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                                libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            {{Cl|END IF}}
                                        {{Cl|END IF}}
                                        {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                            {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                                libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                                mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
                                            {{Cl|END IF}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Text|<nowiki>'check for .so (usr/lib)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                            mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .a (usr/lib)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".a"</nowiki>|#FFB100}}
                                        mylibopt$ = mylibopt$ + {{Text|<nowiki>" -Wl,-rpath /usr/lib/ "</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                            {{Cl|END IF}} {{Text|<nowiki>'Linux</nowiki>|#919191}}
                            {{Text|<nowiki>'check for header</nowiki>|#919191}}
                            {{Cl|IF}} {{Cl|LEN}}(headername$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = libpath_inline$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = libpath_inline$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                    {{Text|<nowiki>'--------------------------(without path)------------------------------</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                {{Cl|END IF}} {{Text|<nowiki>'Windows</nowiki>|#919191}}
                                {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = libpath_inline$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = libpath_inline$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + libpath$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = {{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + libpath_inline$ + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + libpath$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = {{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + libpath_inline$ + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                    {{Text|<nowiki>'--------------------------(without path)------------------------------</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = {{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".h"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        headername$ = {{Text|<nowiki>"/usr/include/"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".hpp"</nowiki>|#FFB100}}
                                        {{Cl|IF}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|THEN}} sfdeclare = {{Text|0|#F580B1}}
                                        sfheader = {{Text|1|#F580B1}}
                                        {{Cl|GOTO}} GotHeader
                                    {{Cl|END IF}}
                                {{Cl|END IF}} {{Text|<nowiki>'Linux</nowiki>|#919191}}
                                GotHeader:
                            {{Cl|END IF}}
                        {{Cl|ELSE}}
                            {{Text|<nowiki>'dynamic library</nowiki>|#919191}}
                            {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
                                {{Text|<nowiki>'check for .dll (direct)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = libpath$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
                                        inlinelibname$ = libpath_inline$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .dll (system32)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Cl|ENVIRON$}}({{Text|<nowiki>"SYSTEMROOT"</nowiki>|#FFB100}}) + {{Text|<nowiki>"\System32\"</nowiki>|#FFB100}} + libpath$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = libpath$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
                                        inlinelibname$ = libpath_inline$ + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'--------------------------(without path)------------------------------</nowiki>|#919191}}
                                {{Text|<nowiki>'check for .dll (direct)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
                                        inlinelibname$ = x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .dll (system32)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Cl|ENVIRON$}}({{Text|<nowiki>"SYSTEMROOT"</nowiki>|#FFB100}}) + {{Text|<nowiki>"\System32\"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
                                        inlinelibname$ = x$ + {{Text|<nowiki>".dll"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                            {{Cl|END IF}} {{Text|<nowiki>'Windows</nowiki>|#919191}}
                            {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
                                {{Text|<nowiki>'Note: STATIC libraries (.a/.o) cannot be loaded as dynamic objects</nowiki>|#919191}}
                                {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
                                    {{Text|<nowiki>'check for .dylib (direct)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            {{Cl|IF}} {{Cl|LEFT$}}(libpath$, {{Text|1|#F580B1}}) <> {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|THEN}} libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            {{Cl|IF}} {{Cl|LEFT$}}(libpath$, {{Text|1|#F580B1}}) <> {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|THEN}} libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .so (direct)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                        libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                        inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                        {{Cl|IF}} {{Cl|LEFT$}}(libpath$, {{Text|1|#F580B1}}) <> {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|THEN}} libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}(libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                        inlinelibname$ = libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                        {{Cl|IF}} {{Cl|LEFT$}}(libpath$, {{Text|1|#F580B1}}) <> {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|THEN}} libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .so (usr/lib64)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
                                    {{Text|<nowiki>'check for .dylib (usr/lib)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .so (usr/lib)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + libpath_inline$ + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'--------------------------(without path)------------------------------</nowiki>|#919191}}
                                {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
                                    {{Text|<nowiki>'check for .dylib (direct)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .so (direct)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                        inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                        libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                        libname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + libname$: inlinelibname$ = {{Text|<nowiki>"./"</nowiki>|#FFB100}} + inlinelibname$
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .so (usr/lib64)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib64/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} MacOSX {{Cl|THEN}} {{Text|<nowiki>'dylib support</nowiki>|#919191}}
                                    {{Text|<nowiki>'check for .dylib (usr/lib)</nowiki>|#919191}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>"."</nowiki>|#FFB100}} + libver$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                        {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                            libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                            inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".dylib"</nowiki>|#FFB100}}
                                        {{Cl|END IF}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Text|<nowiki>'check for .so (usr/lib)</nowiki>|#919191}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so."</nowiki>|#FFB100}} + libver$
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|_FILEEXISTS}}({{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}) {{Cl|THEN}}
                                        libname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                        inlinelibname$ = {{Text|<nowiki>"/usr/lib/"</nowiki>|#FFB100}} + {{Text|<nowiki>"lib"</nowiki>|#FFB100}} + x$ + {{Text|<nowiki>".so"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                            {{Cl|END IF}} {{Text|<nowiki>'Linux</nowiki>|#919191}}
                        {{Cl|END IF}} {{Text|<nowiki>'Dynamic</nowiki>|#919191}}
                        {{Text|<nowiki>'library found?</nowiki>|#919191}}
                        {{Cl|IF}} dynamiclibrary <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"DYNAMIC LIBRARY not found"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                        {{Cl|IF}} {{Cl|LEN}}(libname$) = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|LEN}}(headername$) = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"LIBRARY not found"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                        {{Text|<nowiki>'***actual method should cull redundant header and library entries***</nowiki>|#919191}}
                        {{Cl|IF}} dynamiclibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                            {{Text|<nowiki>'static</nowiki>|#919191}}
                            {{Cl|IF}} {{Cl|LEN}}(libname$) {{Cl|THEN}}
                                {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|MID$ (function)|MID$}}(libname$, {{Text|2|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} {{Cl|LEFT$}}(libname$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"\"</nowiki>|#FFB100}} {{Cl|THEN}}
                                        mylib$ = mylib$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + libname$ + {{Text|<nowiki>" "</nowiki>|#FFB100}}
                                    {{Cl|ELSE}}
                                        mylib$ = mylib$ + {{Text|<nowiki>" ..\..\"</nowiki>|#FFB100}} + libname$ + {{Text|<nowiki>" "</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                                {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
                                    {{Cl|IF}} {{Cl|LEFT$}}(libname$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"/"</nowiki>|#FFB100}} {{Cl|THEN}}
                                        mylib$ = mylib$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + libname$ + {{Text|<nowiki>" "</nowiki>|#FFB100}}
                                    {{Cl|ELSE}}
                                        mylib$ = mylib$ + {{Text|<nowiki>" ../../"</nowiki>|#FFB100}} + libname$ + {{Text|<nowiki>" "</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                            {{Cl|END IF}}
                        {{Cl|ELSE}}
                            {{Text|<nowiki>'dynamic</nowiki>|#919191}}
                            {{Cl|IF}} {{Cl|LEN}}(headername$) = {{Text|0|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'no header</nowiki>|#919191}}
                                {{Cl|IF}} subfuncn {{Cl|THEN}}
                                    f = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"A"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"maindata.txt"</nowiki>|#FFB100}})
                                {{Cl|ELSE}}
                                    f = DataTxtBuf
                                {{Cl|END IF}}
                                {{Text|<nowiki>'make name a C-appropriate variable name</nowiki>|#919191}}
                                {{Text|<nowiki>'by converting everything except numbers and</nowiki>|#919191}}
                                {{Text|<nowiki>'letters to underscores</nowiki>|#919191}}
                                x2$ = x$
                                {{Cl|FOR}} x2 = {{Text|1|#F580B1}} {{Cl|TO}} {{Cl|LEN}}(x2$)
                                    {{Cl|IF}} {{Cl|ASC (function)|ASC}}(x2$, x2) < {{Text|48|#F580B1}} {{Cl|THEN}} {{Cl|ASC}}(x2$, x2) = {{Text|95|#F580B1}}
                                    {{Cl|IF}} {{Cl|ASC (function)|ASC}}(x2$, x2) > {{Text|57|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|ASC (function)|ASC}}(x2$, x2) < {{Text|65|#F580B1}} {{Cl|THEN}} {{Cl|ASC}}(x2$, x2) = {{Text|95|#F580B1}}
                                    {{Cl|IF}} {{Cl|ASC (function)|ASC}}(x2$, x2) > {{Text|90|#F580B1}} {{Cl|AND (boolean)|AND}} {{Cl|ASC (function)|ASC}}(x2$, x2) < {{Text|97|#F580B1}} {{Cl|THEN}} {{Cl|ASC}}(x2$, x2) = {{Text|95|#F580B1}}
                                    {{Cl|IF}} {{Cl|ASC (function)|ASC}}(x2$, x2) > {{Text|122|#F580B1}} {{Cl|THEN}} {{Cl|ASC}}(x2$, x2) = {{Text|95|#F580B1}}
                                {{Cl|NEXT}}
                                DLLname$ = x2$
                                {{Cl|IF}} sfdeclare {{Cl|THEN}}
                                    {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
                                        {{Text|WriteBufLine|#55FF55}} RegTxtBuf, {{Text|<nowiki>"HINSTANCE DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"=NULL;"</nowiki>|#FFB100}}
                                        {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"if (!DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"){"</nowiki>|#FFB100}}
                                        {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"=LoadLibrary("</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + inlinelibname$ + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>");"</nowiki>|#FFB100}}
                                        {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"if (!DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>") error(259);"</nowiki>|#FFB100}}
                                        {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"}"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                    {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
                                        {{Text|WriteBufLine|#55FF55}} RegTxtBuf, {{Text|<nowiki>"void *DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"=NULL;"</nowiki>|#FFB100}}
                                        {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"if (!DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"){"</nowiki>|#FFB100}}
                                        {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>"=dlopen("</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + inlinelibname$ + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>",RTLD_LAZY);"</nowiki>|#FFB100}}
                                        {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"if (!DLL_"</nowiki>|#FFB100}} + x2$ + {{Text|<nowiki>") error(259);"</nowiki>|#FFB100}}
                                        {{Text|WriteBufLine|#55FF55}} f, {{Text|<nowiki>"}"</nowiki>|#FFB100}}
                                    {{Cl|END IF}}
                                {{Cl|END IF}}
                            {{Cl|END IF}} {{Text|<nowiki>'no header</nowiki>|#919191}}
                        {{Cl|END IF}} {{Text|<nowiki>'dynamiclibrary</nowiki>|#919191}}
                        {{Cl|IF}} {{Cl|LEN}}(headername$) {{Cl|THEN}}
                            {{Cl|IF}} (os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} ({{Cl|MID$ (function)|MID$}}(headername$, {{Text|2|#F580B1}}, {{Text|1|#F580B1}}) = {{Text|<nowiki>":"</nowiki>|#FFB100}} {{Cl|OR (boolean)|OR}} {{Cl|LEFT$}}(headername$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"\"</nowiki>|#FFB100}})) _
                            {{Cl|OR (boolean)|OR}} (os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|AND (boolean)|AND}} ({{Cl|LEFT$}}(headername$, {{Text|1|#F580B1}}) = {{Text|<nowiki>"/"</nowiki>|#FFB100}})) {{Cl|THEN}}
                                {{Text|WriteBufLine|#55FF55}} RegTxtBuf, {{Text|<nowiki>"#include "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + headername$ + {{Cl|CHR$}}({{Text|34|#F580B1}})
                            {{Cl|ELSE}}
                                {{Text|WriteBufLine|#55FF55}} RegTxtBuf, {{Text|<nowiki>"#include "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"../../"</nowiki>|#FFB100}} + headername$ + {{Cl|CHR$}}({{Text|34|#F580B1}})
                            {{Cl|END IF}}
                        {{Cl|END IF}}
                    {{Cl|END IF}}
                    l$ = l$ + sp + {{Cl|CHR$}}({{Text|34|#F580B1}}) + autoformat_x$ + {{Cl|CHR$}}({{Text|34|#F580B1}})
                    {{Cl|IF}} n > x {{Cl|THEN}}
                        {{Cl|IF}} dynamiclibrary {{Cl|THEN}} a$ = {{Text|<nowiki>"Cannot specify multiple DYNAMIC LIBRARY names in a single DECLARE statement"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                        x = x + {{Text|1|#F580B1}}: x2$ = {{Text|getelement$|#55FF55}}(a$, x): {{Cl|IF}} x2$ <> {{Text|<nowiki>","</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ,"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                        l$ = l$ + sp2 + {{Text|<nowiki>","</nowiki>|#FFB100}}
                        x = x + {{Text|1|#F580B1}}: {{Cl|IF}} x > n {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected , ..."</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                        {{Cl|GOTO}} addlibrary
                    {{Cl|END IF}}
                {{Cl|END IF}} {{Text|<nowiki>'n>=x</nowiki>|#919191}}
                layoutdone = {{Text|1|#F580B1}}: {{Cl|IF}} {{Cl|LEN}}(layout$) {{Cl|THEN}} layout$ = layout$ + sp + l$ {{Cl|ELSE}} layout$ = l$
                {{Cl|GOTO}} finishednonexec
            {{Cl|END IF}}
            {{Cl|GOTO}} finishednonexec {{Text|<nowiki>'note: no layout required</nowiki>|#919191}}
        {{Cl|END IF}}
    {{Cl|END IF}}
    {{Text|<nowiki>'begin SUB/FUNCTION</nowiki>|#919191}}
    {{Cl|IF}} n >= {{Text|1|#F580B1}} {{Cl|THEN}}
        dynamiclibrary = {{Text|0|#F580B1}}
        declaresubfunc2:
        sf = {{Text|0|#F580B1}}
        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"FUNCTION"</nowiki>|#FFB100}} {{Cl|THEN}} sf = {{Text|1|#F580B1}}
        {{Cl|IF}} firstelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|THEN}} sf = {{Text|2|#F580B1}}
        {{Cl|IF}} sf {{Cl|THEN}}
            {{Cl|IF}} declaringlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                {{Cl|IF}} {{Cl|LEN}}(subfunc) {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected END SUB/FUNCTION before "</nowiki>|#FFB100}} + firstelement$: {{Cl|GOTO}} errmes
            {{Cl|END IF}}
            {{Cl|IF}} n = {{Text|1|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected name after SUB/FUNCTION"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            e$ = {{Text|getelement$|#55FF55}}(ca$, {{Text|2|#F580B1}})
            symbol$ = {{Text|removesymbol$|#55FF55}}(e$) {{Text|<nowiki>'$,%,etc.</nowiki>|#919191}}
            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
            {{Cl|IF}} sf = {{Text|2|#F580B1}} {{Cl|AND (boolean)|AND}} symbol$ <> {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Type symbols after a SUB name are invalid"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            try = {{Text|findid|#55FF55}}(e$)
            {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
            {{Cl|DO...LOOP|DO WHILE}} try
                {{Cl|IF}} id.subfunc = sf {{Cl|THEN}} {{Cl|GOTO}} createsf
                {{Cl|IF}} try = {{Text|2|#F580B1}} {{Cl|THEN}} findanotherid = {{Text|1|#F580B1}}: try = {{Text|findid|#55FF55}}(e$) {{Cl|ELSE}} try = {{Text|0|#F580B1}}
                {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
            {{Cl|LOOP}}
            a$ = {{Text|<nowiki>"Unregistered SUB/FUNCTION encountered"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
            createsf:
            {{Cl|IF}} {{Cl|UCASE$}}(e$) = {{Text|<nowiki>"_GL"</nowiki>|#FFB100}} {{Cl|THEN}} e$ = {{Text|<nowiki>"_GL"</nowiki>|#FFB100}}
            {{Cl|IF}} firstelement$ = {{Text|<nowiki>"SUB"</nowiki>|#FFB100}} {{Cl|THEN}}
                l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Sub"</nowiki>|#FFB100}}) + sp + e$ + symbol$
            {{Cl|ELSE}}
                l$ = {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Function"</nowiki>|#FFB100}}) + sp + e$ + symbol$
            {{Cl|END IF}}
            id2 = id
            targetid = currentid
            {{Text|<nowiki>'check for ALIAS</nowiki>|#919191}}
            aliasname$ = {{Cl|RTRIM$}}(id.cn)
            {{Cl|IF}} n > {{Text|2|#F580B1}} {{Cl|THEN}}
                ee$ = {{Text|getelement$|#55FF55}}(a$, {{Text|3|#F580B1}})
                {{Cl|IF}} ee$ = {{Text|<nowiki>"ALIAS"</nowiki>|#FFB100}} {{Cl|THEN}}
                    {{Cl|IF}} declaringlibrary = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"ALIAS can only be used with DECLARE LIBRARY"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                    {{Cl|IF}} n = {{Text|3|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected ALIAS name-in-library"</nowiki>|#FFB100}}: {{Cl|GOTO}} errmes
                    ee$ = {{Text|getelement$|#55FF55}}(ca$, {{Text|4|#F580B1}})
                    {{Text|<nowiki>'strip string content (optional)</nowiki>|#919191}}
                    {{Cl|IF}} {{Cl|LEFT$}}(ee$, {{Text|1|#F580B1}}) = {{Cl|CHR$}}({{Text|34|#F580B1}}) {{Cl|THEN}}
                        ee$ = {{Cl|RIGHT$}}(ee$, {{Cl|LEN}}(ee$) - {{Text|1|#F580B1}})
                        x = {{Cl|INSTR}}(ee$, {{Cl|CHR$}}({{Text|34|#F580B1}})): {{Cl|IF}} x = {{Text|0|#F580B1}} {{Cl|THEN}} a$ = {{Text|<nowiki>"Expected "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}): {{Cl|GOTO}} errmes
                        ee$ = {{Cl|LEFT$}}(ee$, x - {{Text|1|#F580B1}})
                        l$ = l$ + sp + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Alias"</nowiki>|#FFB100}}) + sp + CHR_QUOTE + ee$ + CHR_QUOTE
                    {{Cl|ELSE}}
                        l$ = l$ + sp + {{Text|SCase$|#55FF55}}({{Text|<nowiki>"Alias"</nowiki>|#FFB100}}) + sp + ee$
                    {{Cl|END IF}}
                    {{Text|<nowiki>'strip fix046$ (created by unquoted periods)</nowiki>|#919191}}
                    {{Cl|DO...LOOP|DO WHILE}} {{Cl|INSTR}}(ee$, fix046$)
                        x = {{Cl|INSTR}}(ee$, fix046$): ee$ = {{Cl|LEFT$}}(ee$, x - {{Text|1|#F580B1}}) + {{Text|<nowiki>"."</nowiki>|#FFB100}} + {{Cl|RIGHT$}}(ee$, {{Cl|LEN}}(ee$) - x + {{Text|1|#F580B1}} - {{Cl|LEN}}(fix046$))
                    {{Cl|LOOP}}
                    aliasname$ = ee$
                    {{Text|<nowiki>'remove ALIAS section from line</nowiki>|#919191}}
                    {{Cl|IF}} n <= {{Text|4|#F580B1}} {{Cl|THEN}} a$ = {{Text|getelements|#55FF55}}(a$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}})
                    {{Cl|IF}} n >= {{Text|5|#F580B1}} {{Cl|THEN}} a$ = {{Text|getelements|#55FF55}}(a$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}}) + sp + {{Text|getelements|#55FF55}}(a$, {{Text|5|#F580B1}}, n)
                    {{Cl|IF}} n <= {{Text|4|#F580B1}} {{Cl|THEN}} ca$ = {{Text|getelements|#55FF55}}(ca$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}})
                    {{Cl|IF}} n >= {{Text|5|#F580B1}} {{Cl|THEN}} ca$ = {{Text|getelements|#55FF55}}(ca$, {{Text|1|#F580B1}}, {{Text|2|#F580B1}}) + sp + {{Text|getelements|#55FF55}}(ca$, {{Text|5|#F580B1}}, n)
                    n = n - {{Text|2|#F580B1}}
                {{Cl|END IF}}
            {{Cl|END IF}}
            {{Cl|IF}} declaringlibrary {{Cl|THEN}} {{Cl|GOTO}} declibjmp1
            {{Cl|IF}} closedmain = {{Text|0|#F580B1}} {{Cl|THEN}} {{Text|closemain|#55FF55}}
            {{Text|<nowiki>'check for open controls (copy #2)</nowiki>|#919191}}
            {{Cl|IF}} controllevel <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} controltype(controllevel) <> {{Text|6|#F580B1}} {{Cl|THEN}} {{Text|<nowiki>'It's OK for subs to be inside $IF blocks</nowiki>|#919191}}
                a$ = {{Text|<nowiki>"Unidentified open control block"</nowiki>|#FFB100}}
                {{Cl|SELECT CASE}} controltype(controllevel)
                    {{Cl|CASE}} {{Text|1|#F580B1}}: a$ = {{Text|<nowiki>"IF without END IF"</nowiki>|#FFB100}}
                    {{Cl|CASE}} {{Text|2|#F580B1}}: a$ = {{Text|<nowiki>"FOR without NEXT"</nowiki>|#FFB100}}
                    {{Cl|CASE}} {{Text|3|#F580B1}}, {{Text|4|#F580B1}}: a$ = {{Text|<nowiki>"DO without LOOP"</nowiki>|#FFB100}}
                    {{Cl|CASE}} {{Text|5|#F580B1}}: a$ = {{Text|<nowiki>"WHILE without WEND"</nowiki>|#FFB100}}
                    {{Cl|CASE}} {{Text|10|#F580B1}} {{Cl|TO}} {{Text|19|#F580B1}}: a$ = {{Text|<nowiki>"SELECT CASE without END SELECT"</nowiki>|#FFB100}}
                {{Cl|END SELECT}}
                linenumber = controlref(controllevel)
                {{Cl|GOTO}} errmes
            {{Cl|END IF}}
            {{Cl|IF}} ideindentsubs {{Cl|THEN}}
                controllevel = controllevel + {{Text|1|#F580B1}}
                controltype(controllevel) = {{Text|32|#F580B1}}
                controlref(controllevel) = linenumber
            {{Cl|END IF}}
            subfunc = {{Cl|RTRIM$}}(id.callname) {{Text|<nowiki>'SUB_..."</nowiki>|#919191}}
            {{Cl|IF}} id.subfunc = {{Text|1|#F580B1}} {{Cl|THEN}} subfuncoriginalname$ = {{Text|<nowiki>"FUNCTION "</nowiki>|#FFB100}} {{Cl|ELSE}} subfuncoriginalname$ = {{Text|<nowiki>"SUB "</nowiki>|#FFB100}}
            subfuncoriginalname$ = subfuncoriginalname$ + {{Cl|RTRIM$}}(id.cn)
            subfuncn = subfuncn + {{Text|1|#F580B1}}
            closedsubfunc = {{Text|0|#F580B1}}
            subfuncid = targetid
            subfuncret$ = {{Text|<nowiki>""</nowiki>|#FFB100}}
            DataTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"data"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(subfuncn) + {{Text|<nowiki>".txt"</nowiki>|#FFB100}})
            FreeTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"free"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(subfuncn) + {{Text|<nowiki>".txt"</nowiki>|#FFB100}})
            RetTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"ret"</nowiki>|#FFB100}} + {{Text|str2$|#55FF55}}(subfuncn) + {{Text|<nowiki>".txt"</nowiki>|#FFB100}})
            defdatahandle = DataTxtBuf
            {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"if (next_return_point){"</nowiki>|#FFB100}}
            {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"next_return_point--;"</nowiki>|#FFB100}}
            {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"switch(return_point[next_return_point]){"</nowiki>|#FFB100}}
            {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"case 0:"</nowiki>|#FFB100}}
            {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"error(3);"</nowiki>|#FFB100}} {{Text|<nowiki>'return without gosub!</nowiki>|#919191}}
            {{Text|WriteBufLine|#55FF55}} RetTxtBuf, {{Text|<nowiki>"break;"</nowiki>|#FFB100}}
            declibjmp1:
            {{Cl|IF}} declaringlibrary {{Cl|THEN}}
                {{Cl|IF}} sfdeclare = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} indirectlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                    RegTxtBuf = {{Text|OpenBuffer%|#55FF55}}({{Text|<nowiki>"O"</nowiki>|#FFB100}}, tmpdir$ + {{Text|<nowiki>"regsf_ignore.txt"</nowiki>|#FFB100}})
                {{Cl|END IF}}
                {{Cl|IF}} sfdeclare = {{Text|1|#F580B1}} {{Cl|AND (boolean)|AND}} customtypelibrary = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} dynamiclibrary = {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} indirectlibrary = {{Text|0|#F580B1}} {{Cl|THEN}}
                    {{Text|WriteBufLine|#55FF55}} RegTxtBuf, {{Text|<nowiki>"#include "</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}}) + {{Text|<nowiki>"externtype"</nowiki>|#FFB100}} + {{Text|str2|#55FF55}}(ResolveStaticFunctions + {{Text|1|#F580B1}}) + {{Text|<nowiki>".txt"</nowiki>|#FFB100}} + {{Cl|CHR$}}({{Text|34|#F580B1}})
                    fh = {{Cl|FREEFILE}}: {{Cl|OPEN}} tmpdir$ + {{Text|<nowiki>"externtype"</nowiki>|#FFB100}} + {{Text|str2|#55FF55}}(ResolveStaticFunctions + {{Text|1|#F580B1}}) + {{Text|<nowiki>".txt"</nowiki>|#FFB100}} {{Cl|OPEN#File_Access_Modes|FOR}} {{Cl|OPEN#File_Access_Modes|OUTPUT}} {{Cl|OPEN|AS}} #fh: {{Cl|CLOSE}} #fh
                {{Cl|END IF}}
            {{Cl|END IF}}
            {{Cl|IF}} sf = {{Text|1|#F580B1}} {{Cl|THEN}}
                rettyp = id.ret
                t$ = {{Text|typ2ctyp$|#55FF55}}(id.ret, {{Text|<nowiki>""</nowiki>|#FFB100}})
                {{Cl|IF}} Error_Happened {{Cl|THEN}} {{Cl|GOTO}} errmes
                {{Cl|IF}} t$ = {{Text|<nowiki>"qbs"</nowiki>|#FFB100}} {{Cl|THEN}} t$ = {{Text|<nowiki>"qbs*"</nowiki>|#FFB100}}
                {{Cl|IF}} declaringlibrary {{Cl|THEN}}
                    {{Cl|IF}} rettyp {{Cl|AND (boolean)|AND}} ISSTRING {{Cl|THEN}}
                        t$ = {{Text|<nowiki>"char*"</nowiki>|#FFB100}}
                    {{Cl|END IF}}
                {{Cl|END IF}}
                {{Cl|IF}} declaringlibrary <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} dynamiclibrary <> {{Text|0|#F580B1}} {{Cl|THEN}}
                    {{Cl|IF}} os$ = {{Text|<nowiki>"WIN"</nowiki>|#FFB100}} {{Cl|THEN}}
                        {{Text|WriteBufRawData|#55FF55}} RegTxtBuf, {{Text|<nowiki>"typedef "</nowiki>|#FFB100}} + t$ + {{Text|<nowiki>" (CALLBACK* DLLCALL_"</nowiki>|#FFB100}} + {{Text|removecast$|#55FF55}}({{Cl|RTRIM$}}(id.callname)) + {{Text|<nowiki>")("</nowiki>|#FFB100}}
                    {{Cl|END IF}}
                    {{Cl|IF}} os$ = {{Text|<nowiki>"LNX"</nowiki>|#FFB100}} {{Cl|THEN}}
                        {{Text|WriteBufRawData|#55FF55}} RegTxtBuf, {{Text|<nowiki>"typedef "</nowiki>|#FFB100}} + t$ + {{Text|<nowiki>" (*DLLCALL_"</nowiki>|#FFB100}} + {{Text|removecast$|#55FF55}}({{Cl|RTRIM$}}(id.callname)) + {{Text|<nowiki>")("</nowiki>|#FFB100}}
                    {{Cl|END IF}}
                {{Cl|ELSEIF}} declaringlibrary <> {{Text|0|#F580B1}} {{Cl|AND (boolean)|AND}} customtypelibrary <> {{Text|0|#F580B1}} {{Cl|THEN}}
                    {{Text|WriteBufRawData|#55FF55}} RegTxtBuf, {{Text|<nowiki>"typedef "</nowiki>|#FFB100}} + t$ + {{Text|<nowiki>" CUSTOMCALL_"</nowiki>|#FFB100}} + {{Text|removecast$|#55FF55}}({{Cl|RTRIM$}}(id.callname)) + {{Text|<nowiki>"("</nowiki>|#FFB100}}
                {{Cl|ELSE}}
                    {{Text|WriteBufRawData|#55FF55}} RegTxtBuf, t$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + {{Text|removecast$|#55FF55}}({{Cl|RTRIM$}}(id.callname)) + {{Text|<nowiki>"("</nowiki>|#FFB100}}
                {{Cl|END IF}}
                {{Cl|IF}} declaringlibrary {{Cl|THEN}} {{Cl|GOTO}} declibjmp2
                {{Text|WriteBufRawData|#55FF55}} MainTxtBuf, t$ + {{Text|<nowiki>" "</nowiki>|#FFB100}} + {{Text|removecast$|#55FF55}}({{Cl|RTRIM$}}(id.callname)) + {{Text|<nowiki>"("</nowiki>|#FFB100}}
                {{Text|<nowiki>'create variable to return result</nowiki>|#919191}}
                {{Text|<nowiki>'if type wasn't specified, define it</nowiki>|#919191}}
                {{Cl|IF}} symbol$ = {{Text|<nowiki>""</nowiki>|#FFB100}} {{Cl|THEN}}
                    a = {{Cl|ASC (function)|ASC}}({{Cl|UCASE$}}(e$)): {{Cl|IF}} a = {{Text|95|#F580B1}} {{Cl|THEN}} a = {{Text|91|#F580B1}}
                    a = a - {{Text|64|#F580B1}} {{Text|<nowiki>'so A=1, Z=27 and _=28</nowiki>|#919191}}
                    symbol$ = defineextaz(a)
                {{Cl|END IF}}
{{CodeEnd}}

Latest revision as of 00:11, 24 August 2024

The _BlankPage serves as a skeleton for new Wiki pages.


Syntax

_BlankSub arg1[, arg2]
result% = _BlankFunc(arg1[, arg2])


Parameters

  • arg1 is a mandatory argument
  • the arg2 is optional


Description

To use this skeleton click on the Edit tab above the page, then copy the raw text of this page and paste it into your new page. Change/remove sections as needed. Use this for italic and this for bold text style. To color your writings use the Text template. It takes either a color name or a #RRGGBB 32bit color, if the color part is omitted it will default to gray.

You can inline simple code one liners like w = _WIDTH

  • an askerisk marks a list point
    • two askerisks will indent the list
      • three askerisks will indent even more
This is a definition list
The first description can follow right after a colon
or in a new line
more descriptions can follow
  • using list bullets with an askerisk
as already seen in the syntax above, you may use desciptions without a defininition too
you may also nest descriptions
but at some point it's cluttering the page so please use it sparingly
This is a nice piece of paper for quotes and similar things. In case of short code snippets you may use the "Cb" (code blue) template to highlight and link keywords to the Wiki pages.

FOR x = 1 TO 5
   PRINT "Hello World!"
NEXT x
END

As you see, this Text block is suitable for preformatted text, but note that the browser is still allowed to wrap too long lines. If you really need your preformatted text to be shown as is, then use a fixed text block instaed, see below.
Use this fixed text block for preformatted text, which is not even allowed to wrap long lines, such as tables etc..
As you see this very long line goes far over the display width, so please limit youself to the available space to not clutter the display too much.

Notes

  • This may be a sub-section for further notes like special behavior, required prerequisites etc.
  • If used/required, then this should always be a sub-section under the Description main section

Errors

  • If used/required, then this also should be a sub-section under the Description main section
  • This is not intended for the regular errors a SUB/FUNCTION could throw, those should be handled in the main description section.
    • Rather use it for subtle things, known mis-behavior, tendency for stack overflows and seg faults etc.


Availability

  • The capability to load from memory was introduced in QB64-PE v3.5.0.


Examples

Example 1
Each example should have a short description.
'Place your code example here
'The "Cl" (code link) template can be used to link keywords to its
'respective Wiki page. Those words will also get highlighted.
COLOR 15,4
PRINT "Hello World!"
This template allows for a short author credit.
Note: To avoid the annoying task of manually inserting the templates
in your code examples, since v3.7.0 you may simply write your example
in the IDE and later use the menu "File > Export As > Wiki example" to
export a completely prepared code block, which you can paste "as is"
into the Wiki page.

Oh, and by the way, this preformatted text block is also new. Generally
it's the same as a fixed text block shown above, but it uses horizontal
scrollers instead of stretching the text box and it has a more plain
appearance. If you want avoid the horizontal scroller, then restrict
yourself to a line length of max. 72 characters.
The output block is available for the SCREEN 0 background colors 0-7
Inside the output block use the "Ot" (output text) template for coloring
Hello World!


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link