The built-in progress bar in max status bar is not suited for every task, and as I have found myself writing quite similar lines of code to print debug info to the prompt and trying to prevent max window from 'not responding' over and over again, I whipped up a little struct to make it easier.
Sometimes it is desirable for rollout controls to keep their values when you close the dialog and open it again. There are many ways to achieve that, one of the easiest is using locals declared in a macroscript body and using its
on execute handler to initialize the rollout. When a regular script is used instead, a global struct or a global set of values can be used, but there is also another method which might be more suitable in many cases.