Nested strings and special characters in JavaScript for DataWindow object properties

Different processing by language and DataWindow

JavaScript uses different characters from those used within the DataWindow to delimit strings and identify special characters. For DataWindow object properties, several levels of nested strings and two types of delimiter can create a complicated expression.

In JavaScript, strings are delimited by double quotes and the escape character in strings is the backslash (\). The escape character allows you to include double quotes and special characters within a string. The DataWindow can use either double or single quotes to delimit strings and uses tilde (~) as an escape character.

Because some parts of the string are parsed by the language and some by the DataWindow, strings passed to the DataWindow often use both types of escape character. The one to use depends on whether the DataWindow or the external language will evaluate the character. The external language deals with the outer string and converts escape sequences to the corresponding special characters. Nested strings are dealt with by the DataWindow parser.

Guidelines

Observe these guidelines for each type of character:

Examples

Both of these JavaScript examples are valid ways of nesting a string:

dw_1.Modify("DataWindow.Crosstab.Values=\"empname\"");

dw_1.Modify("DataWindow.Crosstab.Values='empname'");

The following three JavaScript statements specify the same string. They show a string with three levels of nesting using different combinations of escape characters and quote types. In the first example, note the escaping of the inner quote with a tilde for the DataWindow and a backslash for the language:

dw_1.Modify("emp_id.Color=\"16777215 \t If (emp_status=~\"A~\",255,16777215)\"");


dw_1.Modify("emp_id.Color=\"16777215 \t If (emp_status='A',255,16777215)\"");


dw_1.Modify("emp_id.Color='16777215 \t If (emp_status=\"A\",255,16777215)'");

The corresponding example in PowerBuilder is:

dw_1.Modify("emp_id.Color = ~"16777215 ~t If (emp_status=~~~"A~~~",255,16777215)~"")

Special use of tilde

A special case of specifying tildes involves the EditMask.SpinRange property, whose value is two numbers separated by a tilde (not an escape character, simply a tilde). In code, the value is in a nested string and needs a tilde escape character. The two tildes are interpreted as a single tilde when parsed by the DataWindow:

dw_1.modify("benefits.EditMask.SpinRange='0~~10'");