New Features in Classic Version 9

     
  • #ALIGN metastatement aligns the next instruction to a boundary.
  • #COM DOC metastatement specifies a help string to be included in a COM Type Library.
  • #COM HELP metastatement specifies the name of the associated help file and the help context code to be included in a COM Type Library.
  • #COM NAME metastatement specifies the name of the server and the version number to be included in a COM Type Library.
  • #COM GUID metastatement specifies the GUID which identifies the entire application or library (APPID or LIBID) to be included in a COM Type Library.
  • #COM TLIB metastatment specifies that the compiler should create a type library for the compiled EXE or DLL.
  • #DEBUG CODE ON metastatement activates generation of debug code.
  • #DEBUG CODE OFF metastatement suppresses generation of debug code, from that line, until a subsequent #DEBUG CODE ON (or the end of the Sub/Function/Method/Property) is reached.
  • #DEBUG DISPLAY ON metastatement enables error display mode when an untrapped run-time error occurs within a compiled PowerBASIC program.
  • #DEBUG DISPLAY OFF metastatement suppresses displaying of untrapped error messages.
  • #INCLUDE ONCE metastatement includes a file only one time during compilation, regardless of how many times it appears in the program
  • #MESSAGES COMMAND metastatement specifies that only %WM_COMMAND messages are to be sent to a Controls Callback Function, just as in earlier versions of PowerBASIC.
  • #MESSAGES NOTIFY specifies that %WM_NOTIFY messages (as well as %WM_COMMAND messages) are to be sent to a Controls Callback Function.
  • #OPTIMIZE metastatement chooses between faster execution or smaller code size.
  • #UTILITY metastatement. Compiler directive to allow external utility programs to read text inserted on the #UTILITY line.
  • ACODE$ function may now contain an optional code page parameter. The code page parameter represents the code page to be used for the conversion process.
  • ARRAY SORT statement now offers a custom array sorting option. A custom array may be user-defined types, fixed-length strings, or ASCIIZ strings. With a custom array sort, you can write your own simple function to tell PowerBASIC the correct sequence for any two array elements.
  • ASM statement has been expanded to support the full range of SIMD opcodes. ASM statements may now contain a label - ASM Label: or ! Label:. Support for returning METHOD and PROPERTY return value assignments have been added.
  • BITSE function compares Integer class values for equivalent bits regardless of sign.
  • BGR function now accepts individual red, green, and blue values or a single RGB value.
  • BUILD$ function concatenates multiple strings with high efficiency.
  • Callback functions may now return a second result value through a special Windows data area named DWL_MSGRESULT.
  • CB.CTL function returns the control id for the message being processed in a Callback function.
  • CB.CTLMSG function returns the specific control message describing the event which occurred.
  • CB.HNDL function returns the window handle of the parent dialog in a Callback function.
  • CB.LPARAM function returns the wParam value for the message being processed in a Callback function.
  • CB.MSG function returns the numeric message value of the message being processed in a Callback function.
  • CB.WPARAM function returns the wParam value for the message being processed in a Callback function.
  • CB.NMCODE function returns the specific notification message describing the event which occurred.
  • CB.NMHDR function returns the address (a pointer) to the NMHDR UDT for a notification message.
  • CB.NMHDR$ function returns the contents of the NMHDR UDT as a dynamic string.
  • CB.NMHWND function returns the handle of the control which sent this message.
  • CB.NMID function returns the control id for the message being processed in a Callback function.
  • CLASS / END CLASS Block creates the code and data for an object.
  • CLIPBOARD GET ITEM statement retrieves a data item from the Windows ClipBoard.
  • CLIPBOARD GET TEXT statement retrieves a string from the Windows ClipBoard.
  • CLIPBOARD RESET statement deletes the contents of the Windows ClipBoard.
  • CLIPBOARD SET ITEM statement stores a new data item in the Windows ClipBoard.
  • CLIPBOARD SET TEXT statement stores a string in the Windows ClipBoard.
  • COMBOBOX FIND statement. Strings in the ComboBox are searched to find the first string which begins with the specified characters.
  • COMBOBOX FIND EXACT statement. Strings in the ComboBox are searched to find the first string which exactly matches the specified characters.
  • COMBOBOX GET COUNT statement returns the number of items in the ListBox of a ComboBox.
  • COMBOBOX GET SELCOUNT statement returns the number of selected items in the ListBox of a ComboBox.
  • COMBOBOX GET STATE statement checks to see if a specific item in selected.
  • COMBOBOX GET USER statement retrieves the value in the user data area of the ComboBox.
  • COMBOBOX INSERT statement inserts a new data item at a specific location.
  • COMBOBOX SET TEXT statement replaces a string for a specific data item with a new string.
  • COMBOBOX SET USER statement sets a value in the user data area of the ComboBox.
  • COMBOBOX UNSELECT statement sets all items in a ComboBox control to an unselected state.
  • COMM function has been enhanced to retrieve the Clear-To-Send (CTS) and Data-Set-Ready (DSR) states.
  • COMMAND$ function has been improved with an option to either return the complete trailer, or any one of the arguments.
  • CONTROL ADD LISTVIEW statement adds a ListView control to a dialog.
  • CONTROL ADD PROGRESSBAR statement adds a ProgressBar control to a dialog.
  • CONTROL ADD STATUSBAR statement adds a StatusBar control to a dialog.
  • CONTROL ADD TAB statement adds a Tab Control to a dialog.
  • CONTROL ADD TOOLBAR statement adds a ToolBar control to a dialog.
  • CONTROL ADD TREEVIEW statement adds a TreeView control to a dialog.
  • CONTROL SET FONT statement. Select a font to be used for a particular Windows Control.
  • DECLARE statements now support declarations of THREAD FUNCTIONS.
  • DIALOG FONT statement may now be used to specify the style and character set used for the dialog font.
  • DIR$ function has been expanded with an optional ONLY keyword to return only files that match the specified attribute. For example: DIR$(mask$, ONLY %SUBDIR ) just the directory entries which match mask$ are returned. The DIR$ function may optionally assign the complete directory data structure that receives information about the found file or subdirectory. to an appropriate UDT variable if you include the TO clause as a parameter.
  • DISPLAY BROWSE statement displays a folder selection dialog to return the user's choice.
  • DISPLAY COLOR statement displays a color selection dialog to return the user's choice.
  • DISPLAY FONT statement displays a font selection dialog to return user choices.
  • DISPLAY OPENFILE statement displays an OpenFile selection dialog to return user choices.
  • DISPLAY SAVEFILE statement displays a SaveFile selection dialog to return user choices.
  • EOF function now supports an optional # symbol preceding the file number parameter.
  • ERL$ function returns the last label, line number, or procedure name executed prior to the most recent error.
  • EVENTS statement attaches or detaches an event handler to/from an event source.
  • EXE.EXTN$ read-only user defined type returns the extension (with a leading period) of the program which is currently executing.
  • EXE.FULL$ read-only user defined type returns the complete drive, path, and file name of the program which is currently executing.
  • EXE.NAME$ read-only user defined returns just the file name of the program which is currently executing.
  • EXE.NAMEX$ read-only user defined returns the file name and the extension of the program which is currently executing.
  • EXE.PATH$ read-only user defined returns the complete drive and path of the program which is currently executing.
  • EXIT METHOD transfers program execution out of a METHOD structure.
  • EXIT PROPERTY transfers program execution out of a PRPOPERTY structure.
  • FIELD statement has been updated with two new options. FIELD STRING converts a field string to a dynamic string, assigns the current sub-section data to it. FIELD RESET converts a field string to a nul (zero-length) dynamic string.
  • FONT END statement destroys a font when it is no longer needed.
  • FONT NEW statement creates a new font for use with GRAPHIC PRINT, XPRINT, Controls, etc.
  • FOR/NEXT statements have been optimized. In certain situations, previous versions of PowerBASIC optimized FOR/NEXT loops to count down instead of up for improved execution speed. This optimization could cause the counter variable to contain a value which was not expected when execution of the loop was complete. This optimization has been improved so that the counter variable value is always correct upon loop completion, even if EXIT FOR was used to force an early termination.
  • FUNCTION/END FUNCTION statements may now be prepended with the word THREAD for clarity and self-documentation.
  • GLOBALMEM ALLOC statement allocates a moveable memory block.
  • GLOBALMEM FREE statement de-allocates a memory block.
  • GLOBALMEM LOCK statement lock a moveable memory block at a specific memory location.
  • GLOBALMEM SIZE statement returns the size of memory block.
  • GLOBALMEM UNLOCK statement unlocks a moveable memory block.
  • GRAPHIC BITMAP LOAD statement has been improved with an optional stretch mode parameter to enhance the quality of bitmaps which are changed in size.
  • GRAPHIC DETACH statement detaches a graphic target (Window, Control, or Bitmap) which may be currently attached to the process.
  • GRAPHIC FONT statement has been enhanced to allow the points and style attributes to be optional parameters.
  • GRAPHIC GET LINES statement retrieves the number of lines that can be printed on the graphic target.
  • GRAPHIC GET SCALE statement retrieves the current coordinate limits for the graphic target.
  • GRAPHIC IMAGELIST statement display an image from an Imagelist.
  • GRAPHIC INKEY$ statement reads a keyboard character if one is ready.
  • GRAPHIC INPUT statement reads data from the keyboard from within a Graphic Window.
  • GRAPHIC INPUT FLUSH statement removes all buffered keyboard data.
  • GRAPHIC INSTAT statement determines whether a keyboard character is ready.
  • GRAPHIC LINE INPUT statement reads an entire line from the keyboard from within a Graphic Window or a Graphic Control.
  • GRAPHIC SCALE PIXELS statement sets or resets the graphic coordinate system to pixel coordinates.
  • GRAPHIC SET FONT statement selects a font for the GRAPHIC PRINT, GRAPHIC INPUT, and GRAPHIC LINE INPUT statements.
  • GRAPHIC STRETCH statement has been improved with an optional stretch mode parameter to enhance the quality of resized bitmaps.
  • GRAPHIC WAITKEY$ statement reads a keyboard character, waiting until one is ready.
  • GRAPHIC WINDOW CLICK statement checks whether a GRAPHIC WINDOW has been clicked with the mouse.
  • IDISPINFO.CODE pseudo-object. When OBJRESULT is %DISP_E_EXCEPTION, this Get Property returns a long integer value which represents a more specific error code.
  • IDISPINFO.CONTEXT pseudo-object. When OBJRESULT is %DISP_E_EXCEPTION, this Get Property returns a long integer value which is the context of the topic within the help file (IDISPINFO.HELP$).
  • IDISPINFO.DESC$ pseudo-object. When OBJRESULT is %DISP_E_EXCEPTION, this Get Property returns a string containing a textual, human-readable description of the status.
  • IDISPINFO.HELP$ pseudo-object. When OBJRESULT is %DISP_E_EXCEPTION, this Get Property returns a string containing drive, path, and filename of a Help File with more information about this particular status code.
  • IDISPINFO.PARAM pseudo-object. When OBJRESULT is either %DISP_E_PARAMNOTFOUND or %DISP_E_TYPEMISMATCH, this Get Property returns a long integer value which represents the parameter number of the first parameter which failed to match the requirements needed.
  • IDISPINFO.SOURCE$ pseudo-object. When OBJRESULT is %DISP_E_EXCEPTION, this Get Property returns a string containing a textual, human-readable description of the source of the exception.
  • IDISPINFO.CLEAR pseudo-object. Clears all properties which may have been set by prior execution of IDISPINFO.SET in this thread.
  • IDISPINFO.SET pseudo-object. Sets the properties which for future execution of IDISPINFO.
  • IMAGELIST ADD BITMAP statement adds a memory bitmap to an ImageList.
  • IMAGELIST ADD BITMAP statement adds a resource or disk file bitmap to an ImageList.
  • IMAGELIST ADD ICON statement adds a memory icon to an ImageList.
  • IMAGELIST ADD ICON statement adds a resource or disk file icon to an ImageList.
  • IMAGELIST ADD MASKED statement adds a masked memory bitmap to an ImageList.
  • IMAGELIST ADD MASKED statement adds a masked resource or disk file bitmap to an ImageList.
  • IMAGELIST GET COUNT statement retrieves the number of images in an ImageList.
  • IMAGELIST KILL statement destroys a specified ImageList.
  • IMAGELIST NEW BITMAP statement creates a new bitmap ImageList.
  • IMAGELIST NEW ICON statement creates a new icon ImageList.
  • IMAGELIST SET OVERLAY statement declares an image in an ImageList as an overlay image.
  • INSTANCE statement declares an INSTANCE variable which is unique to each object.
  • INTERFACE / END INTERFACE Block (Direct) declares a direct object interface and its member Methods/Properties.
  • ISFILE function determines whether or not a file exists.
  • ISINTERFACE function determines whether an object supports a particular interface.
  • ISMISSING function determines whether an optional parameter was passed by the calling code.
  • ISWIN function determines whether a Control/Dialog/Window currently exists.
  • LET statement has been improved to support compound assignments (+=, -=, *=, /=. \=, &=, AND=, OR=, XOR=, EQV=, IMP=, and MOD=).
  • LISTBOX FIND statement. Strings in the ListBox are searched to find the first string which begins with the specified characters.
  • LISTBOX FIND EXACT statement. Strings in the ListBox are searched to find the first string which exactly matches the specified characters.
  • LISTBOX GET COUNT statement returns the number of items in the ListBox.
  • LISTBOX GET SELCOUNT statement returns the number of selected items in the ListBox.
  • LISTBOX GET SELECT statement searches the ListBox and returns the first selected item.
  • LISTBOX GET STATE statement checks an item in the ListBox to see if it is currently selected.
  • LISTBOX GET USER statement retrieves the value in the user data area of the ListBox.
  • LISTBOX INSERT statement inserts a new data item at a specified location in the ListBox.
  • LISTBOX SET TEXT statement replaces the string for a specific data item with a new string.
  • LISTBOX SET USER statement sets a value in the user data area of the ListBox.
  • LISTBOX UNSELECT statement sets a specific data item in the ListBox control to an unselected state.
  • LISTVIEW DELETE COLUMN statement deletes a column from a ListView control.
  • LISTVIEW DELETE ITEM statement deletes a data item from a ListView control.
  • LISTVIEW FIND statement. Strings in the ListView are searched to find the first string which begins with the specified characters.
  • LISTVIEW FIND EXACT statement. Strings in the ListView are searched to find the first string which exactly matches the specified characters
  • LISTVIEW FIT CONTENT statement adjusts the width of the specified column to fit the width of the data items displayed in that column.
  • LISTVIEW FIT HEADER statement adjusts the width of the specified column to fit the width of the data items displayed in that column, and the header text at the top of that column.
  • LISTVIEW GET COLUMN statement returns the width of the specified column.
  • LISTVIEW GET COUNT statement returns the number of data items in the ListView control.
  • LISTVIEW GET HEADER statement returns the specified column header text.
  • LISTVIEW GET MODE statement retrieves the display mode of the specified ListView control.
  • LISTVIEW GET SELCOUNT statement returns the number of selected items in the ListView control.
  • LISTVIEW GET STATE statement tests a data item to see if it is currently selected.
  • LISTVIEW GET STYLE statement retrieves the current setting of the ListView controls extended style.
  • LISTVIEW GET TEXT statement returns a string data item from the ListView control.
  • LISTVIEW GET USER statement retrieves the value in the user data area of the ListView control.
  • LISTVIEW INSERT COLUMN statement inserts a new vertical column in a Report Mode ListView control.
  • LISTVIEW INSERT ITEM statement inserts a new data item in the ListView control.
  • LISTVIEW RESET statement deletes all data items from the specified ListView control.
  • LISTVIEW SELECT statement the selects a specified string data item in the ListView control.
  • LISTVIEW SET COLUMN statement changes the width of a specific ListView column.
  • LISTVIEW SET HEADER statement sets the column header text to be displayed above the specified column on the ListView control.
  • LISTVIEW SET IMAGE statement displays the specified image next to the item specified.
  • LISTVIEW SET IMAGE2 statement displays a secondary "status" image next to the primary image.
  • LISTVIEW SET IMAGELIST statement attaches an Imagelist to the ListView control.
  • LISTVIEW SET MODE statement changes the display mode of the specified ListView control.
  • LISTVIEW SET OVERLAY statement displays the specified overlay image on top of the image specified.
  • LISTVIEW SET STYLE statement alters the current settings of the ListView controls extended style.
  • LISTVIEW SET TEXT statement replaces the text, if any, for the specified data item with new text.
  • LISTVIEW SET USER statement sets a value in the user data area of the ListView control.
  • LISTVIEW SORT statement sorts all the items in a ListView control.
  • LISTVIEW UNSELECT statement unselects a specified data item in a ListView control.
  • LISTVIEW VISIBLE statement. The specified data item is scrolled, if necessary, to ensure that the data item is visible.
  • ME pseudo-variable. A pseudo object variable to reference the current object.
  • METHOD / END METHOD statements defines a Method procedure within a class.
  • MYBASE pseudo-variable. A pseudo object variable to reference the inherited parent object.
  • OBJRESULT$ function returns a string which describes an OBJRESULT (hResult) code.
  • PATHNAME$ function parses a path/file name to extract its component parts.
  • PATHSCAN$ function finds a file on disk and returns the path and/or file name parts.
  • PRINT# statement, when used without any parameters outputs a blank line to the file (i.e. a CR/LF only).
  • PROCESS GET PRIORITY retrieves the Priority Value for the current process.
  • PROCESS SET PRIORITY sets the Priority Value for the current process.
  • PROGID$ function, has been enhanced to accept ProgIDs up to 99 characters, even though COM rules indicate that a ProgID cannot contain more than 39 characters.
  • PROGRESSBAR GET POS statement returns the current position of the ProgressBar.
  • PROGRESSBAR GET RANGE statement returns the current range of the ProgressBar.
  • PROGRESSBAR SET POS statement sets the current position of the ProgressBar.
  • PROGRESSBAR SET RANGE statement sets the minimum and maximum ranges of the ProgressBar.
  • PROGRESSBAR SET STEP statement specifies the default increment value to be used by the PROGRESSBAR STEP statement.
  • PROGRESSBAR STEP statement advances the current position of the ProgressBar by the default increment value.
  • PROPERTY GET statement retrieves a data value from an object.
  • PROPERTY SET statement assigns a data value to an object.
  • RAISEEVENT statement calls an Event Handler code.
  • RGB function now accepts individual red, green, and blue values or single BGR value.
  • SCROLLBAR GET PAGESIZE statement retrieves the current page size.
  • SCROLLBAR GET POS statement returns the current position of the ScrollBar.
  • SCROLLBAR GET RANGE statement Returns the current range of the ScrollBar.
  • SCROLLBAR GET TRACKPOS statement retrieves the current position of the scroll box.
  • SCROLLBAR SET PAGESIZE statement sets the current page size.
  • SCROLLBAR SET POS statement sets the current position of the ScrollBar.
  • SCROLLBAR SET RANGE statement sets the range of the ScrollBar.
  • SHELL statement now supports an optional EXIT TO clause. If specified, the exit code of the child process (the value returned by the WinMain function) is retrieved.
  • STATUSBAR SET PARTS statement sets the number of parts to be displayed in the StatusBar.
  • STATUSBAR SET TEXT statement assigns the text to be displayed in the specified part of the StatusBar.
  • TAB DELETE statement deletes a page from the Tab control.
  • TAB GET COUNT statement returns the number of pages in a Tab control.
  • TAB GET DIALOG statement retrieves the handle of the dialog for a specific page in a Tab control.
  • TAB GET SELECT statement returns the currently selected page in a Tab control.
  • TAB INSERT PAGE statement adds a new page to a Tab control.
  • TAB RESET statement deletes all pages in a Tab control.
  • TAB SELECT statement selects a specific page in a Tab control to be the active page.
  • TAB SET IMAGELIST statement assigns an ImageList to be used in a Tab control.
  • THREAD CREATE statement now supports an optional stack size parameter to specify the requested size of the stack for this newly created thread.
  • THREAD GET PRIORITY retrieves the Priority Value for a thread.
  • THREAD SET PRIORITY sets the Priority Value for a thread.
  • TIX statement measures elapsed CPU cycles.
  • TOOLBAR ADD BUTTON statement adds a button to a Toolbar control.
  • TOOLBAR ADD SEPARATOR statement adds a separator to a Toolbar control.
  • TOOLBAR DELETE BUTTON statement deletes a button from a Toolbar control.
  • TOOLBAR GET STATE statement retrieves the state of a button on a Toolbar control.
  • TOOLBAR GET COUNT statement retrieves the number of buttons on a Toolbar control.
  • TOOLBAR SET IMAGELIST statement attaches an ImageList to a Toolbar control.
  • TOOLBAR SET STATE statement sets the state of a button on a Toolbar control.
  • TREEVIEW DELETE statement deletes a data item from a TreeView control.
  • TREEVIEW GET BOLD statement retrieves the bold attribute for a data item.
  • TREEVIEW GET CHECK statement retrieves the checkmark attribute for a data item.
  • TREEVIEW GET CHILD statement returns the handle of the first child item of a specified data item.
  • TREEVIEW GET COUNT statement retrieves the number of data items in the TreeView.
  • TREEVIEW GET EXPANDED statement retrieves the expanded attribute for the data item.
  • TREEVIEW GET NEXT statement returns the handle of the next sibling data item.
  • TREEVIEW GET PARENT statement returns the handle of the parent for a specified data item is returned.
  • TREEVIEW GET PREVIOUS statement returns the handle of the previous sibling data item.
  • TREEVIEW GET ROOT statement returns the handle of the very first data item (topmost) in the TreeView.
  • TREEVIEW GET SELECT statement retrieves the handle of the currently selected data item.
  • TREEVIEW GET TEXT statement retrieves the text of a specific data item.
  • TREEVIEW GET USER statement retrieves the value in the user data area for a specific data item of the TreeView.
  • TREEVIEW INSERT ITEM statement adds a new data item to a TreeView control.
  • TREEVIEW RESET statement deletes all data items from the specified TreeView control.
  • TREEVIEW SELECT statement selects a specific data item in the TreeView control.
  • TREEVIEW SET BOLD statement sets the bold attribute for specific data item.
  • TREEVIEW SET CHECK statement sets the checkmark attribute for a specific data item.
  • TREEVIEW SET EXPANDED statement sets the expanded attribute for a specific data item.
  • TREEVIEW SET IMAGELIST statement attaches an ImageList to a TreeView control.
  • TREEVIEW SET TEXT statement replaces the text, if any, for the specified data item with new text.
  • TREEVIEW SET USER statement sets the value in the user data area for a specific data item in the TreeView control.
  • TREEVIEW UNSELECT statement sets all items in a TreeView control to an unselected state.
  • UCODE$ function may now contain an optional code page parameter. The code page parameter represents the code page to be used for the conversion process.
  • UCODEPAGE statement sets the default codepage used for ANSI / UNICODE conversions.
  • WINDOW GET ID statement returns the integer ID for a Window (usually a Control).
  • WINDOW GET PARENT statement retrieves the handle of the parent.
  • WRITE# statement, when used without any parameters outputs a blank line to the file (i.e. a CR/LF only). WRITE# has been extended to allow a trailing comma or semicolon, the final carriage return / line feed is suppressed and replaced with a comma delimiter.
  • XPRINT FONT statement has been enhanced to allow the points and style attributes to be optional parameters.
  • XPRINT GET COLLATE statement retrieves the XPRINT collate status.
  • XPRINT GET COLORMODE statement retrieves the XPRINT colormode status.
  • XPRINT GET COPIES statement retrieves the XPRINT copy count.
  • XPRINT GET DUPLEX statement retrieves the XPRINT duplex status.
  • XPRINT GET PAPER statement retrieves the current paper size/type.
  • XPRINT GET PAPERS statement retrieves a list of supported paper types.
  • XPRINT GET SCALE statement retrieves the current coordinate limits for the host printer page.
  • XPRINT GET TRAY statement retrieves the active printer tray.
  • XPRINT GET TRAYS statement retrieves a list of supported paper trays.
  • XPRINT IMAGELIST statement prints an image from an ImageList.
  • XPRINT SCALE PIXELS resets the coordinate system to the original default pixel coordinates.
  • XPRINT SET COLLATE statement changes the XPRINT collate status.
  • XPRINT SET COLORMODE statement changes the XPRINT colormode status.
  • XPRINT SET COPIES statement changes the XPRINT copy count.
  • XPRINT SET DUPLEX statement changes the XPRINT duplex status.
  • XPRINT SET FONT statement selects a font for the XPRINT statement.
  • XPRINT SET PAPER statement sets a new paper size/type.
  • XPRINT SET TRAY statement sets a new active printer tray.

Special features of Classic PowerBASIC for Windows

  • #STACK sets the program stack size
  • ACCEL ATTACH defines accelerators (shortcut hot-keys)
  • ACODE$() translates unicode strings to ansi
  • ARRAY SORT, SCAN, INSERT, DELETE
  • ARRAYATTR() returns status, data type, subscripts, etc.
  • ASCIIZ strings supported for Windows compatibility
  • Assembler is built-in for opcodes through Pentium class
  • BIN$() allows optional leading zeros to a fixed field size
  • BIT CALC set/reset a bit based upon a dynamic calculation
  • BIT SHIFT, ROTATE, TEST, SET, RESET and TOGGLE
  • BITS() function for bit pattern conversion between signed/unsigned
  • CALLSTK captures the entire stack frame
  • CHOOSE(index&, choice1, choice2...) chooses one of several values
  • CHR$() function may take multiple or a range of parameters
  • Client/Server Network communications using TCP and UDP
  • CLSID$(program_id$) returns the associated CLSID
  • Code pointer variables particularly suitable for callbacks
  • Compile to true machine code for maximum performance
  • Conditional compilation (#If/#ElseIf/#Else/#EndIf)
  • Create client COM applications and COM components using Dispatch, Direct, Automation, or Dual interfaces.
  • CSET centers data within a string with optional padding character
  • Currency variables with choice of two or four decimal digits
  • Data pointer variables with multiple levels of indirection
  • DDT (Dynamic Dialog Tools) builds complete GUI's
  • DECR statement for optimized execution
  • DISKFREE function returns the free space
  • DISKSIZE function returns the disk size
  • Extended-precision (80-bit) floating point variables
  • EXTRACT$() returns characters up to a delimiter
  • FILECOPY Statement supports overwrite of a previous version
  • FILENAME$() function returns the name of an open file
  • FLUSH statement ensures file data buffers are written to disk
  • FILESCAN obtains the number of strings in a file
  • FUNCNAME$ returns the name of the current Sub/Function
  • GUID variables are supported for COM Objects.
  • HEX$() allows optional leading zeros to a fixed field size
  • Huge file sizes greater than 2 Gigabytes are supported
  • IIF(expr, truepart, falsepart) returns one of two values
  • INCR statement for optimized execution
  • ISFALSE and ISTRUE operators
  • ITERATE statement restarts loop structures
  • JOIN$() packs a string array into a dynamic string
  • LINE INPUT #1, x$() reads an entire sequential file
  • MACRO defines a single-line, multi-line, or function Macro
  • MACROTEMP defines Temporary identifiers
  • MAT statement provides optimized Matrix operations
  • MAX() and MAX$() functions take an unlimited number of arguments
  • MIN() and MIN$() functions take an unlimited number of arguments
  • MOUSEPTR changes the mouse pointer to a new shape
  • OCT$() allows optional leading zeros to a fixed field size
  • PARSE$() function extracts a delimited field from a string
  • PARSE assigns each delimited string to an array element
  • PARSECOUNT returns the count of delimited fields in a string
  • PEEK/POKE, PEEK$/POKE$ for memory access
  • PRINT #1, x$() writes an entire array to a sequential file
  • PROFILE creates a complete profile of program execution
  • PUT #1,, x$() writes an entire array to a binary file
  • Quad-word 64-bit integer variables
  • READ$(n) function returns a specific DATA item
  • Register variables for both integer and floating point optimization
  • Regular Expression search and replace
  • REMAIN$() returns the remainder of a string after extraction
  • REMOVE$() returns a string with certain characters removed
  • REPEAT$() repeats an entire string expression
  • REPLACE statement replaces characters or expressions
  • RESET var sets a variable or array to zero or null
  • RND(x,y) returns a random integer between x and y
  • ROUND() function rounds a number to n decimal digits
  • Serial port communication is directly supported at all speeds
  • SETEOF statement sets the end-file position
  • Short-Circuit expression evaluation optimizes execution speed
  • STRDELETE$() deletes a portion of a string
  • String functions support ANY operator to operate on character basis
  • String functions support negative position to count from string end
  • STRINSERT$() inserts a string into another string
  • STRREVERSE$() reverses the character sequence in a string
  • SUB/FUNCTION may take up to 32 parameters
  • SWITCH(expr1, value1, expr2, value2...) returns one of a series
  • TAB$() expands tab characters to a specified tabstop
  • TALLY() counts the occurrences of a sub-string expression
  • Threads are supported as an intrinsic part of the language
  • THREADCOUNT returns the number of active threads
  • THREADID function returns the thread identifier
  • TRACE creates a trace log of complete program execution
  • TRY, CATCH, FINALLY, END TRY offers structured error handling
  • UCODE$() translates ansi strings to the unicode equivalent
  • User-Defined Types and Unions with optional alignment
  • Unsigned byte, word, and double word variables
  • USING$() function formats one or more expressions
  • Variant variables are supported for COM Objects.
  • VARIANTVT() returns the internal VT data type code
  • VERIFY() validates that all characters in string1 occur in string2
  • Win32 API may be easily accessed with no limitations

Minimum System Requirements

     
  • Personal computer with an 80386 or higher processor
  • Any version of Windows from Windows 95 through Windows 10
  • A hard disk with 13.0 Mb available space
  • CD-ROM or DVD drive, or Internet connection, for installations