Internal Counters .


The Macro Parser manages 100 internal dWords Counters, that have been implemented at the same time as the Conditional Macros parser. Like the Internal Strings (&0 and &1 to &99), the Internal Counters are from &&0 to &&99.



Storing


... | &&1=25 |...


Notice that, what is stored, here, is a real dWord, not a String, like with the internal Strings


There must not be any space in between the Counter and the equal Char:


... | &&1  =  25 |...  ; Wrong!!!


Though you can provide a space after the Equal Char (required anyway, for Strings defintion):


... | &&1=   'A' |...  


The Numbers >Attribution can be given in Decimal, Hexa and Binary. The Text substitutes can of course not be more than four characters, the same way you can do it in, say:


mov eax  'abcd'


You can also store the value of another Counter in the destination one:


... | &&1=&&30 |...


and indicate a simple Addition / Subtraction:


... | &&1=&&1+4 |...




Pos Storing


This feature is associated with the Conditional Macros User defined error feature. When stating:


... | &&5=Pos |...


...what is stored in the 5th Counter is the Position of the Source parsing. Once this is done, you can define a Conditional error, and force the Assembler to locate the Error Position, at the Statement matching with the Pos Storage.


For example, in cases of unpairing errors, for HLL constructs, you can have the error pointed out, at the Top of the faulty Construction, whereas the error could be, as well, detected, by the Conditional Macro several pages downward.


See usage examples in Conditional_Macros.




Outputting


When using an Internal Counter for writing (for outputting something, into your Macro Unfolding), this is not a dWord, that is written, but a Byte, so that the Internal Counters could be used as a Char manipulation tool.


The interest of this Byte feature comes out when developing HLL Constructs Macros, where a Local Symbol must be incremented / decremented, depending on the nesting level of the HLL Construct. Example: W0 to W9 Local Labels, inside a Conditional ''While'' Macros Set.



Testing


As these Internal Counters have been implemented at the time of the Conditional Macros Implementation, in order to provide the Macros with conditional Values, testing is described in Conditional_Macros.


~~~~~~~