Discussion:
:Re: Message IRX0006I running an edit macro CLIST
Add Reply
Jesse 1 Robinson
2017-08-28 14:52:14 UTC
Reply
Permalink
Raw Message
That is exactly the case. Like most (maybe all) edit macros), JEM is executed directly on the command line. Running it as TSO command (tso jem) would fail to establish the proper connection to ISPF. I tried that and got

EDIT MACRO ERROR
EDIT MACRO INITIALIZATION FAILURE. CHECK EDIT MACRO CLIST.

I did not see Paul Feller's post except as quoted by CM Poncelet. As CM notes, there are two parms: DSJNAME and PARMSTR. It seems odd that one is defined on the PROC statement and the other on the ISREDIT MACRO statement, but that's the way it's supplied to the customer.

I have no problem learning that an old loophole has been closed. But closed is closed, and what fails in one place should fail everywhere with the fix is place. The person who first reported the problem here is a true mainframe veteran. He uses JEM more than anyone else I know.
.
.
J.O.Skip Robinson
Southern California Edison Company
Electric Dragon Team Paddler
SHARE MVS Program Co-Manager
323-715-0595 Mobile
626-543-6132 Office ⇐=== NEW
***@sce.com


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Lizette Koehler
Sent: Sunday, August 27, 2017 8:31 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: (External):Re: Message IRX0006I running an edit macro CLIST

Typically the user is EDITing a PDS Member with JCL and enters JEM on the command line

Lizette
-----Original Message-----
On Behalf Of CM Poncelet
Sent: Sunday, August 27, 2017 7:11 PM
Subject: Re: Message IRX0006I running an edit macro CLIST
There are two parms for this Clist: DSJNAME and PARMSTR. How is JEM invoked?
(E.g. it could be invoked as "TSO JEM HLQ.DSJN1.THEREST MACPARM2".)
One last comment. We run the same software and have not had an
issue in
three different SYSPLEX environments. I looked to the most recent
versions of the software we have. The JEM CLIST is shipped that way from the vendor.
Very interesting.
BROWSE SYSI.JOBSCAN.R790.AJJSCLST.HS(JEM) - 01. Line 0000000000 Col 001
080
Command ===> Scroll ===>
CSR
********************************* Top of Data
*********************************
PROC 0 DJSNAME(XXXXX.XXXXX)
CONTROL END(ENDO) NOMSG NOFLUSH
/*CONTROL END(ENDO) MSG LIST CONLIST SYMLIST NOFLUSH /*S80725*/
ISREDIT MACRO (PARMSTR)
IF &DJSNAME = &STR(XXXXX.XXXXX) THEN +
DO
ISPEXEC SETMSG MSG(JM022R) /*JTE30780*/
GOTO ENDING
ENDO
/* ************ ALLOCATE RUN CONTROL LIBRARY ************
ISPEXEC SELECT PGM(J00YCKAL) PARM(JLRCL) /*JTE30780*/
IF &LASTCC NE 0 THEN +
DO
SET &RCLALC = 'N' /*813647 */
ALLOC DDN(JLRCL) DSN('&DJSNAME..SJJSPARM') SHR
ENDO
/* ************ CALL THE JEM SUPERVISOR ************
ISPEXEC SELECT PGM(J0AYEMU) PARM(PR(E) &PARMSTR)
/*JTE30780*/
ENDING: +
ISPEXEC VGET (ZSPLIT)
IF &STR(&ZSPLIT) = &STR(YES) THEN +
EXIT
IF &RCLALC = 'N' THEN FREE DDN(JLRCL)
EXIT
******************************** Bottom of Data
*******************************
Thanks..
Paul Feller
AGT Mainframe Technical Support
-----Original Message-----
From: IBM Mainframe Discussion List
Sent: Sunday, August 27, 2017 12:11
Subject: Re: Message IRX0006I running an edit macro CLIST
I never knew of this restriction on edit macros. Looking through the
same
library for others, I find a few other CLISTs that have 'PROC' at the
top; most do not. It looks like JEM was constructed to allow an
alternate load library to be specified on invocation for testing
purposes. I removed the PROC statement and now it works. BTW I did not
take the step of closing the opening comment with '*/'; that is not
required for CLIST in general. Also, there is no other copy of JEM except this one in SYSPROC.
So mysteries remain. My favorite user complaint: this used to work
and now
it doesn't; what happened? Even more mysterious, the same CLIST
continues to work on other sysplexes at the same z/OS maintenance
level. In any case, the immediate problem is solved, for which I'm once again grateful to this List.
.
.
J.O.Skip Robinson
Southern California Edison Company
Electric Dragon Team Paddler
SHARE MVS Program Co-Manager
323-715-0595 Mobile
626-543-6132 Office ⇐=== NEW
-----Original Message-----
From: IBM Mainframe Discussion List
Sent: Saturday, August 26, 2017 2:36 PM
Subject: (External):Re: Message IRX0006I running an edit macro CLIST
FWIW
(a) The "ISREDIT MACRO" should be the *1st* executable statement;
there
should be no "PROC 0 <anything>" in edit macros - unless the edit
macro is actually embedded in the Clist (a bit unusual).
(b) Anyquotes should be enclosed in both '/*' and '*/' open/closing
chars,
even in Clist.
The usual way to invoke an edit macro in Clist, e.g. in batch, is of
the
code the Clist to invoke the edit macro ...
PROC 0 DJSNAME(SPP.JOBSCAN)
/* COPYRIGHT DIVERSIFIED SOFTWARE SYSTEMS, INC., 1991,1993.
CONTROL END(ENDO) NOMSG NOFLUSH
ISPEXEC VPUT PARMSTR SHARED /* store whatever PARMSTR is for macro */
ISPEXEC EDIT DATASET('&DSJNAME') MACRO(<whatever edit macro name>)
ISPEXEC VGET RC SHARED /* get the macro RC from shared pool */
... finish off the Clist ...
EXIT CODE(&RC)
and code the macro as a separate member <whatever edit macro name> ...
ISREDIT MACRO /* specify no parms if invoked by a Clist */
CONTROL END(ENDO) NOMSG NOFLUSH
ISPEXEC VGET PARMSTR SHARED /* get the macro parms from shared pool */
... <execute whatever edit macro statements> ...
... save whatever the macro (MAX)CC is, as e.g. RC ...
ISPEXEC VPUT RC SHARED /* store whatever the RC is for Clist */
ISREDIT END /* return to Clist */
Both the Clist and edit macro should be members of a PDS on
DDNAME=SYSPROC.HTH, CP
Did you use ISRDDN and search for JEM? Just to verify what you see.
Only time I see this is when a CLIST is on SYSEXEC
Lizette
-----Original Message-----
From: IBM Mainframe Discussion List
Sent: Saturday, August 26, 2017 8:27 AM
Subject: Message IRX0006I running an edit macro CLIST
OK, this is a weird one. We have an old CLIST that runs as an ISPF
edit macro. On one sysplex only, this CLIST fails with a *Rexx*
error
IRX0006I Error running JEM, line 2: Unmatched "/*" or quote
PROC 0 DJSNAME(SPP.JOBSCAN)
/* COPYRIGHT DIVERSIFIED SOFTWARE SYSTEMS, INC., 1991,1993.
CONTROL END(ENDO) NOMSG NOFLUSH
ISREDIT MACRO (PARMSTR)
Of course there is no closing '*/' in line 2, but it's a CLIST,
not a
Rexx.
The CLIST was last modified in 2007 according to ISPF stats. What
appears to be exactly the same CLIST works fine on other sysplexes.
The z/OS maintenance level (RSU1705) is the same on working and
nonworking plexes. I have looked in SYSEXEC libraries and in other
SYSPROC libraries for a bogus copy of this exec; nothing found.
The CLIST library is VB; member is unnumbered, so data starts in column 9.
What might cause a CLIST to be misinterpreted as Rexx?
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
CM Poncelet
2017-08-29 01:03:29 UTC
Reply
Permalink
Raw Message
FWIW

The oddity is that there are *no* edit macro statements after "ISREDIT
MACRO (PARMSTR)". So why is an edit macro declared in the Clist?
 
E.g. "ISPEXEC SELECT PGM(J00YCKAL) PARM(JLRCL)" etc.can be issued
directly from the Clist proc and does not need an edit macro to do that.
 
Sure, edit macros are normally invoked from the command line in edit
mode. But they can also be invoked by Clist and REXX procs, and then not
from the command line. So if JEM is a Clist that in turn invokes an edit
macro, then 'TSO JEM + any parms' would be used to invoke JEM as a Clist
(and ISPF option 6 could invoke it simply as 'JEM + any parms'). So, is
JEM meant to be invoked as a Clist ("PROC 0 ...") or as an edit macro
("ISREDIT MACRO (<parms>)")?
 
I give up.
 
Cheers, CP
 
Post by Jesse 1 Robinson
That is exactly the case. Like most (maybe all) edit macros), JEM is executed directly on the command line. Running it as TSO command (tso jem) would fail to establish the proper connection to ISPF. I tried that and got
EDIT MACRO ERROR
EDIT MACRO INITIALIZATION FAILURE. CHECK EDIT MACRO CLIST.
I did not see Paul Feller's post except as quoted by CM Poncelet. As CM notes, there are two parms: DSJNAME and PARMSTR. It seems odd that one is defined on the PROC statement and the other on the ISREDIT MACRO statement, but that's the way it's supplied to the customer.
I have no problem learning that an old loophole has been closed. But closed is closed, and what fails in one place should fail everywhere with the fix is place. The person who first reported the problem here is a true mainframe veteran. He uses JEM more than anyone else I know.
.
.
J.O.Skip Robinson
Southern California Edison Company
Electric Dragon Team Paddler
SHARE MVS Program Co-Manager
323-715-0595 Mobile
626-543-6132 Office ⇐=== NEW
-----Original Message-----
Sent: Sunday, August 27, 2017 8:31 PM
Subject: (External):Re: Message IRX0006I running an edit macro CLIST
Typically the user is EDITing a PDS Member with JCL and enters JEM on the command line
Lizette
Post by Jesse 1 Robinson
-----Original Message-----
On Behalf Of CM Poncelet
Sent: Sunday, August 27, 2017 7:11 PM
Subject: Re: Message IRX0006I running an edit macro CLIST
There are two parms for this Clist: DSJNAME and PARMSTR. How is JEM invoked?
(E.g. it could be invoked as "TSO JEM HLQ.DSJN1.THEREST MACPARM2".)
One last comment. We run the same software and have not had an
issue in
three different SYSPLEX environments. I looked to the most recent
versions of the software we have. The JEM CLIST is shipped that way from the vendor.
Very interesting.
BROWSE SYSI.JOBSCAN.R790.AJJSCLST.HS(JEM) - 01. Line 0000000000 Col 001
080
Command ===> Scroll ===>
CSR
********************************* Top of Data
*********************************
PROC 0 DJSNAME(XXXXX.XXXXX)
CONTROL END(ENDO) NOMSG NOFLUSH
/*CONTROL END(ENDO) MSG LIST CONLIST SYMLIST NOFLUSH /*S80725*/
ISREDIT MACRO (PARMSTR)
IF &DJSNAME = &STR(XXXXX.XXXXX) THEN +
DO
ISPEXEC SETMSG MSG(JM022R) /*JTE30780*/
GOTO ENDING
ENDO
/* ************ ALLOCATE RUN CONTROL LIBRARY ************
ISPEXEC SELECT PGM(J00YCKAL) PARM(JLRCL) /*JTE30780*/
IF &LASTCC NE 0 THEN +
DO
SET &RCLALC = 'N' /*813647 */
ALLOC DDN(JLRCL) DSN('&DJSNAME..SJJSPARM') SHR
ENDO
/* ************ CALL THE JEM SUPERVISOR ************
ISPEXEC SELECT PGM(J0AYEMU) PARM(PR(E) &PARMSTR)
/*JTE30780*/
ENDING: +
ISPEXEC VGET (ZSPLIT)
IF &STR(&ZSPLIT) = &STR(YES) THEN +
EXIT
IF &RCLALC = 'N' THEN FREE DDN(JLRCL)
EXIT
******************************** Bottom of Data
*******************************
Thanks..
Paul Feller
AGT Mainframe Technical Support
-----Original Message-----
From: IBM Mainframe Discussion List
Sent: Sunday, August 27, 2017 12:11
Subject: Re: Message IRX0006I running an edit macro CLIST
I never knew of this restriction on edit macros. Looking through the
same
library for others, I find a few other CLISTs that have 'PROC' at the
top; most do not. It looks like JEM was constructed to allow an
alternate load library to be specified on invocation for testing
purposes. I removed the PROC statement and now it works. BTW I did not
take the step of closing the opening comment with '*/'; that is not
required for CLIST in general. Also, there is no other copy of JEM except this one in SYSPROC.
So mysteries remain. My favorite user complaint: this used to work
and now
it doesn't; what happened? Even more mysterious, the same CLIST
continues to work on other sysplexes at the same z/OS maintenance
level. In any case, the immediate problem is solved, for which I'm once again grateful to this List.
.
.
J.O.Skip Robinson
Southern California Edison Company
Electric Dragon Team Paddler
SHARE MVS Program Co-Manager
323-715-0595 Mobile
626-543-6132 Office ⇐=== NEW
-----Original Message-----
From: IBM Mainframe Discussion List
Sent: Saturday, August 26, 2017 2:36 PM
Subject: (External):Re: Message IRX0006I running an edit macro CLIST
FWIW
(a) The "ISREDIT MACRO" should be the *1st* executable statement;
there
should be no "PROC 0 <anything>" in edit macros - unless the edit
macro is actually embedded in the Clist (a bit unusual).
(b) Anyquotes should be enclosed in both '/*' and '*/' open/closing
chars,
even in Clist.
The usual way to invoke an edit macro in Clist, e.g. in batch, is of
the
code the Clist to invoke the edit macro ...
PROC 0 DJSNAME(SPP.JOBSCAN)
/* COPYRIGHT DIVERSIFIED SOFTWARE SYSTEMS, INC., 1991,1993.
CONTROL END(ENDO) NOMSG NOFLUSH
ISPEXEC VPUT PARMSTR SHARED /* store whatever PARMSTR is for macro */
ISPEXEC EDIT DATASET('&DSJNAME') MACRO(<whatever edit macro name>)
ISPEXEC VGET RC SHARED /* get the macro RC from shared pool */
... finish off the Clist ...
EXIT CODE(&RC)
and code the macro as a separate member <whatever edit macro name> ...
ISREDIT MACRO /* specify no parms if invoked by a Clist */
CONTROL END(ENDO) NOMSG NOFLUSH
ISPEXEC VGET PARMSTR SHARED /* get the macro parms from shared pool */
... <execute whatever edit macro statements> ...
... save whatever the macro (MAX)CC is, as e.g. RC ...
ISPEXEC VPUT RC SHARED /* store whatever the RC is for Clist */
ISREDIT END /* return to Clist */
Both the Clist and edit macro should be members of a PDS on
DDNAME=SYSPROC.HTH, CP
Did you use ISRDDN and search for JEM? Just to verify what you see.
Only time I see this is when a CLIST is on SYSEXEC
Lizette
Post by Jesse 1 Robinson
-----Original Message-----
From: IBM Mainframe Discussion List
Sent: Saturday, August 26, 2017 8:27 AM
Subject: Message IRX0006I running an edit macro CLIST
OK, this is a weird one. We have an old CLIST that runs as an ISPF
edit macro. On one sysplex only, this CLIST fails with a *Rexx*
error
IRX0006I Error running JEM, line 2: Unmatched "/*" or quote
PROC 0 DJSNAME(SPP.JOBSCAN)
/* COPYRIGHT DIVERSIFIED SOFTWARE SYSTEMS, INC., 1991,1993.
CONTROL END(ENDO) NOMSG NOFLUSH
ISREDIT MACRO (PARMSTR)
Of course there is no closing '*/' in line 2, but it's a CLIST,
not a
Rexx.
Post by Jesse 1 Robinson
The CLIST was last modified in 2007 according to ISPF stats. What
appears to be exactly the same CLIST works fine on other sysplexes.
The z/OS maintenance level (RSU1705) is the same on working and
nonworking plexes. I have looked in SYSEXEC libraries and in other
SYSPROC libraries for a bogus copy of this exec; nothing found.
The CLIST library is VB; member is unnumbered, so data starts in column 9.
What might cause a CLIST to be misinterpreted as Rexx?
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Paul Gilmartin
2017-08-29 01:12:29 UTC
Reply
Permalink
Raw Message
Post by CM Poncelet
FWIW
The oddity is that there are *no* edit macro statements after "ISREDIT
MACRO (PARMSTR)". So why is an edit macro declared in the Clist?
 
E.g. "ISPEXEC SELECT PGM(J00YCKAL) PARM(JLRCL)" etc.can be issued
directly from the Clist proc and does not need an edit macro to do that.
 
Sure, edit macros are normally invoked from the command line in edit
mode. But they can also be invoked by Clist and REXX procs, and then not
from the command line. So if JEM is a Clist that in turn invokes an edit
macro, then 'TSO JEM + any parms' would be used to invoke JEM as a Clist
(and ISPF option 6 could invoke it simply as 'JEM + any parms'). So, is
JEM meant to be invoked as a Clist ("PROC 0 ...") or as an edit macro
("ISREDIT MACRO (<parms>)")?
 
I give up.
 
In Rexx, I have done in at least one case:
address 'ISREDIT' 'MACRO (Arg1)' /* Use Edit macro argument */
if RC<>0 then Arg1 = arg( 1 ) /* else use Rexx argument. */

... This works in Edit as a macro (just for convenience; it depends on no
ISREDIT commands), TSO READY, IRXJCL, and OMVS, with no code changes.

-- gil

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
CM Poncelet
2017-08-29 03:35:39 UTC
Reply
Permalink
Raw Message
*Any* commands that can be issued in a Clist or REXX proc (e.g. "ISPEXEC
SELECT PGM(J00YCKAL) PARM(JLRCL)" etc.)can also be issued in an edit
macro. But *only edit* statements (e.g. "EXCLUDE ALL P'¬'" then "CHANGE
ALL P'.' ' ' NX" etc.) can be issued in edit macros. The point I was
making was that *no* edit commands (that could be issued *only* in edit
macros) were being issued after the "ISREDIT MACRO (PARMSTR)" - which
thus made the "ISREDIT MACRO (PARMSTR)" statement wholly irrelevant
(because no actual *edit* commands then followed it). All the commands
that *did* follow it could be issued in native Clist or REXX, without a
preceding "ISREDIT MACRO" statement.
 
BTW I use "ADDRESS" only for "ADDRESS IPCS", to avoid having to juggle
between "ADDRESS TSO/MVS/ISREDIT/ISPEXEC/whatever-else".
 
Cheers, CP
 
Post by Paul Gilmartin
Post by CM Poncelet
FWIW
The oddity is that there are *no* edit macro statements after "ISREDIT
MACRO (PARMSTR)". So why is an edit macro declared in the Clist?
 
E.g. "ISPEXEC SELECT PGM(J00YCKAL) PARM(JLRCL)" etc.can be issued
directly from the Clist proc and does not need an edit macro to do that.
 
Sure, edit macros are normally invoked from the command line in edit
mode. But they can also be invoked by Clist and REXX procs, and then not
from the command line. So if JEM is a Clist that in turn invokes an edit
macro, then 'TSO JEM + any parms' would be used to invoke JEM as a Clist
(and ISPF option 6 could invoke it simply as 'JEM + any parms'). So, is
JEM meant to be invoked as a Clist ("PROC 0 ...") or as an edit macro
("ISREDIT MACRO (<parms>)")?
 
I give up.
 
address 'ISREDIT' 'MACRO (Arg1)' /* Use Edit macro argument */
if RC<>0 then Arg1 = arg( 1 ) /* else use Rexx argument. */
... This works in Edit as a macro (just for convenience; it depends on no
ISREDIT commands), TSO READY, IRXJCL, and OMVS, with no code changes.
-- gil
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Paul Gilmartin
2017-08-29 04:43:47 UTC
Reply
Permalink
Raw Message
... made the "ISREDIT MACRO (PARMSTR)" statement wholly irrelevant
(because no actual *edit* commands then followed it). All the commands
that *did* follow it could be issued in native Clist or REXX, without a
preceding "ISREDIT MACRO" statement.
 
But you might risk a "NOT AN EDIT MACRO" error in its absence.
BTW I use "ADDRESS" only for "ADDRESS IPCS", to avoid having to juggle
between "ADDRESS TSO/MVS/ISREDIT/ISPEXEC/whatever-else".
 
Does this make me the opposite extreme? In a 432-line Rexx EXEC:

509 $ grep -i address ...
address 'ISREDIT' 'MACRO (Arg1)' /* Use Edit macro argument */
address 'ISPEXEC' 'VGET (ZSCREENI) SHARED'
address 'SYSCALL'
address 'SDSF'
address 'SYSCALL' 'open (G.9LOG)' ,
address 'SYSCALL' 'pipe G.9PIPE.'
address 'SYSCALL'
address 'SYSCALL'
address 'SYSCALL'
address 'TSO' 'RECEIVE INDD('arg( 1 )')'; end
address 'MVS' 'EXECIO 1 DISKW' G.9CTRL '( finis stem Content.'
address 'MVS' 'EXECIO 2 DISKW' G.9IEBOUT '(finis stem Header.'
address 'ATTCHMVS' 'IEBGENER PARM1 PARM2'
address 'SYSCALL'
address 'SYSCALL' 'mkdir (Head) 777' /* less umask */
address 'SYSCALL' 'strerror (errno) (errnojr) emsg.'

... ? (Mr. Natural sez, Use the right tool for the job.)

-- gil

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Dan D
2017-09-01 19:52:25 UTC
Reply
Permalink
Raw Message
Hi Skip,

Have you checked the ISPF command table for your command?

=3.9 then change the table to ISP.
We have quite a few CLISTs there ...
WHOAMI 3 SELECT CMD(%WHOAMI)
Then a WHOAMI CLIST that checks for ISPF and pops up a window with user info. If it's not within ISPF it just WRITES the info. As it can run outside ISPF it can't have an ISREDIT statement.

Dan D.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Jesse 1 Robinson
2017-09-01 20:57:20 UTC
Reply
Permalink
Raw Message
I had not checked before, but there's nothing there.

.
.
J.O.Skip Robinson
Southern California Edison Company
Electric Dragon Team Paddler
SHARE MVS Program Co-Manager
323-715-0595 Mobile
626-543-6132 Office ⇐=== NEW
***@sce.com


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Dan D
Sent: Friday, September 01, 2017 12:44 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: (External):Re: :Re: Message IRX0006I running an edit macro CLIST

Hi Skip,

Have you checked the ISPF command table for your command?

=3.9 then change the table to ISP.
We have quite a few CLISTs there ...
WHOAMI 3 SELECT CMD(%WHOAMI)
Then a WHOAMI CLIST that checks for ISPF and pops up a window with user info. If it's not within ISPF it just WRITES the info. As it can run outside ISPF it can't have an ISREDIT statement.

Dan D.


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Loading...