I think it is worth RFEing. Reentrant baseless code is a desirable standard and IBM's own code should not be thwarting it. And over the years my experience has been that LE has on occasion ignored HLASM standards and trends. They should be reminded that they should interface nicely with HLASM.
Gary Weinhold Senior Application Architect DATAKINETICS | Data Performance & Optimization Phone: +1.613.523.5500 x216<tel:+1.613.523.5500%20x216> Email: [email protected]<mailto:[email protected]> [http://www.dkl.com/wp-content/uploads/2015/07/dkl_logo.png]<http://www.dkl.com/> Visit us online at www.DKL.com<http://www.dkl.com/> [http://www.dkl.com/wp-content/uploads/2015/08/banner.png]<http://www.dkl.com/mailsig> E-mail Notification: The information contained in this email and any attachments is confidential and may be subject to copyright or other intellectual property protection. If you are not the intended recipient, you are not authorized to use or disclose this information, and we request that you notify us by reply mail or telephone and delete the original message from your mail system. __________ On 2017-03-08 09:43, John McKown wrote: This is likely not worth the bother, but I have a "problem" with the CEEPCALL macro. Yes, I write LE enabled HLASM. Mainly so that I can easily inter-operate with C. I like to use "baseless" coding techniques. One problem that I had, which required a base register be used, is that I use the CEEPCALL macro instead of a CALL macro. CEEPCALL can invoke statically bound code (like CALL) but can also call DLL resident code. The code generated uses an "A" (add) instruction with an in-stream constant, a QCON. https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.asma400/qcon.htm . I have looked at the macro and there is no way to avoid this. The code sequence looks like: 504+CEE0009F ALIAS C'CEE3INF' 505+ EXTRN CEE0009F 506+CEE0009F XATTR SCOPE(IMPORT),REFERENCE(INDIRECT),REFERENCE(CODE) ... 0000009E 0700 521+ CNOP 0,4 000000A0 A7F4 0004 000000A8 522+ J CEE0009J BRANCH AROUND QCON 000000A4 00000000 523+CEE0009Q DC Q(CEE0009F) OFFSET TO DESCRIPTOR 000000A8 524+CEE0009J DS 0H 000000A8 58F0 C1F4 000001F4 525+ L 15,500(,12) LOAD 15 WITH CEECAACRENT 000000AC 5AF0 B0A4 000000A4 526+ A 15,CEE0009Q ADD OFFSET TO FUNC DESC @P0C 000000B0 0DEF 527+ BASR 14,15 This could "easily" be changed to something like: CNOP 0,4 BRAS 15,CEE&SYSNDX.J or just *+4 DC Q(CEE&SYSNDX.F) CEE&SYSNDX.J DS 0H L 15,0(,15) LOAD OFFSET CONSTANT A 15,0(,12) ADD IN CEECAACRENT BASR 14,15 Note that I looked on a z/OS 2.2 system, and the above is true on that system (I'm compiling on z/OS 1.12 at work, not 2.2 on a friend's system). Your opinions?
