Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Paul Gilmartin

On 10/18/23 13:03:27, Dave Clark wrote:


 All I know is that is what my Notes client generates for replies
with an internet-style history.  Apparently, Notes sees your post as
coming from the list rather than from you.  Sorry.;-)


'Way back, RFC 822 specified tie From: and Sender: headers.  Alas,
too many LISTSERVs and MUAs proudly break the rules.

--
gil


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Dave Clark
"IBM Mainframe Assembler List"  wrote on 
10/18/2023 02:53:47 PM:
> (Why's there no "Jeremy Nicoll ... wrote" attribution line above?  I was 

> going to trim more of the old stuff away, above, and noticed it didn't
> make sense.) 


All I know is that is what my Notes client generates for replies 
with an internet-style history.  Apparently, Notes sees your post as 
coming from the list rather than from you.  Sorry.;-)


Sincerely,

Dave Clark
-- 
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331





*
This email message and any attachments is for use only by the named 
addressee(s) and may contain confidential, privileged and/or proprietary 
information. If you have received this message in error, please 
immediately notify the sender and delete and destroy the message and all 
copies. All unauthorized direct or indirect use or disclosure of this 
message is strictly prohibited. No right to confidentiality or privilege 
is waived or lost by any error in transmission. 
*


Re: [EXTERNAL SENDER] Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Jeremy Nicoll
On Wed, 18 Oct 2023, at 19:39, Dave Clark wrote:
> "IBM Mainframe Assembler List"  wrote on 
> 10/18/2023 02:35:40 PM:
>> On Wed, 18 Oct 2023, at 19:09, Dave Clark wrote:
>> > However, the following is the solution I'm actually going with.
>> 
>> > LAR0,SHVPARM1 GET ADDRESS OF PARM 1 
>> > LAR1,SHVPARM2 GET ADDRESS OF PARM 2 
>> > LAR2,SHVPARM2 GET ADDRESS OF PARM 3 
>> 
>> Is that second reference to "SHVPARM2" just a typo?
>
>
> No, the documentation says the 2nd and 3rd parameters should be 
> the same address.  Don't know why but I don't question it.   ;-)

(Why's there no "Jeremy Nicoll ... wrote" attribution line above?  I was 
going to trim more of the old stuff away, above, and noticed it didn't
make sense.) 

I might then have written:

LAR2,SHVPARM2 NB PARM 3 SHOULD BE SAME AS PARM 2

to reduce risk that in future someone else "corrects" the code.  But maybe
you've documented that somewhere else?

-- 
Jeremy Nicoll - my opinions are my own.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Dave Clark
"IBM Mainframe Assembler List"  wrote on 
10/18/2023 02:48:17 PM:
> The "DS" defines storage, but does not init the content.
> On 10/18/2023 2:27 PM, Farley, Peter wrote:
> > That’s even more clever than my suggestion!  But I would use DS 
> > instead of DC.  All you really want is the alignment after all,
> > not any actual storage.


Yes, the following are interchangeable because of the 0 
duplication factor.  But, I, too would prefer to see DS rather than DC. 
;-)

DC   0H
DS   0H


Sincerely,

Dave Clark
-- 
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331





*
This email message and any attachments is for use only by the named 
addressee(s) and may contain confidential, privileged and/or proprietary 
information. If you have received this message in error, please 
immediately notify the sender and delete and destroy the message and all 
copies. All unauthorized direct or indirect use or disclosure of this 
message is strictly prohibited. No right to confidentiality or privilege 
is waived or lost by any error in transmission. 
*


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Steve Thompson

The "DS" defines storage, but does not init the content.

Steve Thompson

On 10/18/2023 2:27 PM, Farley, Peter wrote:

That’s even more clever than my suggestion!  But I would use DS instead of DC.  
All you really want is the alignment after all, not any actual storage.

Peter

From: IBM Mainframe Assembler List  On Behalf 
Of Steve Smith
Sent: Wednesday, October 18, 2023 2:22 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Variable-Length Parameter List Attributes


You can actually set LINKINST=DC,LINKOP=0H if you really like clever.



sas



On Wed, Oct 18, 2023 at 1:37 PM Ed Jaffe 
mailto:edja...@phoenixsoftware.com>>

wrote:




On 10/18/2023 10:14 AM, Farley, Peter wrote:

Build the parameter list once using this form:
   CALL  (15),(PARM1,PARM2,PARM2,BLOCK,PARM5),VL,MF=(E,PARMB),   X
 LINKINST=NOPR,LINKOP='0'

Nice!
I remember when LINKINST was added (and have used it for both BASR and
BASSM).
Never thought to set it to a NOPR...

--

This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.


Re: [EXTERNAL SENDER] Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Dave Clark
"IBM Mainframe Assembler List"  wrote on 
10/18/2023 02:35:40 PM:
> On Wed, 18 Oct 2023, at 19:09, Dave Clark wrote:
> > However, the following is the solution I'm actually going with.
> 
> > LAR0,SHVPARM1 GET ADDRESS OF PARM 1 
> > LAR1,SHVPARM2 GET ADDRESS OF PARM 2 
> > LAR2,SHVPARM2 GET ADDRESS OF PARM 3 
> 
> Is that second reference to "SHVPARM2" just a typo?


No, the documentation says the 2nd and 3rd parameters should be 
the same address.  Don't know why but I don't question it.   ;-)


Sincerely,

Dave Clark
-- 
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331





*
This email message and any attachments is for use only by the named 
addressee(s) and may contain confidential, privileged and/or proprietary 
information. If you have received this message in error, please 
immediately notify the sender and delete and destroy the message and all 
copies. All unauthorized direct or indirect use or disclosure of this 
message is strictly prohibited. No right to confidentiality or privilege 
is waived or lost by any error in transmission. 
*


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Jeremy Nicoll
On Wed, 18 Oct 2023, at 19:09, Dave Clark wrote:
> However, the following is the solution I'm actually going with.

> LAR0,SHVPARM1 GET ADDRESS OF PARM 1 
> LAR1,SHVPARM2 GET ADDRESS OF PARM 2 
> LAR2,SHVPARM2 GET ADDRESS OF PARM 3 

Is that second reference to "SHVPARM2" just a typo?

-- 
Jeremy Nicoll - my opinions are my own.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Farley, Peter
That’s even more clever than my suggestion!  But I would use DS instead of DC.  
All you really want is the alignment after all, not any actual storage.

Peter

From: IBM Mainframe Assembler List  On Behalf 
Of Steve Smith
Sent: Wednesday, October 18, 2023 2:22 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Variable-Length Parameter List Attributes


You can actually set LINKINST=DC,LINKOP=0H if you really like clever.



sas



On Wed, Oct 18, 2023 at 1:37 PM Ed Jaffe 
mailto:edja...@phoenixsoftware.com>>

wrote:



> On 10/18/2023 10:14 AM, Farley, Peter wrote:

> > Build the parameter list once using this form:

> >

> >   CALL  (15),(PARM1,PARM2,PARM2,BLOCK,PARM5),VL,MF=(E,PARMB),   X

> > LINKINST=NOPR,LINKOP='0'

>

> Nice!

>

> I remember when LINKINST was added (and have used it for both BASR and

> BASSM).

>

> Never thought to set it to a NOPR...

>

--

This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Steve Smith
You can actually set LINKINST=DC,LINKOP=0H if you really like clever.

sas

On Wed, Oct 18, 2023 at 1:37 PM Ed Jaffe 
wrote:

> On 10/18/2023 10:14 AM, Farley, Peter wrote:
> > Build the parameter list once using this form:
> >
> >   CALL  (15),(PARM1,PARM2,PARM2,BLOCK,PARM5),VL,MF=(E,PARMB),   X
> > LINKINST=NOPR,LINKOP='0'
>
> Nice!
>
> I remember when LINKINST was added (and have used it for both BASR and
> BASSM).
>
> Never thought to set it to a NOPR...
>
>


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Dave Clark
"IBM Mainframe Assembler List"  wrote on 
10/18/2023 01:56:58 PM:
> On 10/18/23 11:49:12, Dave Clark wrote:
> > ...
> >  The z/VSE CALL macro does not have those last two keywords. 
But,
> > I can just code ORG *-2 after the CALL to accomplish the same thing.
> > Thanks.
> >
> ORG or B into code generated by a macro whose source you don't
> control is genuinely dangerous.


Understood and I'm actually not going to use that method -- just 
thought it would be acceptable in this situation, only.  However, the 
following is the solution I'm actually going with.


SHVPARMB DS5F
SHVPLAST EQU   *-4


LAR0,SHVPARM1 GET ADDRESS OF PARM 1 
LAR1,SHVPARM2 GET ADDRESS OF PARM 2 
LAR2,SHVPARM2 GET ADDRESS OF PARM 3 
LAR3,SHVBLOCK GET ADDRESS OF PARM 4 
STM   R0,R3,SHVPARMB  PUT IN PARM BLOCK 
STR5,SHVPLAST PUT ADDRESS OF ENV. IN PARM BLOCK
OISHVPLAST,X'80'  FLAG LAST PARM IN THE BLOCK


Sincerely,

Dave Clark
-- 
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331




*
This email message and any attachments is for use only by the named 
addressee(s) and may contain confidential, privileged and/or proprietary 
information. If you have received this message in error, please 
immediately notify the sender and delete and destroy the message and all 
copies. All unauthorized direct or indirect use or disclosure of this 
message is strictly prohibited. No right to confidentiality or privilege 
is waived or lost by any error in transmission. 
*


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Farley, Peter
Sounds like an RFE to the new VSEn owners is in order: “Please support LINKINST 
and LINKOP parameters to the CALL macro like z/OS CALL”.

Hopefully they aren’t as reluctant or developer-resource-poor as IBM is about 
making useful enhancements.

Peter

From: IBM Mainframe Assembler List  On Behalf 
Of Dave Clark
Sent: Wednesday, October 18, 2023 1:49 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Variable-Length Parameter List Attributes


"IBM Mainframe Assembler List" 
mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU>> wrote 
on

10/18/2023 01:14:13 PM:

> Build the parameter list once using this form:

>

>  CALL  (15),(PARM1,PARM2,PARM2,BLOCK,PARM5),VL,MF=(E,PARMB),   X

>LINKINST=NOPR,LINKOP='0'





The z/VSE CALL macro does not have those last two keywords.  But,

I can just code ORG *-2 after the CALL to accomplish the same thing.

Thanks.





Sincerely,



Dave Clark

--

This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Paul Gilmartin

On 10/18/23 11:49:12, Dave Clark wrote:

...
 The z/VSE CALL macro does not have those last two keywords.  But,
I can just code ORG *-2 after the CALL to accomplish the same thing.
Thanks.


ORG or B into code generated by a macro whose source you don't
control is genuinely dangerous.

--
gil


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Dave Clark
"IBM Mainframe Assembler List"  wrote on 
10/18/2023 01:14:13 PM:
> Build the parameter list once using this form:
> 
>  CALL  (15),(PARM1,PARM2,PARM2,BLOCK,PARM5),VL,MF=(E,PARMB),   X
>LINKINST=NOPR,LINKOP='0'


The z/VSE CALL macro does not have those last two keywords.  But, 
I can just code ORG *-2 after the CALL to accomplish the same thing. 
Thanks.


Sincerely,

Dave Clark
-- 
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331




*
This email message and any attachments is for use only by the named 
addressee(s) and may contain confidential, privileged and/or proprietary 
information. If you have received this message in error, please 
immediately notify the sender and delete and destroy the message and all 
copies. All unauthorized direct or indirect use or disclosure of this 
message is strictly prohibited. No right to confidentiality or privilege 
is waived or lost by any error in transmission. 
*


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Ed Jaffe

On 10/18/2023 10:14 AM, Farley, Peter wrote:

Build the parameter list once using this form:

  CALL  (15),(PARM1,PARM2,PARM2,BLOCK,PARM5),VL,MF=(E,PARMB),   X
LINKINST=NOPR,LINKOP='0'


Nice!

I remember when LINKINST was added (and have used it for both BASR and 
BASSM).


Never thought to set it to a NOPR...

--
Phoenix Software International
Edward E. Jaffe
831 Parkview Drive North
El Segundo, CA 90245
https://www.phoenixsoftware.com/



This e-mail message, including any attachments, appended messages and the
information contained therein, is for the sole use of the intended
recipient(s). If you are not an intended recipient or have otherwise
received this email message in error, any use, dissemination, distribution,
review, storage or copying of this e-mail message and the information
contained therein is strictly prohibited. If you are not an intended
recipient, please contact the sender by reply e-mail and destroy all copies
of this email message and do not otherwise utilize or retain this email
message or any or all of the information contained therein. Although this
email message and any attachments or appended messages are believed to be
free of any virus or other defect that might affect any computer system into
which it is received and opened, it is the responsibility of the recipient
to ensure that it is virus free and no responsibility is accepted by the
sender for any loss or damage arising in any way from its opening or use.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Tony Harminc
On Wed, 18 Oct 2023 at 13:12, Seymour J Metz  wrote:

> Yes. I was going to suggest N' but I looked it up and it's not valid on
> ordinary symbols.
>

Maybe this calls (heh) for a new attribute - perhaps R' to fetch the
duplication factor. In conditional assembly this would presumably fetch the
dup factor of the (required) underlying ordinary symbol. But all this stuff
is so fragile that I can't think anyone's going to want to fiddle around
with it in HLASM.

Tony H.

___

> From: IBM Mainframe Assembler List  on
> behalf of Dave Clark 
> Sent: Wednesday, October 18, 2023 1:08 PM
> To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
> Subject: Re: Variable-Length Parameter List Attributes
>
> "IBM Mainframe Assembler List"  wrote on
> 10/18/2023 01:04:43 PM:
> > I would use CALL MF=E but you can always define a label for the OI
> > into the last word of the list.
>
>
> OK, so you're suggesting the following?  ...and there isn't an
> attribute to retrieve the replication factor?
>
> SHVPARMB DS5F
> SHVPLAST EQU   *-4
>
>
> OISHVPLAST,X'80'
>
>
> Sincerely,
>
> Dave Clark
>


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Bill Hitefield
Dave,
Are you trying to set/define the X'80' bit as part of the SHVPARMB definition? 
Or are you trying to use the assembler to tell you the byte an OI should target?

If the former, you can do either of the following, keeping in mind you would 
need to be sure you do not negate the X'80' when you populate the list.

SHVPARMB DC A(0,0,0,0,0+X'8000)

If the latter, your example using SHVPLAST is what I have done at times. I have 
also done the following:

SHVPARMB DS  5AParameter storage
SHVPLGTH EQU *-SHVPARMBParameter storage length

... populate the parameters.

   OI  SHVPARMB+SHVPLGTH-4,X'80'

  The nice thing about using the length as the EQU is you can use it 
elsewhere (the only thing about this approach is SHVPLGTH must be defined 
before SAVEPARM):

  SAVEPARM DS  0FParameter save area
   ORG SAVEPARM+SHVPLGTH
   DC   ... continue with other data areas.

   MVC SAVEPARM(SHVPLGTH),SHVPARMB

Bill Hitefield

> -Original Message-
> From: IBM Mainframe Assembler List 
> On Behalf Of Dave Clark
> Sent: Wednesday, October 18, 2023 1:09 PM
> To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
> Subject: Re: Variable-Length Parameter List Attributes
>
> "IBM Mainframe Assembler List" 
> mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU>>
> wrote on
> 10/18/2023 01:04:43 PM:
> > I would use CALL MF=E but you can always define a label for the OI
> > into the last word of the list.
>
>
> OK, so you're suggesting the following?  ...and there isn't an 
> attribute to
> retrieve the replication factor?
>
> SHVPARMB DS5F
> SHVPLAST EQU   *-4
>
>
> OISHVPLAST,X'80'
>
>
> Sincerely,
>
> Dave Clark
> --
> int.ext: 91078
> direct: (937) 531-6378
> home: (937) 751-3300
>
> Winsupply Group Services
> 3110 Kettering Boulevard
> Dayton, Ohio  45439  USA
> (937) 294-5331
>
>
>
>
>
> 
> *
> This email message and any attachments is for use only by the named
> addressee(s) and may contain confidential, privileged and/or proprietary
> information. If you have received this message in error, please immediately
> notify the sender and delete and destroy the message and all copies. All
> unauthorized direct or indirect use or disclosure of this message is strictly
> prohibited. No right to confidentiality or privilege is waived or lost by any
> error in transmission.
> 
> *


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Tom Harper
I’m betting you would not see any difference in performance. Modern z machines 
will likely execute most of those instructions in parallel since there are no 
dependencies after the first LA. 

However, if you’re still concerned, I would code it this way: 

> L R15,ARXEXCOM
> CALL  (15),(SHVPARM1,SHVPARM2,SHVPARM2,SHVBLOCK,SHVPARM5),X
>  MF=(E,SHVPARMB)
> DS0H
> LA1,SHVPARMB
> LA0,SHVPARM1
> ST0,0(0,1) 
> LA0,SHVPARM2
> ST0,4(0,1) 
> LA0,SHVPARM2
> ST0,8(0,1) 
> LA0,SHVBLOCK
> ST0,12(0,1) 
> LA0,SHVPARM5
> ST0,16(0,1) 
> OI16(1),X'80
> BALR  14,15 
  ORG-2 Back up over the BALR

For building your CALL list, and then use

> LAR1,SHVPARMB 
> L R15,ARXEXCOM
> BALR  R14,R15 

For subsequent invocations. 

Tom Harper

Phoenix Software International 

Sent from my iPhone

> On Oct 18, 2023, at 12:48 PM, Dave Clark  wrote:
> 
> "IBM Mainframe Assembler List"  wrote on 
> 10/18/2023 12:15:12 PM:
>> Execute version of the CALL macro with MF=(E,parm_area_name) can fix 
> that.
> 
> 
>Well, the other issue is performance.  I potentially call this 
> program hundreds of times.  So, I can build the parameter list just once 
> and call it as follows:
> 
> LAR1,SHVPARMB 
> L R15,ARXEXCOM
> BALR  R14,R15 
> 
>Or I can call it as follows -- much less desireable.  Note that 
> the program address is not supplied by a V-con but by an external program 
> vector list from REXX.  That is why I have to preload R15 rather than 
> puting it in the CALL statement.  But, I still wouldn't want a V-con 
> inserted into the middle of my instructions by the CALL with a branch 
> around it.
> 
> L R15,ARXEXCOM
> CALL  (15),(SHVPARM1,SHVPARM2,SHVPARM2,SHVBLOCK,SHVPARM5),X
>  MF=(E,SHVPARMB)
> DS0H
> LA1,SHVPARMB
> LA0,SHVPARM1
> ST0,0(0,1) 
> LA0,SHVPARM2
> ST0,4(0,1) 
> LA0,SHVPARM2
> ST0,8(0,1) 
> LA0,SHVBLOCK
> ST0,12(0,1) 
> LA0,SHVPARM5
> ST0,16(0,1) 
> OI16(1),X'80
> BALR  14,15 
> 
> 
> Sincerely,
> 
> Dave Clark
> -- 
> int.ext: 91078
> direct: (937) 531-6378
> home: (937) 751-3300
> 
> Winsupply Group Services
> 3110 Kettering Boulevard
> Dayton, Ohio  45439  USA
> (937) 294-5331
> 
> 
> 
> 
> 
> *
> This email message and any attachments is for use only by the named 
> addressee(s) and may contain confidential, privileged and/or proprietary 
> information. If you have received this message in error, please 
> immediately notify the sender and delete and destroy the message and all 
> copies. All unauthorized direct or indirect use or disclosure of this 
> message is strictly prohibited. No right to confidentiality or privilege 
> is waived or lost by any error in transmission. 
> *



This e-mail message, including any attachments, appended messages and the
information contained therein, is for the sole use of the intended
recipient(s). If you are not an intended recipient or have otherwise
received this email message in error, any use, dissemination, distribution,
review, storage or copying of this e-mail message and the information
contained therein is strictly prohibited. If you are not an intended
recipient, please contact the sender by reply e-mail and destroy all copies
of this email message and do not otherwise utilize or retain this email
message or any or all of the information contained therein. Although this
email message and any attachments or appended messages are believed to be
free of any virus or other defect that might affect any computer system into
which it is received and opened, it is the responsibility of the recipient
to ensure that it is virus free and no responsibility is accepted by the
sender for any loss or damage arising in any way from its opening or use.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Tony Harminc
On Wed, 18 Oct 2023 at 13:11, Ed Jaffe  wrote:

> On 10/18/2023 9:48 AM, Dave Clark wrote:
> >
> >  Well, the other issue is performance.  I potentially call this
> > program hundreds of times.  So, I can build the parameter list just once
>
> I have used CALL to build a parameter list and do nothing else in a
> manner similar to:
>
> CALL (15),(parm1,parm2,...parmn),VL,MF=(E,plist)
> ORG   *-2
> .
> . (continue on -- no call is performed)
>

CALL actually has two keyword operands to control what link instruction is
generated - LINKINST and LINKOP. So you could presumably add LINKINST=NOPR,
and LINKOP=0 or the like. Just so you aren't assuming that CALL is always
generating a BALR 14,15 as the very last instruction. Or to be perverse,
LINKINST=ORG,LINKOP=*-2 . :-)

Tony H.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Farley, Peter
Build the parameter list once using this form:

 CALL  (15),(PARM1,PARM2,PARM2,BLOCK,PARM5),VL,MF=(E,PARMB),   X
   LINKINST=NOPR,LINKOP='0'

Which generates this code:

+ DS0H
+ LA1,PARMB   LOAD PARAMETER REG 1
+ LA0,PARM1PICKUP  PARAMETER
+ ST0,0(0,1)  STORE INTO PARAM. LIST
+ LA0,PARM2PICKUP  PARAMETER
+ ST0,4(0,1)  STORE INTO PARAM. LIST
+ LA0,PARM2PICKUP  PARAMETER
+ ST0,8(0,1)  STORE INTO PARAM. LIST
+ LA0,BLOCKPICKUP  PARAMETER
+ ST0,12(0,1) STORE INTO PARAM. LIST
+ LA0,PARM5PICKUP  PARAMETER
+ ST0,16(0,1) STORE INTO PARAM. LIST
+ OI16(1),X'80'SET LAST WORD BIT ON @G860P40
+ NOPR  0

The only extra cost is the “NOPR 0” at the end, but since you do it only once 
that shouldn’t be an issue.

Then you can use your 3-instruction sequence to actually do the CALL as many 
times as you need.

Peter

From: IBM Mainframe Assembler List  On Behalf 
Of Dave Clark
Sent: Wednesday, October 18, 2023 12:48 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Variable-Length Parameter List Attributes


"IBM Mainframe Assembler List" 
mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU>> wrote 
on

10/18/2023 12:15:12 PM:

> Execute version of the CALL macro with MF=(E,parm_area_name) can fix

that.





Well, the other issue is performance.  I potentially call this

program hundreds of times.  So, I can build the parameter list just once

and call it as follows:



LAR1,SHVPARMB

L R15,ARXEXCOM

BALR  R14,R15



Or I can call it as follows -- much less desireable.  Note that

the program address is not supplied by a V-con but by an external program

vector list from REXX.  That is why I have to preload R15 rather than

puting it in the CALL statement.  But, I still wouldn't want a V-con

inserted into the middle of my instructions by the CALL with a branch

around it.



L R15,ARXEXCOM

CALL  (15),(SHVPARM1,SHVPARM2,SHVPARM2,SHVBLOCK,SHVPARM5),X

  MF=(E,SHVPARMB)

DS0H

LA1,SHVPARMB

LA0,SHVPARM1

ST0,0(0,1)

LA0,SHVPARM2

ST0,4(0,1)

LA0,SHVPARM2

ST0,8(0,1)

LA0,SHVBLOCK

ST0,12(0,1)

LA0,SHVPARM5

ST0,16(0,1)

OI16(1),X'80

BALR  14,15





Sincerely,



Dave Clark

--

This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Seymour J Metz
Yes. I was going to suggest N' but I looked it up and it's not valid on 
ordinary symbols.

-- 
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי




From: IBM Mainframe Assembler List  on behalf 
of Dave Clark 
Sent: Wednesday, October 18, 2023 1:08 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Variable-Length Parameter List Attributes

"IBM Mainframe Assembler List"  wrote on
10/18/2023 01:04:43 PM:
> I would use CALL MF=E but you can always define a label for the OI
> into the last word of the list.


OK, so you're suggesting the following?  ...and there isn't an
attribute to retrieve the replication factor?

SHVPARMB DS5F
SHVPLAST EQU   *-4


OISHVPLAST,X'80'


Sincerely,

Dave Clark
--
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331





*
This email message and any attachments is for use only by the named
addressee(s) and may contain confidential, privileged and/or proprietary
information. If you have received this message in error, please
immediately notify the sender and delete and destroy the message and all
copies. All unauthorized direct or indirect use or disclosure of this
message is strictly prohibited. No right to confidentiality or privilege
is waived or lost by any error in transmission.
*


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Tony Harminc
On Wed, 18 Oct 2023 at 12:48, Dave Clark  wrote:

> [...]
> Well, the other issue is performance.  I potentially call this
> program hundreds of times.  So, I can build the parameter list just once
> and call it as follows:
>
> LAR1,SHVPARMB
> L R15,ARXEXCOM
> BALR  R14,R15
>
> Or I can call it as follows -- much less desireable.  Note that
> the program address is not supplied by a V-con but by an external program
> vector list from REXX.  That is why I have to preload R15 rather than
> puting it in the CALL statement.  But, I still wouldn't want a V-con
> inserted into the middle of my instructions by the CALL with a branch
> around it.
>
> L R15,ARXEXCOM
> CALL  (15),(SHVPARM1,SHVPARM2,SHVPARM2,SHVBLOCK,SHVPARM5),X
>   MF=(E,SHVPARMB)
> DS0H
> LA1,SHVPARMB
> LA0,SHVPARM1
> ST0,0(0,1)
> LA0,SHVPARM2
> ST0,4(0,1)
> LA0,SHVPARM2
> ST0,8(0,1)
> LA0,SHVBLOCK
> ST0,12(0,1)
> LA0,SHVPARM5
> ST0,16(0,1)
> OI16(1),X'80
> BALR  14,15
>

The CALL macro is smart enough to load the addresses into some range of
R14-R1, and then issue an STM to put up to four values into the arg list.
If there are more than four then it starts over.

Tony H.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Ed Jaffe

On 10/18/2023 9:48 AM, Dave Clark wrote:


 Well, the other issue is performance.  I potentially call this
program hundreds of times.  So, I can build the parameter list just once


I have used CALL to build a parameter list and do nothing else in a 
manner similar to:


CALL (15),(parm1,parm2,...parmn),VL,MF=(E,plist)
ORG   *-2
.
. (continue on -- no call is performed)
.

--
Phoenix Software International
Edward E. Jaffe
831 Parkview Drive North
El Segundo, CA 90245
https://www.phoenixsoftware.com/



This e-mail message, including any attachments, appended messages and the
information contained therein, is for the sole use of the intended
recipient(s). If you are not an intended recipient or have otherwise
received this email message in error, any use, dissemination, distribution,
review, storage or copying of this e-mail message and the information
contained therein is strictly prohibited. If you are not an intended
recipient, please contact the sender by reply e-mail and destroy all copies
of this email message and do not otherwise utilize or retain this email
message or any or all of the information contained therein. Although this
email message and any attachments or appended messages are believed to be
free of any virus or other defect that might affect any computer system into
which it is received and opened, it is the responsibility of the recipient
to ensure that it is virus free and no responsibility is accepted by the
sender for any loss or damage arising in any way from its opening or use.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Dave Clark
"IBM Mainframe Assembler List"  wrote on 
10/18/2023 01:04:43 PM:
> I would use CALL MF=E but you can always define a label for the OI 
> into the last word of the list.


OK, so you're suggesting the following?  ...and there isn't an 
attribute to retrieve the replication factor?

SHVPARMB DS5F
SHVPLAST EQU   *-4


OISHVPLAST,X'80'


Sincerely,

Dave Clark
-- 
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331





*
This email message and any attachments is for use only by the named 
addressee(s) and may contain confidential, privileged and/or proprietary 
information. If you have received this message in error, please 
immediately notify the sender and delete and destroy the message and all 
copies. All unauthorized direct or indirect use or disclosure of this 
message is strictly prohibited. No right to confidentiality or privilege 
is waived or lost by any error in transmission. 
*


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Seymour J Metz
I would use CALL MF=E but you can always define a label for the OI into the 
last word of the list.

-- 
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי




From: IBM Mainframe Assembler List  on behalf 
of Dave Clark 
Sent: Wednesday, October 18, 2023 11:53 AM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Variable-Length Parameter List Attributes

I have a definition such as the following.

SHVPARMB DS5F

However, the program I am calling will actually accept 4, 5, or 6
parameters in this list.  So, I believe that T' will return F and L' will
return 4, but is there any attribute that will return the 5 in the above
definition?  I ask, because I would rather not hardcode the following to
set the end flag for the list.

OISHVPARMB+(5*4-4),X'80'


Sincerely,

Dave Clark
--
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331



*
This email message and any attachments is for use only by the named
addressee(s) and may contain confidential, privileged and/or proprietary
information. If you have received this message in error, please
immediately notify the sender and delete and destroy the message and all
copies. All unauthorized direct or indirect use or disclosure of this
message is strictly prohibited. No right to confidentiality or privilege
is waived or lost by any error in transmission.
*


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Dave Clark
"IBM Mainframe Assembler List"  wrote on 
10/18/2023 12:15:12 PM:
> Execute version of the CALL macro with MF=(E,parm_area_name) can fix 
that.


Well, the other issue is performance.  I potentially call this 
program hundreds of times.  So, I can build the parameter list just once 
and call it as follows:

LAR1,SHVPARMB 
L R15,ARXEXCOM
BALR  R14,R15 

Or I can call it as follows -- much less desireable.  Note that 
the program address is not supplied by a V-con but by an external program 
vector list from REXX.  That is why I have to preload R15 rather than 
puting it in the CALL statement.  But, I still wouldn't want a V-con 
inserted into the middle of my instructions by the CALL with a branch 
around it.

L R15,ARXEXCOM
CALL  (15),(SHVPARM1,SHVPARM2,SHVPARM2,SHVBLOCK,SHVPARM5),X
  MF=(E,SHVPARMB)
DS0H
LA1,SHVPARMB
LA0,SHVPARM1
ST0,0(0,1) 
LA0,SHVPARM2
ST0,4(0,1) 
LA0,SHVPARM2
ST0,8(0,1) 
LA0,SHVBLOCK
ST0,12(0,1) 
LA0,SHVPARM5
ST0,16(0,1) 
OI16(1),X'80
BALR  14,15 


Sincerely,

Dave Clark
-- 
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331





*
This email message and any attachments is for use only by the named 
addressee(s) and may contain confidential, privileged and/or proprietary 
information. If you have received this message in error, please 
immediately notify the sender and delete and destroy the message and all 
copies. All unauthorized direct or indirect use or disclosure of this 
message is strictly prohibited. No right to confidentiality or privilege 
is waived or lost by any error in transmission. 
*


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Farley, Peter
Execute version of the CALL macro with MF=(E,parm_area_name) can fix that.

From: IBM Mainframe Assembler List  On Behalf 
Of Dave Clark
Sent: Wednesday, October 18, 2023 12:09 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Variable-Length Parameter List Attributes


"IBM Mainframe Assembler List" 
mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU>> wrote 
on

10/18/2023 11:56:55 AM:

> Why not use the CALL macro with the VL parameter to mark the end of the

list?





Because I don't appreciate the in-line parameter list it

generates.





Sincerely,



Dave Clark

--

This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Paul Gilmartin

On 10/18/23 09:53:35, Dave Clark wrote:

SHVPARMB DS 5F However, the program I am calling will actually accept 4, 5, or 
6 parameters in this list. So, I believe that T' will return F and L' will 
return 4, but is there any attribute that will return the 5 in the above 
definition? I ask, because I would rather not hardcode the following to set the 
end flag for the list. OI SHVPARMB+(5*4-4),X'80'


I'd code:
SHVPARMB DS5F  Is this hard coded?
endPARMB EQU   *
Then:
OIENDPARMB-4,X'80'

--
gil


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Dave Clark
"IBM Mainframe Assembler List"  wrote on 
10/18/2023 11:56:55 AM:
> Why not use the CALL macro with the VL parameter to mark the end of the 
list?


Because I don't appreciate the in-line parameter list it 
generates.


Sincerely,

Dave Clark
-- 
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331




*
This email message and any attachments is for use only by the named 
addressee(s) and may contain confidential, privileged and/or proprietary 
information. If you have received this message in error, please 
immediately notify the sender and delete and destroy the message and all 
copies. All unauthorized direct or indirect use or disclosure of this 
message is strictly prohibited. No right to confidentiality or privilege 
is waived or lost by any error in transmission. 
*


Re: Variable-Length Parameter List Attributes

2023-10-18 Thread Tom Harper
Dave,

Why not use the CALL macro with the VL parameter to mark the end of the list?

Sincerely,

Tom Harper
Phoenix Software International 

Sent from my iPhone

> On Oct 18, 2023, at 11:53 AM, Dave Clark  wrote:
> 
> I have a definition such as the following.
> 
> SHVPARMB DS5F
> 
>However, the program I am calling will actually accept 4, 5, or 6 
> parameters in this list.  So, I believe that T' will return F and L' will 
> return 4, but is there any attribute that will return the 5 in the above 
> definition?  I ask, because I would rather not hardcode the following to 
> set the end flag for the list.
> 
> OISHVPARMB+(5*4-4),X'80'
> 
> 
> Sincerely,
> 
> Dave Clark
> -- 
> int.ext: 91078
> direct: (937) 531-6378
> home: (937) 751-3300
> 
> Winsupply Group Services
> 3110 Kettering Boulevard
> Dayton, Ohio  45439  USA
> (937) 294-5331
> 
> 
> 
> *
> This email message and any attachments is for use only by the named 
> addressee(s) and may contain confidential, privileged and/or proprietary 
> information. If you have received this message in error, please 
> immediately notify the sender and delete and destroy the message and all 
> copies. All unauthorized direct or indirect use or disclosure of this 
> message is strictly prohibited. No right to confidentiality or privilege 
> is waived or lost by any error in transmission. 
> *



This e-mail message, including any attachments, appended messages and the
information contained therein, is for the sole use of the intended
recipient(s). If you are not an intended recipient or have otherwise
received this email message in error, any use, dissemination, distribution,
review, storage or copying of this e-mail message and the information
contained therein is strictly prohibited. If you are not an intended
recipient, please contact the sender by reply e-mail and destroy all copies
of this email message and do not otherwise utilize or retain this email
message or any or all of the information contained therein. Although this
email message and any attachments or appended messages are believed to be
free of any virus or other defect that might affect any computer system into
which it is received and opened, it is the responsibility of the recipient
to ensure that it is virus free and no responsibility is accepted by the
sender for any loss or damage arising in any way from its opening or use.


Variable-Length Parameter List Attributes

2023-10-18 Thread Dave Clark
I have a definition such as the following.

SHVPARMB DS5F

However, the program I am calling will actually accept 4, 5, or 6 
parameters in this list.  So, I believe that T' will return F and L' will 
return 4, but is there any attribute that will return the 5 in the above 
definition?  I ask, because I would rather not hardcode the following to 
set the end flag for the list.

OISHVPARMB+(5*4-4),X'80'


Sincerely,

Dave Clark
-- 
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300

Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331



*
This email message and any attachments is for use only by the named 
addressee(s) and may contain confidential, privileged and/or proprietary 
information. If you have received this message in error, please 
immediately notify the sender and delete and destroy the message and all 
copies. All unauthorized direct or indirect use or disclosure of this 
message is strictly prohibited. No right to confidentiality or privilege 
is waived or lost by any error in transmission. 
*