{| align="Right"
  | __TOC__
  |}



[[QB64 FAQ|Frequently Asked Questions about QB64]]

[[Keyword Reference - Alphabetical|Alphabetical keywords]]

[[Keywords currently not supported by QB64]]

[[Keywords currently not supported by QB64#Keywords_Not_Supported_in_Linux_or_MAC_OSX_versions|Keywords Not Supported in Linux or MAC versions]]


== [[Arrays]] and Data Storage ==

&lt;center>'''Arrays'''&lt;/center>
* [[_DEFINE]] (statement)  {{text|defines a range of untyped variable names according to their first character as a datatype.}}
* [[_PRESERVE]] ([[REDIM]] option) {{text|preserves the existing element values when an array is resized.}}
* [[CLEAR]] (statement) {{text|resets all variable values and array element values to 0 or null [[STRING|strings]] and closes all open files.}}
* [[DIM]] (statement) {{text|dimensions(sizes) a [[STATIC|static]] array and defines the type.}}
* [[$DYNAMIC]] (metacommand) {{text|defines that all arrays are dynamic or changeable in size.}}
* [[ERASE]] (array statement) {{text|clears a [[STATIC|static]] array of all values and totally removes a [[$DYNAMIC|dynamic]] array.}}
* [[LBOUND]] (array function) {{text|returns the lowest valid index (lower boundary) of an [[arrays|array]].}}
* [[OPTION BASE]] (precompiler statement) {{text|sets the default starting index of an array to 0 or 1.}}
* [[OPTION _EXPLICIT]] (precompiler directive) {{text|instructs the compiler to require variable declaration with [[DIM]] or an equivalent statement.}}
* [[OPTION _EXPLICITARRAY]] (precompiler directive) {{text|instructs the compiler to require array declaration with [[DIM]] or an equivalent statement.}} 
* [[REDIM]] (statement) {{text|re-dimensions the number of elements in a [[$DYNAMIC|dynamic]](resizeable) [[arrays|array]] and defines the type.}}
* [[SHARED]] (statement) {{text|designates variable values that can be shared with sub-procedures without using parameters.}}
* [[STATIC]] (statement) {{text|defines a variable or list of variables that will retain their values after the sub-procedure is exited.}}
* [[$STATIC]] (metacommand) {{text|defines that all arrays are static or unchangeable in size.}}
* [[SWAP]] (statement) {{text|trades the values of two numerical or string values or array elements.}}
* [[UBOUND]] (array function) {{text|returns the highest valid index (upper boundary) of an [[arrays|array]].}}

: See also: [[Arrays]]


&lt;center>'''Fixed Program DATA'''&lt;/center>
* [[DATA]] (statement) {{text|creates a field of built-in program data values separated by commas.}}
* [[READ]] (statement) {{text|reads the DATA from the data field sequentially.}}
* [[RESTORE]] (statement) {{text|sets the data pointer to the start of all DATA or a specified DATA field.}}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== [[COLOR|Colors]] and Transparency ==

* [[$COLOR]] (Metacommand) {{text|adds named color constants in a program.}}


* [[_ALPHA]] (function) {{text|returns the alpha channel transparency level of a color value used on a screen page or image.}}
* [[_ALPHA32]] (function) {{text|function returns the alpha channel level of a 32 bit color value only.}}
* [[_BACKGROUNDCOLOR]] (function) {{text|returns the current background color.}}
* [[_BLEND]] (statement) {{text|turns on alpha blending for the current image or a specific one.}}
* [[_BLEND (function)]] {{text|returns if blending is enabled or disabled for the current window or a specified image handle.}}
* [[_BLINK]] (statement) {{text|statement turns blinking colors on/off in SCREEN 0}}
* [[_BLINK (function)]] {{text|returns -1 if enabled or 0 if disabled by [[_BLINK]] statement.}}
* [[_BLUE]] (function) {{text|returns the palette intensity OR the blue component intensity of a 32-bit image color.}}
* [[_BLUE32]] (function) {{text|returns the blue component intensity of a 32-bit image color.}}
* [[_CLEARCOLOR]] (statement) {{text|sets a specific color to be treated as transparent in an image}}
* [[_CLEARCOLOR (function)]] {{text|returns the current transparent color of an image.}}
* [[_COPYPALETTE]] (statement) {{text|copies the color palette intensities from one image to another image or screen page.}}
* [[_DEFAULTCOLOR]] (function) {{text|returns the current default text color for an image handle or page.}}
* [[_DONTBLEND]] (statement) {{text|turns off alpha blending for an image handle.}}
* [[_GREEN]] (function) {{text|returns the palette index OR the green component intensity of a 32-bit image.}}
* [[_GREEN32]] (function) {{text|returns the green component intensity of a 32-bit image color.}}
* [[_NEWIMAGE]] (function) {{text|prepares a custom sized program [[SCREEN]] or page surface that can use 256 or 32 bit colors.}}
* [[_PALETTECOLOR]] (statement) {{text|sets the color value of a palette entry of an image using 256 color modes or less (4 or 8 BPP).}}
* [[_PALETTECOLOR (function)]] {{text|returns the 32 bit attribute color setting of an image or screen page handle's palette.}}
* [[_PIXELSIZE]] (function) {{text|returns the color depth (Bits Per Pixel) of an image.}}
* [[_RED]] (function) {{text|returns the palette index OR the red component intensity of a 32-bit screen.}}
* [[_RED32]] (function) {{text|returns the red component intensity of a 32-bit image color.}}
* [[_RGB]] (function) {{text|returns the closest palette attribute index OR the [[LONG]] 32 bit color value in 32 bit screens.}}
* [[_RGB32]] (function) {{text|returns the [[LONG]] 32 bit color value only.}}
* [[_RGBA]] (function) {{text|returns the closest palette attribute index OR the [[LONG]] 32 bit color value in [[_ALPHA]] screens.}}
* [[_RGBA32]] (function) {{text|returns the [[LONG]] 32 bit [[_ALPHA]] color value only.}}
* [[_SETALPHA]] (statement) {{text|sets the alpha channel transparency level of some or all of the pixel colors of an image.}}


* [[CLS]] (statement) {{text|clears the screen and can set the background color in QB64.}}
* [[COLOR]] (statement) {{text|sets the current text color attribute or [[_RGB]] value to be used or background colors in some screen modes.}}
* [[INP]] (function) {{text|returns the RGB color intensity values from color port register &amp;H3C9 for a specific attributes.}}
* [[OUT]] (statement) {{text|sets the color port access mode and sets the RGB color intensity values using &amp;H3C9.}}
* [[PALETTE]] (statement) {{text|sets the Red, Green and Blue color attribute intensities using a RGB multiplier calculation.}}
* [[PALETTE USING]] (statement) {{text|sets the color intensity settings using a designated [[arrays|array]].}}
* [[POINT]] (function) {{text|returns a pixel coordinate color attribute or the [[LONG]] [[_RGB]] color value of a 32 bit color.}}
* [[PRESET]] (statement) {{text|sets a pixel coordinate to the background color or a color specified.}}
* [[PSET]] (statement) {{text|sets a pixel coordinate a specified color or uses the current color when not designated.}}
* [[SCREEN]] {{text|sets the screen mode of a program which may determine the number of colors available in legacy modes.}}

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

==[[Console Window]]==
* [[$CONSOLE]] (QB64 [[Metacommand]]) {{text|creates a console window throughout the program.}}
* [[_CONSOLE]] (statement) {{text|can be used to turn the console window OFF or ON or designate it as [[_DEST]] _CONSOLE for output.}}
* [[_CONSOLETITLE]] (statement) {{Text|creates a title for the console window using a literal or variable [[STRING|string]].}}
* [[$SCREENHIDE]] (QB64 [[Metacommand]]) {{text|hides the program window throughout the program until [[$SCREENSHOW]] is used.}}
* [[_SCREENHIDE]] {{text|hides the main program window in a section of code until [[_SCREENSHOW]] is used.}}
* [[$SCREENSHOW]] (QB64 [[Metacommand]]) {{text|displays the main program window throughout the program after [[$SCREENHIDE]] has been used.}}
* [[_SCREENSHOW]] {{text|displays the main program window in a section of code after [[_SCREENHIDE]] has been used.}}
* [[SHELL (function)|SHELL (QB64 function)]] {{text|executes a DOS command or calls another program. Returns codes sent by [[END]] or [[SYSTEM]].}}
* [[_SHELLHIDE]] (function) {{text|hides a DOS command or call to another program. Returns codes sent by [[END]] or [[SYSTEM]].}}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Conditional Operations ==


* [[AND (boolean)]] {{text|returns True if all of the arguments are True.}}
* [[NOT]] (boolean) {{text|returns the opposite condition of an argument.}}
* [[OR (boolean)]] {{text|returns True if one of the arguments is True.}}
* [[XOR (boolean)]] {{text|returns True if only one of two arguments are True.}}


{{Template:RelationalOperationsTable}}


&lt;center>See also: [[#Logical Bitwise Operations|Logical Operations]] and [[Relational Operations]]&lt;/center>


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Definitions and Variable Types ==

* [[_BIT]] {` numerical [[TYPE|type]]) {{text|values of 0 (bit off) or -1 (bit on). [[_UNSIGNED|Unsigned]] of 0 or 1.}}
* [[_BYTE]] {%% numerical [[TYPE|type]]) {{text|values from -128 to 127 (one byte or 8 [[_BIT]]s). [[_UNSIGNED|Unsigned]] from 0 to 255.}}
* [[_DEFINE]] (statement)  {{text|defines a range of untyped variable names according to their first character as a datatype.}}
* [[_FLOAT]] {## numerical [[TYPE|type]]) {{text|values offer the maximum floating-point decimal precision available using QB64.}}
* [[_INTEGER64]] (&amp;&amp; numerical [[TYPE|type]]) {{text|values -9223372036854775808 to 9223372036854775807. [[_UNSIGNED|Unsigned]] to 18446744073709551615.}}
* [[_MEM]] (variable type) {{text|contains read only dot elements for the OFFSET, SIZE, TYPE and ELEMENTSIZE of a block of memory.}}
* [[_OFFSET]](%&amp; variable type) {{text|can store any memory offset integer value when using [[DECLARE LIBRARY]] or [[_MEM]]ory only.}}
* [[_UNSIGNED]] {~ numerical [[TYPE|type]]) {{text|defines an integer numerical value as being positive only in QB64.}}
* [[COMMON]] (statement) {{text|shares common variable values with other Linked or [[CHAIN]]ed programs.}}
* [[COMMON SHARED]] (statement) {{text|shares common variable values with all sub-procedures and other Linked or CHAINed programs.}}
* [[CONST]] (statement) {{text|defines one or more named numeric or string shared values which can  not change in a program.}}
* [[DEFDBL]] (statement) {{text|defines undefined variable starting letters AS [[DOUBLE]] variables instead of the [[SINGLE]] type default.}}
* [[DEFINT]] (statement) {{text|defines undefined variable starting letters AS [[INTEGER]] variables instead of the [[SINGLE]] type default.}}
* [[DEFLNG]] (statement) {{text|defines undefined variable starting letters AS [[LONG]] variables instead of the [[SINGLE]] type default.}}}}
* [[DEFSNG]] (statement) {{text|defines undefined variable starting letters AS [[SINGLE]] variables instead of the [[SINGLE]] type default.}}
* [[DEFSTR]] (statement) {{text|defines undefined variable starting letters AS [[STRING]] variables instead of the [[SINGLE]] type default.}}
* [[DIM]] {{text|defines a variable or size a [[$STATIC|static]] array and can define the type of value it returns.}}
* [[DOUBLE]] {# numerical [[TYPE|type]]) {{text|an 8 byte floating decimal variable type with numerical values up to 15 decimal places.}}
* [[INTEGER]] {% numerical [[TYPE|type]]) {{text|a two byte variable type with values from -32768 to 32767. [[_UNSIGNED|Unsigned]] to 65535.}}
* [[LONG]] {&amp; numerical [[TYPE|type]]) {{text|Integer values can be from -2147483648 to 2147483647. [[_UNSIGNED]] values to 4294967295.}}
* [[OPTION BASE]] (precompiler statement) {{text|sets the default starting index of an [[arrays|array]] to 0 or 1.}}
* [[OPTION _EXPLICIT]] (precompiler directive) {{text|instructs the compiler to require variable declaration with [[DIM]] or an equivalent statement.}}
* [[OPTION _EXPLICITARRAY]] (precompiler directive) {{text|instructs the compiler to require array declaration with [[DIM]] or an equivalent statement.}} 
* [[REDIM]] {{text|defines and sizes a [[$DYNAMIC|dynamic]](changeable) array and can define the type of value returned.}}
* [[SHARED]] (statement) {{text|designates variable values that can be shared with sub-procedures without using [[SUB]] parameters.}}
* [[SINGLE]] (! numerical [[TYPE|type]]) {{text|a 4 byte floating decimal variable type with numerical values up to 7 decimal places.}}
* [[STATIC]] (statement) {{text|defines a variable or list of variables that will retain their values after the sub-procedure is exited.}}
* [[STRING]] ($ variable type) {{text|one byte text variable with [[ASCII]] code values from 0 to 255.}}
* [[TYPE]] (statement) {{text|defines variable types that can hold more than one variable type value of a fixed byte length.}}


&lt;center>See also: [[Variable Types|QB64 Variable Types]] and  [[Libraries#C.2B.2B_Variable_Types|C++ Variable Types]]&lt;/center>

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== External Disk and API calls ==
* [[_ACCEPTFILEDROP]] (statement) {{text|turns a program window into a valid drop destination for dragging files from Windows Explorer.}}
* [[_DEVICE$]] (function) {{text|returns a [[STRING]] expression listing device names and input types of system input devices.}}
* [[_DEVICES]] (function) {{text|returns the number of input devices found on a computer system.}}
* [[_DIREXISTS]] (function) {{text|returns -1 if the directory folder name [[STRING|string]] parameter exists. Zero if it does not.}}
* [[_DROPPEDFILE]] (function) {{text| returns the list of items (files or folders) dropped in a program's window after [[_ACCEPTFILEDROP]] is enabled.}}
* [[_CLIPBOARD$ (statement)]] {{text|sends [[STRING]] data to the Clipboard.}}
* [[_CLIPBOARD$]] (function) {{text|returns the current contents of the Clipboard as a [[STRING|string]].}}
* [[_CLIPBOARDIMAGE (function)]] {{text|pastes an image from the clipboard into a new QB64 image in memory.}}
* [[_CLIPBOARDIMAGE]] (statement) {{text|copies a valid QB64 image to the clipboard.}}
* [[_CWD$]] (function) {{text|returns the current working directory path as a [[STRING]].}}
* [[_DONTWAIT]] (SHELL action) {{text|allows the program to continue without waiting for the other program to close.}}
* [[_FILEEXISTS]] (function) {{text|returns -1 if the file name [[STRING|string]] parameter exists. Zero if it does not.}}
* [[_FINISHDROP]] (statement) {{text| resets [[_TOTALDROPPEDFILES]] and clears the [[_DROPPEDFILE]] list of items (files/folders).}}
* [[_HIDE]] (SHELL action) {{text|hides the DOS screen output during a shell.}}
* [[_LASTBUTTON]] (function) {{text|returns the number of buttons available on a specified number device listed by [[DEVICE$]].}} 
* [[_OS$]] (function) {{text| returns the QB64 compiler version in which the program was compiled as [WINDOWS], [LINUX] or [MACOSX] and [32BIT] or [64BIT].}}
* [[_SCREENCLICK]]  {{text|simulates clicking the mouse at a position on the screen to get focus.}}
* [[_SCREENIMAGE]]  {{text|captures the current desktop screen image.}}
* [[_SCREENPRINT]]  {{text|simulates keyboard entries on the desktop.}} 
* [[_SHELLHIDE]] (function) {{text|executes a DOS command or calls another program. Returns codes sent by [[END]] or [[SYSTEM]].}}
* [[_STARTDIR$]] (function) {{text|returns the user's program calling path as a [[STRING]].}}
* [[_TOTALDROPPEDFILES]] (function) {{text| returns the number of items (files or folders) dropped in a program's window after [[_ACCEPTFILEDROP]] is enabled.}}


* [[CHDIR]] (statement) {{text|changes the program path to a new path.}}
* [[COMMAND$]] (function) {{text|returns command line parameters sent when a program is started.}}
* [[ENVIRON]] (statement) {{text|temporarily sets an environmental key/value pairs.}}
* [[ENVIRON$]] (function) {{text|returns the environmental settings of the computer.}}
* [[_ENVIRONCOUNT]] (function) {{text|returns the number of key/value pairs currently exist in the environment table.}}
* [[FILES]] (statement) {{text|displays a specified list of files.}}
* [[MKDIR]] (statement) {{text|creates a new directory folder in the designated path.}}
* [[NAME]] (statement) {{text|renames a file.}}
* [[RMDIR]] (statement) {{text|removes an empty directory folder from the specified path.}}
* [[SHELL]] (statement) {{text|performs a command line operation in DOS.}}
* [[SHELL (function)|SHELL (QB64 function)]] {{text|executes a DOS command or calls another program. Returns codes sent by [[END]] or [[SYSTEM]].}}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Error Codes ==

The following table describes the error codes that are reported by the '''QB64''' compiler, as well as possible causes and solutions:

{| border="1" cellpadding="2"
|-
! colspan="6"|QB/64 Error Codes
|-
! Code || Description || Common cause/Resolution || QB64 Differences
|-
|  1 || [[NEXT]] without [[FOR]] || Missing loop end or look for a missing [[END IF]] or [[END SELECT]] statement. || none
|-
|  2 || Syntax error || Mistyped keyword statements or puctuation errors can create syntax errors. || none
|-
|  3 || [[RETURN]] without [[GOSUB]] || Place sub-procedure line label after program [[END]] or [[EXIT]] in a [[SUB]]-procedure.|| none
|-
|  4 || Out of DATA || A [[READ]] has read past the end of [[DATA]]. Use [[RESTORE]] to reset to data start. . || none
|-
|  5 || Illegal function call || A parameter passed does not match the function type or exceeds certain function limitations. See [[Illegal Function]]. || none
|-
|  6 || Overflow || A numerical value has exceeded the limitations of a [[Variable Types|variable type]]. || none
|-
|  7 || Out of memory || A module has exceeded the 64K memory limitation of QB. Try breaking the code up to smaller modules.|| no limit
|-
|  8 || Label not defined || [[GOTO]] or [[GOSUB]] tries to branch to a label that doesn't exist. || none
|-
|  9 || Subscript out of range || An [[Arrays|array's]] [[UBOUND|upper]] or [[LBOUND|lower]] [[DIM|dimensioned]] boundary has been exceeded. || none
|-
| 10 || Duplicate definition || You can't define a variable twice with [[DIM]], the first time a variable is used it is also defined. || none
|-
| 11 || Division by zero || You cannot divide any value by zero! Even using [[MOD]]. || none
|-
| 12 || Illegal in direct mode || A statement (like [[DIM]]) in the Immediate window wasn't allowed. ||  N/A
|-
| 13 || Type mismatch || A [[SUB]] or [[FUNCTION]] parameter does not match the procedure Declaration. || none
|-
| 14 || Out of [[STRING|string]] space || A module has exceeded the 32767 text character limit. Use SUB print procedures. || no limit.
|-
| 16 || String formula too complex. || A string formula was too long or [[INPUT]] statement requested more than 15 strings || N/A
|-
| 17 || Cannot continue. || The program while debugging has changed in a way that it cannot continue. || no debug
|-
| 18 || Function not defined. || The function used by the program must be defined. Did you include the .bi file while using a library? || none
|-
| 19 || No [[RESUME]]. || Use [[RESUME]] at the end of the [[ON ERROR]] [[GOTO]] routine, not [[RETURN]]. || none
|-
| 20 || RESUME without error. || [[RESUME]] can only be used in an error handler called by [[ON ERROR]] [[GOTO]]. || none
|-
| 24 || Device timeout. || Use DS0 (DSzero)in the [[OPEN COM]] statement to avoid modem timeouts. || none
|-
| 25 || Device fault. || Device not connected or does not exist. || none
|-
| 26 || [[FOR]] without [[NEXT]]. || Missing loop end or look for a missing [[END IF]] or [[END SELECT]] statement. || none
|-
| 27 || Out of paper || A printer paper error when using [[LPRINT]]. || none
|-
| 29 || [[WHILE]] without [[WEND]]. || [[WEND]] must end a [[WHILE]] loop. Otherwise look for missing [[END IF]] or [[END SELECT]] || none
|-
| 30 || [[WEND]] without [[WHILE]] || Missing loop end or look for a missing [[END IF]] or [[END SELECT]] statement. || none
|-
| 33 || Duplicate label || Line numbers or labels cannot be used twice in a procedure. || none
|-
| 35 || Subprogram not defined. || Often occurs when the QuickBASIC Library is not used with [[CALL ABSOLUTE]] or [[INTERRUPT]] or a [[SUB]] or [[FUNCTION]] procedure has not been created for a [[CALL]]. || none
|-
| 37 || Argument-count mismatch || The number of sub-procedure [[parameters]] do not match the call. || none
|-
| 38 || Array not defined || [[Arrays]] using more than 10 elements must be [[DIM|DIMensioned]]. || none
|-
| 40 || Variable required. || [[LEN]] cannot read literal numerical values. A [[GET]] or [[PUT]] statement must specify a variable when reading or writing a file opened in [[BINARY]] mode. || none
|-
| 50 || [[FIELD]] overflow. || A [[FIELD]] statement tried to allocate more bytes than were specified for the record length of a random access file. || none
|-
| 51 || Internal error. || An internal malfunction occured in QuickBASIC or QB64. || none
|-
| 52 || Bad file name or number. || The filename must follow the rules for filenames in the OS and use filenumbers from 1 and 255. Use [[FREEFILE]] to avoid duplicate [[OPEN]] file numbers. || none
|-
| 53 || File not found. || File not in current directory or path. Use [[_FILEEXISTS]] to verify file names. || none
|-
| 54 || Bad file mode. || File access mode does not match a current [[OPEN]] file procedure. || none
|-
| 55 || File already open. || [[CLOSE]] a file to open it in a different mode. || none
|-
| 56 || FIELD statement active. || '''WRITEME''' || N/A
|-
| 57 || Device I/O error. || '''WRITEME''' || N/A
|-
| 58 || File already exists. || The filename specified in the [[NAME]] statement was identical to a file that already exists. || none
|-
| 59 || Bad record length. || Record length exceeds 32767 bytes or is 0 || none
|-
| 61 || Disk full. || The amount of data to write to the disk was more than the free space available, remove some files you don't need and try again. || none
|-
| 62 || Input past end of file. || Check for the end of file with [[EOF]] when reading from a file. || none
|-
| 63 || Bad record number. || [[GET]] read exceeds number of records in a [[RANDOM]] file. || none
|-
| 64 || Bad file name || File name contains illegal characters or exceeds 12 characters. || none
|-
| 67 || Too many files || Over 15 files are open in QBasic. || none
|-
| 68 || Device unavailable. || Device does not exist, busy or not connected. || none
|-
| 69 || Communication-buffer overflow. || '''WRITEME''' || N/A
|-
| 70 || Permission denied || A file or port is in use on a network, blocked, read only or locked. || none
|-
| 71 || Disk not ready. || Disk is busy or has no media. || none
|-
| 72 || Disk-media error. || Improper media format or bad data. || none
|-
| 73 || Feature unavailable. || Based on the DOS version available. || none
|-
| 74 || Rename across disks. || '''WRITEME''' || N/A
|-
| 75 || Path/File access error. || File or path cannot be accessed. || none
|-
| 76 || Path not found. || Path is not access-able or does not exist. Use [[_DIREXISTS]] to check paths.|| none
|-
| 97 || (no error message) || Can be used to trigger an error trap event with [[ERROR]] 97, nothing else will cause this error, so create your own errors for [[ON ERROR]]. || none
|-
|}
&lt;center>'''N/A means Not Available or Not Applicable to QB64.'''&lt;/center>


{| border="1" cellpadding="2"
! colspan="6"|QB64 Error Codes
|-
! Code || Description || Common cause/resolution || QB Differences
|-
| 258 || Invalid handle || Zero or bad handle values cannot be used by the QB64 procedure creating the error. || N/A
|}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Error Trapping/Debugging ==


* [[_ASSERT]] (statement) {{text|performs debug tests.}}
* [[$ASSERTS]] ([[Metacommand]]) {{text|enables the [[_ASSERT]] macro.}}
* [[$CHECKING]] ([[Metacommand]]) {{text|turns off or on error event checking and strips error code from compiled programs.}}
* [[$DEBUG]] (precompiler [[metacommand]]) {{text|enables debugging features allowing you to step through your code running line by line and to inspect variables and change their values in real time.}}
* [[_ERRORLINE]] (function) {{text|returns the actual text code line where a program error occurred.}} 
* [[_INCLERRORFILE$]] (function) {{text|returns the name of the original source code $INCLUDE module that caused the most recent error.}}
* [[_INCLERRORLINE]] (function) {{text|returns the line number in an included file that caused the most recent error.}}
* [[_ERRORMESSAGE$]] (function) {{text|returns a human-readable message describing the most recent runtime error.}}
* [[ERR]] (function) {{text|returns the error code number of the last error to occur.}}
* [[ERROR]] (statement) {{text|simulates a program error based on the error code number used.}}
* [[ERL]] (function) {{text|returns the closest line number before an error occurred if the program uses them.}}
* [[ON ERROR]] (statement) [[GOTO]] {{text|sends the program to a line number or label when an error occurs. Use to avoid program errors.}}
* [[RESUME]] (statement) {{text|error statement sends the program to the [[NEXT]] code line or a designated line number or label .}}


&lt;center>See the [[ERROR Codes|Error Code Table]] reference.&lt;/center>


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Event Trapping ==

* [[_AUTODISPLAY]] (statement) {{text|enables the automatic display of the screen image changes previously disabled by [[_DISPLAY]].}}
* [[_DELAY]] (statement) {{text|suspends program execution for a [[SINGLE]] value of seconds down to milliseconds.}}
* [[_DISPLAY]] (statement) {{text|turns off automatic display while only displaying the screen changes when called.}}
*[[_EXIT (function)]] {{text|prevents a user exit and indicates if a user has clicked the close X window button or CTRL + BREAK.}}
*[[_FREETIMER]] (function) {{text|returns a free TIMER number for multiple [[ON TIMER(n)]] events.}}
* [[_MOUSEINPUT]] (function) {{text|reports any changes to the mouse status and MUST be used to read those changes.}}
* [[_SHELLHIDE]] (function) {{text|returns the code sent by a program exit using [[END]] or [[SYSTEM]] followed by an [[INTEGER]] value.}}


* [[OFF]] {{text|turns event checking off and does not remember subsequent events.}}
* [[ON]] {{text|turns event checking on.}}
* [[ON ERROR]] [[GOTO]] (event statement) {{text|executes when a program error occurs}}
* [[ON KEY(n)]] (event statement) {{text|executes when a keypress or keypress combination occurs.}}
* [[ON TIMER(n)]] (event statement) {{text|executes when a timed event occurs. QB64 can use multiple numbered timers.}}
* [[ON...GOSUB]] (event statement) {{text|branches to a line number or label according to a numerical ordered list of labels.}}
* [[ON...GOTO]] (event statement) {{text|branches to a line number or label according to a numerical ordered list of labels.}}
* [[STOP]] {{text|suspends event checking and remembers subsequent events that are executed when events are turned back on.}}
* [[TIMER]] (function) {{text|returns the number of seconds past the previous midnite down to a QB64 accuracy of one millisecond.}}
* [[TIMER (statement)]] {{text|enables, turns off or stops timer event trapping. In QB64 TIMER(n) FREE can free multiple timers. }}
* [[WAIT]] (statement) {{text|normally used to delay program display execution during or after vertical retrace periods.}}

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== File Input and Output ==

* [[_DIREXISTS]] (function) {{text|returns -1 if the directory folder name [[STRING|string]] parameter exists. Zero if it does not.}}
* [[_FILEEXISTS]] (function) {{text|returns -1 if the file name [[STRING|string]] parameter exists. Zero if it does not.}}
* [[ACCESS]] (clause) {{text|used in a networking [[OPEN]] statement to allow READ or WRITE access to files.}}
* [[APPEND]] (file mode) {{text|opens or creates a file that can be appended with data at the end.}}
* [[BINARY]] (file mode) {{text|opens or creates a file that can be byte accessed using both [[GET]] and [[PUT]].}}
* [[BLOAD]] (statement) {{text|opens a binary file and loads the contents to a specific array.}}
* [[BSAVE]] (statement) {{text|creates a binary file that holds the contents of a specified array.}}
* [[CHDIR]] (statement) {{text|changes the program path to a new path.}}
* [[CLOSE]] (statement) {{text|closes a specified file or all open files.}}
* [[EOF]] (file function) {{text|returns -1 when the end of a file has been read.}}
* [[FIELD]] (statement) {{text|creates a [[STRING]] type definition for a random-access file buffer.}}
* [[FILES]] (statement) {{text|displays a specified list of files.}}
* [[FREEFILE]] (file function) {{text|returns a file access number that is currently not in use.}}
* [[GET]] (file I/O statement) {{text|reads file data by byte or record positions.}}
* [[INPUT (file mode)]] {{text|only [[OPEN]]s existing sequential files for program INPUT.}}
* [[INPUT (file statement)]] {{text|reads sequential file data that was created using PRINT # or WRITE #. }}
* [[INPUT$]] (function) {{text|reads a specific number of bytes from random or binary files.}}
* [[KILL]] (statement) {{text|deletes a specified file without asking for verification. Remove empty folders with [[RMDIR]].}}
* [[LINE INPUT (file statement)]] {{text|reads an entire text row of printed sequential file data.}}
* [[LOC]] (function) {{text|finds the current file location or size of a [[COM]] port receive buffer.}}
* [[LOCK]] (statement) {{text|prevents access to a file.}}
* [[LOF]] (file function) {{text|returns the size of a file in bytes.}}
* [[MKDIR]] (statement) {{text|creates a new folder in the designated path.}}
* [[NAME]] (statement) {{text|renames a file [[AS]] a new file name.}}
* [[OPEN]] (file I/O statement) {{text|opens a specified file FOR an access mode with a set reference number.}}
* [[OUTPUT]] (file mode) {{text|opens or creates a new file that holds no data.}}
* [[PRINT (file statement)]] {{text|writes text and numerical data into a file.}}
* [[PRINT USING (file statement)]]  {{text|writes template formatted text into a file.}}
* [[PUT]] (file I/O statement) {{text|writes data into a [[RANDOM]] or [[BINARY]] file by byte or record position.}}
* [[RANDOM]] (file mode) {{text|opens or creates a file that can be accessed using both [[GET]] and [[PUT]].}}
* [[RESET]] (statement) {{text|closes all files and writes the directory information to a diskette.}}
* [[RMDIR]] (statement) {{text|removes an empty folder from the specified path.}}
* [[SEEK]] (function) {{text|returns the current read or write byte position in a file.}}
* [[SEEK (statement)]] {{text|sets the current read or write byte position in a file.}}
* [[UNLOCK]] (statement) {{text|unlocks access to a file.}}
* [[WIDTH]] (statement) {{text|sets the text width of a file.}}
* [[WRITE (file statement)]] {{text|writes numerical and string data to a sequential file using comma separators.}}

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Fonts ==

* [[_FONT (function)]] {{text|creates a new alphablended font handle from a designated image handle}}
* [[_FONT]] (statement) {{text|sets the current [[_LOADFONT]] function font handle to be used by [[PRINT]] or [[_PRINTSTRING]].}}
* [[_FONTHEIGHT]] (function) {{text|returns the font height of a font handle created by [[_LOADFONT]].}}
* [[_FONTWIDTH]] (function) {{text|returns the font width of a MONOSPACE font handle created by [[_LOADFONT]].}}
* [[_FREEFONT]] (statement) {{text|frees a font handle value from memory}}
* [[_LOADFONT]] (function) {{text|loads a TrueType font (.TTF) file of a specific size and style and returns a font handle value.}}
* [[_MAPUNICODE]] (statement) {{text|maps a [[Unicode]] value to an [[ASCII]] character code value.}}
* [[_PRINTMODE (function)]] {{text|returns the present _PRINTMODE status as a numerical value.}}
* [[_PRINTMODE]] (statement) {{text|sets the text or [[_FONT]] printing mode on a background image when using [[PRINT]] or [[_PRINTSTRING]].}}
:*_KEEPBACKGROUND {{text|(1): Text background transparent. Only the text is displayed over anything behind it.}}
:*_ONLYBACKGROUND {{text|(2): Text background is only displayed. Text is transparent to anything behind it.}}
:*_FILLBACKGROUND {{text|(3): Text and background block anything behind them like a normal [[PRINT]]. Default setting.}}
* [[_PRINTSTRING]] (statement) {{text|prints text or custom font strings using graphic column and row coordinate positions.}}
* [[_PRINTWIDTH]] (function) {{text|returns the width in pixels of the [[_FONT]] or text [[STRING|string]] that a program will print.}}
* [[PRINT]] (statement) {{text|prints numeric or [[STRING|string]] expressions to the program screen.}}
* [[PRINT USING]] (statement) {{text|prints template formatted numeric or string values to the program screen.}}
* [[WRITE]] (screen I/O statement) {{text|writes a comma-separated list of values to the screen.}}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Game Controller Input (Joystick) ==
* [[_AXIS]] (function) {{text|returns a [[SINGLE]] value between -1 and 1 indicating the maximum distance from device axis center 0.}}
* [[_BUTTON]] (function) {{text|returns -1 when a device button is pressed and 0 when button is released.}}
* [[_BUTTONCHANGE]] (function) {{text|returns -1 when a device button has been pressed and 1 when released. Zero indicates no change.}}
* [[_DEVICE$]] (function) {{text|returns a [[STRING]] expression listing a designated numbered input device name and types of input.}}
* [[_DEVICEINPUT]] (function) {{text|returns the [[_DEVICES]] number of an [[_AXIS]], [[_BUTTON]] or [[_WHEEL]] event.}}
* [[_DEVICES]] (function) {{text|returns the number of input devices found on a computer system including the keyboard and mouse.}}
* [[_LASTAXIS]] (function) {{text|returns the number of axis available on a specified number device listed by [[_DEVICE$]].}}
* [[_LASTBUTTON]] (function) {{text|returns the number of buttons available on a specified number device listed by [[DEVICE$]].}} 
* [[_LASTWHEEL]] (function) {{text|returns the number of scroll wheels available on a specified number device listed by [[_DEVICE$]].}}
* [[_MOUSEMOVEMENTX]] (function) {{text|returns the relative horizontal position of the mouse cursor compared to the previous position.}}
* [[_MOUSEMOVEMENTY]] (function) {{text|returns the relative vertical position of the mouse cursor compared to the previous position.}}
* [[_WHEEL]] (function) {{text|returns -1 when a device wheel is scrolled up and 1 when scrolled down. Zero indicates no activity.}}
* [[ON STRIG(n)]] (event statement) {{text|directs program flow upon a button press event of a game controller device.}}
* [[STICK]] (function) {{text|returns the directional axis coordinate values from 1 to 254 of game port (&amp;H201) or USB controller devices.}}
* [[STRIG]] (function) {{text|returns the True or False button press status of game port (&amp;H201) or USB controller devices.}}
* [[STRIG(n)]] (statement) {{text|enables, suspends or disables event trapping of STRIG button return values.}}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Graphic Commands ==

* [[_COPYIMAGE]] (function) {{text|can copy a software surface to a hardware accelerated surface handle using mode 33.}}
* [[_DISPLAY]] (statement) {{text|renders surfaces visible in the [[_DISPLAYORDER]] previously set in the QB64 program.}}
* [[_DISPLAYORDER]] {{text|sets the rendering order of _SOFTWARE, _HARDWARE and _GLRENDER with [[_DISPLAY]].}}
* [[_LOADIMAGE]] (function) {{text|can load images as hardware accelerated using mode 33.}}
* [[_MOUSESHOW]] (statement) {{text|a special string parameter after command in GL allows some special cursor shapes.}}
* [[_PUTIMAGE]] (statement) {{text|can place GL surfaces and allows the _SMOOTH action to blend stretched surfaces.}}

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Graphics and Imaging: ==

* [[_AUTODISPLAY]] (statement) {{text|enables the automatic display of the screen image changes previously disabled by [[_DISPLAY]].}}
* [[_CLIP]] ([[PUT (graphics statement)|PUT]] action) {{text|allows placement of an image partially off of the screen.}}
* [[_COPYIMAGE]] (function) {{text|function duplicates an image handle from a designated handle.}}
* [[_COPYPALETTE]] (statement) {{text|copies the color palette intensities from one image to another image or screen page.}}
* [[_DEST]] (statement) {{text|sets the current write image or page. All graphics will go to this image.}}
* [[_DEST (function)]] {{text|returns the current write destination image or page.}}
* [[_DISPLAY]] (statement) {{text|turns off automatic display while only displaying the screen changes when called.}}
* [[_DISPLAY (function)]] {{text|returns the handle of the current image that is displayed on the screen.}}
* [[_FULLSCREEN (function)]] {{text|returns the present full screen mode setting of the screen window.}}
* [[_FULLSCREEN]] (statement) {{text|sets the full screen mode of the screen window. Alt + Enter can do it manually.}}
* [[_FREEIMAGE]] (statement) {{text|releases an image handle value from memory when no longer needed.}}
* [[_HEIGHT]] (function) {{text|returns the height of an image handle or current write page.}}
* [[_ICON]] (function) {{text|places an image in the title bar using a [[_LOADIMAGE]] handle.}}
* [[_LOADIMAGE]] (function) {{text|loads a graphic file image into memory and returns an image handle.}}
* [[_MAPTRIANGLE]] (statement) {{text|maps a triangular portion of an image to a destination image or screen page.}}
* [[_NEWIMAGE]] (function) {{text|prepares a window image or page surface and returns the handle value.}}
* [[_PIXELSIZE]] (function) {{text|returns the color depth (Bits Per Pixel) of an image.}}
* [[_PRINTSTRING]] (statement) {{text|prints text or custom font strings using graphic column and row coordinate positions.}}
* [[_PUTIMAGE]] (statement) {{text|maps a rectangular area of a source image to an area of a destination image in one operation}}
* [[_SCREENIMAGE]] (function) {{text|creates an image of the current desktop and returns an image handle.}}
* [[_SOURCE]] (statement) {{text|establishes the image SOURCE using a designated image handle}}
* [[_SOURCE (function)]] {{text|returns the present image _SOURCE handle value.}}
* [[_WIDTH (function)]] {{text|returns the width of an image handle or current write page.}}


* [[CIRCLE]] (statement) {{text|is used in graphics SCREEN modes to create circles, arcs or ellipses.}}
* [[CLS]] (statement) {{text|clears a screen page or the program [[SCREEN]]. QB64 can clear with a color.}}
* [[COLOR]] (statement) {{text|sets the current text color attribute or [[_RGB]] value to be used or background colors in some screen modes.}}
* [[DRAW]] (statement) {{text|uses a special type of [[STRING|string]] expression to draw lines on the screen.}}
* [[GET (graphics statement)]] {{text|used to store a box area image of the screen into an [[INTEGER]] array.}}
* [[LINE]] (statement) {{text|used in graphic [[SCREEN]] modes to create lines or boxes.}}
* [[PAINT]] (statement) {{text|used to color enclosed graphic objects with a designated fill color and border color.}}
* [[PALETTE]] (statement) {{text|can swap color settings, set colors to default or set the Red, Green, Blue color palette.}}
* [[PALETTE USING]] (statement) {{text|sets all RGB screen color intensities using values from an array.}}
* [[PCOPY]] (statement) {{text|copies one source screen page to a destination page in memory.}}
* [[PMAP]] (function) {{text|returns the physical or [[WINDOW]] view coordinates.}}
* [[POINT]] (function) {{text|returns the pixel [[COLOR]] attribute or [[_RGB]] value at a specified graphics coordinate.}}
* [[PRESET]] (statement) {{text|sets a pixel coordinate to the background color or a designated color.}}
* [[PSET]] (statement) {{text|sets a pixel coordinate to the default color or designated color attribute.}}
* [[PUT (graphics statement)]] {{text|statement is used to place [[GET (graphics statement)|GET]] saved or [[BSAVE]]d images stored in an array.}}
* [[SCREEN]] {{text|sets the screen mode of a program. No statement defaults the program to SCREEN 0 text only mode.}}
* [[STEP]] (relational statement) {{text|is used to step through FOR loop values or use relative graphical coordinates.}}
* [[VIEW]] (graphics statement) {{text|creates a graphics view port area by defining the coordinate limits to be viewed.}}
* [[WINDOW]] (statement) {{text|defines the coordinate dimensions of the current graphics viewport.}}


&lt;center>'''See also: [[Bitmaps]], [[Icons and Cursors]], [[SAVEIMAGE]], [[GIF Images]]'''&lt;/center>

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Keyboard Input ==
* [[_CONTROLCHR]] (statement) {{text|[[OFF]] allows the control characters to be used as text characters. [[ON]](default) can use them as commands.}}
* [[_CONTROLCHR (function)]]  {{text| returns the current state of _CONTROLCHR as 1 when OFF and 0 when ON.}}
* [[_EXIT (function)]] {{text|prevents a program user exit and indicates if a user has clicked the close X window button or CTRL + BREAK.}}
* [[_KEYDOWN]] (function) {{text|returns whether modifying keys like CTRL, ALT, SHIFT, and any other keys are pressed.}}
* [[_KEYHIT]] (function) {{text|returns ASCII one and two byte, Virtual Key and Unicode keyboard key press codes.}}
* [[_SCREENPRINT]] (statement) {{text|simulates typing text into another OS program using the keyboard.}}


* [[INKEY$]] (function) {{text|returns the [[ASCII]] [[STRING|string]] character of a keypress.}}
* [[INPUT]] (statement) {{text|requests a [[STRING]] or numerical keyboard entry from a program user.}}
* [[INPUT$]] (function) {{text|used to get a set number of keypress characters or bytes from a file.}}
* [[INP]] (function) {{text|returns a scan code value from keyboard register &amp;H60(96) to determine key presses.}}
* [[KEY n]] (event statement) {{text|is used to assign a "softkey" string to a key and/or display them.}}
* [[KEY(n)]] (event statement) {{text|assigns, enables, disables or suspends event trapping of a keypress.}}
* [[KEY LIST]] (statement) {{text|lists the 12 Function key soft key string assignments going down left side of screen.}}
* [[LINE INPUT]] (statement) {{text|requests a [[STRING]] keyboard entry from a program user.}}
* [[ON KEY(n)]] (event statement) {{text|defines a line number or label to go to when a specified key is pressed.}}
* [[SLEEP]] (statement) {{text|pauses the program for a specified number of seconds or a until a key press.}}


&lt;center>See also: [[Keyboard scancodes]], [[ASCII|ASCII Codes]] references or  [[Windows_Libraries#Hot_Keys_.28maximize.29|Hot Keys for Windows]].&lt;/center>


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== [[Libraries]] ==

* [[_OFFSET (function)]] {{text|returns the memory offset of a variable when used with [[DECLARE DYNAMIC LIBRARY]] only.}}
* [[_OFFSET]](variable type) {{text|can be used store the value of an offset in memory when using [[DECLARE DYNAMIC LIBRARY]] only.}}


* [[ALIAS]] (statement) {{text|tells the program that you will use a different name than the name used in the Library file.}}
* [[BYVAL]] (statement) {{text|used to pass a parameter's value with sub-procedures from a Library.}}
* [[DECLARE LIBRARY]] {{text|allows the use of OS specific or C++ external library [[SUB]] and [[FUNCTION]] procedures}}
* [[DECLARE DYNAMIC LIBRARY]] {{text|declares DYNAMIC, CUSTOMTYPE or STATIC  library(DLL) [[SUB]]s or [[FUNCTION]]s.}}
* [[DECLARE LIBRARY| END DECLARE]] {{text|required at the END of the block of Library declarations in QB64.}}


&lt;center>'''QB64 also supports [[$INCLUDE]] text code file Libraries. QB64 does not support QLB Libraries or OBJ files.'''&lt;/center>


&lt;center>See also: [[Libraries#C++_Variable_Types|C++ Variable Types]]&lt;/center>


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Logical Bitwise Operations ==

* [[AND]] (operator) {{text|the bit is set when both bits are set.}}
* [[EQV]] (operator) {{text|the bit is set when both are set or both are not set.}}
* [[IMP]] (operator) {{text|the bit is set when both are set or both are unset or the second condition bit is set.}}
* [[OR]] (operator) {{text|the bit is set when either bit is set.}}
* [[NOT]] (operator) {{text|the bit is set when a bit is not set and not set when a bit is set.}}
* [[XOR]] (operator) {{text|the bit is set when just one of the bits are set.}}


{{Template:LogicalTruthTable}}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Mathematical Functions and Operations ==

* [[_ROUND]] (function) {{text|rounds to the closest EVEN [[INTEGER]], [[LONG]] or [[_INTEGER64]] numerical value.}}


* [[+|+ addition operation]]
* [[-|- subtraction or negation operation]]
* [[*|* multiplication operation]]
* [[/|/ decimal point division operation]]
* [[\|\ integer division operation]]
* [[^|^ exponential operation]]
* [[MOD|MOD integer remainder operation]]


* [[ABS]] (function) {{text|returns the the positive value of a variable or literal numerical value.}}
* [[ATN]] (function) {{text|or arctangent returns the angle in radians of a numerical [[TAN|tangent]] value.}}
* [[CDBL]] (function) {{text|closest double rounding function}}
* [[CINT]] (function) {{text|closest integer rounding function}}
* [[CLNG]] (function) {{text|closest long integer rounding function}}
* [[COS]] (function) {{text|cosine of a radian angle}}
* [[CSNG]] (function) {{text|closest single rounding function}}
* [[EXP]] (function) {{text|returns the value of e to the power of the parameter used.}}
* [[FIX]] (function) {{text|rounds positive or negative values to integer values closer to 0}}
* [[INT]] (function) {{text|rounds to lower integer value}}
* [[LOG]] (function) {{text|natural logarithm of a specified numerical value.}}
* [[SIN]] (function) {{text|sine of a radian angle.}}
* [[SQR]] (function) {{text|square root of a positive number.}}
* [[TAN]] (function) {{text|returns the ratio of [[SIN]]e to [[COS]]ine or tangent value of an angle measured in radians.}}


&lt;center>See also: [[Mathematical Operations]] and [[#Logical Bitwise Operations:|Logical Operations:]] &lt;/center>

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Memory Handling and Clipboard ==

* [[_CLIPBOARD$ (function)]] {{text|returns the current [[STRING]] contents of the system Clipboard.}}
* [[_CLIPBOARD$ (statement)]] {{text|sets and overwrites the [[STRING]] contents of the current system Clipboard.}}
* [[_MEM (function)]] {{text|returns _MEM block referring to the largest continuous memory region beginning at a designated variable's offset.}}
* [[_MEM]] (variable type) {{text|contains read only dot elements for the OFFSET, SIZE, TYPE and ELEMENTSIZE of a block of memory.}}
* [[_MEMCOPY]] (statement) {{text|copies a value from a designated OFFSET and SIZE [[TO]] a block of memory at a designated OFFSET.}}
* [[_MEMELEMENT]] (function) {{text|returns a [[_MEM]] block referring to a variable's memory (but not past it).}}
* [[_MEMEXISTS]] (function) {{text|verifies that a memory block exists for a memory variable name or returns zero.}}
* [[_MEMFILL]] (statement) {{text|fills a designated memory block OFFSET with a certain SIZE and TYPE of value.}}
* [[_MEMFREE]] (statement) {{text|frees a designated memory block in a program. Only free memory once!}}
* [[_MEMGET]] (statement) {{text|reads a designated value from a designated memory OFFSET}}
* [[_MEMGET (function)]] {{text|returns a value from a designated memory block and OFFSET using a designated variable [[TYPE]].}}
* [[_MEMIMAGE]] (function) {{text|returns a [[_MEM]] block referring to a designated image handle's memory}}
* [[_MEMNEW]] (function) {{text|allocates new memory with a designated SIZE and returns a [[_MEM]] block referring to it.}}
* [[_MEMPUT]] (statement) {{text|places a designated value into a designated memory [[_OFFSET]]}}
* [[_MEMSOUND]] (function) {{text|returns a [[_MEM]] block referring to a designated sound handle's memory}}
* [[_OFFSET (function)]] {{text|returns the memory offset of a variable when used with [[DECLARE LIBRARY]] or [[_MEM]] only.}}
* [[_OFFSET]](%&amp; numerical type) {{text|can be used store the value of an offset in memory when using [[DECLARE LIBRARY]] or [[_MEM]] only.}}


&lt;center>'''Functions and statements using QB64's emulated 16 bit memory'''&lt;/center>
* [[DEF SEG]] (statement) {{text|defines the segment address in memory.}}
* [[PEEK]] (function) {{text|returns the value that is contained at a certain memory address offset.}}
* [[POKE]] (statement) {{text|sets the value of a specified memory address offset.}}
* [[SADD]] (function) {{text|returns the address of a STRING variable as an offset from the current data segment.}}
* [[VARPTR]] (function) {{text|returns an [[INTEGER]] value that is the offset pointer of the memory address within it's [[segment]].}}
* [[VARPTR$]] (function) {{text|returns a STRING representation of a variable's memory address value}}
* [[VARSEG]] (function) {{text|returns an [[INTEGER]] value that is the [[segment]] part of a variable or array memory address.}}

&lt;center>See also: [[Screen Memory]] or [[Using _OFFSET]]&lt;/center>

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Metacommands ==
:Metacommands are commands that affect a program globally after they are in used. Error checking can be turned [[OFF]] or [[ON]].
&lt;center>'''QB64 [[Metacommand]]s DO NOT allow commenting or [[REM]]!'''&lt;/center>
 

* [[$ASSERTS]] {{text|enables the [[_ASSERT]] macro.}}
* [[$CHECKING]] {{text|turns event and error checking ON and OFF. ON (default) can only be used after it is OFF.}}
* [[$COLOR]] {{text|includes named color constants in a program.}}
* [[$CONSOLE]] {{text|creates a console window throughout the program.}}
* [[$ERROR]] {{text|used to trigger compiler errors.}}
* [[$EXEICON]] {{text|embeds a designated icon file into the compiled EXE file. (Windows ONLY)}}
* [[$IF]]...[[$ELSEIF]]...[[$ELSE]]...[[$END IF]] {{text|used to set an IF condition for the precompiler.}}
* [[$LET]] {{text|used to set a flag variable for the precompiler.}}
* [[$NOPREFIX]] {{text|allows all QB64 functions and statements to be used without the leading underscore (_).}}
* [[$RESIZE]] {{text|determines if a program window can be resized by the user.}}
* [[$SCREENHIDE]] {{text|hides the main program window throughout the program until [[$SCREENSHOW]] is used.}}
* [[$SCREENSHOW]] {{text|displays the main program window throughout the program only after [[$SCREENHIDE]] or [[_SCREENHIDE]] has been used.}}
* [[$VERSIONINFO]] {{text|adds metadata to Windows only binaries for identification purposes across the OS.}}
* [[$VIRTUALKEYBOARD]] {{text|turns the virtual keyboard ON or OFF for use in touch-enabled devices. (DEPRECATED)}} 


&lt;center>'''QBasic [[Metacommand]]s DO require commenting or [[REM]] in QB64!'''&lt;/center>
* '[[$DYNAMIC]] {{text|defines that all arrays are dynamic or changeable in size using [[DIM]] or [[REDIM]].}}
* '[[$INCLUDE]] {{text|includes a text library file with procedures to be used in a program. Comment both sides of file name also.}}
* '[[$STATIC]] {{text|defines that all arrays are static or unchangeable in size using [[DIM]].}}  


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Mouse Input ==
* [[_AXIS]] (function) {{text|returns a [[SINGLE]] value between -1 and 1 indicating the maximum distances from device center 0.}}
* [[_BUTTON]] (function) {{text|returns -1 when a device button is pressed and 0 when button is released. 2 is the mouse center or scroll button}}
* [[_BUTTONCHANGE]] (function) {{text|returns -1 when a device button has been pressed and 1 when released. Zero indicates no change.}}
* [[_DEVICE$]] (function) {{text|returns a [[STRING]] expression listing device names and input types of system input devices.}}
* [[_DEVICEINPUT]] (function) {{text|returns the [[_DEVICES]] number of an [[_AXIS]], [[_BUTTON]] or [[_WHEEL]] event. Mouse is normally _DEVICEINPUT(2).}}
* [[_DEVICES]] (function) {{text|returns the number of input devices found on a computer system. The mouse is normally device 2.}}
* [[_EXIT (function)]] {{text|prevents a program user exit and indicates if a user has clicked the close X window button or CTRL + BREAK.}}
* [[_LASTAXIS]] (function) {{text|returns the number of axis available on a specified number device listed by [[_DEVICE$]].}}
*[[_LASTBUTTON]] (function) {{text|returns the number of buttons available on a specified number device listed by [[DEVICE$]].}} 
* [[_LASTWHEEL]] (function) {{text|returns the number of scroll wheels available on a specified number device listed by [[_DEVICE$]].}}
* [[_MOUSEBUTTON]] (function) {{text|returns whether a specified mouse button number has been clicked. 3 is the mouse center or scroll button}}
* [[_MOUSEHIDE]] (statement) {{text|hides the OS mouse pointer from view.}}
* [[_MOUSEINPUT]] (function) {{text|must be used to monitor and read all changes in the mouse status.}}
* [[_MOUSEMOVE]] (statement) {{text|moves the mouse cursor pointer to a designated coordinate.}}
* [[_MOUSEMOVEMENTX]] (function) {{text|returns the relative horizontal position of the mouse cursor.}}
* [[_MOUSEMOVEMENTY]] (function) {{text|returns the relative vertical position of the mouse cursor.}}
* [[_MOUSESHOW]] (statement) {{text|displays(default) the mouse cursor after it has been hidden.}}
* [[_MOUSEWHEEL]] (function) {{text|returns a positive or negative count the mouse scroll wheel clicks since the last read.}}
* [[_MOUSEX]] (function) {{text|indicates the current horizontal position of the mouse pointer.}}
* [[_MOUSEY]] (function) {{text|indicates the current vertical position of the mouse pointer.}}
* [[_SCREENCLICK]]  {{text|simulates clicking the mouse at a position on the screen to get focus.}}
* [[_WHEEL]] (function) {{text|returns -1 when a device wheel is scrolled up and 1 when scrolled down. Zero indicates no activity.}}


* [[CALL ABSOLUTE|CALL ABSOLUTE]] (statement) {{text|used to access Interrupt vector &amp;H33 to work with the mouse. Functions 0 to 3 implemented.}}
* [[INTERRUPT]] (statement) {{text|used to access Interrupt vector &amp;H33 to work with the mouse. Functions 0 to 3 implemented. }}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Numerical Manipulation and Conversion ==

* [[&amp;B]] [[Binary]] {{text|base number prefix used in QB64 to represent [[_BIT]]s on as 1 or off as 0.}}
* [[_CV]] (function)  {{text|used to convert [[_MK$]] [[ASCII]] [[STRING|string]] values to specified numerical value types.}}
* [[_MK$]] (function)  {{text|converts a specified numerical type into an [[ASCII]] [[STRING|string]]  value that must be converted back using [[_CV]].}}
* [[_PRESERVE]] ([[REDIM]] action) {{text|preserves the current contents of an [[arrays|array]], when re-dimensioning it.}}
* [[_UNSIGNED]] {numerical [[TYPE|type]]) {{text|defines a numerical value as being positive only using QB64.}}


* [[ABS]] (function) {{text|returns the the positive value of a variable or literal numerical value.}}
* [[ASC]] (function) {{text|returns the [[ASCII]] code number of a certain [[STRING]] text character or a keyboard press.}}
* [[CDBL]] (function) {{text|converts a numerical value to the closest [[DOUBLE]]-precision value.}}
* [[CHR$]] (function) {{text|returns the character associated with a certain [[ASCII]] character code as a [[STRING]].}}
* [[CINT]] (function) {{text|returns the closest [[INTEGER]] value of a number.}}
* [[CLEAR]] (statement) {{text|clears all variable values to 0 or null [[STRING|strings]] and closes all open files.}}
* [[CLNG]] (function) {{text| rounds decimal point numbers up or down to the nearest [[LONG]] integer value.}}
* [[CSNG]] (function) {{text|converts a numerical value to the closest [[SINGLE]]-precision number.}}
* [[CVD]] (function) {{text|converts [[STRING]] values to [[DOUBLE]] numerical values.}}
* [[CVDMBF]] (function) {{text|converts a 8-byte Microsoft Binary format [[STRING|string]] value to a [[DOUBLE]] precision number.}}
* [[CVI]] (function) {{text|converts 2 byte STRING values to [[INTEGER]] numerical values.}}
* [[CVL]] (function) {{text|converts 4 byte STRING values to [[LONG]] numerical values.}}
* [[CVS]] (function) {{text|converts 4 byte STRING values to [[SINGLE]] numerical values.}}
* [[CVSMBF]] (function) {{text|converts a 4-byte Microsoft Binary format [[STRING|string]] value to a [[SINGLE]]-precision number.}}
* [[DIM]] (statement) {{text|used to declare a variable type or dimension a [[STATIC]] array.}}
* [[ERASE]] (array statement) {{text|clears a [[STATIC]] array of all values and totally removes a [[$DYNAMIC]] array.}}
* [[HEX$]] (function) {{text|converts decimal [[INTEGER]] values to hexadecimal [[STRING]] number values. Prefix values with [[&amp;H]]}}
* [[INT]] (function) {{text|rounds a numeric value down to the next whole number or [[INTEGER]] value.}}
* [[LEN]] (function) {{text|returns the byte size of strings or numerical variables.}}
* [[OCT$]] {{text|converts decimal numerical values to Octal [[STRING]] number values. Prefix values with [[&amp;O]]}}
* [[RANDOMIZE]] (statement) {{text|seeds the [[RND]] random number generation sequence.}}
* [[REDIM]] (statement) {{text|re-dimensions the number of elements in a [[$DYNAMIC|dynamic]](resizeable) [[arrays|array]].}}
* [[RND]] (function) {{text|returns a randomly generated number from 0 to .9999999}}
* [[SGN]] (function) {{text|returns the sign as -1 for negative, zero for 0 and 1 for positive numerical values.}}
* [[STR$]] (function) {{text|converts a numerical value to a [[STRING]] value.}}
* [[SWAP]] (statement) {{text|trades the values of two numerical types or [[STRING|strings]].}}
* [[VAL]] (function) {{text|converts number [[STRING|strings]] into numerical values until it runs into a non-numeric character.}}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Port Input and Output (COM and LPT) ==


* [[GET]] (file I/O statement) {{text|reads port data data by byte or record positions.}}
* [[LOC]] (function) {{text|finds the current file location or size of a [[COM]] port receive buffer.}}


* [[OPEN COM]] (statement) {{text|opens a computer serial COMmunications port.}}
* [[OUT]] (statement) {{text|sends values to register or port hardware addresses (emulated - limited access).}}


* [[PRINT (file statement)]] {{text|writes text and numerical data to a port transmit buffer.}}
* [[PUT]] (file I/O statement) {{text|writes data into a [[RANDOM]] or [[BINARY]] port by byte or record position.}}


&lt;center>'''See [[Port Access Libraries]] for other ways to access COM and LPT ports.'''.&lt;/center>


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Print formatting ==

* [[LPRINT USING]] (statement) {{text|prints template formatted [[STRING]] text to an LPT or USB  printer page.}}
* [[PRINT USING]] (statement) {{text|prints template formatted [[STRING]] text to the screen.}}
* [[PRINT USING (file statement)]] {{text|prints template formatted [[STRING]] text to a text file.}}


{{PrintUsing}}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Printer Output (LPT and USB) ==

* [[_PRINTIMAGE]] (statement) {{text|prints an image stretched to the size of the paper setting of an LPT or USB printer.}}


* [[LPOS]] (function) {{text|returns the current parallel(LPT) printer head position.}}
* [[LPRINT]] (statement) {{text|prints text to an LPT or USB printer page.}}
* [[LPRINT USING]] (statement) {{text|prints template formatted [[STRING]] text to an LPT or USB  printer page.}}


&lt;center>'''QB64 will use the default system printer selected. [[_PRINTIMAGE]] images will be stretched to the paper size setting.'''&lt;/center>


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Program Flow and Loops ==
* [[_CONTINUE]] (statement) {{text|skips the remaining lines in a control block (DO/LOOP, FOR/NEXT or WHILE/WEND)}}
* [[_DEST]] (statement) {{text|sets the current write image or page. All graphics will go to this image.}}
* [[_DEST (function)]] {{text|returns the current write destination image or page.}}
* [[_EXIT (function)]] {{text|prevents a user exit and indicates if a user has clicked the close X window button or CTRL + BREAK.}}
* [[_SOURCE]] (statement) {{text|establishes the image SOURCE using a designated image handle}}
* [[_SOURCE (function)]] {{text|returns the present image _SOURCE handle value.}}
* [[_SHELLHIDE]] (function) {{text|returns the code sent by a program exit using [[END]] or [[SYSTEM]] followed by an [[INTEGER]] value.}}


* [[CALL]] (statement) {{text|sends code execution to a subroutine procedure in a program.}}
* [[CASE]] ([[SELECT CASE]] statement) {{text|used within a SELECT CASE block to specify a conditional value of the compared variable.}}
* [[CASE ELSE]] ([[SELECT CASE]] statement) {{text|used in a SELECT CASE block to specify an alternative to other CASE values.}}
* [[CASE IS]] ([[SELECT CASE]] statement) {{text|used within a SELECT CASE block to specify a conditional value of the compared variable.}}
* [[DO...LOOP]] (loop statement) {{text|used in programs to repeat code or return to the start of a procedure.}}
* [[ELSE]] (statement) {{text|used in [[IF...THEN]] statements to offer an alternative to other conditional statements.}}
* [[ELSEIF]] (statement) {{text|used in [[IF...THEN]] block statements to offer an alternative conditional statement.}}
* [[END]] (statement) {{text|ENDs a conditional block statement, a sub-procedure or ends the program with "Press any key..."}}
* [[END IF]] (IF statement end) {{text|ENDs an IF statement block.}}
* [[ERROR]] (error statement) {{text|used to simulate an error in a program.}}
* [[EXIT]] (statement) {{text|exits a loop, function or sub-procedure early.}}
* [[FOR...NEXT]] (statement) {{text|a counter loop procedure that repeats code a specified number of times.}}
* [[GOSUB]] (statement) {{text|send the program to a designated line label procedure in the main module or a [[SUB]] procedure.}}
* [[GOTO]] (statement) {{text|sends the program to a designated line number or label.}}
* [[IF...THEN]] (statement) {{text|a conditional flow statement or block of statements.}}
* [[LOOP]] {{text|end of a DO...LOOP procedure that repeats code until or while a condition is true.}}
* [[RESUME]] (error statement) {{text|an error statement that can return the program to the NEXT code line or a specific line number.}}
* [[RETURN]] (statement) {{text|a sub-procedure statement that returns the program to the code immediately after the procedure call.}}
* [[RUN]] (statement) {{text|clears and restarts the program currently in memory or executes another specified program.}}
* [[SELECT CASE]] (statement) {{text|determines the program flow by comparing the value of a variable to specific values.}}
* [[SHELL]] (DOS statement) {{text|directly accesses the Operating System's command line procedures.}}
* [[SLEEP]] (statement) {{text|stops program progression for a specific number of seconds or until a keypress is made.}}
* [[STEP]] (relational statement) {{text|is used to step through FOR loop values or use relative graphical coordinates.}}
* [[STOP]] (statement) {{text|is used when troubleshooting a program to stop the program at a specified code line.}}
* [[SYSTEM]] (statement) {{text|immediately exits a program and closes the program window.}}
* [[UNTIL]] (conditional statement) {{text|continues a DO LOOP procedure until a condition is true.}}
* [[WHILE]] (statement) {{text|continues a DO LOOP procedure while a condition is true.}}
* [[WHILE...WEND]] (statement) {{text|a loop procedure that repeats code while a condition is true.}}

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Sounds and Music ==

* [[_SNDBAL]] (statement) {{text|sets the balance or 3D position of a sound.}}
* [[_SNDCLOSE]] (statement) {{text|frees and unloads an open sound using a _SNDOPEN or _SNDCOPY handle.}}
* [[_SNDCOPY]] (function) {{text|copies a sound to a new handle so that two or more of the same sound can be played at once.}}
* [[_SNDGETPOS]] (function) {{text|returns the current playing position in seconds of a designated sound handle.}}
* [[_SNDLEN]] (function) {{text|returns the length of a sound in seconds of a designated sound handle.}}
* [[_SNDLIMIT]] (statement) {{text|stops playing a sound after it has been playing for a set number of seconds.}}
* [[_SNDLOOP]] (statement) {{text|loops the playing of a specified sound handle.}}
* [[_SNDOPEN]] (function) {{text|loads a sound file with certain capabilities and returns a handle value.}}
* [[_SNDPAUSE]] (statement) {{text|pauses a specified sound handle if it is playing.}}
* [[_SNDPAUSED]] (function) {{text|returns the pause status of a specified sound handle.}}
* [[_SNDPLAY]] (statement) {{text|plays a designated sound file handle.}}
* [[_SNDPLAYCOPY]] (statement) {{text|copies a sound, plays it and automatically closes the copy using a handle parameter}}
* [[_SNDPLAYFILE]] (statement) {{text|a simple command to play a sound file with limited options.}}
* [[_SNDPLAYING]] (function) {{text|returns whether a sound handle is being played.}}
* [[_SNDRATE]] (function) {{text|returns the sample rate frequency per second of the current computer's sound card.}}
* [[_SNDRAW]] (statement) {{text|plays sound wave sample frequencies created by a program.}}
* [[_SNDRAWDONE]] (statement) {{text|pads a [[_SNDRAW]] stream so the final (partially filled) buffer section is played.}}
* [[_SNDRAWLEN]] (function) {{text|returns the length, in seconds, of a _SNDRAW sound currently queued.}}
* [[_SNDRAWOPEN]] (function) {{text|returns a handle to a new, separate [[_SNDRAW]] audio stream.}}
* [[_SNDSETPOS]] (statement) {{text|changes the current/starting playing position of a sound in seconds.}}
* [[_SNDSTOP]] (statement) {{text|stops a playing or paused sound handle.}}
* [[_SNDVOL]] (statement) {{text|sets the volume of a sound handle being played.}}


* [[BEEP]] (statement) {{text|makes a beep sound when called or CHR$(7) is printed.}}
* [[PLAY]] (music statement) {{text|uses a custom string statement to play musical notes.}}
* [[SOUND]] (statement) {{text|creates sounds of a specified frequency for a set duration.}}

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== String Text Manipulation and Conversion ==

* [[_CLIPBOARD$]] (function) {{text|returns the current [[STRING]] contents of the system Clipboard.}}
* [[_CLIPBOARD$ (statement)]] {{text|sets the [[STRING]] contents of the current system Clipboard.}}
* [[_CONTROLCHR]] (statement) {{text|[[OFF]] allows the control characters to be used as text characters. [[ON]](default) can use them as commands.}}
* [[_CONTROLCHR (function)]]  {{text| returns the current state of _CONTROLCHR as 1 when OFF and 0 when ON.}}
* [[_CV]] (function)  {{text|used to convert [[_MK$]] [[ASCII]] [[STRING|string]] values to numerical values.}}
* [[_MK$]] (function)  {{text|converts any numerical type into an [[ASCII]] [[STRING|string]]  value that must be converted back using [[_CV]].}}


* [[ASC (statement)]] {{text|allows a QB64 program to change a character at any position of a predefined STRING.}}
* [[HEX$]] (function) {{text|returns the base 16 hexadecimal representation of an [[INTEGER]] value as a [[STRING]].}} 
* [[INSTR]] (function) {{text|searches for the first occurance of a search STRING within a string and returns the position.}}
* [[LCASE$]] (function) {{text|changes the uppercase letters of a STRING to lowercase.}}
* [[LEFT$]] (function) {{text|returns a part of a STRING from the start a designated number of character places.}}
* [[LEN]] (function) {{text|returns the number of bytes or characters in a [[STRING]] value.}}
* [[LSET]] (statement) {{text|left-justifies a fixed length string expression based on the size of the STRING.}}
* [[LTRIM$]] (function) {{text|returns a string with all leading spaces removed.}}
* [[MID$ (statement)]] {{text|returns a portion of a string from the start position a designated number of characters.}}
* [[MKD$]] (function) {{text|converts a [[DOUBLE]] numerical value into an 8 byte [[ASCII]] [[STRING]] value.}}
* [[MKDMBF$]] (function) {{text|converts a double-precision number to a string containing a value in Microsoft Binary format.}}
* [[MKI$]] (function) {{text|converts a numerical [[INTEGER]] value to a 2 byte [[ASCII]] string value.}}
* [[MKL$]] (function) {{text|converts a numerical [[LONG]] value to a 4 byte [[ASCII]] string value.}}
* [[MKS$]] (function) {{text|converts a numerical [[SINGLE]] value to a 4 byte [[ASCII]] string value.}}
* [[MKSMBF$]] (function) {{text|converts a single-precision number to a string containing a value in Microsoft Binary format.}}}}
* [[OCT$]] (function) {{text|returns the base 8 Octal representation of an INTEGER value.}}
* [[RIGHT$]] (function) {{text|returns a set number of characters in a STRING variable starting from the end.}}
* [[RSET]] (statement) {{text|right-justifies a string according to length of the string expression.}}
* [[RTRIM$]] (function) {{text|returns a string with all of the spaces removed at the right end of a string.}}
* [[SPACE$]] (function) {{text|returns a STRING consisting of a number of space characters.}}
* [[STR$]] (function) {{text|converts a numerical value to a [[STRING]].}}
* [[STRING]] ($ variable type) {{text|one byte text variable with [[ASCII]] code values from 0 to 255.}}
* [[STRING$]] (function)  {{text|returns a STRING consisting of a single character repeated a set number of times.}}
* [[SWAP]] (statement)  {{text|used to exchange two string variable or array element values.}}
* [[UCASE$]] (function) {{text|returns a string with all letters as uppercase.}}
* [[VAL]] (function) {{text|converts a string number value to a numerical value.}}


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Sub procedures and Functions == 

&lt;center>'''QBasic and QB64'''&lt;/center>
* [[CALL]] (statement) {{text|sends code execution to a [[SUB]] procedure in a program. Parameter brackets are required when used.}}
* [[CALL ABSOLUTE|CALL ABSOLUTE]] (statement) {{text|used to access Interrupts on the computer or execute assembly type procedures.}}
* [[CHAIN]] (statement) {{text|changes seamlessly from one program module to another.}}
* DECLARE (BASIC statement) {{text|used to tell that a SUB or FUNCTION is created to be used in the program. NOT USED by QB64!}}
* [[END]] (statement) {{text|ends a [[SUB]] or [[FUNCTION]] procedure.}}
* [[EXIT]] (statement) {{text|exits a [[SUB]] or [[FUNCTION]] procedure early.}}
* [[FUNCTION]] (statement) {{text|a procedure that holds ONE return value in the function's name which is a variable type. }}
* [[GOSUB]] (statement) {{text|sends the program to a sub program that uses a line number or label.}}
* [[$INCLUDE]] (metacommand) {{text|used to insert a source code text file into your program at the point of the insertion.}}
* [[INTERRUPT]] (statement) {{text|a built in assembly routine for accessing computer information registers.}}
* [[RETURN]] (statement) {{text|used in GOSUB procedures to return to the original call code line.}}
* [[RUN]] (statement) {{text| flow statement that clears and restarts the program currently in memory or executes another specified program.}}
* [[SHARED]] (statement) defines a variable or list of variables as shared with the main program module.}}
* [[SHELL]] (statement) {{text|allows a program to use OS command lines.}}
* [[STATIC]] (statement) {{text|defines a variable or list of variables that will retain their values after the sub-procedure is exited.}}
* [[SUB]] (statement) {{text|procedures are programs within programs that can return multiple calculations.}}

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== TCP/IP Networking and Email ==

&lt;center>'''All Statements and Functions Compile in QB64 Only!'''&lt;/center>


* [[_CONNECTED]] (function) {{text|returns the connection status of a TCP/IP connection handle.}}
* [[_CONNECTIONADDRESS$]] (function) {{text| function returns a connected user's [[STRING]] IP address value.}}


* [[_OPENCLIENT]] (function) {{text|connects to a Host on the Internet as a Client and returns the Client status handle.}}
* [[_OPENCONNECTION]] (function) {{text|open's a connection from a client that the host has detected and returns a status handle.}}
* [[_OPENHOST]] (function) {{text|opens a Host which listens for new connections and returns a Host status handle.}}


* [[CLOSE]] (statement) {{text|closes an opened internet connection using the handle assigned in an OPEN statement.}}


* [[GET (TCP/IP statement)]] {{text|reads unformatted(raw) data from an opened connection using the connection handle.}}

* [[PUT (TCP/IP statement)]] {{text|sends unformatted(raw) data to an open connection using a user's handle.}}


&lt;center>See also: [[Downloading Files]]&lt;/center>


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Text on Screen ==
* [[_CONTROLCHR]] {{text|[[OFF]] allows [[ASCII]] characters 0 to 31 to be used as text characters. [[ON]](default) resets to default usage.}}
* [[_FONT (function)]] {{text|creates a new alphablended font handle from a designated image handle}}
* [[_FONT]] (statement) {{text|sets the current [[_LOADFONT]] function font handle to be used by [[PRINT]] or [[_PRINTSTRING]].}}
* [[_MAPUNICODE]] (statement) {{text|maps a [[Unicode]] value to an [[ASCII]] character code value.}}
* [[_PRINTSTRING]] (statement) {{text|prints text or custom font strings using graphic column and row coordinate positions.}}
* [[_SCREENPRINT]] (statement) {{text|simulates typing text into a Windows program using the keyboard.}}


* [[CHR$]] (function) {{text|returns the text character associated with a certain [[ASCII]] character code as a one byte [[STRING]].}}
* [[CLS]] (statement) {{text|clears a screen page or the program [[SCREEN]]. QB64 can clear with a color.}}
* [[COLOR]] (statement) {{text|used to change the color of the text and background in some legacy screen modes.}}
* [[CSRLIN]] (function) {{text|returns the current print cursor row position on the screen.}}
* [[INPUT]] (statement) {{text|requests a [[STRING]] or numerical keyboard entry from a program user.}}
* [[KEY LIST]] (statement) {{text|vertically lists all the [[ON KEY(n)]] softkey strings associated with each function key F1 to F12.}}
* [[LINE INPUT]] (statement) {{text|requests a [[STRING]] keyboard entry from a program user.}}
* [[LOCATE]] (statement) {{text|locates the screen text row and column positions for a [[PRINT]] or [[INPUT]] procedure.}}
* [[POS]] (function) {{text|returns the current print cursor column position.}}
* [[PRINT]] (statement) {{text|prints numeric or [[STRING|string]] expressions to the program screen.}}
* [[PRINT USING]] (statement) {{text|prints template formatted numeric or string values to the program screen.}}
* [[SCREEN]] (statement) {{text|sets the screen mode of a program. No statement defaults the program to SCREEN 0 text mode.}}
* [[SCREEN (function)]] {{text|returns the [[ASCII]] code of a text character or the color attribute at a set text location on the screen.}}
* [[SPACE$]] (function) {{text|returns a [[STRING|string]] consisting of a number of space characters.}}
* [[SPC]] (function) {{text|used in [[PRINT]] and [[LPRINT]] statements to print or output a number of space characters.}}
* [[STR$]] (function) {{text|returns the [[STRING]] representation of a numerical value.}}
* [[STRING$]](function) {{text| returns a [[STRING]] consisting of a single character repeated a set number of times.}}
* [[TAB]] (function) {{text|used in [[PRINT]] and [[LPRINT]] statements to move to a specified text column position.}}
* [[VIEW PRINT]] (statement) {{text|defines the boundaries of a text viewport [[PRINT]] area.}}
* [[WIDTH]] (statement) {{text|changes the text dimensions of certain [[SCREEN]] modes or printer page widths}}
* [[WRITE]] (screen I/O statement) {{text|writes a comma-separated list of values to the screen.}}


&lt;center> See also: [[#Fonts and Unicode:|Fonts and Unicode]] or [[ASCII|ASCII Code Table]]&lt;/center>

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Time, Date and Timing ==

* [[_AUTODISPLAY]] (statement) {{text|enables the automatic display of the screen image changes previously disabled by [[_DISPLAY]].}}
* [[_DELAY]] (statement) {{text|suspends program execution for a [[SINGLE]] value of seconds down to milliseconds.}}
* [[_DISPLAY]] (statement) {{text|turns off automatic display while only displaying the screen changes when called.}}
*[[_FREETIMER]] (function) {{text|returns a free TIMER number for multiple [[ON TIMER(n)]] events.}}
* [[_KEYDOWN]] (function) {{text|returns whether modifying keys like CTRL, ALT, SHIFT, and any other keys are pressed.}}
* [[_KEYHIT]] (function) {{text|returns ASCII one and two byte, Virtual Key and Unicode keyboard key press codes.}}
* [[_LIMIT]] (statement) {{text|sets the loop repeat rate of a program to so many per second, relinquishing spare cpu cycles.}}


* [[DATE$]] (function) {{text|returns the present computer date in a mm-dd-yyyy [[STRING|string]] format}}

* [[INKEY$]] (function) {{text| can be used in a loop to wait for a keypress or a [Ctrl] + letter key combination.}}
* [[INPUT]] (statement) {{text|can be used to wait for an [Enter] key press or a text or numerical menu entry.}}
* [[INPUT$]] (function) {{text|can be used to wait for a key press or a fixed length text entry.}}
* [[ON KEY(n)]] (event statement) {{text|executes when a keypress or keypress combination occurs.}}
* [[ON TIMER(n)]] (event statement) {{text|executes when a timed event occurs. QB64 can use multiple numbered timer events.}}

* [[SLEEP]] (statement) {{text|pauses the program for a specified number of seconds or a until a key press is made.}}
* [[TIME$]] (function) {{text|returns the present computer time in a hh:mm:ss 24 hour [[STRING|string]] format}}

* [[TIMER]] (function) {{text|returns the number of seconds past the previous midnite down to a QB64 accuracy of one millisecond.}}
* [[TIMER (statement)]] {{text|enables, turns off or stops timer event trapping. In QB64 TIMER(n) FREE can free multiple timers. }}

* [[WAIT]] (statement) {{text|normally used to delay program display execution during or after vertical retrace periods.}}

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== Window and Desktop ==

&lt;center>'''All Statements and Functions except [[SCREEN]] Compile in QB64 Only!'''&lt;/center>

* [[_FULLSCREEN (function)]] {{text|returns the present full screen mode setting number of the screen window.}}
* [[_FULLSCREEN]] (statement) {{text|sets the full screen mode of the screen window. Alt + Enter can do it manually.}}
* [[_HEIGHT]] (function) {{text|returns the height of a [[_SCREENIMAGE]] handle to get the desktop resolution.}}
* [[_ICON]] (statement) {{text|creates a program icon from an image file handle created by [[_LOADIMAGE]]. Cannot use .ICO files!}}
* [[_NEWIMAGE]] (statement) {{text|function prepares a window image surface and returns the handle value.}}
* [[$RESIZE]] ([[Metacommand]]) {{text|used with ON allows a user to resize the program window where OFF does not.}}
* [[_RESIZE (function)]] {{text|returns -1 when a program user attempts to resize the program screen.}}
* [[_RESIZEHEIGHT]] (function) {{text|returns the requested new user screen height when [[$RESIZE]]:ON allows it.}}
* [[_RESIZEWIDTH]] (function) {{text|returns the requested new user screen width when [[$RESIZE]]:ON allows it.}}
* [[_SCREENCLICK]]  {{text|simulates clicking the mouse at a position on the screen to get focus.}}
* [[_SCREENEXISTS]] (function) {{text|returns a -1 value once a screen has been created.}}
* [[$SCREENHIDE]] (QB64 [[Metacommand]]) {{text|hides the program window throughout the program until [[$SCREENSHOW]] is used.}}
* [[_SCREENHIDE]] (statement) {{text|hides the main program window in a section of code until [[_SCREENSHOW]] is used.}}
* [[_SCREENIMAGE]] (function) {{text|creates an image of the current desktop and returns an image handle.}}
* [[_SCREENMOVE]] (statement) {{text|positions the program window on the desktop using designated coordinates or _MIDDLE.}}
* [[_SCREENPRINT]] (statement) {{text|simulates typing text into a Windows program using the keyboard.}}
* [[$SCREENSHOW]] (QB64 [[Metacommand]]) {{text|displays the main program window throughout the program after [[$SCREENHIDE]].}}
* [[_SCREENSHOW]] (statement) {{text|displays the main program window in a section of code after [[_SCREENHIDE]] has been used.}}
* [[_SCREENX]] (function) {{text|returns the current program window's upper left corner column position on the desktop.}}
* [[_SCREENY]] (function) {{text|returns the current program window's upper left corner row position on the desktop.}}
* [[_TITLE]] (statement) {{text|sets the program name [[STRING|string]] in the title bar of the program window.}}
* [[_WIDTH (function)]] {{text|returns the width of a [[_SCREENIMAGE]] handle to get the desktop resolution.}}


* [[SCREEN]] {{text|sets the screen mode of a program. No statement defaults the program to SCREEN 0 text mode.}}


&lt;center>''See also:'' [[C_Libraries#Console_Window|Console Window]],  [[Windows_Libraries#Hot_Keys_.28maximize.29|Windows Hot Keys]] or [[Windows_Libraries#Focus|Focus on Program]].&lt;/center>

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== QB64 Programming Symbols ==

&lt;center>'''QB64 and QB Symbols'''&lt;/center>

&lt;center>''[Note: All symbols below can also be used inside of literal quoted strings except for quotation marks.]''&lt;/center>


:'''Print, Input or File Formatting'''
* [[Semicolon|; Semicolon]] after a [[PRINT]] stops the invisible cursor at end of the printed value. Can prevent screen rolling!
* [[Comma|, Comma]] after a [[PRINT]] tabs the invisible cursor past the end of the printed value.
* [[Quotation mark|" Quotation mark]] delimits the ends of a literal [[STRING]] value in a [[PRINT]], [[INPUT]] or [[LINE INPUT]] statement. 
* [[Question mark|? Question mark]] is a shortcut substitute for the [[PRINT]] keyword. Will change to PRINT when cursor leaves the code line.


:'''Program Code Markers'''
* [[Apostrophe|' Apostrophe]] denotes a program comment, to ignore a code line or a QBasic [[Metacommand]]. Same as using [[REM]].
* [[Comma|, Comma]] is a statement variable or [[DATA]], [[SUB]] or [[FUNCTION]] parameter separator. 
* [[Colon|: Colon]]s can be used to separate two procedure statements on one code line.
* [[Dollar_Sign|$ Dollar sign]] prefix denotes a QBasic [[Metacommand]]. Only '''QB64''''s event [[$CHECKING]] should NOT be commented. 
* [[Parenthesis|( ) Parenthesis]] enclose a math or conditional procedure order, [[SUB]] or [[FUNCTION]] parameters or to pass by value.
* [[+|+ Plus]] [[concatenation]] operator MUST be used to combine literal string values in a variable definition.
* [[Quotation mark|" Quotation mark]] delimits the ends of a literal [[STRING]] value. Use [[CHR$]](34) to insert quotes in a text [[STRING]].
* [[REM]] or apostrophe are used to make comments or ignore code or precedes a [[Metacommand]].
* [[Underscore|_ Underscore]] at the end of a code line is used to continue a line of code to the next program line in '''QB64 only'''.

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

:'''Variable Name Type Suffixes'''
* [[STRING|$ STRING]] text character type: 1 byte
* [[SINGLE|! SINGLE]] floating decimal point numerical type (4 bytes)
* [[DOUBLE|# DOUBLE]] floating decimal point numerical type (8 bytes)
* [[_FLOAT|## _FLOAT]] '''QB64''' decimal point numerical type (32 bytes)
* [[_UNSIGNED|~ _UNSIGNED]] '''QB64''' [[INTEGER|whole]] positive numerical type when it precedes the 6 numerical suffixes below:
* [[INTEGER|% INTEGER]] [[INTEGER|whole]] numerical type (2 bytes)
* [[LONG|&amp; LONG]] [[INTEGER|whole]] numerical type (4 bytes}
* [[_INTEGER64|&amp;&amp; _INTEGER64]] '''QB64''' [[INTEGER|whole]] numerical type (8 bytes) 
* [[_BIT|` _BIT]] '''QB64''' [[INTEGER|whole]] numerical type (1 bit)(Key below tilde(~) or [[CHR$]](96))
* [[_BYTE|%% _BYTE]] '''QB64''' [[INTEGER|whole]] numerical type (1 byte)
* [[_OFFSET|%&amp; _OFFSET]] '''QB64''' [[INTEGER|whole]] numerical pointer address type (any byte size required)

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>
:'''Numerical Base Prefixes'''
* [[&amp;B|&amp;B Binary]]           base 2    Digits 0 or 1 ['''QB64''']
* [[&amp;O|&amp;O Octal]]            base 8    Digits 0 to 7
* [[&amp;H|&amp;H Hexadecimal]] base 16: Digits 0 to F


:'''[[Mathematical Operations]]'''
*[[+|+ Addition]] operator or sign
*[[-|- Subtraction]] operator or sign
*[[*|* Multiplication]] operator
*[[/|/ Division]] (floating decimal point) operator
*[[\|\ Integer division]] operator
*[[^|^ Exponential]] operator
*[[MOD|MOD Integer Remainder division]] operator


:'''[[Relational Operations]]'''
* [[Equal|=]] (Equal to condition)
* [[Greater_Than|>]] (Greater than condition)
* [[Less_Than|&lt;]] (Less than condition)
* [[Not_Equal|&lt;>]] (Not equal to condition)
* [[Greater_Than_Or_Equal|>=]] (Greater than or equal to condition)
* [[Less_Than_Or_Equal|&lt;=]] (Less than or equal to condition)

&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>

== QB64 Programming References ==

&lt;center>'''WIKI Pages'''

[[Keyword Reference - Alphabetical#QB64 specific keywords:|QB64 specific keywords]]

[[Keyword Reference - Alphabetical#Original QBasic keywords:|Original QBasic keywords]]

[[Keyword Reference - Alphabetical|Alphabetical keywords]]

[[Main_Page#Appendix:|Main Page with Appendix and Tutorials]]


'''Got a question about something?''' 

[[QB64 FAQ|Visit the QB64 FAQ]]

[http://www.qb64.org Visit the QB64 Main Site]

[http://www.qb64.org/forum Visit QB64 Community Forum]


&lt;p style="text-align: center">([[#toc|Return to Table of Contents]])&lt;/p>
