You got me... almost exactly one year ago I updated all my EXECs to become 'RTNSTATE DMSINXED' if Rc<>0 then do; 'SUBCOM XEDIT' ; Xedit=(rc=0); end else do; call csl 'DMSINXED RETC REAS T'; Xedit=(reas=0 & t=0) ; end But, this SIGNAL SAMPEXEC didn't have filetype EXEC (nor XEDIT, nor REXX), hence I missed it.
2009/3/16 Alan Altmark <alan_altm...@us.ibm.com> > > On Saturday, 03/14/2009 at 08:25 EDT, Kris Buelens > <kris.buel...@gmail.com> wrote: > > > /*******************************************************************/ > > ERREXIT: /* exit with retcode & errormsg */ > > /*******************************************************************/ > > address '' 'SUBCOM XEDIT' > > xedit=(rc=0) > > if xedit then address xedit 'COMMAND SET MSGM ON' > > do i=2 to 'ARG'() > > if xedit then address xedit 'COMMAND EMSG' 'ARG'(i) > > else say 'ARG'(i) > > end > > Hmmm... I thought we had stamped out this programming idiom several years > ago when we introduced DMSCALLR. Most people expect the above snippet to > diplay the error in XEDIT if you're in XEDIT when the error occurs. All > it really tells you is that XEDIT is active *somewhere* in the command > sequence. > > To see for yourself, go into XEDIT, the into CMS subset mode, then issue a > failing exec with the above code. You won't see the messages until you > RETURN to XEDIT. > > Here's the Official Way to find out if your exec is running "in" XEDIT. > That is to say, such that you will immediately see the output if you use > COMMAND EMSG. > > InXEDIT: > /* EXEC runtime environments */ > execenv = "CMS EXEC CMSMIXED DMSRTPRC EAGTPRC VRX$EXEC PRX$EXEC" > > /* Run the caller chain. Skip level 0 and 1 because they */ > /* are always RXCSL and EXEC. */ > do level = 2 by 1 until csl_rc <> 0 > Call CSL "DMSCALLR csl_rc callee level" > callee = strip( left(callee, 8) ) > If csl_rc = 0 & wordpos(callee, execenv)= 0 then > do > if callee = "XEDIT" then return 1 > else return 0 > end > end > return 0 > > I asked Chuckie if he cared to comment, and he opened one eye and stared > at me. (Creepy, I have to tell you - turns out he was asleep!) Upon > wakening, later, he provided this Unofficial Solution based on the > undocumented DMSINXED found in various product execs. > > InXEDIT: > call CSL "DMSINXED csl_rc csl_reason in_xedit" > if csl_rc = 0 & in_xedit = 0 then return 1 > return 0 > > Alan Altmark > z/VM Development > IBM Endicott -- Kris Buelens, IBM Belgium, VM customer support