Re: LINK vs LOAD/CALL

2021-02-07 Thread Paul Gilmartin
On Mon, 8 Feb 2021 03:12:25 +, CM Poncelet wrote:
>
>Never heard of REFRPROT or how it differs from REFR. Perhaps it's after I 
>retired (7+ years ago) 
> 
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.4.0/com.ibm.zos.v2r4.ieae200/progref.htm

-- gil

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread CM Poncelet
>From Michael Stein's excellent summary of REFR:

 refreshable:
all or part of the module can be replaced at any time without notice
by the operating system.  *therefore* must not modify itself in 
any way. 
 
Never heard of REFRPROT or how it differs from REFR. Perhaps it's after I 
retired (7+ years ago)  
 
Chris Poncelet (retired sysprog)
 

On 08/02/2021 02:10, Seymour J Metz wrote:
> If REFRPROT is not specified then a refreshable module can modify itself. 
> Don't do it at home.
>
>
> --
> Shmuel (Seymour J.) Metz
> http://mason.gmu.edu/~smetz3
>
> 
> From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
> CM Poncelet [ponce...@bcs.org.uk]
> Sent: Sunday, February 7, 2021 5:50 PM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Re: LINK vs LOAD/CALL
>
> Of course. I have never suggested that it was *reasonable* to ENQ/DEQ or
> otherwise serialize code in a RENT module, but only that it was
> *possible* to do so without compromising an LMOD's RENT attribute.
> Likewise, when I said a REFR LMOD could be "swapped out", I meant its
> page(s) could be "stolen" by the O/S at any time without its having
> first to "back up" the LMOD to a paging dataset or cache.
>
> Michael Stein provided an excellent summary of the meanings of REUS,
> RENT and REFR in his "load module search order and attributes" post.
>
> I recommended that ASM modules should always be coded as RSECTs (not as
> CSECTs) to allow the assembler to trap, whenever possible, any code that
> could modify itself.
>
> AFAIR Any LMOD marked "RF" (REFR) will abend S0C4-4 if it modifies
> itself during execution.
>
> Chris Poncelet (retired sysprog)
>
>
>
> On 07/02/2021 16:52, Seymour J Metz wrote:
>> It's a bit more complicated. First, you can decouple REFR from RENT by using 
>> the linkage editor. Second, you can write code that is reentrant and 
>> refreshable, modifies itself and does not use ENQ/DEQ. However, I suspect 
>> that at some point REFRPR"OT will be mandatory.
>>
>> BTW, just because it is possible doesn't mean that it is a reasonable thing 
>> to do; absent compelling reasons otherwise, I would red flag it in a code 
>> review.
>>
>>
>> --
>> Shmuel (Seymour J.) Metz
>> http://mason.gmu.edu/~smetz3
>>
>> 
>> From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
>> CM Poncelet [ponce...@bcs.org.uk]
>> Sent: Friday, February 5, 2021 9:57 PM
>> To: IBM-MAIN@LISTSERV.UA.EDU
>> Subject: Re: LINK vs LOAD/CALL
>>
>> No. RENT implies REUS. Meanwhile RENT *may* be modified IFF an ENQ is
>> first issued on the code to be modified, provided that code is then
>> restored to what it was before it was ENQ'd and then DEQ'd. Only REFR
>> prohibits any code modification (because REFR means that an LMOD can be
>> swapped out and refreshed from its original copy on DASD, at any time
>> during execution and without interruption) - and REFR implies RENT
>> implies REUS, but RENT does not imply REFR.
>>
>>
>>
>> On 05/02/2021 20:02, Joseph Reichman wrote:
>>> Sorry to jump in here but can you have rent without reus
>>>
>>>
>>>
 On Feb 5, 2021, at 2:59 PM, Seymour J Metz  wrote:

 If the module is not REUS then every LOAD will get a different copy. If 
 the module is REUS but not RENT then LOAD, ENQ, CALL, DEQ, DELETE is safe. 
 Using LOAD, SYNCH, DELETE is left as an excise for the reader. In most 
 cases I would use LINK(X).


 --
 Shmuel (Seymour J.) Metz
 http://mason.gmu.edu/~smetz3

 
 From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf 
 of Bernd Oppolzer [bernd.oppol...@t-online.de]
 Sent: Friday, February 5, 2021 1:41 PM
 To: IBM-MAIN@LISTSERV.UA.EDU
 Subject: Re: LINK vs LOAD/CALL

 I would like to add:

 while LINK is functionally the same as LOAD - CALL - DELETE,
 there is an important difference:

 the transfer of control with LINK is known to the operating system,
 but with LOAD - CALL - DELETE, it is NOT known.
 In fact, CALL is not a supervisor action, it is simple machine
 instructions (very cheap).
 This means that if a module is not RENT and not REUS (for example),
 a call using LOAD - CALL - DELETE is not safe, because the system does
 not know that
 the module is in use. Another subtask can easily call the same module at
 the same time,
 if it knows the address, and it will never get another copy. You are
 responsible yourself
 for doing things right.

 With LINK, on the contrary, if the module is not RENT and not REUS, the
 system
 will ALWAYS fetch a new copy, when you do another LINK.

 (There is a "use count" in the control blocks, which is incremented and
 decremented
 during LINK processing, but of course not, when doing a CALL).

 Kind regards

 

Re: LINK vs LOAD/CALL

2021-02-07 Thread Seymour J Metz
This is refreshable, and even runs on S/360

 L R15,PTR
 LTR   R15,R15
 BNZ   CALLIT
 ......Code that always 
leaves the same value in R15
 STR15,PTR
CALLIT   BALR  R14,R15
 ...
PTR  DCA(0)

This is reentrant, and requires at least S/370

RETRYL R1,COUNTER
 LAR0,1(,R1)
 CSR1,,R0,COUNTER
 BNE   RETRY
 ...
COUNTER  DCF'0'

I would consider either to be bad form.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Binyamin Dissen [bdis...@dissensoftware.com]
Sent: Sunday, February 7, 2021 1:40 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: LINK vs LOAD/CALL

On Sun, 7 Feb 2021 16:52:55 + Seymour J Metz  wrote:

:>Second, you can write code that is reentrant and refreshable, modifies itself 
...

Only possible if it modifies itself but pays no attention to the modified
area.

Not really relevant.

--
Binyamin Dissen 
http://secure-web.cisco.com/19fzBBFfAFBx8PysD0V3qJwF9qE3g50-el2X9G9hk1S6e6J1OJCsS3iW5Z4sW_eIxmVeSUtphiZ1F_hVA17R0eQ0sISoKmaje1LKLxW5hXXG57Bhp2jgb7tfsyTUCz7uR3oi_3QvypHyqrkZbk90NkCCElTsVY_WlQLUN3ZGkDG1kO6WKuK6QjZMrhjWBiYf0C9yl8O8I4qv3EpHVq2VRzt08kpxpmxsg6gnybjtHX8YvBuUnV69On_Zzc0LY2kT7e31qhCg19eAfUSCspghB948WQ7TW-XVS3W0hjnawFDJuSq_Gu6Ik-pJsBZ9JBai6AHJCbw-0jDqyvmh1mpiJaD4SemvF8t211o_Xhkk4-K9gYDgDLDpWbiole96yIwNk6hI6rfM33dkqiO-w6cJY6yIpcdBe1cjlMlsHJsUJGWjQHoOCTBflbOxTayrH2erW/http%3A%2F%2Fwww.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel


Should you use the mailblocks package and expect a response from me,
you should preauthorize the dissensoftware.com domain.

I very rarely bother responding to challenge/response systems,
especially those from irresponsible companies.

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

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread Seymour J Metz
If it were me I'd ask IBM to set what they considered the most reasonable 
precedence and document it. 


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Paul Gilmartin [000433f07816-dmarc-requ...@listserv.ua.edu]
Sent: Sunday, February 7, 2021 5:35 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: LINK vs LOAD/CALL

On Sun, 7 Feb 2021 17:53:28 +, Seymour J Metz wrote:

>... IMHO a warn option would be highly desirable.
>Why JOB instead of EXEC?
>
Good suggestion.  How about both; but which dominates?
>
>From: Paul Gilmartin
>Sent: Sunday, February 7, 2021 12:46 PM
>
>REFRPROT should be an opt-in (but not opt-out) option on the JOB
>statement.

--gil

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

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread Seymour J Metz
If REFRPROT is not specified then a refreshable module can modify itself. Don't 
do it at home.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of CM 
Poncelet [ponce...@bcs.org.uk]
Sent: Sunday, February 7, 2021 5:50 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: LINK vs LOAD/CALL

Of course. I have never suggested that it was *reasonable* to ENQ/DEQ or
otherwise serialize code in a RENT module, but only that it was
*possible* to do so without compromising an LMOD's RENT attribute.
Likewise, when I said a REFR LMOD could be "swapped out", I meant its
page(s) could be "stolen" by the O/S at any time without its having
first to "back up" the LMOD to a paging dataset or cache.

Michael Stein provided an excellent summary of the meanings of REUS,
RENT and REFR in his "load module search order and attributes" post.

I recommended that ASM modules should always be coded as RSECTs (not as
CSECTs) to allow the assembler to trap, whenever possible, any code that
could modify itself.

AFAIR Any LMOD marked "RF" (REFR) will abend S0C4-4 if it modifies
itself during execution.

Chris Poncelet (retired sysprog)



On 07/02/2021 16:52, Seymour J Metz wrote:
> It's a bit more complicated. First, you can decouple REFR from RENT by using 
> the linkage editor. Second, you can write code that is reentrant and 
> refreshable, modifies itself and does not use ENQ/DEQ. However, I suspect 
> that at some point REFRPR"OT will be mandatory.
>
> BTW, just because it is possible doesn't mean that it is a reasonable thing 
> to do; absent compelling reasons otherwise, I would red flag it in a code 
> review.
>
>
> --
> Shmuel (Seymour J.) Metz
> http://mason.gmu.edu/~smetz3
>
> 
> From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
> CM Poncelet [ponce...@bcs.org.uk]
> Sent: Friday, February 5, 2021 9:57 PM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Re: LINK vs LOAD/CALL
>
> No. RENT implies REUS. Meanwhile RENT *may* be modified IFF an ENQ is
> first issued on the code to be modified, provided that code is then
> restored to what it was before it was ENQ'd and then DEQ'd. Only REFR
> prohibits any code modification (because REFR means that an LMOD can be
> swapped out and refreshed from its original copy on DASD, at any time
> during execution and without interruption) - and REFR implies RENT
> implies REUS, but RENT does not imply REFR.
>
>
>
> On 05/02/2021 20:02, Joseph Reichman wrote:
>> Sorry to jump in here but can you have rent without reus
>>
>>
>>
>>> On Feb 5, 2021, at 2:59 PM, Seymour J Metz  wrote:
>>>
>>> If the module is not REUS then every LOAD will get a different copy. If 
>>> the module is REUS but not RENT then LOAD, ENQ, CALL, DEQ, DELETE is safe. 
>>> Using LOAD, SYNCH, DELETE is left as an excise for the reader. In most 
>>> cases I would use LINK(X).
>>>
>>>
>>> --
>>> Shmuel (Seymour J.) Metz
>>> http://mason.gmu.edu/~smetz3
>>>
>>> 
>>> From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
>>> Bernd Oppolzer [bernd.oppol...@t-online.de]
>>> Sent: Friday, February 5, 2021 1:41 PM
>>> To: IBM-MAIN@LISTSERV.UA.EDU
>>> Subject: Re: LINK vs LOAD/CALL
>>>
>>> I would like to add:
>>>
>>> while LINK is functionally the same as LOAD - CALL - DELETE,
>>> there is an important difference:
>>>
>>> the transfer of control with LINK is known to the operating system,
>>> but with LOAD - CALL - DELETE, it is NOT known.
>>> In fact, CALL is not a supervisor action, it is simple machine
>>> instructions (very cheap).
>>> This means that if a module is not RENT and not REUS (for example),
>>> a call using LOAD - CALL - DELETE is not safe, because the system does
>>> not know that
>>> the module is in use. Another subtask can easily call the same module at
>>> the same time,
>>> if it knows the address, and it will never get another copy. You are
>>> responsible yourself
>>> for doing things right.
>>>
>>> With LINK, on the contrary, if the module is not RENT and not REUS, the
>>> system
>>> will ALWAYS fetch a new copy, when you do another LINK.
>>>
>>> (There is a "use count" in the control blocks, which is incremented and
>>> decremented
>>> during LINK processing, but of course not, when doing a CALL).
>>>
>>> Kind regards
>>>
>>> Bernd
>>>
>>>
 Am 05.02.2021 um 18:54 schrieb Frank Swarbrick:
 I am not a systems programmer.  I am a COBOL programmer who knows only 
 enough assembler to be dangerous.
 What is the "difference" between doing a LOAD and a CALL to perform a 
 dynamic call and doing a LINK?

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

Re: Coupling Facility and z/OS SysPlex LPARs moving to new hardware

2021-02-07 Thread Radoslaw Skorupka

W dniu 07.02.2021 o 19:34, Arye Shemer pisze:

Installation I work with is going to move Coupling Facilities and z/OS
LPARs to new hardware.
To best of my recollections after defining the IODFs for the new systems
(z15)
  which should (could) include definitions for old and new systems.system
programmers can rely on system commands to remove CF LPAR and activate the
new one on the new hardware.
At last my question,
is this assumption correct (using System Commands to remove old and
activate new CF LPARs) ?
I do not expect a list of commands, just approval (or not) :-)


First: you can replace any CPC in a sysplex with no disruption. It 
covers both z/OS and CF images.

However there are several assumptions to be met.

In very general:
Put new hardware to the server room and connect channels: z/OS images 
need access to DASD and other devices. CF and z/OS LPARs need sysplex 
links. Detailed sysplex link connectivity need to be planned, however in 
general every z/OS LPAR has to be connected to every CF LPAR. 
Assumption: one sysplex is considered. Reality is usually more complex.
Activate new IODF - it should be modified version of your old IODF with 
addictions of new hardware and channels.
Change logical sysplex definitions (policies, GRS, etc.) - that will 
introduce new logical CF.

Also add new z/OS images to the sysplex. It can be done later.
Now you have a sysplex with old and new CFs.
Then move (rebuild) structures on new CF. As a result you will have new 
CFs in use and old CFs as dummy.
Then you can logically delete old CFs. And then offline the channels and 
deactivate CF LPARs.
For z/OS - you already have new sysplex members on new hardware. Just 
shutdown old members.

Deactivate old z/OS LPARs.
Finally you can power down old hardware.

Very short description of quite long and complex project.

Of course if you can accept outage, the process would be much easier and 
shorter. :-)


HTH

--
Radoslaw Skorupka
(looking for new job)
Lodz, Poland

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread CM Poncelet
Of course. I have never suggested that it was *reasonable* to ENQ/DEQ or
otherwise serialize code in a RENT module, but only that it was
*possible* to do so without compromising an LMOD's RENT attribute.
Likewise, when I said a REFR LMOD could be "swapped out", I meant its
page(s) could be "stolen" by the O/S at any time without its having
first to "back up" the LMOD to a paging dataset or cache. 
 
Michael Stein provided an excellent summary of the meanings of REUS,
RENT and REFR in his "load module search order and attributes" post.
 
I recommended that ASM modules should always be coded as RSECTs (not as
CSECTs) to allow the assembler to trap, whenever possible, any code that
could modify itself. 
 
AFAIR Any LMOD marked "RF" (REFR) will abend S0C4-4 if it modifies
itself during execution.
 
Chris Poncelet (retired sysprog)
 


On 07/02/2021 16:52, Seymour J Metz wrote:
> It's a bit more complicated. First, you can decouple REFR from RENT by using 
> the linkage editor. Second, you can write code that is reentrant and 
> refreshable, modifies itself and does not use ENQ/DEQ. However, I suspect 
> that at some point REFRPR"OT will be mandatory.
>
> BTW, just because it is possible doesn't mean that it is a reasonable thing 
> to do; absent compelling reasons otherwise, I would red flag it in a code 
> review.
>
>
> --
> Shmuel (Seymour J.) Metz
> http://mason.gmu.edu/~smetz3
>
> 
> From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
> CM Poncelet [ponce...@bcs.org.uk]
> Sent: Friday, February 5, 2021 9:57 PM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Re: LINK vs LOAD/CALL
>
> No. RENT implies REUS. Meanwhile RENT *may* be modified IFF an ENQ is
> first issued on the code to be modified, provided that code is then
> restored to what it was before it was ENQ'd and then DEQ'd. Only REFR
> prohibits any code modification (because REFR means that an LMOD can be
> swapped out and refreshed from its original copy on DASD, at any time
> during execution and without interruption) - and REFR implies RENT
> implies REUS, but RENT does not imply REFR.
>
>
>
> On 05/02/2021 20:02, Joseph Reichman wrote:
>> Sorry to jump in here but can you have rent without reus
>>
>>
>>
>>> On Feb 5, 2021, at 2:59 PM, Seymour J Metz  wrote:
>>>
>>> If the module is not REUS then every LOAD will get a different copy. If 
>>> the module is REUS but not RENT then LOAD, ENQ, CALL, DEQ, DELETE is safe. 
>>> Using LOAD, SYNCH, DELETE is left as an excise for the reader. In most 
>>> cases I would use LINK(X).
>>>
>>>
>>> --
>>> Shmuel (Seymour J.) Metz
>>> http://mason.gmu.edu/~smetz3
>>>
>>> 
>>> From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
>>> Bernd Oppolzer [bernd.oppol...@t-online.de]
>>> Sent: Friday, February 5, 2021 1:41 PM
>>> To: IBM-MAIN@LISTSERV.UA.EDU
>>> Subject: Re: LINK vs LOAD/CALL
>>>
>>> I would like to add:
>>>
>>> while LINK is functionally the same as LOAD - CALL - DELETE,
>>> there is an important difference:
>>>
>>> the transfer of control with LINK is known to the operating system,
>>> but with LOAD - CALL - DELETE, it is NOT known.
>>> In fact, CALL is not a supervisor action, it is simple machine
>>> instructions (very cheap).
>>> This means that if a module is not RENT and not REUS (for example),
>>> a call using LOAD - CALL - DELETE is not safe, because the system does
>>> not know that
>>> the module is in use. Another subtask can easily call the same module at
>>> the same time,
>>> if it knows the address, and it will never get another copy. You are
>>> responsible yourself
>>> for doing things right.
>>>
>>> With LINK, on the contrary, if the module is not RENT and not REUS, the
>>> system
>>> will ALWAYS fetch a new copy, when you do another LINK.
>>>
>>> (There is a "use count" in the control blocks, which is incremented and
>>> decremented
>>> during LINK processing, but of course not, when doing a CALL).
>>>
>>> Kind regards
>>>
>>> Bernd
>>>
>>>
 Am 05.02.2021 um 18:54 schrieb Frank Swarbrick:
 I am not a systems programmer.  I am a COBOL programmer who knows only 
 enough assembler to be dangerous.
 What is the "difference" between doing a LOAD and a CALL to perform a 
 dynamic call and doing a LINK?

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

Re: LINK vs LOAD/CALL

2021-02-07 Thread Gibney, Dave
doesn’t matter, by the time the code reaches the branch to address, address is 
a value that will work.

> -Original Message-
> From: IBM Mainframe Discussion List  On
> Behalf Of Paul Gilmartin
> Sent: Sunday, February 07, 2021 2:29 PM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Re: LINK vs LOAD/CALL
> 
> On Sun, 7 Feb 2021 21:32:36 +0200, Binyamin Dissen wrote:
> 
> >On Sun, 7 Feb 2021 19:04:16 + "Gibney, Dave"  wrote:
> >...
> >:>Classic "bad" code
> >:>IF address = 0
> >:>Determine and store address
> >:>End-if
> >:>Branch to address
> >
> Beware TOCTTOU!
> 
> >I guess you can add the case where the value calculated will always calculate
> >to the exact same value, such as an address in the module or the value of a
> >name/token, where if it is not set, check if it exists and restore it.
> >
> The test must be performed on a value loaded in temporary storage
> or a register, and that value used if non-zero; else loop back and
> try again.  (Once may not be enough.  But limit the number of retries.)
> 
> -- gil
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread Paul Gilmartin
On Sun, 7 Feb 2021 17:53:28 +, Seymour J Metz wrote:

>... IMHO a warn option would be highly desirable.
>Why JOB instead of EXEC?
> 
Good suggestion.  How about both; but which dominates?
>
>From: Paul Gilmartin
>Sent: Sunday, February 7, 2021 12:46 PM
>
>REFRPROT should be an opt-in (but not opt-out) option on the JOB
>statement.

--gil

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread Paul Gilmartin
On Sun, 7 Feb 2021 21:32:36 +0200, Binyamin Dissen wrote:

>On Sun, 7 Feb 2021 19:04:16 + "Gibney, Dave"  wrote:
>...
>:>Classic "bad" code
>:>IF address = 0
>:>Determine and store address
>:>End-if
>:>Branch to address
> 
Beware TOCTTOU!

>I guess you can add the case where the value calculated will always calculate
>to the exact same value, such as an address in the module or the value of a
>name/token, where if it is not set, check if it exists and restore it.
> 
The test must be performed on a value loaded in temporary storage
or a register, and that value used if non-zero; else loop back and
try again.  (Once may not be enough.  But limit the number of retries.)

-- gil

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread Binyamin Dissen
On Sun, 7 Feb 2021 19:04:16 + "Gibney, Dave"  wrote:

:>REFR means reloadable without changing function or behavior
:>RENT means multiple users without changing function or behavior,

:>Classic "bad" code
:>IF address = 0
:>Determine and store address
:>End-if
:>Branch to address

:>When refreshed, the address has to be redetermined, but program still works
:>And, RENT only sets it once when first encountered. But, program works the 
same for all callers

:>I didn't write it, but one of our interface routines to Adabas has done this 
for more than 40 years.

Which is similar what I wrote:

"Only possible if it modifies itself but pays no attention to the modified
area"

I guess you can add the case where the value calculated will always calculate
to the exact same value, such as an address in the module or the value of a
name/token, where if it is not set, check if it exists and restore it.

:>> -Original Message-
:>> From: IBM Mainframe Discussion List  On
:>> Behalf Of Binyamin Dissen
:>> Sent: Sunday, February 07, 2021 10:40 AM
:>> To: IBM-MAIN@LISTSERV.UA.EDU
:>> Subject: Re: LINK vs LOAD/CALL
 
:>> On Sun, 7 Feb 2021 16:52:55 + Seymour J Metz 
:>> wrote:
 
:>> :>Second, you can write code that is reentrant and refreshable, modifies
:>> itself ...
 
:>> Only possible if it modifies itself but pays no attention to the modified
:>> area.

:>> Not really relevant.

--
Binyamin Dissen 
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel


Should you use the mailblocks package and expect a response from me,
you should preauthorize the dissensoftware.com domain.

I very rarely bother responding to challenge/response systems,
especially those from irresponsible companies.

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


PRECIS Tape Mapping Program from UNC

2021-02-07 Thread Sam Golob

Dear Folks,

    I just put up an old tape mapping program named PRECIS from "UNC", 
which I presume is the University of North Carolina.  The load module 
was linkedited in 1986, so it is old.  But it works beautifully, the 
report is concise, and it displays the beginning of each data block, 
which most tape mapping programs don't do.  I posted it on File 1004 of 
the CBT Updates page. www.cbttape.org


    I am looking to see if anyone has source code for this program, 
because I try to fix all the tape mapping and tape copying programs to 
read the largest tape block size possible, and in order to do that, I 
have to muck with the I/O.  It is much easier to do that when you have 
source code.


    So if you have source code for the PRECIS tape mapping program, 
please send it to me, and we can have a better product for everyone to 
use. Meanwhile, enjoy it the way it is.


    Below is some sample output from this program.

    Thank you very much.

    All the best of everything to all of you...

Sincerely,    Sam

UNC TAPE PRECIS UTILITY--OPTIONS:  SKIP 000, PROCESS ALL. VOLUME C500MU, 
PAGE 001.


   DATA BLOCK NO. 01: VOL1C500MU SAMGOLOB
EDDFCFFFDE444ECDCDDDC444 

563135004400021476362000 

   DATA BLOCK NO. 02:   HDR1FILE0001 
C500MU00010001  020353 9800IBM OS/VS 370
CCDFCCDC4CFFFDE44FF4CCD4DE6EE4FFF444 

8491693500010350044000100010002035309800924062152037 

   DATA BLOCK NO. 03: HDR2F32728000SBGOLOB1/COPY1   
B 0
CCDFCECCDDDCF6CDDEF444C444F4 

84926327280002276362113678100020 

TAPE MARK NO. 001 ENCOUNTERED AFTER 03 DATA BLOCKS - SMALLEST BLOCK 
READ WAS 00080 BYTES - LARGEST WAS 00080 BYTES.
   DATA BLOCK NO. 01:   //MVSMODS1 JOB 
527TEC000S0003,TEC,CLASS=8,MSGCLASS=5,PRTY=10,   DOC FILE
66DEEDDCEF4DDC4FFFECCFFFE6ECC6CDCEE7F6DECCDCEE7F6DDEE7FF6444CDC4CCDC 

11452464210162052735300020003B353B33122E8B42733122E5B7938E10B00046306935 




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


Re: Coupling Facility and z/OS SysPlex LPARs moving to new hardware

2021-02-07 Thread Jousma, David
You will need to define new cf's along with the existing ones in the cfrm 
policy and activate it before you move.




From: IBM Mainframe Discussion List  on behalf of 
Arye Shemer 
Sent: Sunday, February 7, 2021 1:34:34 PM
To: IBM-MAIN@LISTSERV.UA.EDU 
Subject: Coupling Facility and z/OS SysPlex LPARs moving to new hardware

**CAUTION EXTERNAL EMAIL**

**DO NOT open attachments or click on links from unknown senders or unexpected 
emails**

Installation I work with is going to move Coupling Facilities and z/OS
LPARs to new hardware.
To best of my recollections after defining the IODFs for the new systems
(z15)
 which should (could) include definitions for old and new systems.system
programmers can rely on system commands to remove CF LPAR and activate the
new one on the new hardware.
At last my question,
is this assumption correct (using System Commands to remove old and
activate new CF LPARs) ?
I do not expect a list of commands, just approval (or not) :-)
Thank you,
Arye.

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

**DO NOT open attachments or click on links from unknown senders or unexpected 
emails**
This e-mail transmission contains information that is confidential and may be 
privileged.
It is intended only for the addressee(s) named above. If you receive this 
e-mail in error,
please do not read, copy or disseminate it in any manner.  If you are not the 
intended 
recipient, any disclosure, copying, distribution or use of the contents of this 
information
is prohibited. Please reply to the message immediately by informing the sender 
that the 
message was misdirected. After replying, please erase it from your computer 
system. Your 
assistance in correcting this error is appreciated.




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


Re: LINK vs LOAD/CALL

2021-02-07 Thread Gibney, Dave
REFR means reloadable without changing function or behavior
RENT means multiple users without changing function or behavior,

Classic "bad" code
IF address = 0
Determine and store address
End-if
Branch to address

When refreshed, the address has to be redetermined, but program still works
And, RENT only sets it once when first encountered. But, program works the same 
for all callers

I didn't write it, but one of our interface routines to Adabas has done this 
for more than 40 years.

> -Original Message-
> From: IBM Mainframe Discussion List  On
> Behalf Of Binyamin Dissen
> Sent: Sunday, February 07, 2021 10:40 AM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Re: LINK vs LOAD/CALL
> 
> On Sun, 7 Feb 2021 16:52:55 + Seymour J Metz 
> wrote:
> 
> :>Second, you can write code that is reentrant and refreshable, modifies
> itself ...
> 
> Only possible if it modifies itself but pays no attention to the modified
> area.
> 
> Not really relevant.
> 
> --
> Binyamin Dissen 
> https://urldefense.com/v3/__http://www.dissensoftware.com__;!!JmPEgB
> Y0HMszNaDT!9x6YjT3JlqQJChYD69knAR0J2ywn-
> 9fcR3uB0z9gubfishZVSDaKLLIqS9wLHw$
> 
> Director, Dissen Software, Bar & Grill - Israel
> 
> 
> Should you use the mailblocks package and expect a response from me,
> you should preauthorize the dissensoftware.com domain.
> 
> I very rarely bother responding to challenge/response systems,
> especially those from irresponsible companies.
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

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


Re: Coupling Facility and z/OS SysPlex LPARs moving to new hardware

2021-02-07 Thread Mark Jacobs
Assuming that your active CFRM policy allows structure movement from the old CF 
LPAR(s) to the new, then yes.

Mark Jacobs

Sent from ProtonMail, Swiss-based encrypted email.

GPG Public Key - 
https://api.protonmail.ch/pks/lookup?op=get=markjac...@protonmail.com

‐‐‐ Original Message ‐‐‐

On Sunday, February 7th, 2021 at 1:34 PM, Arye Shemer  
wrote:

> Installation I work with is going to move Coupling Facilities and z/OS
>
> LPARs to new hardware.
>
> To best of my recollections after defining the IODFs for the new systems
>
> (z15)
>
> which should (could) include definitions for old and new systems.system
>
> programmers can rely on system commands to remove CF LPAR and activate the
>
> new one on the new hardware.
>
> At last my question,
>
> is this assumption correct (using System Commands to remove old and
>
> activate new CF LPARs) ?
>
> I do not expect a list of commands, just approval (or not) :-)
>
> Thank you,
>
> Arye.
>
> ---
>
> For IBM-MAIN subscribe / signoff / archive access instructions,
>
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread Binyamin Dissen
On Sun, 7 Feb 2021 16:52:55 + Seymour J Metz  wrote:

:>Second, you can write code that is reentrant and refreshable, modifies itself 
...

Only possible if it modifies itself but pays no attention to the modified
area.

Not really relevant.

--
Binyamin Dissen 
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel


Should you use the mailblocks package and expect a response from me,
you should preauthorize the dissensoftware.com domain.

I very rarely bother responding to challenge/response systems,
especially those from irresponsible companies.

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


Coupling Facility and z/OS SysPlex LPARs moving to new hardware

2021-02-07 Thread Arye Shemer
Installation I work with is going to move Coupling Facilities and z/OS
LPARs to new hardware.
To best of my recollections after defining the IODFs for the new systems
(z15)
 which should (could) include definitions for old and new systems.system
programmers can rely on system commands to remove CF LPAR and activate the
new one on the new hardware.
At last my question,
is this assumption correct (using System Commands to remove old and
activate new CF LPARs) ?
I do not expect a list of commands, just approval (or not) :-)
Thank you,
Arye.

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread Seymour J Metz
No, but IMHO a warn option would be highly desirable.

Why JOB instead of EXEC?


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Paul Gilmartin [000433f07816-dmarc-requ...@listserv.ua.edu]
Sent: Sunday, February 7, 2021 12:46 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: LINK vs LOAD/CALL

On Sun, 7 Feb 2021 16:52:55 +, Seymour J Metz  wrote:

>..., I suspect that at some point REFRPR"OT will be mandatory.
>
The effect of REFRPROT has long been enforced for modules loaded
from APF libraries.  IBM suspects that there are so many dusty-deck
modules incorrectly marked REFR in non-APF libraries that REFRPROT
would be catastrophic.  Does REFRPROT have a "warn" setting?

REFRPROT should be an opt-in (but not opt-out) option on the JOB
statement.

-- gil

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

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread Paul Gilmartin
On Sun, 7 Feb 2021 16:52:55 +, Seymour J Metz  wrote:

>..., I suspect that at some point REFRPR"OT will be mandatory.
>
The effect of REFRPROT has long been enforced for modules loaded
from APF libraries.  IBM suspects that there are so many dusty-deck
modules incorrectly marked REFR in non-APF libraries that REFRPROT
would be catastrophic.  Does REFRPROT have a "warn" setting?

REFRPROT should be an opt-in (but not opt-out) option on the JOB
statement.

-- gil

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


Re: LINK vs LOAD/CALL

2021-02-07 Thread Seymour J Metz
It's a bit more complicated. First, you can decouple REFR from RENT by using 
the linkage editor. Second, you can write code that is reentrant and 
refreshable, modifies itself and does not use ENQ/DEQ. However, I suspect that 
at some point REFRPR"OT will be mandatory.

BTW, just because it is possible doesn't mean that it is a reasonable thing to 
do; absent compelling reasons otherwise, I would red flag it in a code review.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of CM 
Poncelet [ponce...@bcs.org.uk]
Sent: Friday, February 5, 2021 9:57 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: LINK vs LOAD/CALL

No. RENT implies REUS. Meanwhile RENT *may* be modified IFF an ENQ is
first issued on the code to be modified, provided that code is then
restored to what it was before it was ENQ'd and then DEQ'd. Only REFR
prohibits any code modification (because REFR means that an LMOD can be
swapped out and refreshed from its original copy on DASD, at any time
during execution and without interruption) - and REFR implies RENT
implies REUS, but RENT does not imply REFR.



On 05/02/2021 20:02, Joseph Reichman wrote:
> Sorry to jump in here but can you have rent without reus
>
>
>
>> On Feb 5, 2021, at 2:59 PM, Seymour J Metz  wrote:
>>
>> If the module is not REUS then every LOAD will get a different copy. If the 
>> module is REUS but not RENT then LOAD, ENQ, CALL, DEQ, DELETE is safe. Using 
>> LOAD, SYNCH, DELETE is left as an excise for the reader. In most cases I 
>> would use LINK(X).
>>
>>
>> --
>> Shmuel (Seymour J.) Metz
>> http://mason.gmu.edu/~smetz3
>>
>> 
>> From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
>> Bernd Oppolzer [bernd.oppol...@t-online.de]
>> Sent: Friday, February 5, 2021 1:41 PM
>> To: IBM-MAIN@LISTSERV.UA.EDU
>> Subject: Re: LINK vs LOAD/CALL
>>
>> I would like to add:
>>
>> while LINK is functionally the same as LOAD - CALL - DELETE,
>> there is an important difference:
>>
>> the transfer of control with LINK is known to the operating system,
>> but with LOAD - CALL - DELETE, it is NOT known.
>> In fact, CALL is not a supervisor action, it is simple machine
>> instructions (very cheap).
>> This means that if a module is not RENT and not REUS (for example),
>> a call using LOAD - CALL - DELETE is not safe, because the system does
>> not know that
>> the module is in use. Another subtask can easily call the same module at
>> the same time,
>> if it knows the address, and it will never get another copy. You are
>> responsible yourself
>> for doing things right.
>>
>> With LINK, on the contrary, if the module is not RENT and not REUS, the
>> system
>> will ALWAYS fetch a new copy, when you do another LINK.
>>
>> (There is a "use count" in the control blocks, which is incremented and
>> decremented
>> during LINK processing, but of course not, when doing a CALL).
>>
>> Kind regards
>>
>> Bernd
>>
>>
>>> Am 05.02.2021 um 18:54 schrieb Frank Swarbrick:
>>> I am not a systems programmer.  I am a COBOL programmer who knows only 
>>> enough assembler to be dangerous.
>>> What is the "difference" between doing a LOAD and a CALL to perform a 
>>> dynamic call and doing a LINK?
>>>
>>> --
>>> For IBM-MAIN subscribe / signoff / archive access instructions,
>>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>> --
>> For IBM-MAIN subscribe / signoff / archive access instructions,
>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>>
>> --
>> For IBM-MAIN subscribe / signoff / archive access instructions,
>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> .
>

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

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


Re: load module search order and attributes

2021-02-07 Thread Seymour J Metz
It is possible to write a module that is refreshable but not read only. 
However, it will fail once you turn on REFRPROT, and is bad form even if you 
don't.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Michael Stein [m...@zlvfc.com]
Sent: Saturday, February 6, 2021 1:09 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: load module search order and attributes

On Fri, Feb 05, 2021 at 03:53:17PM -0500, Joseph Reichman wrote:
> I opened a dcb load library with the same load mod name as the first
> Did an attach DCB= TASKLIB=
>
> Didn’t pick it up from there as the module from the first load lib
> with same name was linked REUS

It helps to know where to look things up:

 ** module reusability

 z/OS Version 2 Release 3
 MVS Program Management: User's Guide and Reference
 SA23-1393-30
 ieab100_v2r3.pdf

see pdf page 48, page 28

 nonreusable:
single use only, need a new copy if used (or in use)

 serially reusable:
only a single use at a time, later requestors need to wait for use
to complete {ATTACH/LINK/XCTL/SVC 3-exit keep track of module
in use status, note that when using LOAD/CALL/DELETE the system
doesn't t known when you call or return from the  module}

{In the case of the system keeping track of the module use, it
 may delay start of an execution until the current use is complete}

 reenterable (reentrant):
concurent execution by multiple tasks.  If modifies it's own
data areas it must do it's own serialization.

 refreshable:
all or part of the module can be replaced at any time without notice
by the operating system.  *therefore* must not modify itself in
any way.

  {** beware **
some module attributes and authority levels force modules to
beloaded into different key storage and/or protected storage.
This may affect fetch access too}

 Linkage editor processing of attributes:
refer rent reus are all treated as separate attributes

 Binder
only a single attribute and implies/overrides lower attributes
refer > rent > reus > none  {guess, doesn't explicitly say}

** module search order

 z/OS Version 2 Release 3
 MVS Programming: Assembler Services Guide
 SA23-1368-30
 ieaa600_v2r3.pdf

see pdf page 69, page 43

The search for a load module:

  - requesting tasks' load list
  - job pack area
  - requesting task's task library (and up parent tree of tasklibs)
  - steplib
  - link pack area
  - link library

  {I think of joblib/steplib as a tasklib set by the attacher of the
  job step task...}

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

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