 Hello everyone, today we are going to see the advanced micro facilities in micro learning outcome. At the end of this session students will be able to explain the advanced micro facilities. Basically the advanced micro facilities support the semantic expansion and these facilities are grouped into three. First one is the facilities for alteration of flow of control during the expansion. Second one is the expansion time variables and the third one is the attributes of parameters. So in this session we see first two advanced micro facilities. Now the first one is the alteration of the flow of control during the expansion. So it provides the two features to facilitate the alteration of flow of control during the expansion. First one is the expansion time sequencing symbol and the second one is the expansion time statements AIF, AGU and AUNOP. Now here first we see the expansion time sequencing symbol. Expansion time here a sequencing symbol has the syntax so it is writing only simply an ordinary string. A sequencing symbol is defined by putting in the label field of the statement in the micro body. So basically the sequencing symbol it is used as an operand in the AIF or the AGU to design it the destination of an expansion time control transfer. So this is in this way you use the sequencing symbol. Now next we see the expansion time statement. First one is the AIF and AIF statement has the syntax AIF next we specify the expression and next we specify the sequencing symbol. So here expression is the relational expression each consisting of ordinary strings, formal parameters with their attributes and the expansion time variables. If the given expression is evaluates to true then expansion time control is transferred to the statement that is containing the sequencing symbol in its label field. We see the example. So here the name of the micro is DCL const. It is having only single parameter ampersand a. Now next we use the AIF statement AIF L ampersand a EQ 1 dot next. So here L is what it is the attributes of the formal parameters. Now next we see the syntax of how we define the formal attributes of the formal parameters. So the syntax is first of all we have to mention the attribute name and next we have to specify the formal parameter specification. So here the attribute names is having the different names so it is represented in the form type length and size. So for the type we use the T for the length we use the L and for the size we use the S. So here we specify the attribute name as the L means what here we check the length. So next statement we specify it is a ampersand a EQ 1. If this condition is true then the control is transferred to the sequencing symbol next when the control is transferred to the sequencing symbol next when a is having the length equal to 1. And in that case only the control is transferred to the next sequencing symbol. Now next statement we see the AGO statement. So the AGO statement has the syntax first of all we specify AGO and next we specify the sequencing symbol. So basically AGO statement it unconditionally transfer the expansion time control to the statement that is containing the sequencing symbol in its label field. The AGO is what it is an unconditional transfer the control to the statement that is containing the sequencing symbol in its label field. Now next we see the example. So here the name of the micro is eval it is having the three parameters ampersand x ampersand y and ampersand z. Next statement is the AIF. So here we specify the condition ampersand y EQ ampersand x if the given condition is true. If the given relation is true then the control is transferred to the sequencing symbol only. Otherwise the control is transferred to the next statement MOAR after that the next statement will be executed SUB and next will be executed ADD. Then the control is transferred to the AGO statement. So AGO is what it is an unconditionally here the condition is not checked. So the control is transferred to the sequencing symbol OVER. So in the OVER we specify the micro and statement. So here the AIF is a conditional expansion and here the AGO is the unconditional expansion. So here the AGO statement transfer the control to the sequencing symbol unconditionally. Unconditionally means here the condition is not checked. Now the next statement is the ANOP. So the syntax of declaring the ANOP is sequencing symbol and next we specify the ANOP. So basically the ANOP statement has the effect of defining the sequencing symbol only it simply defining the sequencing symbol no operation is carried out by the ANOP instruction. Instead of that if there is a branch is there so the branch is taken to the ANOP instruction then the assembler is processed the next sequential instruction in the given micro definition. So here the name of the micro is the create const. It is having the two parameters ampersand x and ampersand y. Next we use the AIF statement and here we specify the condition t ampersand x eq b means here here we check the type of x and b if the both having the same type then the control is transferred to the byte otherwise the next statement is executed. Now here you can see the ANOP statement is there but before that we specify the sequencing symbol. So the name of that sequencing symbol is byte and there is a ANOP statement. So here the control is transferred immediately to the next statement for the during the execution. Now next we see the expansion time variables. So this is the second advanced micro facility. So the expansion time variables are nothing but these are the variables which can only be used during the expansion of micro calls. So there are two types of the expansion time variables are there. First one is the local expansion time variable and the second one is the global expansion time variable. So the local expansion time variable we see the simple example how we declared the local expansion time variable. So we use the word LCL and next we specify the variable name. So here we specify ampersand a. So here it creates the local variable a. Now next we see the global expansion time variable. For the creating the global expansion time variable we use the word GBL and after that we specify the variable name. So here we specify ampersand A, so it creates the global variable A. Now next we see in detail first of all we see local expansion time variables. So the basically the local expansion time variables can be used only within a one micro and it does not retain its value across the micro call. Now next we see the syntax of how we create the local variable. So the syntax of creating the local expansion time variable is we specify the word LCL and after that we specify the EV specification. Now next we see the global expansion time variables. So the global expansion time variables can be used in every micro definition that has a declaration for it and it retains its value across the micro call. Now next we see the syntax of creating the global expansion time variable. So here we use the word GBL and after that we specify the EV specification. So here the EV specification has a syntax ampersand EV name where EV name is nothing but it is simply an ordinary string. The values of the expansion time variables can be manipulated through the pre-processor statement set. The syntax we see here the syntax of writing the set statement is EV specification set set expression. So here the set statement is assigning the whatever the value specified in the set expression to the EV that is specified in the EV specification. Now next we see the example. So here the name of the micro is const and here the next statement is LCL ampersand A means here it creates the local variable A. Now the next statement is the set statement ampersand A set one. So here the set statement assigns the value one to the local variable A. Now the next statement executed DB ampersand A. After that there is again a set statement ampersand A set ampersand A plus one. So we already A is having the value one so and one plus one the value is two. So here the set statement assigns the value two to the local variable A. After that the DB statement will be executed. And that last the micro end statement is executed. So in this way we create the local expansion time variables and the global expansion time variables. After seeing the concept can you tell me expansion time variables are used the options are before expansion of micro calls only during the expansion of micro calls after expansion of the micro calls or any one of the above pause the video and think about it. Expansion time variables are used only during the expansion of micro calls. These are the references thank you.