Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

problems with a REXX exec

317 views
Skip to first unread message

Rout, Steve

unread,
May 7, 2007, 3:54:40 PM5/7/07
to
We are converting to CA-OPS/MVS on a ZOS 1.8 system. When I run the
following Rexx

zz=opswait(10)

address oper

"command('setglob')"

return "accept".

I get the following errors<<<<

OPS3092H 3 *-* "command('setglob')"


OPS3092H +++ RC(-3) +++


OPS3092H Error running SMFDUMPI, line 4: Invalid whole number


OPS3092H READY

The rexx command 'setglob' looks like this.

)CMD SETGLOB

/**********************************************************************/

/* Rule Name: SETGLOB */

/* Rule Type: Command */

/* Rule Function: reset global variable during IPL */

/* Author: Kathy Jarrett */

/**********************************************************************/

)PROC

/*--------------------------------------------------------------------*/

/* The following code is executed each time the rule is fired. */

/*--------------------------------------------------------------------*/

/*------------------------------------------------------------------*/

/* Create a REXX variable containing the command text with the */

/* commas replaced by blanks for use by the WORD function. */

/*------------------------------------------------------------------*/

EasyRuleCmdText = TRANSLATE(CMD.TEXT,' ',',')

/*------------------------------------------------------------------*/

00
/*------------------------------------------------------------------*/

00 /* Set or update global variables.
*/

00
/*------------------------------------------------------------------*/

01 say 'in setglob'


10 if (GLOBAL.IPLBMVS = "yes")


20 then do


00 GLOBAL.IPLBMVS = "not"


00 return "accept".


10 end


00 )TERM

Do any of you guys have any experience in TSO REXX or CA-OPS/MVS that
could give me a hand?


Steve Rout

City of Indianapolis/Marion County ISA

Northrop Grumman - Information Technology Commercial, State & Local
Solutions

317.327.1207


----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to LIST...@VM.MARIST.EDU with the message: INFO TSO-REXX

Bob Stark

unread,
May 7, 2007, 4:36:15 PM5/7/07
to
Let's unravel this a bit. It looks like your main program is SMFDUMPI. Are
those 4 lines the entire program, and did you run it from TSO with:
TSO OI SMFDUMPI
Or is it an OPS/MVS rule, with extra stuff at the top such as )MSG xxx

Return code -3 from Address OPER means "Address OPER not found", which I
would expect if you were running under TSO REXX, but you show OPS3092H trace
messages, so you are running under OPS/REXX. Perhaps the OPS/MVS started
task is not running, or is not running under subsystem OPSS.

Tell us how you ran them, then we can unravel further. Also, tell us the
overall intent of what you are trying to achieve, and perhaps we can get you
steered in the correct direction.

SETGLOB is a command rule; it runs when the operator issues a SETGLOB
command from the console. It is possible (but messy) to invoke these command
rules with Address OPER; I don't like it because the automation quickly gets
hard to follow, with little pieces of logic around here and there, and
whether the rule is enabled or disables causes side effects in other
automation. Instead, if you want to reset a global variable, just call the
OPSVALUE() function from SMFDUMPI:

If opsValue('GLOBAL.IPLBMVS,'N') = 'yes'
Then Call opsValue 'GLOBAL.IPLBMVS','U','not'

The following constructs are only for use within a rule:
Return 'Accept'
Return 'Reject'
Return 'Suppress'
Return 'Noaction'
In a CMD rule, they control whether the command is allowed to pass onto MVS.
In a MSG rule, they control whether the WTO message is allowed to pass onto
MVS, or is suppressed.
In most rule types, they have some control over the disposition of the event
that OPS/MVS has trapped. There are exceptions, such as a TOD rule, an EOJ
rule, an EOM rule, where OPS does not control the disposition.

Regards,

Bob Stark

ProTech - When you're serious about Systems Management
Consulting, Software, and Training for z/OS, UNIX and Internet
www.protechtraining.com 800-373-9188 x150 412-445-8072

zz=opswait(10)

address oper

"command('setglob')"

return "accept".


OPS3092H +++ RC(-3) +++


OPS3092H READY

)CMD SETGLOB

/**********************************************************************/

/**********************************************************************/

)PROC

/*--------------------------------------------------------------------*/

/*--------------------------------------------------------------------*/

/*------------------------------------------------------------------*/

/*------------------------------------------------------------------*/

/*------------------------------------------------------------------*/

00
/*------------------------------------------------------------------*/

00
/*------------------------------------------------------------------*/

01 say 'in setglob'


20 then do


00 GLOBAL.IPLBMVS = "not"


00 return "accept".


10 end


00 )TERM


Steve Rout

317.327.1207

--
If this email is spam, report it here:
http://www.OnlyMyEmail.com/reportSpam?Id=Mzg3MzE6MzA4MzM2NDk3OmJzdGFya0Bwcm9
0ZWNocHRzLmNvbQ%3D%3D

Rout, Steve

unread,
May 8, 2007, 8:49:01 AM5/8/07
to
It works when I do the TSO OI SMFDUMPI.
SO what does the 'OI' stand for.
It is not an ops rule. That is you can't access it through option 4.5.1
from the OPS main menu.

You have to remember that myself and the other systems programmer
working on this project are basically flying blind. No experience with
REXX at all or how the Tso/OPS environment is all put together. I read
as much as I could find on the net and the IBM books are not very good.

Thanks for all you're help. We greatly appreciate it.

Lizette Koehler

unread,
May 8, 2007, 9:13:16 AM5/8/07
to
My guess would be the Ops/MVS Api Interface. So Possible OPSMVS Interface =
OI.

It is specific to OPS and how it does "stuff" (very technical term)

The line TSO OI SMFUMPI would be (I think) for Ops to issue the MVS
command to dump the SMF data sets.

We are just setting up OPS/MVS at my shop and I can emphasize your confusion
over the use of the product and its features.

Lizette


-------Original Message-----
--From: TSO REXX Discussion List [mailto:TSO-...@VM.MARIST.EDU] On
--Behalf Of Rout, Steve
--Sent: Tuesday, May 08, 2007 8:49 AM
--To: TSO-...@VM.MARIST.EDU
--Subject: Re: [TSO-REXX] problems with a REXX exec
--
--It works when I do the TSO OI SMFDUMPI.
--SO what does the 'OI' stand for.
--It is not an ops rule. That is you can't access it through option 4.5.1
--from the OPS main menu.
--
--You have to remember that myself and the other systems programmer
--working on this project are basically flying blind. No experience with
--REXX at all or how the Tso/OPS environment is all put together. I read
--as much as I could find on the net and the IBM books are not very good.
--
--Thanks for all you're help. We greatly appreciate it.
--
-------Original Message-----
--From: TSO REXX Discussion List [mailto:TSO-...@VM.MARIST.EDU] On
--Behalf
--Of Bob Stark
--Sent: Monday, May 07, 2007 4:36 PM
--To: TSO-...@VM.MARIST.EDU
--Subject: Re: [TSO-REXX] problems with a REXX exec
--
--Let's unravel this a bit. It looks like your main program is SMFDUMPI.
--Are
--those 4 lines the entire program, and did you run it from TSO with:
-- TSO OI SMFDUMPI
--Or is it an OPS/MVS rule, with extra stuff at the top such as )MSG xxx
--
--Return code -3 from Address OPER means "Address OPER not found", which I
--would expect if you were running under TSO REXX, but you show OPS3092H
--trace
--messages, so you are running under OPS/REXX. Perhaps the OPS/MVS started
--task is not running, or is not running under subsystem OPSS.
--
--Tell us how you ran them, then we can unravel further. Also, tell us
--the
--overall intent of what you are trying to achieve, and perhaps we can get
--you
--steered in the correct direction.
--
--SETGLOB is a command rule; it runs when the operator issues a SETGLOB
--command from the console. It is possible (but messy) to invoke these
--command
--rules with Address OPER; I don't like it because the automation quickly
--gets
--hard to follow, with little pieces of logic around here and there, and
--whether the rule is enabled or disables causes side effects in other
--automation. Instead, if you want to reset a global variable, just call
--the
--OPSVALUE() function from SMFDUMPI:
--
--If opsValue('GLOBAL.IPLBMVS,'N') = 'yes'
--Then Call opsValue 'GLOBAL.IPLBMVS','U','not'
--
--The following constructs are only for use within a rule:
--Return 'Accept'
--Return 'Reject'
--Return 'Suppress'
--Return 'Noaction'
--In a CMD rule, they control whether the command is allowed to pass onto
--MVS.
--In a MSG rule, they control whether the WTO message is allowed to pass
--onto
--MVS, or is suppressed.
--In most rule types, they have some control over the disposition of the
--event
--that OPS/MVS has trapped. There are exceptions, such as a TOD rule, an
--EOJ
--rule, an EOM rule, where OPS does not control the disposition.
--
--Regards,
--
--Bob Stark
--
--ProTech - When you're serious about Systems Management
--Consulting, Software, and Training for z/OS, UNIX and Internet
--www.protechtraining.com 800-373-9188 x150 412-445-8072
--
-------Original Message-----
--From: TSO REXX Discussion List [mailto:TSO-...@VM.MARIST.EDU] On
--Behalf
--Of
--Rout, Steve
--Sent: Monday, May 07, 2007 3:39 PM
--To: TSO-...@VM.MARIST.EDU
--Subject: problems with a REXX exec
--
--
--
--We are converting to CA-OPS/MVS on a ZOS 1.8 system. When I run the
--following Rexx
--
--
--
--zz=opswait(10)
--
-- address oper
--
-- "command('setglob')"
--
-- return "accept".
--
--
--
--I get the following errors<<<<
--
--
--
--OPS3092H 3 *-* "command('setglob')"
--
--
--OPS3092H +++ RC(-3) +++
--
--
--OPS3092H Error running SMFDUMPI, line 4: Invalid whole number
--
--
--OPS3092H READY
--
--
--
--The rexx command 'setglob' looks like this.
--
--
--
--)CMD SETGLOB
--
--/**********************************************************************/
--
--/* Rule Name: SETGLOB */
--
--/* Rule Type: Command */
--
--/* Rule Function: reset global variable during IPL */
--
--/* Author: Kathy Jarrett */
--
--/**********************************************************************/
--
--)PROC
--
--/*--------------------------------------------------------------------*/
--
--/* The following code is executed each time the rule is fired. */
--
--/*--------------------------------------------------------------------*/
--
-- /*------------------------------------------------------------------*/
--
-- /* Create a REXX variable containing the command text with the */
--
-- /* commas replaced by blanks for use by the WORD function. */
--
-- /*------------------------------------------------------------------*/
--
-- EasyRuleCmdText = TRANSLATE(CMD.TEXT,' ',',')
--
-- /*------------------------------------------------------------------*/
--
--00
--/*------------------------------------------------------------------*/
--
--00 /* Set or update global variables.
--*/
--
--00
--/*------------------------------------------------------------------*/
--
--01 say 'in setglob'
--
--
--10 if (GLOBAL.IPLBMVS = "yes")
--
--
--20 then do
--
--
--00 GLOBAL.IPLBMVS = "not"
--
--
--00 return "accept".
--
--
--10 end
--
--
--00 )TERM
--
--
--
--Do any of you guys have any experience in TSO REXX or CA-OPS/MVS that
--could
--give me a hand?
--
--
--Steve Rout
--
--City of Indianapolis/Marion County ISA
--
--Northrop Grumman - Information Technology Commercial, State & Local
--Solutions
--
--317.327.1207
--
--
--
--
--
--
------------------------------------------------------------------------
--For TSO-REXX subscribe / signoff / archive access instructions, send
--email
--to LIST...@VM.MARIST.EDU with the message: INFO TSO-REXX
--
--
--
----
--If this email is spam, report it here:
--http://www.OnlyMyEmail.com/reportSpam?Id=Mzg3MzE6MzA4MzM2NDk3OmJ
--zdGFya0B
--wcm9
--0ZWNocHRzLmNvbQ%3D%3D
--
------------------------------------------------------------------------
--For TSO-REXX subscribe / signoff / archive access instructions,
--send email to LIST...@VM.MARIST.EDU with the message: INFO TSO-REXX
--
------------------------------------------------------------------------
--For TSO-REXX subscribe / signoff / archive access instructions,
--send email to LIST...@VM.MARIST.EDU with the message: INFO TSO-REXX

Bob Stark

unread,
May 8, 2007, 9:23:07 AM5/8/07
to
Steve,

Okay, I'll be gentle! I assumed you were flying a bit blind.

OI is the CA-provided TSO command to invoke OPS/REXX. When running under
OPS/REXX, you have access to all of the OPS/MVS ADDRESS environments and
OPSxxxx() REXX functions. A few things that normally work under TSO REXX do
not work, like PARSE EXTERNAL and the TSO built-in functions like LISTDSI()
and SYSDSN().

You will want to use OPS/REXX for most everything you do with OPS/MVS. There
are two commands to run it:

OI member <-- Search for member in SYSEXEC concatenation;
Compile and run it
OX 'data.set.name(member)' <-- Search for member in data.set.name; Compile
and run it (similar to TSO/E REXX EXEC command)

The IBM TSO/E REXX reference is not so bad. You can find it at
http://publibz.boulder.ibm.com/epubs/pdf/ikj4a370.pdf
Also the TSO/E REXX User's Guide, at
http://publibz.boulder.ibm.com/epubs/pdf/ikj4c310.pdf

If you can find it, read Mike Cowlishaw's "The REXX Language: A Practical
Approach to Programming (2nd Edition)", ISBN 0137806515. Someone might well
have a copy of that lying around the office. I just listed a few spare
copies I have on amazon.com. It is really concise, easy to read, you'll get
the "Zen" of REXX rather quickly from it.

Also download the PDF documents for OPS/MVS. They will have been on the
install tape in file OPS.TGZ, or you can just as easily download them from
supportconnect.ca.com. You REALLY need these books, you just can't buffalo
your way into OPS/MVS. The "Command and Function Reference" will help you
through REXX, and the "AOF Rules User Guide" will help you through rules.
However, these CA books do not document REXX except for the CA extensions to
REXX, which is why you'll want to find the TSO REXX or Cowlishaw REXX books
mentioned above.

Now, tell me in English what you are trying to do with the SMF datasets (or
some other simple project), and we'll work together on building a simple
automation program that works. That will boost your confidence and
understanding immensely.

Regards,

Bob Stark

ProTech - When you're serious about Systems Management
Consulting, Software, and Training for z/OS, UNIX and Internet
www.protechtraining.com 800-373-9188 x150 412-445-8072

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-...@VM.MARIST.EDU] On Behalf Of
Rout, Steve

Sent: Tuesday, May 08, 2007 8:49 AM

Regards,

Bob Stark

zz=opswait(10)

address oper

"command('setglob')"

return "accept".


OPS3092H +++ RC(-3) +++


OPS3092H READY

)CMD SETGLOB

/**********************************************************************/

/**********************************************************************/

)PROC

/*--------------------------------------------------------------------*/

/*--------------------------------------------------------------------*/

/*------------------------------------------------------------------*/

/*------------------------------------------------------------------*/

/*------------------------------------------------------------------*/

00
/*------------------------------------------------------------------*/

00
/*------------------------------------------------------------------*/

01 say 'in setglob'


20 then do


00 GLOBAL.IPLBMVS = "not"


00 return "accept".


10 end


00 )TERM


Steve Rout

317.327.1207

http://www.OnlyMyEmail.com/reportSpam?Id=Mzg3MzE6MzA4NzY0NjY5OmJzdGFya0Bwcm9

Scott Estep

unread,
May 8, 2007, 9:33:26 AM5/8/07
to
Yes, 'OI' is the OPS/MVS Interface. It allows execs to run through OPS/MVS
the same as executing the '!' in SDSF for Netview's System Automation
except you can issue 'OI' anywhere.

Scott J. Estep -
Coca-Cola Enterprises
z Series -
Systems Automation Administrator

wk: 770-370-8564
cell: 404-210-7004
ses...@na.cokecce.com


Lizette Koehler <star...@MINDSPRING.COM>
Sent by: TSO REXX Discussion List <TSO-...@VM.MARIST.EDU>
05/08/2007 09:12 AM
Please respond to
TSO REXX Discussion List <TSO-...@VM.MARIST.EDU>


To
TSO-...@VM.MARIST.EDU
cc

Subject

Lizette

--/**********************************************************************/
--
--)PROC
--

--------- ---------- -----------
This message is intended for the use of the individual or entity to
which it is addressed and may contain information that is
confidential and privileged and exempt from disclosure under
applicable law. If the reader of this message is not the intended
recipient, you are hereby notified that any dissemination,
distribution, or copying of this communication is strictly
prohibited. If you have received this communication in error,
please contact the sender immediately and delete it from your
system. Thank You

Rout, Steve

unread,
May 8, 2007, 9:35:59 AM5/8/07
to
OK - here is the problem in a nutshell. During the IPL process at some
point in time we have to set a global variable to 'no' from 'yes'. This
is because we have message rules that fire during the IPL process that
start other address spaces. AN example of this would be to start tso
after Vtam initializes. IF for some reason we have to restart Vtam, we
don't want the rest of the world trying to start after that. If very
rarely happens but we need to program for it. The system we tried to set
up was that this rule called 'SMFDUMPI' starts up at some time during
the IPL process, waits for 10 minutes(allows the rest of the IPL to
complete) and then executes a OPS command(setglob) to reset the variable
to 'no'. I've read all the CA books for OPS/MVS and it assumes the
person has a working knowledge of REXX. I'll have my wife get onto
amazon.com and order the book. I've been trying to find one on the net.

Paul Gilmartin

unread,
May 8, 2007, 9:37:13 AM5/8/07
to
In a recent note, Bob Stark said:

> Date: Tue, 8 May 2007 09:22:45 -0400


>
> OI is the CA-provided TSO command to invoke OPS/REXX. When running under
>

Did they, perhaps, also provide a HELP file? I notice that on our
system, "OI" reports a syntax error, but "HELP OI" reports
"IKJ56802I COMMAND OI NOT FOUND." But this may be an installation
problem.

-- gil
--
StorageTek
INFORMATION made POWERFUL

Bob Stark

unread,
May 8, 2007, 11:15:15 AM5/8/07
to
Steve,

Thanks for the description, that helped.

Now I'll try to talk you out of doing it that way. When the system won't IPL
correctly for some reason, the operator will spend exactly 10 1/2 minutes
calling people on the phone, then your rule won't work correctly!

Also, OPS/MVS has this entire system for controlling the startup and
shutdown of tasks called System State Manager, you will probably want to set
that up instead of doing it this way, because it will automate your shutdown
as well as your startup. It is more learning curve, but a much better
result.

The beauty of OPS/MVS is that it has a lot of power in the rules language,
so that it can look up information in real time. In the example below, we
use the opstatus() function to look up Address space status by scanning the
ASVT, and tell us if TSO, CICS, etc. are already running.

The following rule can be extended to do what you want to do without keeping
track of "Are we IPLing?" in a global variable.

)MSG IST020I
/*--------------------------------------------------------------------*/
/* Program: IST020I */
/* Purpose: Start VTAM applications after VTAM is fully initialized. */
/* Type: OPS/MVS Message rule (invoked each time WTO is trapped) */
/* MsgText: IST020I VTAM INITIALIZATION COMPLETE */
/*--------------------------------------------------------------------*/
)PROC

/* Create a list of address space names and corresponding start cmds */
/* On the REXX stack */
Queue "TSO START TSO"
Queue "CICSA START CICSA"
Queue "DSN1MSTR -START DB2"

/* Process the above list; Check to make sure the address space is */
/* not already running; If not, then issue the start command. This */
/* keeps from starting an extra copy of the address space if VTAM is */
/* restarted. */
Do i = 1 To queued() /* Loop through the stack data */
Pull jobname startCmd /* Extract jobname & start cmd */
If opStatus('A','A',jobname) < 1 /* Is jobname running? */
Then Address OPER startCmd /* No, issue the start command */
End i

Return 'noaction' /* Do NOT suppress this message */

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

You can test the above rule in a simulated manner using OPSView 2.1

If you still need to track IPL status for some other reason (e.g. if I
haven't totally talked you out of it!), You can do it by writing a rule
which fires on the following message:
OPS3253I CA-OPS/MVS JES2 Release 11.05.00 subsys OPSS initialization
complete

This message comes out when OPS/MVS is fully active.

In the rule, we will check to see if this is the first OPS/MVS start since
IPL:
If OPSINFO('ProductStarts') = 1

If so, we'll set our GLOBAL.IPL variable to 'YES'

Then we have to pick an event that means "IPL is complete". Perhaps "First
user to logon to TSO", or "First batch job started". We'll write a rule for
that and set GLOBAL.IPL to "NO" or "". Let me know if you want to flesh
this automation out for you a little more fully.

You can e-mail me off-list (before we wear out our welcome talking about
OPS/REXX on a TSO/E REXX list!)
bstark (at) protechtraining.com

Regards,

Bob Stark

ProTech - When you're serious about Systems Management
Consulting, Software, and Training for z/OS, UNIX and Internet
www.protechtraining.com 800-373-9188 x150 412-445-8072

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-...@VM.MARIST.EDU] On Behalf Of
Rout, Steve
Sent: Tuesday, May 08, 2007 9:36 AM
To: TSO-...@VM.MARIST.EDU
Subject: Re: problems with a REXX exec

OK - here is the problem in a nutshell. During the IPL process at some point
in time we have to set a global variable to 'no' from 'yes'. This is because
we have message rules that fire during the IPL process that start other
address spaces. AN example of this would be to start tso after Vtam
initializes. IF for some reason we have to restart Vtam, we don't want the
rest of the world trying to start after that. If very rarely happens but we
need to program for it. The system we tried to set up was that this rule
called 'SMFDUMPI' starts up at some time during the IPL process, waits for
10 minutes(allows the rest of the IPL to
complete) and then executes a OPS command(setglob) to reset the variable to
'no'. I've read all the CA books for OPS/MVS and it assumes the person has a
working knowledge of REXX. I'll have my wife get onto amazon.com and order
the book. I've been trying to find one on the net.

----------------------------------------------------------------------

Rout, Steve

unread,
May 8, 2007, 11:29:50 AM5/8/07
to
Thanks for you're help - we'll start working on it that way -
Have a short window to do all this.
I may have some questions latter if you don't mind.

Thanks again for all you're help.

pdc

unread,
May 11, 2007, 8:36:20 AM5/11/07
to
Steve,
I doubt you'll really get a better TSO/REXX manual than those provided by
IBM. They're 'free' too :)
The rexx language association has a good website too so perhaps try there.


"Rout, Steve" <SR...@INDYGOV.ORG> wrote in message
news:D0723D2C59142D40A6F...@EXHPV01.indyad.local...

0 new messages