The OP's batch program reminds me of what German physicist Wolfgang Pauli said
upon reading a young physicist's paper: "This isn't right, this isn't even
wrong."
What are you trying to accomplish? Are you trying to move some data into the
4-byte field known as CVTUSER? Your comment "* move 4 characters to CVTUSER"
implies that that is your intent. Or are you trying to move some data into the
virtual storage whose address is in R3 at the time of the MVC instruction?
Where did the batch program come from? Did you write it? If someone else
wrote it, can you find the author and discuss it with him? Why did you decide
that CVTUSER would be a good place to put your data? After your batch program
runs, then what? Will you look at the storage area CVTUSER to see if your data
is in there? If so, how do you plan to look at it? If you succeed in moving
your data into CVTUSER and there was something else already in there, are you
ready for the possibly destructive consequences to your system? The CVT is a
part of the operating system controlled by IBM. CVTUSER is documented as being
"available to the user", which does not necessaril!
y mean you. It legally means whoever owns the license from IBM to run the
operating system on the computer hardware, which is probably Queens University.
A long time ago, short-sighted systems programmers and/or developers used
CVTUSER to contain the address of some dynamically acquired piece of storage
that was used to control a vendor product, a major in-house application, or
some other software that was not part of the IBM'S operating system. There are
a number of security issues involved in using this field.
Your MVC instruction is very wrong. If you want to move something into
CVTUSER, one way to do it is with this: MVC CVTUSER,=C'TEST'
Another way is with this:
LA R3,CVTUSER
MVC 0(4,R3),=C'TEST'
If you are trying to learn how to use the Assembler language, you should not do
so with any authorized program for a long time.
However, if you have your very own private copy of z/OS to play with (aka a
"sandbox" system), there are no other users of your system, and it's running
under VM, then go ahead and do anything you want, as your learning moments will
not inconvenience anyone else when they go awry.
If you really want to move data into virtual storage address 3, we can help
you. You will need to alter the contents of one of the control registers,
which you can do since your program is authorized. But this is a really bad
idea, as is also trying to move data into CVTUSER.
Bill Fairchild
Rocket Software
-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of
Tom Marchant
Sent: Wednesday, December 15, 2010 3:09 PM
To: [email protected]
Subject: Re: Batch program to update CVTUSER
On Wed, 15 Dec 2010 12:58:02 -0800, Sam Siegel wrote:
>On Wed, Dec 15, 2010 at 12:40 PM, Tom Marchant wrote:
>
>> On Wed, 15 Dec 2010 11:33:18 -0800, Sam Siegel wrote:
>>
>> >R2 is set incorrectly. It needs to be loaded as follows:
>> > using PSA,R0 include macro: IHAPSA
>> > L R2,FLCCVT r2 = address of CVT
>> > drop r0
>> > --> Delete or comment out this line L R2,CVTPTR LOAD
>> >UP CVT ADDRESS
>>
>> Nope. Either code produces the same result.
>>
> Tom, I'm confused about your comment above. The original post (shown
>below) never loaded register 2
Never loaded register 2?
What do you call this, which you quoted from the OP?
> L R2,CVTPTR LOAD UP CVT ADDRESS
Maybe you should look up the value of CVTPTR.
Hint: It is not a field in the CVT.
--
Tom Marchant
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to
[email protected] with the message: GET IBM-MAIN INFO Search the archives at
http://bama.ua.edu/archives/ibm-main.html
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html