:pre-compiler, :var, :begin, :end
These op-codes are section headers which help make the compiled code easier to read. Technically the interpreter does not need them, although Q++Studio checks for their presence when opening a macro, to spot any corruption of the compiled code.
Consider the following simple "do-nothing" macro :
The above macro will compile just fine to the following :
A few point to note.
•The source code pointer starts counting line numbers at 0, not 1.
•The :pre-compiler header only appears if you include some compiler directives in your code.
•The values of the system variables are initialized by the compiler, outside of the compiled code. The reason is that you do not know at compile time what these values will be, and some of these change all the time (such as n_TokenDate).