Version 0.1.001 (released July 7th, 2012)
This version introduces formulas, and includes most of the fundamental formula tools for working with numbers, text, dates and binary data. To try a formula simply type it in and press the Parse button.

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

- assignglobal( -- The assignglobal( function assigns a value to a global variable (creating the variable if necessary).
- binarytotext( -- The binarytotext( function converts binary data into text, optionally using a specified encoding.
- cache( -- The cache( function stores a value in a temporary variable.
- ceil( -- The ceil( function converts a number to an integer, truncating toward positive infinity.
- error( -- The error( function returns an error with the specified message.
- eulersconstant( -- The eulersconstant( function returns the value of Euler's constant.
- ignore( -- The ignore( function ignores all but the first parameter, which is passed through.
- info("milliseconds") -- The info("milliseconds") function returns the number of milliseconds (1/1000th second) since the system started up.
- longlongword( -- The longlongword( function converts a number into a 64 bit longword (8 bytes) of binary data (see Binary Data).
- nan( -- The nan( function checks to see if a numeric value is invalid.
- pi( -- The pi( function returns the value of pi .
- regexarray( -- The regexarray( function applies a regular expression to a text value, then builds an array containing all of the substrings that match the regular expression (see Regular Expressions).
- regexarrayexact( -- The regexarrayexact( function applies a regular expression to a text value, then builds an array containing all of the substrings that match the regular expression (see Regular Expressions).
- regexliteral( -- The regexliteral( function adds \ characters to text as necessary so that it can be used as a literal in a regular expression.
- regexmatch -- The regexmatch operator checks to see if the text on the left matches the regular expression on the right (see Regular Expressions).
- regexmatchexact -- The regexmatchexact operator checks to see if the text on the left matches the regular expression on the right (see Regular Expressions).
- regexreplace( -- The regexreplace( function replaces text with new text. The text to be replaced is determined by a regular expression.
- regexreplaceexact( -- The regexreplaceexact( function replaces text with new text. The text to be replaced is determined by a regular expression.
- Regular Expressions -- Regular expressions can be used to look for a specified pattern in text and then specify what to do with each pattern match that is found
- removepreferencevalues -- The removepreferencevalues statement deletes one or more preference values.
- searchanycase( -- The searchanycase( function searches through an item of text looking for a character, word or phrase. If it finds a match (upper/lower case may be different) with the character, word or phrase, it returns its position within the text item. If it does not find the character, word or phrase, it returns zero.
- soundex( -- The soundex( function computes a four character code that roughly corresponds to the phonetic pronunciation of the word.
- switch( -- The switch( function chooses from a list of values.
- texttobinary( -- The texttobinary( function converts text into binary data, optionally using a specified encoding.
- typecreatorcode( -- The typecreatorcode( function returns the 8 character TYPE and CREATOR codes for a filename (if any).
- validnumber( -- The validnumber( function checks to see if a numeric value is valid.

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

- ?( -- The ?( function allows a formula to make a true/false, yes/no decision.
- / -- The / operator divides one numeric value by another.
- + -- The + operator works differently depending on the type of operands used with it. If both operands are numeric, it does numerical addition. If either operand is text the + operator concatenates (joins together) the two operands.
- < -- The < operator compares two values to see if the first value is less than the second value.
- <= -- The <= operator compares two values to see if the first value is less than or equal to the second value.
- <> -- The <> operator compares two values to see if they are different.
- = -- The = operator compares two values to see if they are the same.
- > -- The > operator compares two values to see if the first value is greater than the second value.
- >= -- The >= operator compares two values to see if the first value is greater than or equal to the second value.
- arccos( -- The arccos( function calculates the inverse cosine of a numeric value.
- arcsin( -- The arcsin( function calculates the inverse sine of a numeric value.
- arctan( -- The arctan( function calculates the inverse tangent of a numeric value.
- array( -- The array( function extracts a single data item from a text array or a data array (see Text Arrays and Data Arrays).
- arraychange( -- The arraychange( function changes the value of a single data item in a text array or a data array (see Text Arrays and Data Arrays).
- arraydeduplicate( -- The arraydeduplicate( function removes duplicate elements from a text array (see Text Arrays).
- arraydelete( -- The arraydelete( function deletes (removes) one or more elements from a text array or a data array (see Text Arrays and Data Arrays).
- arrayelement( -- The arrayelement( function converts between character positions and array element numbers in a text array.
- arrayfilter( -- The arrayfilter( function processes each element of a text array or a data array with a formula (see Text Arrays and Data Arrays).
- arrayinsert( -- The arrayinsert( function inserts one or more empty elements into the middle of a text array (see [Text Arrays]).
- arraymerge( -- The arraymerge( function merges two text arrays together (see [Text Arrays]).
- arrayrange( -- The arrayrange( function extracts a series of data items from a text array or a data array (see Text Arrays and Data Arrays).
- arraysearch( -- The arraysearch( function searches a text array or a data array (see Text Arrays and Data Arrays) to see if it contains a specific value.
- arraysort( -- The arraysort( function alphabetizes (A-Z) the elements in a text array (see [Text Arrays]).
- asc( -- The asc( function converts the first character of a text string into a number from 0 to 65535 based on Unicode encoding.
- beginswith -- The beginswith operator returns true if the value on the left starts with the value on the right, false if it doesn't.
- Binary Data -- Panorama allows a formula or procedure to work with raw binary data.
- binaryvalue( -- The binaryvalue( function converts binary data (a byte, word, longword, or longlongword) into a number (see Binary Data).
- byte( -- The byte( function converts a number into a single byte of binary data (see Binary Data).
- chr( -- The chr( function converts a number into a single character of text, based on Unicode encoding.
- contains -- The contains operator returns true if the value on the left contains the value on the right, false if it doesn't.
- endswith -- The endswith operator returns true if the value on the left ends with the value on the right, false if it doesn't.
- expressiontype( -- The expressiontype( function determines what kind of data is generated by an expression: text, number, etc.
- fixed -- The fixed function converts a floating point number to fixed point.
- like -- The like operator checks to see if the text on the left matches the wildcard pattern specified on the right.
- longword( -- The longword( function converts a number into a 32 bit longword (4 bytes) of binary data (see Binary Data).
- match -- The match operator checks to see if the text on the left matches the wildcard pattern specified on the right.
- matchexact -- The matchexact operator checks to see if the text on the left matches the wildcard pattern specified on the right.
- max( -- The max( function compares a series of values and returns the largest value.
- min( -- The min( function compares a series of values and returns the smallest value.
- not -- The not operator reverses a boolean value.
- notcontains -- The notcontains operator returns true if the value on the left does not contain the value on the right, false if it does.
- notmatch -- The notmatch operator checks to see if the text on the left does not match the wildcard pattern specified on the right.
- notmatchexact -- The notmatchexact operator checks to see if the text on the left doesn't match the wildcard pattern specified on the right.
- Numeric Patterns -- control how a number is displayed or converted to text.
- pattern( -- The pattern( function converts a number into text using a pattern.
- radix( -- The radix( function converts a text item containing a number in a radix between 2 and 36 into a decimal number.
- radixstr( -- The radixstr( function converts a number into a text item containing the equivalent number in a radix between 2 and 36.
- rep( -- The rep( function assembles a text item by repeating a smaller text item over and over again.
- replace( -- The replace( function replaces text with new text.
- search( -- The search( function searches through an item of text looking for a character, word or phrase. If it finds an exact match (including upper/lower case) with the character, word or phrase, it returns its position within the text item. If it does not find the character, word or phrase, it returns zero.
- stripchar( -- The stripchar( function extracts characters you don't want from a text item.
- Text Arrays -- A numbered collection of text values.
- textstuff( -- The textstuff( function replaces one or more characters in the middle of a piece of text.
- time( -- The time( function converts text into a number representing a time.
- timepattern( -- The timepattern( function converts a number representing a time into text. The function uses a pattern to control how the time is formatted.
- val( -- The val( function converts text into a number.
- week1st( -- The week1st( function computes the first day of a week (Sunday).
- word( -- The word( function converts a number into a single word (2 bytes) of binary data (see Binary Data).

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

- \ -- The \ operator performs integer division.
- ^ -- The ^ operator raises a number to a power.
- abs( -- The abs( function calculates the absolute value of a number.
- and -- The and operator returns true if both operands are true.
- arccosh( -- The arccosh( function calculates the inverse hyperbolic cosine of a numeric value.
- arcsinh( -- The arcsinh( function calculates the inverse hyperbolic sine of a numeric value.
- arctanh( -- The arctanh( function calculates the inverse hyperbolic tangent of a numeric value.
- arrayreverse( -- The arrayreverse( function reverses the order of the elements in a text array or a data array (see Text Arrays and Data Arrays).
- arraysize( -- The arraysize( function returns the number of elements in a text array or a data array (see Text Arrays and Data Arrays).
- arraystrip( -- The arraystrip( function removes any blank elements from a text array or a data array (see Text Arrays and Data Arrays).
- calendardate( -- The calendardate( function helps in creating monthly calendars.
- calendarday( -- The calendarday( function helps in creating monthly calendars.
- closedialog -- The closedialog statement closes a form window that was previously opened with the opendialog statement.
- cos( -- The cos( function calculates the cosine of an angle.
- cosh( -- The cosh( function calculates the hyperbolic cosine of a numeric value.
- date( -- The date( function converts text into a number representing a date.
- datepattern( -- The datepattern( function converts a number representing a date into text. The function uses a pattern to control how the date is formatted (see Date Patterns).
- datevalue( -- The datevalue( function converts integer values for year, month and day into a number representing a date.
- dayofweek( -- The dayofweek( function computes the day of the week, with Sunday being 0, Monday 1, etc.
- divzero( -- The divzero( function divides two numbers, returns zero if denominator is zero.
- exp( -- The exp( function raises e to a power.
- extract( -- The extract( function extracts a single data item from a text array, and can also be used to count the number of items in the array.
- fact( -- The fact( function computes the factorial of a value.
- fix( -- The fix( function converts a number to an integer, truncating toward zero.
- float( -- The float( function converts a fixed point number to a floating point number.
- fv( -- The fv( function (short for future value) calculates the future value of an investment.
- import( -- The import( function returns a line or element of imported data. This function works in conjunction with repetitive operations like importtext, arrayfilter(, characterfilter( etc.
- info("globalvariables") -- The info("globalvariables") function builds a carriage return separated text array containing a list of the currently allocated global variables.
- info("tickcount") -- The info("tickcount") function returns the number of ticks (1/60th second) since the system started up.
- info("volumes") -- The info("volumes") function returns a list of all of the currently mounted volumes (disks) on the computer.
- info( -- The info( function returns miscellaneous bits of information about the system, the current database, the current window, etc.
- int( -- The int( function converts a number to an integer, truncating toward negative infinity.
- length( -- The length( function counts the number of characters in a text value (also called a string).
- log( -- The log( function computes the natural logarithm (base e ) of a value.
- log10( -- The log10( function computes the common logarithm (base 10) of a value.
- lower( -- The lower( function converts text to lower case.
- mod -- The mod operator computes the remainder (modulo) after integer division.
- month1st( -- The month1st( function computes the first day of a month.
- monthlength( -- The monthlength( function computes the length (number of days) of a month.
- monthmath( -- The monthmath( function takes a date and computes the date that is one or more months before or after the original date.
- now( -- The now( function returns the current time (number of seconds since midnight).
- or -- The or operator returns true if either operand is true, or false if both are false.
- pmt( -- The pmt( function (short for payment) calculates the periodic payment required to pay off a loan.
- pv( -- The pv( function (short for present value) calculates the present value of an income or debit stream of payments.
- quarter1st( -- The quarter1st( function computes the first day of a quarter.
- regulardate( -- The regulardate( function extracts a regular date (number of days from January 1, 4713 B.C.) from a superdate.
- regulartime( -- The regulartime( function extracts a regular time (seconds since midnight) from a superdate.
- replacemultiple( -- The replacemultiple( function replaces multiple words and phrases in a text value.
- rnd( -- The rnd( function generates a random number between 0 and 1.
- round( -- The round( function rounds a number to a specified increment.
- sandwich( -- The sandwich( function assembles a text item from three smaller items.
- seq( -- The seq( function returns sequential numbers (1, 2, 3, etc.).
- sin( -- The sin( function calculates the sine of an angle.
- sinh( -- The sinh( function calculates the hyperbolic sine of a numeric value.
- soundslike -- The soundslike operator compares two words to see if they "sound like" each other.
- sqr( -- The sqr( function calculates the square root of a value.
- str( -- The str( function converts a number into text, with no formatting.
- striptoalpha( -- The striptoalpha( function removes everything but alphabetic letters from a text item.
- striptonum( -- The striptonum( function removes everything but numeric digits from a text item.
- superdate( -- The superdate( function converts a regular date and a regular time into a superdate.
- tagarray( -- The tagarray( function builds an array (see Text Arrays) containing the body of all the specified tags (usually HTML tags) in the text.
- tagcount( -- The tagcount( function counts the number of times a specified tag (usually an HTML tag) appears in the text. See Tag Parsing for more information on HTML tags.
- tagdata( -- The tagdata( function extracts the body of the specified tag (usually an HTML tag) in the text. See Tag Parsing for more information on HTML tags.
- tagend( -- The tagend( function returns the ending position of the specified tag (usually an HTML tag) in the text.
- tagnumber( -- The tagnumber( function checks to see if a specified position is inside of a tag (usually an HTML tag).
- tagstart( -- The tagstart( function returns the starting position of the specified tag (usually an HTML tag) in the text.
- tan( -- The tan( function calculates the tangent of an angle.
- tanh( -- The tanh( function calculates the hyperbolic tangent of a numeric value.
- time24( -- The time24( function takes a time and makes sure it falls within a 24 hour period.
- timedifference( -- The timedifference( function calculates the difference between two times. It works correctly even if the interval between the two times crosses over midnight.
- timeinterval( -- The timeinterval( function calculates the time interval between two times. It works correctly even if the interval between the two times crosses over midnight.
- today( -- The today( function returns a number corresponding to today's date.
- upper( -- The upper( function converts text to UPPER CASE (all caps).
- upperword( -- The upperword( function converts text to Initial Caps.
- xor -- The xor operator returns true if one of the two parameters is true, false if neither or both are true.
- year1st( -- The year1st( function computes the first day of a year.

ALL features that were added or changed in this release:

- \ -- The \ operator performs integer division.
- <> -- The <> operator compares two values to see if they are different.
- = -- The = operator compares two values to see if they are the same.
- > -- The > operator compares two values to see if the first value is greater than the second value.
- >= -- The >= operator compares two values to see if the first value is greater than or equal to the second value.
- abs( -- The abs( function calculates the absolute value of a number.
- assignglobal( -- The assignglobal( function assigns a value to a global variable (creating the variable if necessary).
- datevalue( -- The datevalue( function converts integer values for year, month and day into a number representing a date.
- expressiontype( -- The expressiontype( function determines what kind of data is generated by an expression: text, number, etc.
- extract( -- The extract( function extracts a single data item from a text array, and can also be used to count the number of items in the array.
- fix( -- The fix( function converts a number to an integer, truncating toward zero.
- fixed -- The fixed function converts a floating point number to fixed point.
- ignore( -- The ignore( function ignores all but the first parameter, which is passed through.
- info("globalvariables") -- The info("globalvariables") function builds a carriage return separated text array containing a list of the currently allocated global variables.
- info("milliseconds") -- The info("milliseconds") function returns the number of milliseconds (1/1000th second) since the system started up.
- info("tickcount") -- The info("tickcount") function returns the number of ticks (1/60th second) since the system started up.
- info("volumes") -- The info("volumes") function returns a list of all of the currently mounted volumes (disks) on the computer.
- info( -- The info( function returns miscellaneous bits of information about the system, the current database, the current window, etc.
- length( -- The length( function counts the number of characters in a text value (also called a string).
- longlongword( -- The longlongword( function converts a number into a 64 bit longword (8 bytes) of binary data (see Binary Data).
- longword( -- The longword( function converts a number into a 32 bit longword (4 bytes) of binary data (see Binary Data).
- month1st( -- The month1st( function computes the first day of a month.
- nan( -- The nan( function checks to see if a numeric value is invalid.
- notcontains -- The notcontains operator returns true if the value on the left does not contain the value on the right, false if it does.
- pi( -- The pi( function returns the value of pi .
- Regular Expressions -- Regular expressions can be used to look for a specified pattern in text and then specify what to do with each pattern match that is found
- removepreferencevalues -- The removepreferencevalues statement deletes one or more preference values.
- sandwich( -- The sandwich( function assembles a text item from three smaller items.
- striptoalpha( -- The striptoalpha( function removes everything but alphabetic letters from a text item.
- tagarray( -- The tagarray( function builds an array (see Text Arrays) containing the body of all the specified tags (usually HTML tags) in the text.
- tagdata( -- The tagdata( function extracts the body of the specified tag (usually an HTML tag) in the text. See Tag Parsing for more information on HTML tags.
- time24( -- The time24( function takes a time and makes sure it falls within a 24 hour period.
- timedifference( -- The timedifference( function calculates the difference between two times. It works correctly even if the interval between the two times crosses over midnight.
- timeinterval( -- The timeinterval( function calculates the time interval between two times. It works correctly even if the interval between the two times crosses over midnight.
- today( -- The today( function returns a number corresponding to today's date.
- typecreatorcode( -- The typecreatorcode( function returns the 8 character TYPE and CREATOR codes for a filename (if any).
- validnumber( -- The validnumber( function checks to see if a numeric value is valid.

See Also

- 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.017 (released November 11th, 2015) -- Summary of Version 0.1.017 (released 11/11/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)