The implementation of the playback of XCALC programs is really very simple (and it explains why I haven't implemented anything like a GOTO or a label):
When a program is run, all that happens is that a sequence of windows messages are queued up for the application. These messages are the same that would be sent if you had performed the same operations manually, except that they are processed a bit quicker. It also means the program length is limited by the maximum number of messages a queue can hold (but don't worry about that, that is in the thousands, and I really doubt you will ever create a program that long).
A program can't call or jump to another program. If you think a bit about the implementation, I'm sure you will figure out why I have disallowed this. I have also disabled any functions that would need user interaction (like opening the Configuration dialog). The EXIT function is left, though, just for fun.
This facility is closely related to the editable keyboard. In essence, any function that kan be assigned to a key can be put in a program (with the exceptions mentioned above).
The programs are stored in the current directory in files named prog1.txt through prog12.txt. Every time a program is run, the file is rescanned, so you can use any text editor to edit your programs.
A final remark: if you get an error when running a program (like dividing by zero), the program doesn't stop. But you will most likely not get the result you wanted. Also, you can't undo a program, but you can undo the operations, one at a time.