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:
+ DS 0H
+ LA 1,PARMB LOAD PARAMETER REG 1
+ LA 0,PARM1 PICKUP PARAMETER
+ ST 0,0(0,1) STORE INTO PARAM. LIST
+ LA 0,PARM2 PICKUP PARAMETER
+ ST 0,4(0,1) STORE INTO PARAM. LIST
+ LA 0,PARM2 PICKUP PARAMETER
+ ST 0,8(0,1) STORE INTO PARAM. LIST
+ LA 0,BLOCK PICKUP PARAMETER
+ ST 0,12(0,1) STORE INTO PARAM. LIST
+ LA 0,PARM5 PICKUP PARAMETER
+ ST 0,16(0,1) STORE INTO PARAM. LIST
+ OI 16(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 <[email protected]> On Behalf
Of Dave Clark
Sent: Wednesday, October 18, 2023 12:48 PM
To: [email protected]
Subject: Re: Variable-Length Parameter List Attributes
"IBM Mainframe Assembler List"
<[email protected]<mailto:[email protected]>> 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:
LA R1,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)
DS 0H
LA 1,SHVPARMB
LA 0,SHVPARM1
ST 0,0(0,1)
LA 0,SHVPARM2
ST 0,4(0,1)
LA 0,SHVPARM2
ST 0,8(0,1)
LA 0,SHVBLOCK
ST 0,12(0,1)
LA 0,SHVPARM5
ST 0,16(0,1)
OI 16(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.