Get the name of the MAIN REXX program called
[Autolink] Menu
/* */
/* Sample REXX code to show how to get the name of the main REXX */
/* program executed by the user. */
/* */
/* */
/* For example if the user calls TEST2.CMD and TEST2.CMD then calls */
/* TEST1.CMD, and finally TEST1.CMD calls this program, this progarm */
/* will print TEST2.CMD to the screen. */
/* (see also Get the invocation syntax) */
/* */
/* To test this code do */
/* */
/* - save it into a file named TEST.CMD */
/* */
/* - create another REXX program named TEST1.CMD containing the */
/* statements: */
/* */
/* parse source . . thisFile */
/* say 'This is "' || thisFile || '"' */
/* CALL TEST.CMD */
/* */
/* - create another REXX program named TEST2.CMD containing the */
/* statements: */
/* */
/* parse source . . thisFile */
/* say 'This is "' || thisFile || '"' */
/* CALL TEST1.CMD */
/* */
/* Then call TEST2.CMD with and without parameter to test this code */
/* */
/* check if this program was called as COMMAND */
/* or as SUBROUTINE */
parse source . callType .
if callType <> "SUBROUTINE" then
do
say "Error: This method only works if this program was" ,
"called from another REXX program!"
exit
end /* if callType <> "COMMAND" then */
/* flush the REXX queue */
do while queued() <> 0; parse pull; end
/* copy the name of the main CMD into the queue */
'@ECHO %0| rxqueue'
parse pull invocation
/* copy the parameter for the main CMD into the */
/* queue */
'@ECHO "%1 %2 %3 %4 %5 %6 %7 %8 %9"|rxqueue'
parse pull parameter
parameter = strip( strip( parameter, 'B', '"' ) )
parse arg thisArgs
parse source . . thisFile
say 'This is "' || thisFile || '"'
say ' PARSE SOURCE says "' || thisFile || '"'
say ' PARSE ARG says "' || thisArgs || '"'
say ' The main program called was "' || invocation || '"'
say ' The parameter for the main program are "' || parameter || '"'
exit 0
[Back: Get the invocation syntax]
[Next: Get the parameters as seen by CMD.EXE]