Here is another way that comes to mind but, it isn't very simple (still, seems simpler than modifying the compiler.)
First, I'll presume that the number of strings you may want to pass to the program is limited. IOW, there is a little "prep" work needed for the solution I'm going to suggest that limits the number of strings that can be used by the program.
with the above out of the way, let's say you want to pass the string "THIS_IS_MY_STRING" to your program. Here is how you can do it.
1. declare a function named "THIS_IS_MY_STRING" that returns it's name using the {$I %CURRENTROUTINE%}, that way, you can give the string "THIS_IS_MY_STRING" to the compiler.
2. define on the compiler command line -d"THIS_IS_MY_STRING" which because it is defined, causes some part of your code to call the function named "THIS_IS_MY_STRING" which returns its name, therefore the string you wanted.
The downside is that it requires defining a function that returns its name for every string you intend to use but, since the program should be aware of what the string means (what action(s) it should be associated with), that limitation seems to be part for the course anyway.
At least this way doesn't require modifying the compiler.
HTH.