Ahhh....your referring to the "if rc\==0" after the "READTO" would never get 
executed if there was a non-zero return code from the READTO.

Correct.

Frank M. Ramaekers Jr.

> -----Original Message-----
> From: CMSTSO Pipelines Discussion List [mailto:CMS-
> [email protected]] On Behalf Of Kris Buelens
> Sent: Monday, April 14, 2014 1:59 PM
> To: [email protected]
> Subject: Re: [CMS-PIPELINES] Writing a REXX PIPELINE stage
> 
> You could improve the NOVALUE handling.  This is what I code since ages:
> Signal on Novalue
> ....
> /*-----------------------------------------------------------------*/
> NOVALUE: /* we come here when REXX finds unitialised variable      */
> /*-----------------------------------------------------------------*/
>  parse upper source . how myname mytype . syn . '' undefvar  parse version .
> rexxlvl .
>  if rexxlvl>=3.46 then undefvar= 'CONDITION'('D')  call errexit 99,'REXX
> problem in' myname mytype 'line' sigl,
>       'variable' undefvar 'not defined'
> /*-----------------------------------------------------------------*/
> SYNTAX: /*  we come here when SIGNAL ON SYNTAX traps an error      */
> /*-----------------------------------------------------------------*/
>  parse upper source . how myname mytype . syn .
>  call errexit rc,'REXX problem in' myname mytype 'line' sigl':' ,
>       'ERRORTEXT'(rc), sigl':'||'SOURCELINE'(sigl)
> ERREXIT: /* general errorexit routine */  parse upper source . . myname
> mytype . syn .
>  do i=2 to arg()   /* give errormessages (if any) */
>      say myname':' arg(i)
>  end
>  exit arg(1)
> And you will know what variable is undefined, and on which line it was.
> 
> Furthermore, I see you have
>   SIGNAL ON ERROR
> And
>  IF RC\=0 THEN ...
> The IF will never be executed as the SIGNAL ON ERROR causes transfer to the
> error routine
> 
> 
> Kris Buelens,
>      --- freelance z/VM consultant, Belgium ---
> -----------------------------------------------------------------------
> 
> 
> 2014-04-14 18:50 GMT+02:00 Frank M. Ramaekers
> <[email protected]>:
> 
> > I've only done a couple of these before and don't have any good
> > debugging techniques.  I've run into a problem on this:
> >
> >
> >
> > /* */
> >
> >   Trace "O"
> >
> >   Signal On Error   Name Bad_Error
> >
> >   Signal On Syntax  Name Bad_Syntax
> >
> >   Signal On NoValue Name Bad_NoValue
> >
> >
> >
> >   RecNo=0
> >
> >   Parse arg OmitRec . "("
> >
> >   "PEEKTO Record"
> >
> >   Do while rc==0
> >
> >     RecNo=RecNo+1
> >
> >     If RecNo\==OmitRec then
> >
> >       "OUTPUT" Record
> >
> >     "READTO"
> >
> >     If rc\==0 then
> >
> >       Exit rc
> >
> >     "PEEKTO Record"
> >
> >   End /* while */
> >
> > Bad_Error:
> >
> >   If rc==12 then
> >
> >     rc=0
> >
> > Exit rc
> >
> > Bad_Syntax:
> >
> > Exit 13
> >
> > Bad_NoValue:
> >
> > Exit 14
> >
> >
> >
> > The output looks fine, but it ends up with an RC=14:
> >
> >
> >
> > pipe strliteral /abc 12358 thisone notthisone/ | split at blank|
> > omitrec
> > 3 | console
> >
> > abc
> >
> >
> > 12358
> >
> >
> > notthisone
> >
> >
> > Ready(00014);
> >
> >
> >
> >
> > Thoughts as to why I'm getting a "Bad Value"?
> >
> >
> >
> > Frank M. Ramaekers Jr. | Systems Programmer | Information Technology |
> > American Income Life Insurance Company | 254-761-6649
> >
> >
> >

Reply via email to