Version 0.1.017 (released November 11th, 2015)
This is not a blockbuster update by any means, but quite a few small changes have accumulated.

- In a formula, empty date fields are now treated as zero rather than as January 24, 1984.

- When deleting one or more form objects, the object properties panel is now updated to show that no objects are selected any more.

- Auto-save is now disabled when editing form object properties.

- Added the SetActiveDatabase statement, as an alternative to “secret” windows.

- Added the loopdataarray statement.

- Added new functions replacefirst(, regexreplacefirst(, and regexreplacefirstexact(. Unlike the regular replace functions, these only replace the first occurence of the matched text.

- The grabdata( function now allows the first parameter to be omitted, in which case the current database is assumed. Also, fieldvalue( is now a synonym for this function.

- Added multiple statements and functions (see below) for directly accessing fields and variables at specific levels. This allows a programmer to bypass Panorama’s normal hierarchy of data storage/access.

- The binaryvalue( function now returns unsigned values. Removed the unsignedbinaryvalue( function and replaced it with the signedbinaryvalue( function. Added two new functions, bigendianbinaryvalue( and littleendianbinaryvalue(, both of which return unsigned values.

- Implemented MactoUTF8 and UTF8toMac functions and statements (for legacy compatibility, they don’t actually do anything).

- Fixed import of Choice format from Panorama 6 (would fail if digits was set to non-zero values, now it works).

- Allow loose colons between statements in a procedure. Panorama 1.0 allowed (actually required) colons in between formulas in the design sheet, and at least one developer still had colons in his databases!

- When importing procedure mode formulas from Panorama 6, no longer converts a blank line into `call ""`.

- Fixed MatrixButtonHelper statement.

- Fixed checkedmenuitem( function

- The info(“bof”) and info(“eof”) functions now work correctly with arraybuild and export. Note that with arraybuild, info(“bof”) might not be the first record included, and info(“eof”) might not be the last, this only happens if you’ve told it to include only selected records.

Brand new features implemented in this release (features that were not included in Panorama 6):

- assignfield -- The assignfield statement performs an assignment, much like an equals sign or the assign statement. However, the assignfield statement only performs the assignment to a database field, not to any variable.
- assignfileglobal -- The assignfileglobal statement performs an assignment, much like an equals sign or the assign statement. However, the assignfileglobal statement only performs the assignment to a fileglobal variable.
- assignglobal -- The assignglobal statement performs an assignment, much like an equals sign or the assign statement. However, the assignglobal statement only performs the assignment to a global variable.
- assignlocal -- The assignlocal statement performs an assignment, much like an equals sign or the assign statement. However, the assignlocal statement only performs the assignment to a local variable.
- assignwindowglobal -- The assignwindowglobal statement performs an assignment, much like an equals sign or the assign statement. However, the assignwindowglobal statement only performs the assignment to a windowglobal variable.
- bigendianbinaryvalue( -- The bigendianbinaryvalue( function converts big endian binary data (a byte, word, or longword) into an unsigned number (see Binary Data).
- globalvalue( -- The globalvalue( function returns the value of a global variable.
- littleendianbinaryvalue( -- The littleendianbinaryvalue( function converts little endian binary data (a byte, word, longword, or longlongword) into an unsigned number (see Binary Data).
- localvalue( -- The localvalue( function returns the value of a local variable.
- loopdataarray -- The loopdataarray statement is used at the beginning of a loop that loops over the elements of a data array.
- regexreplacefirst( -- The regexreplacefirst( function replaces the first occurrence of a regular expression pattern with new text.
- regexreplacefirstexact( -- The regexreplacefirstexact( function replaces the first occurrence of a regular expression pattern with new text.
- replacefirst( -- The replacefirst( function replaces the first occurence of some text with new text.
- setactivedatabase -- The setactivedatabase statement makes a database active (without changing the configuration of the windows).
- setfield -- The setfield statement performs an assignment, much like an equals sign or the assign statement. However, the destination field of the assignment can be calculated on the fly.
- setfileglobal -- The setfileglobal statement sets the value of a fileglobal variable (optionally in another database).
- setglobal -- The setglobal statement sets a value into a global variable. The name of the global variable is calculated on the fly.
- setlocal -- The setlocal statement sets a value into a local variable. The name of the local variable is calculated on the fly.
- setwindowglobal -- The setwindowglobal statement sets the value of a windowglobal variable (optionally in another window).

Features implemented in this release that work differently than they did in Panorama 6.

Features implemented in this release that work exactly the same as they did in Panorama 6.

- mactoutf8( -- The mactoutf8( function translates text from Panorama format to UTF8 (Unicode).
- mactoutf8 -- The mactoutf8 statement translates text from Panorama format to UTF8 (Unicode).
- utf8tomac( -- The utf8tomac( function translates text from UTF8 (Unicode) into Panorama's native text format.
- utf8tomac -- The utf8tomac statement translates text from UTF8 (Unicode) to Panorama format.

ALL features that were added or changed in this release:

- assignfileglobal -- The assignfileglobal statement performs an assignment, much like an equals sign or the assign statement. However, the assignfileglobal statement only performs the assignment to a fileglobal variable.
- assignlocal -- The assignlocal statement performs an assignment, much like an equals sign or the assign statement. However, the assignlocal statement only performs the assignment to a local variable.
- assignwindowglobal -- The assignwindowglobal statement performs an assignment, much like an equals sign or the assign statement. However, the assignwindowglobal statement only performs the assignment to a windowglobal variable.
- Binary Data -- Panorama allows a formula or procedure to work with raw binary data.
- fileglobalvalue( -- The fileglobalvalue( function accesses a fileglobal or permanent variable from other databases.
- globalvalue( -- The globalvalue( function returns the value of a global variable.
- mactoutf8( -- The mactoutf8( function translates text from Panorama format to UTF8 (Unicode).
- mactoutf8 -- The mactoutf8 statement translates text from Panorama format to UTF8 (Unicode).
- opendialogsheet -- The opendialogsheet statement opens a form from the current database as a sheet dialog (attached to the current window).
- regexreplace( -- The regexreplace( function replaces text with new text. The text to be replaced is determined by a regular expression.
- runfieldcalculations -- The runfieldcalculations statement performs any automatic calculations associated with the current field.
- setwindowglobal -- The setwindowglobal statement sets the value of a windowglobal variable (optionally in another window).
- signedbinaryvalue( -- The signedbinaryvalue( function converts binary data (a byte, word, longword, or longlongword) into a signed number (see Binary Data).
- utf8tomac( -- The utf8tomac( function translates text from UTF8 (Unicode) into Panorama's native text format.
- utf8tomac -- The utf8tomac statement translates text from UTF8 (Unicode) to Panorama format.

See Also

- Version 0.1.001 (released July 7th, 2012) -- Summary of Version 0.1.001 (released 7/7/2012)
- Version 0.1.002 (released August 12th, 2012) -- Summary of Version 0.1.002 (released 8/12/2012)
- Version 0.1.003 (released December 2nd, 2012) -- Summary of Version 0.1.003 (released 12/2/2012)
- Version 0.1.004 (released December 10th, 2012) -- Summary of Version 0.1.004 (released 12/10/2012)
- Version 0.1.005 (released December 21st, 2012) -- Summary of Version 0.1.005 (released 12/21/2012)
- Version 0.1.006 (released December 26th, 2012) -- Summary of Version 0.1.006 (released 12/26/2012)
- Version 0.1.007 (released May 1st, 2013) -- Summary of Version 0.1.007 (released 5/1/2013)
- Version 0.1.008 (released May 22nd, 2013) -- Summary of Version 0.1.008 (released 5/22/2013)
- Version 0.1.009 (released July 9th, 2013) -- Summary of Version 0.1.009 (released 7/9/2013)
- Version 0.1.010 (released October 14th, 2013) -- Summary of Version 0.1.010 (released 10/14/2013)
- Version 0.1.011 (released December 6th, 2013) -- Summary of Version 0.1.011 (released 12/6/2013)
- Version 0.1.012 (released August 29th, 2015) -- Summary of Version 0.1.012 (released 8/29/2015)
- Version 0.1.013 (released September 6th, 2015) -- Summary of Version 0.1.013 (released 9/6/2015)
- Version 0.1.014 (released September 14th, 2015) -- Summary of Version 0.1.014 (released 9/14/2015)
- Version 0.1.015 (released September 29th, 2015) -- Summary of Version 0.1.015 (released 9/29/2015)
- Version 0.1.016 (released October 12th, 2015) -- Summary of Version 0.1.016 (released 10/12/2015)
- Version 0.1.018 (released December 7th, 2015) -- Summary of Version 0.1.018 (released 12/7/2015)
- Version 0.1.019 (released January 28th, 2016) -- Summary of Version 0.1.019 (released 1/28/2016)
- Version 0.1.020 (released February 15th, 2016) -- Summary of Version 0.1.020 (released 2/15/2016)
- Version 0.1.021 (released February 29th, 2016) -- Summary of Version 0.1.021 (released 2/29/2016)
- Version 0.1.022 (released March 1st, 2016) -- Summary of Version 0.1.022 (released 3/1/2016)
- Version 0.1.023 (released May 27th, 2016) -- Summary of Version 0.1.023 (released 5/27/2016)
- Version 0.1.024 (released June 12th, 2016) -- Summary of Version 0.1.024 (released 6/12/2016)
- Version 0.1.025 (released July 21st, 2016) -- Summary of Version 0.1.025 (released 7/21/2016)
- Version 0.1.026 (released August 29th, 2016) -- Summary of Version 0.1.026 (released 8/29/2016)
- Version 0.1.027 (released September 18th, 2016) -- Summary of Version 0.1.027 (released 9/18/2016)
- Version 0.1.028 (released November 9th, 2016) -- Summary of Version 0.1.028 (released 11/9/2016)
- Version 0.1.029 (released December 31st, 2016) -- Summary of Version 0.1.029 (released 12/31/2016)
- Version 0.1.030 (released February 12th, 2017) -- Summary of Version 0.1.030 (released 2/12/2017)
- Version 0.1.031 (released March 3rd, 2017) -- Summary of Version 0.1.031 (released 3/3/2017)
- Version 0.1.032 (released April 3rd, 2017) -- Summary of Version 0.1.032 (released 4/3/2017)
- Version 0.9 (released May 15th, 2017) -- Summary of Version 0.9 (released 5/15/2017)
- Version 0.9.001 (released July 18th, 2017) -- Summary of Version 0.9.001 (released 7/18/2017)
- Version 0.9.002 (released July 27th, 2017) -- Summary of Version 0.9.002 (released 7/27/2017)
- Version 0.9.003 (released September 10th, 2017) -- Summary of Version 0.9.003 (released 9/10/2017)
- Version 0.9.004 (released September 14th, 2017) -- Summary of Version 0.9.004 (released 9/14/2017)
- Version 0.9.005 (released September 19th, 2017) -- Summary of Version 0.9.005 (released 9/19/2017)
- Version 0.9.006 (released September 27th, 2017) -- Summary of Version 0.9.006 (released 9/27/2017)
- Version 0.9.007 (released October 3rd, 2017) -- Summary of Version 0.9.007 (released 10/3/2017)
- Version 0.9.008 (released October 12th, 2017) -- Summary of Version 0.9.008 (released 10/12/2017)
- Version 10.0.0 (released October 18th, 2017) -- Summary of Version 10.0.0 (released 10/18/2017)
- Version 10.0.01 (released December 10th, 2017) -- Summary of Version 10.0.01 (released 12/10/2017)
- Version 10.1 (released August 6th, 2018) -- Summary of Version 10.1 (released 8/6/2018)
- Version 10.1.1 (released August 30th, 2018) -- Summary of Version 10.1.1 (released 8/30/2018)
- Version 10.1.2 (released November 15th, 2018) -- Summary of Version 10.1.2 (released 11/15/2018)
- Version 10.2 (released October 7th, 2021) -- Summary of Version 10.2 (released 10/7/2021)