This is the legacy 4D documentation web site. Documentations are progressively being moved to developer.4d.com

Home

 
4D v20 R7
Parse formula

Parse formula 


 

Parse formula ( formula {; options}{; errorMessage} ) -> Function result 
Parameter Type   Description
formula  Text in Plain text formula
options  Longint in Instructions for input / output
errorMessage  Text in Error message (empty string if no error)
Function result  Text in Transformed formula (plain text)

The Parse formula function analyzes the 4D formula, checks its syntax, and returns its normalized form. This allows the formula to remain valid in the event that a 4D language or structure element (command, constant, table, field, or 4D Plugin) is renamed.

Parse formula can be used to evaluate and translate formulas in the following manner:

  • "Real" table/field names can be converted to "virtual" structure* names (custom names) or tokenized equivalents**
  • Tokenized table/field equivalents can be converted to virtual structure names or real table/field names
  • Virtual structures can be converted to real table/field names or tokenized equivalents
  • 4D language elements can be converted to tokenized 4D language equivalents
  • Tokenized 4D language equivalents can be converted to 4D language elements

* Virtual structures are defined using the SET TABLE TITLES and SET FIELD TITLES commands (* parameter required).

** Tokenized equivalents are 4D language and structure elements in plain text expressed with token syntax as shown below (see also Using tokens in formulas):

[Table:1]Field:1+String:C10(1)

In formula, pass a formula in plain text. It can use real or virtual structure names, as well as tokenized equivalents.

No matter the name types used in formula, by default Parse formula returns the actual 4D language or structure element names without text tokens.

The optional options parameter allows you to specify how formula is expressed and/or returned using the following constants from the Formulas theme. You can combine constants to designate both the input and output format of the returned formula.

 

Constant Value Comment
Formula in with virtual structure 1 Formula contains custom (virtual) names. By default, returned formula contains real names.
Formula out with virtual structure 2 Returned formula must contain custom (virtual) names.
Formula out with tokens 4 Returned formula must contain text tokens (e.g. :Cxx).
 

The optional errorMessage parameter will receive an error message if there is a syntax error in formula. If there is no error, an empty string will be returned.

 ARRAY TEXT($t1;1)
 ARRAY LONGINT($t2;1)
 $t1{1}:="Virtual table"
 $t2{1}:=1
 SET TABLE TITLES($t1;$t2;*)
 
 ARRAY TEXT($tf1;1)
 ARRAY LONGINT($tf2;1)
 $tf1{1}:="Virtual field"
 $tf2{1}:=2
 SET FIELD TITLES([Table_1];$tf1;$tf2;*)
 
  //Virtual structure to table and field name equivalent
 $parsedFormula:=Parse formula("[Virtual table]Virtual field";Formula in with virtual structure;$errorMessage)
  //return [Table_1]Field_2
 
  //Table and field name to virtual structure equivalent
 $parsedFormula:=Parse formula("[Table_1]Field_2";Formula out with virtual structure;$errorMessage)
  //return [Virtual table]Virtual field
 
  //Table and field name to the tokenized form equivalent
 $parsedFormula:=Parse formula("String([Table_1]Field_2)";Formula out with tokens;$errorMessage)
  //return String:C10([Table_1:1]Field_2:2)
 
 

  //ask the user to type their favorite formula
 $formula:=""
 EDIT FORMULA([Table_1];$formula)
 
  //save user's formula for later use
 CREATE RECORD([users_preferences])
 $persistentFormula:=Parse formula($formula;Formula out with tokens)
 [users_preferences]formula:=$persistentFormula
 SAVE RECORD([users_preferences])
 
  //later: execute the previously saved formula
 CREATE RECORD([Table_1])
 EXECUTE FORMULA([users_preferences]formula)



See also 

Formula from string
SET FIELD TITLES
SET TABLE TITLES
Using tokens in formulas

 
PROPERTIES 

Product: 4D
Theme: Formulas
Number: 1576

 
PAGE CONTENTS 
 
HISTORY 

 
ARTICLE USAGE

4D Language Reference ( 4D v20 R7)