Just as you have access to Q++'s built-in functions, you also have access to most of the information about the current state of the diary generation at the time your Macro is called (token, date, page, …). As such, these variables do not change value throughout your code.
These system variables' names are distintinguished by the underscrore, "_", that follows their first letter, used to indicate the variable type (n_GridPage, n_TokenDate, …). You cannot modify system variables at run-time, nor can you give your own variables names that contain an underscore. You can however tell Q++ to use dummy system variables while testing code in the Macros editor (see Initial Conditions).
We begin with bRESULT, sRESULT and nRESULT, three system variables which do not exactly follow the above definition. Although you can, and indded should, change these variables, they are classified as system variables because Q++ declares them automatically for you, and Q++ has a very specific way of interpreting their meaning.