Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cfl_ch_3-formulas_and_functions [2019/05/17 11:26]
pmonaghan
cfl_ch_3-formulas_and_functions [2019/07/15 20:48] (current)
scotts
Line 59: Line 59:
 |UnitVariable||None||String containing the name of the variable used for computing the unit pricing (usually Quantity)|| |UnitVariable||None||String containing the name of the variable used for computing the unit pricing (usually Quantity)||
  
-**Error Checking**+===== Error Checking ​=====
  
 |**Function** ||**Parameters** ||**Returns…** || |**Function** ||**Parameters** ||**Returns…** ||
Line 71: Line 71:
 |LookupTableValue||"​TableName"​ [ , Row1Value [,​ColumnValue [,Row2 ]]||Value of the Lookup (Pricing) Table. The product'​s variables'​ values are automatically passed to the lookup table unless overridden by Row1, Column, and Row2. Row1, Column, and Row2 are each optional but must be used in order if specified.|| |LookupTableValue||"​TableName"​ [ , Row1Value [,​ColumnValue [,Row2 ]]||Value of the Lookup (Pricing) Table. The product'​s variables'​ values are automatically passed to the lookup table unless overridden by Row1, Column, and Row2. Row1, Column, and Row2 are each optional but must be used in order if specified.||
  
-**Variable Information Lookup**+===== Variable Information Lookup ​=====
  
 |**Function** ||**Parameters** ||**Returns…** || |**Function** ||**Parameters** ||**Returns…** ||
Line 80: Line 80:
 |VariableTotal||VariableName||Total value (sum) of the variable in all line items in the current variation|| |VariableTotal||VariableName||Total value (sum) of the variable in all line items in the current variation||
  
-**Variable Setting Functions**+===== Variable Setting Functions ​=====
  
 |**Function** ||**Parameters** ||**Function…** || |**Function** ||**Parameters** ||**Function…** ||
 |SetVariables||JSON||This function sets the Variables with the values indicated in the JSON array. For example, SetVariables('​ { "​Quantity":​5,​ "​Description":​ "This is cool stuff!"​ } ') or \\ SetVariables('​ Quantity5'​) will set the quantity and description property accordingly.|| |SetVariables||JSON||This function sets the Variables with the values indicated in the JSON array. For example, SetVariables('​ { "​Quantity":​5,​ "​Description":​ "This is cool stuff!"​ } ') or \\ SetVariables('​ Quantity5'​) will set the quantity and description property accordingly.||
  
-**List Lookup**+===== List Lookup ​=====
  
 |**Function** ||**Parameters** ||**Returns…** || |**Function** ||**Parameters** ||**Returns…** ||
Line 93: Line 93:
 |ListPropertyValue||VariableName,​ "​PropertyName"​ [, DefaultValue]||Value of the PropertyName property for the selected value of the list item specified by Parameter. If ParameterName does not contain a list or PropertyName is not found, the value of DefaultValue is returned|| |ListPropertyValue||VariableName,​ "​PropertyName"​ [, DefaultValue]||Value of the PropertyName property for the selected value of the list item specified by Parameter. If ParameterName does not contain a list or PropertyName is not found, the value of DefaultValue is returned||
  
-**Line Item Lookup**+===== Line Item Lookup ​=====
  
 |**Function** ||**Parameters** ||**Returns…** || |**Function** ||**Parameters** ||**Returns…** ||
Line 102: Line 102:
 |WorkAssignmentStartDate||None||Start date of the associated scheduled product activity. If there is no corresponding activity, the constant NoDate is returned|| |WorkAssignmentStartDate||None||Start date of the associated scheduled product activity. If there is no corresponding activity, the constant NoDate is returned||
  
-**Parts and Cost Lookup**+===== Parts and Cost Lookup ​=====
  
 |**Function** ||**Parameters** ||**Returns sum of the (Estimated) costs of all parts that are of the type…** || |**Function** ||**Parameters** ||**Returns sum of the (Estimated) costs of all parts that are of the type…** ||
Line 124: Line 124:
 |ActualTotalCost||None||All|| |ActualTotalCost||None||All||
  
-**User Defined Field Lookup Functions**+===== User Defined Field Lookup Functions ​=====
  
  \\ UDF Values for the current Transaction (Order or Estimate), Customer, Contact, and Product can be retrieved in any CFL function. The UDF Value for a Part may be retrieved through the Part Name or the name of the variable that linked to the part. \\ A default value should always be given. If the UDF is not defined or the associated information not present, and no default value is given, an error message will result. For example, if you use a Customer UDF but attempt to read the value before the customer is assigned to the order you will receive an error message.  \\ UDF Values for the current Transaction (Order or Estimate), Customer, Contact, and Product can be retrieved in any CFL function. The UDF Value for a Part may be retrieved through the Part Name or the name of the variable that linked to the part. \\ A default value should always be given. If the UDF is not defined or the associated information not present, and no default value is given, an error message will result. For example, if you use a Customer UDF but attempt to read the value before the customer is assigned to the order you will receive an error message.
Line 206: Line 206:
 Sets the value used by an object UDF to the ID specified. If the UDF does not exist a warning is logged. If the ID does not exist a message is displayed and the UDF not set. Passing an ID of zero (0) or negative one (-1) will clear the UDF. Sets the value used by an object UDF to the ID specified. If the UDF does not exist a warning is logged. If the ID does not exist a message is displayed and the UDF not set. Passing an ID of zero (0) or negative one (-1) will clear the UDF.
  
- \\ **Company Functions** \\ With these functions, you can modify and save a Company record:+===== \\ Company Functions ​===== 
 + 
 +With these functions, you can modify and save a Company record:
  
 |**Function** ||**Parameters** ||**Notes** || |**Function** ||**Parameters** ||**Notes** ||
Line 222: Line 224:
   * DecrementCompanyUDF   * DecrementCompanyUDF
  
-**Product Functions** \\ With these functions, you can modify and save a Product record:+===== Product Functions ​===== 
 + 
 +With these functions, you can modify and save a Product record:
  
 |**Function** ||**Parameters** ||**Notes** || |**Function** ||**Parameters** ||**Notes** ||
Line 236: Line 240:
   * ResetProductUDF   * ResetProductUDF
  
-**Part Functions** \\ With these functions, you can modify and save a Part record:+===== Part Functions ​===== 
 + 
 +With these functions, you can modify and save a Part record:
  
 |**Function** ||**Parameters** ||**Notes** || |**Function** ||**Parameters** ||**Notes** ||
Line 256: Line 262:
  \\ Cyrious generates a number of functions to evaluate mathematical expressions,​ manipulate strings, work with dates and times, and format information for display.  \\ Cyrious generates a number of functions to evaluate mathematical expressions,​ manipulate strings, work with dates and times, and format information for display.
  
- \\ **Numeric ​Functions**+==== Numeric Functions ==== 
 + 
 +|**Function** |**Parameters** |**Description** | | 
 +|ABS|X|Absolute value of X| | 
 +|ACOS|X|Arccosine| | 
 +|ACOSH|X|Hyperbolic Arccosine| | 
 +|ASIN|X|Arcsine| | 
 +|ASINH|X|Hyperbolic Arcsine| | 
 +|ATAN|X|Arctangent| | 
 +|ATANH|X|Hyperbolic Arctangent| | 
 +|BINOM|N, K|Binomial Coefficient BINOM(N, K)=N!/​(K!*(N-K)!)| | 
 +|COS|X|Cosine| | 
 +|COSH|X|Hyperbolic Cosine| | 
 +|COTAN|X|Cotangent| | 
 +|EXP|X|e\^X. Same as POWER( LN2, X )| 
 +|FACT|X|Factorial Function X!=X*(X-1)*(X-2)*…*1| | 
 +|FRAC|X|Extract Fractional Part| | 
 +|INT|X|Extract Integer Part| | 
 +|LG|X|Base 10 Logarithm| | 
 +|LN|X|Natural Logarithm| | 
 +|LN2| |Natural log constant| | 
 +|MAX|X, Y, ..|Maximum value of arguments. UNLIMITED arguments| | 
 +|MIN|X, Y, ..|Minimum value of arguments. UNLIMITED arguments| | 
 +|PI| |PI number (3.14159… – constant)| | 
 +|ROUND|X [, Y]|If Y is omitted, rounds argument to the nearest integer. If Y is present, round to Y places of precision.| | 
 +|ROUNDUP|X|Rounds any fraction to the next higher integer number = INT( X + 0.99999999 )| | 
 +|SIGN|X|1 for X>0, 0 for X=0, -1 for X<0| | 
 +|SIN|X|Sine| | 
 +|SINH|X|Hyperbolic Sine| | 
 +|SQR|X|Square of X = X * X| | 
 +|SQRT|X|Square Root of X| | 
 +|TAN|X|Tangent| | 
 +|TANH|X|Hyperbolic Tangent| | 
 + 
 +==== Boolean Functions ==== 
 + 
 +|**Function** |**Parameters** |**Returns…** | 
 +|IsNumber|S|True if the String S is a valid number, otherwise returns False| 
 +|IsAssigned|VariableName|True if the variable name is assigned to the product, otherwise returns false| 
 +|IsAssigned|Object Reference|True if the object reference can be resolved, otherwise returns False (e.g. if referencing Company.ShippingAddress.Country but no customer is assigned to the order, the object reference cannot be resolved| 
 + 
 +==== String Functions ==== 
 + 
 +|**Function** |**Parameters** |**Returns…** | 
 +|CharCount|S|Number of characters in a string (same as Len)| 
 +|Left|S, Len|Left Len characters from S. If S is smaller than Len, the entire string is returned| 
 +|Len|S|Number of characters in a string (same as CharCount)| 
 +|LineCount|S|Number of lines in a string (ignores empty lines)| 
 +|Lower|S|S converted to lower case| 
 +|LowerCaseCount|S|Number of lower case lines in a string| 
 +|Mid|S, Start [, Len]|Substring from S starting at position Start for Len characters. If Len is omitted, the entire rest of the string is returned| 
 +|Pos|S, T [, Pos]|Position of substring T in string S, starting at character Pos (or the first character if not specified)| 
 +|PunctuationCount|S|Number of non-letter and non-number in a string| 
 +|Replace|S, OldPattern, NewPattern [, ReplaceAll [, IgnoreCase]]|Replaces occurrences of OldPattern in S with NewPattern. If ReplaceAll is False or not supplied, only the first occurrence is replaced. Is IgnoreCase is TRUE or not supplied, the case is ignored.| 
 +|Right|S, Len|Right Len characters from S. If S is smaller than Len, the entire string is returned| 
 +|ToNumber|S [, Default]|Converts the String S to a Number. If S is not a valid number, the value Default is returned instead. If no default value is given, an error is generated if S is not a valid number.| 
 +|ToMoney|X|Converts a number to a string formatted to match the local currency settings specified in Windows| 
 +|ToString|X,​ Y|Converts the number X to a String, displaying Y decimal places| 
 +|Trim|S|String S stripped of any leading or trailing white space| 
 +|Upper|S|S converted to upper case| 
 +|UpperCaseCount|S|Number of upper case letter and numbers in a string| 
 +|WordCount|S|Number of words in a string (separated by spaces or line breaks)| 
 + 
 +==== DateTime Functions ==== 
 + 
 +Since Microsoft has changed the date and time format used in the new .NET architecture,​ it is strongly recommended that all date and time manipulation be accomplished using CFL functions and not numeric operators. 
 + 
 +|**Function** |**Parameters** |**Returns…** | 
 +|DateTime|None|Returns the current DateTime| 
 +|DateTime|S or X|String S converted into a DateTime (standard CFL formatting) or the number X converted into a DateTime| 
 +|DateTime|Y,​ M, D|Creates a DateTime from the Year (Y), Month (M), and Day (D) supplied| 
 +|DayOfMonth|D|Day of the Month from the DateTime D| 
 +|DayOfWeek|D|Day of the Week (as a number 0-7) from the DateTime D| 
 +|DecDay|X [ , I ]|Value of DateTime X decremented by I Days. If "​I"​ is omitted, defaults to 1| 
 +|DecHour|X [ , I ]|Value of DateTime X decremented by I Hours. If "​I"​ is omitted, defaults to 1| 
 +|DecMinute|X [ , I ]|Value of DateTime X decremented by I Minutes. If "​I"​ is omitted, defaults to 1| 
 +|DecYear|X [ , I ]|Value of DateTime X decremented by I Years. If "​I"​ is omitted, defaults to 1| 
 +|DisplayDate|D|Date of D as a string| 
 +|DisplayDateTime|D|Date and time of D as a string| 
 +|DisplayDay|D|Day of the week as a string| 
 +|DisplayLongDate|D|Date of D formatted as a string using the regional settings for Long Date| 
 +|DisplayLongDateTime|D|Date and time of D formatted as a string using the regional settings for Long Date| 
 +|DisplayLongTime|D|Time of D formatted as a string using the regional settings for Long Date| 
 +|DisplayTime|D|Time of D as a string| 
 +|IncDay|X [ , I ]|Value of DateTime X incremented by I Days. If "​I"​ is omitted, defaults to 1| 
 +|IncHour|X [ , I ]|Value of DateTime X incremented by I Hours. If "​I"​ is omitted, defaults to 1| 
 +|IncMinute|X [ , I ]|Value of DateTime X incremented by I Minutes. If "​I"​ is omitted, defaults to 1| 
 +|IncYear|X [ , I ]|Value of DateTime X incremented by I Years. If "​I"​ is omitted, defaults to 1| 
 +|MonthName|X|Name of the Xth month in the year (January, February, …)| 
 +|MonthOfYear|D|Month of the Year (as a number 0-12) from the DateTime D| 
 +|Today|None|Current date and time.| 
 +|WeekdayName|X|Name of the Xth day of the week (Sunday, Monday, …)| 
 +|Year|D|Year from the DateTime D| 
 + 
 +==== String and HTML Formatting Functions ==== 
 + 
 +String Formatting functions are advanced tools to assist in the creation of strings for product layouts. HTML Formatting functions are designed to simplify the generation of HTML code by wrapping a string value with the appropriate HTML tags. 
 + 
 +|**Function** |**Parameters** |**Returns…** | 
 +|HTMLBold|S|Makes text bold| 
 +|HTMLBullet|None|HTML character for a bullet| 
 +|HTMLBulletList|S1,​ S2, …|An unordered (bullet) list of unlimited length made up of the strings passed. If any strings are empty, they are omitted| 
 +|Char|X|Returns the ASCII character of X| 
 +|DisplayModifierValue|S|Returns the value of modifier named S| 
 +|DisplayVariableUnits|V|Returns the unit of variable V| 
 +|DisplayVariableValue|V|Returns the value of variable V with units| 
 +|DisplayVariableValue|?​|Rounds the returned value of variable with units| 
 +|DisplayVariableValueNoUnits|V|Returns the value of variable V without units| 
 +|DisplayVariableValueNoUnits|?​|Rounds the returned value of variable without units| 
 +|HTMLListItem|S|Returns a string in either a bullet or number list| 
 +|HTMLNumberList|S1,​ S2 …|Creates a numbered list of unlimited length| 
 +|HTMLReturn|None|Returns an HTML line break (return).| 
 +|TabChar|None|ASCII tab character| 
 +|HTMLFont|S (Font [size], [color])|Sets the font face, size and color of a string| 
 +|HTMLWrapLines|S|Returns a string with multiple lines formatted for HTML (with HTML line breaks)| 
 +|OpenBrowser|URL,​ OpenInternal|Opens a web browser with the specified URL. The second parameter is optional and indicates if the browser should be opened in Control or externally using the default Windows browser. The default value of the second parameter if not specified is True (internal).| 
 + 
 +==== SQL Functions ==== 
 + 
 +SQL functions are advanced tools to assist in retrieving values directly from the database. SQL functions are ran asynchronously in the background during calculations. When a SQL function is called, the //​TemporaryValue// ​ parameter value is immediately returned and //​SelectSQL// ​ statement is handed to a background thread. Once the //​SelectSQL// ​ statement has finished executing, the line item is recalculated using the value of the first column of the first row of records returned from the SQL statement. The value is stored in the line item and a flag is set to prevent the SQL statement from executing again. ​\\  \\ //SQL Functions will be//  a//vailable in versions 04.50.1103.1801 and later.// 
 + 
 +|**Function** |**Parameters** |**Returns…** | 
 +|**ReturnSQLStringValue** |SelectSQL, \\ TemporaryValue|The TemporaryValue the first time the function is called. Once the SelectSQL has finished executing, the value of the first column in the first row of records returned from the SelectSQL is returned. \\  **Note: This function is deprecated in versions 6.1 and later.** | 
 +|**ReturnSQLNumberValue** |SelectSQL, \\ TemporaryValue|The TemporaryValue the first time the function is called. Once the SelectSQL has finished executing, the value of the first column in the first row of records returned from the SelectSQL is returned. \\  **Note: This function is deprecated in versions 6.1 and later.** | 
 +|**ReturnSQLStringValueWithWait** |SelectSQL, \\ TemporaryValue|Once the SelectSQL has finished executing, the value of the first column in the first row of records is returned. If there are no records found, the TemporaryValue is returned.| 
 +|**ReturnSQLNumberValueWithWait** |SelectSQL, \\ TemporaryValue|Once the SelectSQL has finished executing, the value of the first column in the first row of records is returned. \\ If there are no records found, the TemporaryValue is returned.| 
 +|**ExecSQL** |SQLCommand|Executes a SQL command without a return value. Allows execution of Insert and Update commands.| 
 + 
 + \\ Example of a Select SQL statement: \\ **SELECT AccountNumber FROM Account WHERE CompanyName = TransHeader.CustomerName ** \\  \\ Example of a Update SQL statement: \\ **UPDATE Account SET AccountNumber = 0 WHERE CompanyName = TransHeader.CustomerName** 
 + 
 +==== Variable Property ​Functions ​==== 
 + 
 +Variable Property functions are used to read and write additional properties on a variables. 
 + 
 +|**Function** |**Parameters** |**Returns…** | 
 +|**SetVariableProperty** |VariableName,​ \\ PropertyName,​ \\ Value|No value. This function sets the variable property PropertyName on variable VariableName to Value. No value is returned.| 
 +|**GetVariablePropertyValue** |VariableName,​ \\ PropertyName,​ \\ DefaultValue|The numeric or boolean variable property named PropertyName on variable VariableName is returned if it exists, otherwise the DefaultValue is returned.| 
 +|**GetVariablePropertyText** |VariableName,​ \\ PropertyName,​ \\ DefaultValue|The text variable property named PropertyName on variable VariableName is returned if it exists, otherwise the DefaultValue is returned.| 
 + 
 +==== Utility Functions ==== 
 + 
 +|**Function** |**Parameters** |**Description** | 
 +|**CMD** |Command, \\ WorkingDir, \\ RunElevated|CMD(Command:​ string, WorkingDir: string, RunElevated:​ boolean); \\ This function runs a Command Shell. \\ The **Command** parameter contains the CMD to run. \\ The **WorkingDir** parameter contains the folder the Command Shell starts in. If not specified, this defaults to the folder Control was launched from. \\ The **RunElevated** parameter is used to determine if the process is run with administrative privileges.| 
 +|**RunMacro** |MacroName, \\ ID, \\ ClassTypeID|RunMacro( MacroName : string, ID : int, ClassTypeID : int ); \\ This function executes a particular macro. \\ The **MacroName** parameter is the text name of the Macro to be executed. \\ The **ID** is the ID of the record instance passed into the Macro. \\ The **ClassTypeID** is the ClassTypeID of the record instance passed into the Macro.| 
 +|**LoadFromURL** |URL, RaiseErrorOnFailure(Optional),​ TimeOutInMS(Optional)|Used to trigger external events, though it could be used to load data from an API. S := LoadFromURL( string: URL, boolean: RaiseErrorOnFailure = true, int: TimeOutInMS = 1000 )| 
 +| | | | 
 + 
 +==== Layout Specific Functions ==== 
 + 
 +CFL has several functions are not general purpose (as those above) but specific to layout of pages and signs on a roll or sheet. Though the calculation can be (and has been) done using the general formulas, these occur so often that CFL has special functions to manage them. \\ These are complex functions that perform many calculations and set many variables. 
 + 
 +  * See [[:​cfl_function_-_calculatelayoutonroll|CFL Function - CalculateLayoutOnRoll]] 
 +  * See [[:​cfl_function_-_calculatelayoutonsheet|CFL Function - CalculateLayoutOnSheet]] 
 + 
 +<​code>​ 
 +\\ 
 +===== Shipping Functions ===== 
 +</​code>​ 
 + 
 +|**Function** |**Parameters** |**Returns…** | 
 +|ShippingCostEstimated| | | 
 +|ShippingCostActual| | | 
 +|ShippingCount| | | 
 +|ShippingTrackingNumbers| | | 
 +|ShippingItems[Index].ActualCost| | | 
 +|ShippingItems[Index].CarrierName| | | 
 +|ShippingItems[Index].CarrierService| | | 
 +|ShippingItems[Index].ContactName| | | 
 +|ShippingItems[Index].Account| | | 
 +|ShippingItems[Index].AccountName| | | 
 +|ShippingItems[Index].EmailAddress| | | 
 +|ShippingItems[Index].EstimatedCost| | | 
 +|ShippingItems[Index].IsShipped| | | 
 +|ShippingItems[Index].InsuredValue| | | 
 +|ShippingItems[Index].Notes| | | 
 +|ShippingItems[Index].NumberofPackages| | | 
 +|ShippingItems[Index].PackageSize| | | 
 +|ShippingItems[Index].PackageWeight| | | 
 +|ShippingItems[Index].ShippedDate| | | 
 +|ShippingItems[Index].ShippedDueDate| | | 
 +|ShippingItems[Index].ShippedDueDateOV| | | 
 +|ShippingItems[Index].ShipLineItemsXML| | | 
 +|ShippingItems[Index].ShipmentNumber| | | 
 +|ShippingItems[Index].ShipToCompany| | | 
 +|ShippingItems[Index].ShipToContact| | | 
 +|ShippingItems[Index].ShipToPhoneText| | | 
 +|ShippingItems[Index].ShipToEmailAddress| | | 
 +|ShippingItems[Index].ShipToAddressText| | | 
 +|ShippingItems[Index].Summary| | | 
 +|ShippingItems[Index].TrackingNumber| | | 
 + 
 +===== Obsolete Functions ===== 
 + 
 +Deprecated functions are those that are currently supported for backwards compatibility,​ but may not be supported in the future. Users should avoid using these obsolete functions and should convert any formulas using these functions. Deprecated functions are normally removed from the CFL after one or two major releases, so using them is risky. 
 + 
 +|**Function** |**Parameters** |**Convert From** | 
 +|CHS|X|chs(arg) = -arg change sign| 
 +|Concat|S, T, …|Concatenates (combines) two or more strings| 
 +|CUBE|X|X * X * X| 
 +|FromCentimeters|X|Centimeters to Internal Units| 
 +|FromCuCentimeters|X|CuCentimeters to Internal Units| 
 +|FromCuFeet|X|CuFeet to Internal Units| 
 +|FromCuInches|X|CuInches to Internal Units| 
 +|FromCuMeters|X|CuMeters to Internal Units| 
 +|FromCups|X|Cups to Internal Units| 
 +|FromCuYards|X|CuYards to Internal Units| 
 +|FromDays|X|Days to Internal Units| 
 +|FromFeet|X|Feet to Internal Units| 
 +|FromFluidOunces|X|FluidOunces to Internal Units| 
 +|FromGallons|X|Gallons to Internal Units| 
 +|FromGrams|X|Grams to Internal Units| 
 +|FromHours|X|Hours to Internal Units| 
 +|FromInches|X|Inches to Internal Units| 
 +|FromKilograms|X|Kilograms to Internal Units| 
 +|FromLiters|X|Liters to Internal Units| 
 +|FromMeters|X|Meters to Internal Units| 
 +|FromMilligrams|X|Milligrams to Internal Units| 
 +|FromMilliliters|X|Milliliters to Internal Units| 
 +|FromMillimeters|X|Millimeters to Internal Units| 
 +|FromMinutes|X|Minutes to Internal Units| 
 +|FromOunces|X|Ounces to Internal Units| 
 +|FromPints|X|Pints to Internal Units| 
 +|FromPounds|X|Pounds to Internal Units| 
 +|FromQuarts|X|Quarts to Internal Units| 
 +|FromSeconds|X|Seconds to Internal Units| 
 +|FromSqCentimeters|X|SqCentimeters to Internal Units| 
 +|FromSqFeet|X|SqFeet to Internal Units| 
 +|FromSqInches|X|SqInches to Internal Units| 
 +|FromSqMeters|X|SqMeters to Internal Units| 
 +|FromSqMillimeters|X|SqMillimeters to Internal Units| 
 +|FromSqYards|X|SqYards to Internal Units| 
 +|FromTons|X|Tons to Internal Units| 
 +|FromYards|X|Yards to Internal Units| 
 +|IIF|X, Y, Z|IIF(X, Y, Z if X<> 0 then return Y else return Z| 
 +|InCentimeters|X|Internal Units to Centimeters| 
 +|InCuCentimeters|X|Internal Units to CuCentimeters| 
 +|InCuFeet|X|Internal Units to CuFeet| 
 +|InCuInches|X|Internal Units to CuInches| 
 +|InCuMeters|X|Internal Units to CuMeters| 
 +|InCuMillimeters|X|Internal Units to CuMillimeters| 
 +|InCups|X|Internal Units to Cups| 
 +|InCuYards|X|Internal Units to CuYards| 
 +|InDays|X|Internal Units to Days| 
 +|InFeet|X|Internal Units to Feet| 
 +|InFluidOunces|X|Internal Units to FluidOunces| 
 +|InGallons|X|Internal Units to Gallons| 
 +|InGrams|X|Internal Units to Grams| 
 +|InHours|X|Internal Units to Hours| 
 +|InInches|X|Internal Units to Inches| 
 +|InKilograms|X|Internal Units to Kilograms| 
 +|InLiters|X|Internal Units to Liters| 
 +|InMeters|X|Internal Units to Meters| 
 +|InMilligrams|X|Internal Units to Milligrams| 
 +|InMillimeters|X|Internal Units to Millimeters| 
 +|InMinutes|X|Internal Units to Minutes| 
 +|InOunces|X|Internal Units to Ounces| 
 +|InPints|X|Internal Units to Pints| 
 +|InPounds|X|Internal Units to Pounds| 
 +|InQuarts|X|Internal Units to Quarts| 
 +|InSeconds|X|Internal Units to Seconds| 
 +|InSqCentimeters|X|Internal Units to SqCentimeters| 
 +|InSqFeet|X|Internal Units to SqFeet| 
 +|InSqInches|X|Internal Units to SqInches| 
 +|InSqMeters|X|Internal Units to SqMeters| 
 +|InSqMillimeters|X|Internal Units to SqMillimeters| 
 +|InSqYards|X|Internal Units to SqYards| 
 +|InTons|X|Internal Units to Tons| 
 +|InYards|X|Internal Units to Yards| 
 +|OverallMinimum|None|Renamed to SubtotalMinimum| 
 +|POWER|X, Y|Raise X to a power of Y \\ (X must be greater than 0)| 
 +|PRODUCT|X, Y, ..|Product of arguments. \\ UNLIMITED arguments| 
 +|SUM|X, Y, ..|Sum of all arguments. \\ UNLIMITED arguments| 
 +|TableValue|VariableName or "​VariableName"​|Returns the value of the Lookup Table of the Variable specified by the Parameter. Note: Just using VariableName returns the same value| 
 +|VariableValue|VariableName or "​VariableName"​|Returns the value of the variable. This is the same as just using the variable name|
  
-|**Function** ||**Parameters** ||**Description** || | +=====   ​=====
-|ABS||X||Absolute value of X|| | +
-|ACOS||X||Arccosine|| | +
-|ACOSH||X||Hyperbolic Arccosine|| | +
-|ASIN||X||Arcsine|| | +
-|ASINH||X||Hyperbolic Arcsine|| | +
-|ATAN||X||Arctangent|| | +
-|ATANH||X||Hyperbolic Arctangent|| | +
-|BINOM||N, K||Binomial Coefficient BINOM(N, K)N!/​(K!*(N-K)!)|| | +
-|COS||X||Cosine|| | +
-|COSH||X||Hyperbolic Cosine|| | +
-|COTAN||X||Cotangent|| | +
-|EXP||X||e\^X. Same as POWER( LN2, X )^| +
-|FACT||X||Factorial Function X!X*(X-1)*(X-2)*…*1|| | +
-|FRAC||X||Extract Fractional Part|| | +
-|INT||X||Extract Integer Part|| | +
-|LG||X||Base 10 Logarithm|| | +
-|LN||X||Natural Logarithm|| | +
-|LN2|| ​  ​||Natural log constant|| | +
-|LoadFromURL||URL,​ RaiseErrorOnFailure(Optional),​ \\ TimeOutInMS(Optional)|| ​ Used to trigger external events, though it could be used to load data from an API. \\   \\ S :LoadFromURL( string: URL, boolean: RaiseErrorOnFailure ​true, int: TimeOutInMS ​1000 )|| | +
-|MAX||X, Y, ..||Maximum value of arguments. UNLIMITED arguments|| | +
-|MIN||X, Y, ..||Minimum value of arguments. UNLIMITED arguments|| | +
-|PI||   ​||PI number (3.14159… – constant)|| | +
-|ROUND||X [, Y]||If Y is omitted, rounds argument to the nearest integer. If Y is present, round to Y places of precision.|| | +
-|ROUNDUP||X||Rounds any fraction to the next higher integer number INT( X + 0.99999999 )|| | +
-|SIGN||X|| | | |+
  
 \\ \\