Macro substitution [examples]

Variable macro substitution

The & macro function substitutes the contents of the specified variable into the command line. To use a macro in the middle of a word, it is necessary to end the variable name with a ‘.’. Any type of memory variable can be substituted as a macro.

subscript = 10
i10i = 5
? i&subscript.i
         5

& macro substitution is also supported in the Command Window, Console Workspace and Console Tab in the App Inspector from v4.1.

Expression macro substitution

The & macro function can also substitute the result of an expression into the command line. The expression must be enclosed in round brackets.

subscript = "1"
i10i = 5
? i&(subscript + "0")i
         5
str1 = "hello"
str2 = "world"
echo "&str1 &str2"    // output "hello world"

& macro substitution is also supported in the Command Window, Console Workspace and Console Tab in the App Inspector from v4.1.

Shell command output substitution

Lianja provides tight integration with the Linux command shell. The ` … ` command sequence (backticks) can be used to run external shell commands that are piped together and to substitute the output into a Lianja character string.

echo "The default directory is `pwd`"
echo "There are `ls -l *.dbf | wc -l` tables in this directory"

https://www.lianja.com/doc/index.php/A_Lianja_Primer


In their simplest use just put { expression } anywhere you want a dynamic value to be substituted.

{customers.customerid}

Any expression can be substituted.

{sqllookup("southwind!employees","lastname","'{customers.empid}'","employeeid")}

When used in conjunction with {…} macros, Dialog Panels can display dynamic context sensitive content. This is the JavaScript code used to display a Google map for the customer currently being displayed in the form. It is called by clicking or touching on the “Customer Location” button in the footer menu:

Lianja.showDialogPanel("CUSTOMER LOCATION", 
    "lib:/showdialog_map.rsp?address={customers.address}
                +{customers.city}+{customers.country}", 500);

Just as you can use {expression} macros in the Lianja Desktop Client you can also use these in your Web and Mobile Apps. The following JavaScript examples show you how to use macros. You use this this same notation in desktop Apps.

Lianja.evaluate("calculateCustomerBalance('{cust.name}’)",
    function(result)
    {
        Lianja.getElementByID("mypage.mysection.myfield").text = result;
    },
    function(errormessage)
    {
        Lianja.showErrorMessage("Failed to calculate customer balance");
    }
);
// execution continues before the result is returned

Macros are evaluated from left to right:

Lianja.evaluate("calculateCustomerBalance('{customers.name}','{customers.id}’)",
    function(result)
    {
        Lianja.getElementByID("mypage.mysection.myfield").text = result;
    },
    function(errormessage)
    {
        Lianja.showErrorMessage("Failed to calculate customer balance");
    }
);
// execution continues before the result is returned

Macros can be nested so that the inner macros are evaluated before the outer macros. This provides the ability to query information from the server and have that information substituted into another call to the server.

Lianja.evaluate("calculateCustomerBalance('{customers.name}'," + "{getCustomerID('{{customers.custid}}')}")),
    function(result)
    {
        Lianja.getElementByID("mypage.mysection.myfield").text = result;
    },
    function(errormessage)
    {
        Lianja.showErrorMessage("Failed to calculate customer balance");
    }
);
// execution continues before the result is returned

This will result in the following macro substitutions being performed in this order.

 {{customers.custid}} lets call this result3
 {customers.name} let's call this result1
 {getCustomerID("result3")} let's call this result2
 Lianja.evaluate("calculateCustomerBalance('result1', "result2")

https://www.lianja.com/doc/index.php/Understanding_Macros


 

Enable or disable & macro substitution
SET_MACROS
SET_EMACROS
set emacros off
text
The & command is used to perform
macro substitution of the contents
of memory variables.
endtext
set emacros on

https://www.lianja.com/doc/index.php/SET_EMACROS

https://www.lianja.com/doc/index.php/SET_MACROS


Perform macro substitution

subscript = 10
i10i = 5
? i&subscript.i
         5

https://www.lianja.com/doc/index.php/%26


Macros

Variable macro substitution

The & macro function substitutes the contents of the specified variable into the command line. To use a macro in the middle of a word, it is necessary to end the variable name with a ‘.’. Any type of memory variable can be substituted as a macro.

subscript = 10
i10i = 5
? i&subscript.i
         5

& macro substitution is also supported in the Command Window, Console Workspace and Console Tab in the App Inspector from v4.1.

Expression macro substitution

The & macro function can also substitute the result of an expression into the command line. The expression must be enclosed in round brackets.

subscript = "1"
i10i = 5
? i&(subscript + "0")i
         5
str1 = "hello"
str2 = "world"
echo "&str1 &str2"    // output "hello world"

& macro substitution is also supported in the Command Window, Console Workspace and Console Tab in the App Inspector from v4.1.

Shell command output substitution

Lianja provides tight integration with the Linux command shell. The ` … ` command sequence (backticks) can be used to run external shell commands that are piped together and to substitute the output into a Lianja character string.

echo "The default directory is `pwd`"
echo "There are `ls -l *.dbf | wc -l` tables in this directory"

https://www.lianja.com/doc/index.php/A_Recital_Primer


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.