Thought I’d post a little tip that could prove useful to others that are looking to use the @CalcMgrExecuteEncryptMaxLFile and @CalcMgrExecuteMaxLScript Essbase functions (CDFs). I often find the ‘shell’ command that is available with MaxL scripting to be very useful. According to the Oracle technical documents the ‘shell’ or ‘Shell Escape’ allows the user to issue operating-system commands directly from a MaxL Shell session. An example MaxL script utilizing the shell command is shown below (Linux-based OS).
Here, the shell statement “shell ‘rm file.txt’” is being leveraged to delete the ‘file.txt’ file using the ‘rm’ Linux command. However, if you try to run this MaxL file from within an Essbase calc script or Planning calc rule you will notice that the ‘file.txt’ file is not deleted. You might think something is wrong with your MaxL file and try executing from an OS command line at which point the ‘rm’ command will work as expected and the file will be deleted. I spun my wheels trying to figure this one out. The problem? You will need to specify the full path to the ‘rm’ command. It seems that the calc functions do not load or use profiles or environment variables when executing the MaxL shell and thus require full paths for any and all commands. Any shell statements should be updated to include the full path for OS commands as illustrated below.
Running the updated MaxL using one of the @CalcMgrExecute functions will now succesfully delete the file specified in the ‘shell’ statement. How about another example.
Let’s say I wanted to use the Linux ‘mail’ command in a MaxL shell statement. Similarly, I would need to make sure I include the full path to the ‘mail’ command.
The screenshot below displays a list of the commands in a typical /bin directory of a Linux install.
When trying to use any of these Linux commands such as ‘sleep’ or ‘mail’ via the MaxL ‘shell’ statement in MaxL scripts, the full path (/bin/command) will be necessary if you are trying to run the MaxL using the @CalcMgrExecuteEncryptMaxLFile or @CalcMgrExecuteMaxLScript Essbase functions (CDFs).
My assumption is that a similar practice will need to be used if one is dealing with a Windows environment and attempting to use any of the native DOS or external commands (dir, del, etc). Here though, you may need to play around with using a combination of the “cmd.exe” command shell and then the DOS command – shell ‘CMD /C “del file.txt”’ – for example.