Passaggio di variabili e funzionalità a una macro
When a Macro is created, it can receive from the DMIS program both Variables and Features as argument.
Indice
Passing Variable to A Macro
In order to pass a variable to a Macro it is necessary to define in the macro declaration that the argument is a variable:
$$ Example of a MACRO Used with Variable
M(PASSING_A_VARIABLE)=MACRO/MYVARIABLE
DECL/LOCAL,CHAR,128,tmpString
tmpString=ASSIGN/CONCAT('The Variable Passed is: ',STR(MYVARIABLE))
TEXT/OPER,tmpString
ENDMAC
DECL/DOUBLE,PASSED_TO_MACRO
PASSED_TO_MACRO=ASSIGN/100
CALL/M(PASSING_A_VARIABLE),100
CALL/M(PASSING_A_VARIABLE),PASSED_TO_MACRO
Passing Feature to A Macro
In order to pass a featureto a Macro it is necessary to define in the macro declaration that the argument is a feature using the "'" in the declaration and, when calling the Macro, use the "(" and ")" to inform that the feature has been passed.
In the Macro the feature is passed as object, so it can be access directly.
$$ Example of a MACRO Used with Feature passed directly
F(P1)=FEAT/POINT,CART,0,0,0,0,0,1
M(PASSING_A_FEATURE)=MACRO/'FEATURE'
DECL/LOCAL,DOUBLE, XX
XX=OBTAIN/F(FEATURE),3
tmpString=ASSIGN/CONCAT('The X VALUE OF THE PASSED POINT IS: ',STR(XX))
TEXT/OPER,tmpString
ENDMAC
CALL/M(PASSING_A_FEATURE),(P1)
Passing Feature to A Macro Using a Variable
In order to pass a feature to a Macro using a Variable it is necessary to define in the macro declaration that the argument is a Variable (see above) and, when using the Macro, use the "@" to access to the feature as variable:
$$ Example of a MACRO Used with Feature passed as Varible
F(P1)=FEAT/POINT,CART,0,0,0,0,0,1
M(PASSING_A_FEATURE)=MACRO/FEATURE
DECL/LOCAL,DOUBLE, XX
XX=OBTAIN/F(@FEATURE),3
tmpString=ASSIGN/CONCAT('The X VALUE OF THE PASSED POINT IS: ',STR(XX))
TEXT/OPER,tmpString
ENDMAC
CALL/M(PASSING_A_FEATURE),'P1'
Passing Features and Variables to A Macro Using a Variable
A macro can receive as arguments both features and Variables.
In this case it is necessary to define in the macro declaration that the argument is a Variable or a Feature (see above) and, when using the Macro, use the "@" or "(" and ")" to access to the feature or variable:
$$ Example of a MACRO Used with Feature passed as Varible
F(P1)=FEAT/POINT,CART,0,0,0,0,0,1
F(P2)=FEAT/POINT,CART,1,0,0,0,0,1
M(PASSING_A_FEATURE_AND_A_VARIABLE)=MACRO/'FEATURE_DIRECT',FEATURE_AS_VARIABLE,MYVARIABLE
DECL/LOCAL,DOUBLE, XX
DECL/LOCAL,DOUBLE, XX1
XX=OBTAIN/F(FEATURE_DIRECT),3
XX1=OBTAIN/F(@FEATURE_AS_VARIABLE),3
tmpString=ASSIGN/CONCAT('The X VALUE OF THE POINT PASSED DIRECTLY IS: ',STR(XX))
- <code> TEXT/OPER,tmpString
tmpString=ASSIGN/CONCAT('The X VALUE OF THE POINT PASSED WITH VARIABLE IS: ',STR(XX1))
TEXT/OPER,tmpString
tmpString=ASSIGN/CONCAT('The Variable Passed is: ',STR(MYVARIABLE))
TEXT/OPER,tmpString
ENDMAC
CALL/M(PASSING_A_FEATURE),(P1),'P2',100