The substitution of LabTalk variables and expressions occurs routinely in Origin. Since the value of the substituted string is unknown until the statement is actually executed, it's called run-time string substitution. It is also the cornerstone of any repetitive batch operation (import, analysis, graphing and graph export).
The substitution notations are preceded with % or $ and are not limited to LabTalk Script only. It also happens in labels in various windows, including axis title, legend, tick labels or regular text, column & cell display format, column & cell formula, etc. When it is found, Origin will replace it with the interpreted string.
There are four types of run-time substitutions:
Various substitution notations are used in the following script to demonstrate its usage. such as
Please start a new project to try this.
//define a macro with two argument %1 and %2 define import_plot { for(ii = %1; ii <=%2 ; ii++) { if (!isEmpty(col(A))) newsheet; //create fn$ string variable with concatenated strings string fn$=system.path.program$ + "Samples\curve fitting\step$(ii, ##).dat"; impasc fname:=fn$; delete col(A); if (exist(%H)==2) //if current window type is worksheet { //set every odd other column as X for( jj = 1 ; jj <= wks.ncols ; jj+=2) { wks.col$(jj).type = 4; //wks.col1 refers to 1st column } } } page.active$=1; //activate 1st sheet doc -e LB //loop through all sheets { //plot all columms as scatter with XY column designation plotxy iy:=(?,1:end) plot:=202; xb.text$="X"; //set X axis title as X yl.text$=%(1, @WS); //Set Y axis title as worksheet name } }; //execute the macro with two arguments 1 and 5, 1 and 5 will be passed to %1 and %2 import_plot 1 5; //import step01.dat to step05.dat and plot all data
As mentioned at the beginning, such substitution notations are used not only in LabTalk Script but also in various places in Origin. E.g.