If you don't like the default behavior, change it. 😊

You can change it system wide from Management Portal, System Administration -> Security -> System Security -> System-wide Security Parameters
There you can change "Inactive limit" to 0 (zero), this way accounts never expire.

You can also change it for any individual user accounts in Management Portal, System Administration -> Security -> Users -> (select the user)
There you can enable the checkbox "Account Never Expires".

You have a superclass with some logging method. Now every time the logging method is called from a child class it logs the name of the superclass instead of the Child class?

No

If so the issue is that $CLASSNAME returns the name of the class where the method is located not where a method is called from.

Wrong, it returns the class name where it is called from.

Your first sample method works just fine, no need for method generator.

I suggest you to make a quick test.

I can see the function %GetParameter available in the WYSIWIG rule editor

There is no %GetParameter function available in default functions provided by IRIS, to list available functions you need to press the "fx" button, it looks you have typed in %GetParameter.

Maybe you have developed a custom function called %GetParameter?

What parameter are you looking for within an HL7 routing rule?

I don't think there is an official support way to achieve that.

However, if you temporary change ENSLIB database and remove read-only flag and then:

Set ^IRIS.Msg("EnsColumns","en","ServerName")="Server Name"

or maybe better:

s ^IRIS.Msg("EnsColumnsNAMESPACENAME,"en","ServerName")="Server Name"

where NAMESPACENAME is the name of your production.

And then you put back the read-only flag in ENSLIB  database......you will find a surprise 😉

Note that this is a kind of a hack, you lose the "surprise" when you upgrade and may not work in future versions.

Edit: see @Eduard Lebedyuk advise below for a much better way to do it using global mapping instead of changing ENSLIB

OK, it seems that I did not understood the challenge! 😂

BUT, the instructions read as:

"...build a program (using only printable ASCII characters, tabs and newlines) that prints out...."

What's your concept of "prints out"?

I understand that the provided sample solution doe not printout anything, but the instructions also says:

"....exactly the characters in the printable ASCII space (characters 32 to 126) that don't appear in your program's source code..."

Again, my concept of source code include...well, all the code, including string constants in the source code, so the provided sample solution does not satisfy the conditions because it contains ALL the printable ASCII space!
Maybe it correct because sing it contains all the  printable ASCII space, it does not prints out anything?!