Re: Call by value, final
Classification: Confidential YUP! PDS has long been able to support "invalid" member names. The STOW macro uses what it is passed. -Original Message- From: IBM Mainframe Discussion List On Behalf Of Jeremy Nicoll Sent: Saturday, April 8, 2023 11:03 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Call by value, final [CAUTION: This Email is from outside the Organization. Unless you trust the sender, Don’t click links or open attachments as it may be a Phishing email, which can steal your Information and compromise your Computer.] On Sat, 8 Apr 2023, at 15:54, Paul Gilmartin wrote: > On Sat, 8 Apr 2023 04:27:04 +, Frank Swarbrick wrote: >> >>... The assembler seems OK with it, but the linker is converted to upper >> case, even though I've specified CASE(MIXED). >> > I'm surprised. In an experiment long ago I was able to create a > member in an (old-fashioned) PDS simply with CASE(MIXED); NAME lower. I'm sure I recall that some of the SMP/E work PDSes had member names that not only were mixed case but also included characters that you'd not see in PDSs processed via standard ispf utilities. I can't quite remember if they used every single byte value in each of the 8 character positions, but I think they might have done, thus allowing 256 ** 8 different member names. -- Jeremy Nicoll - my opinions are my own. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ::DISCLAIMER:: The contents of this e-mail and any attachment(s) are confidential and intended for the named recipient(s) only. E-mail transmission is not guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or may contain viruses in transmission. The e mail and its contents (with or without referred errors) shall therefore not attach any liability on the originator or HCL or its affiliates. Views or opinions, if any, presented in this email are solely those of the author and may not necessarily reflect the views or opinions of HCL or its affiliates. Any form of reproduction, dissemination, copying, disclosure, modification, distribution and / or publication of this message without the prior written consent of authorized representative of HCL is strictly prohibited. If you have received this email in error please delete it and notify the sender immediately. Before opening any email and/or attachments, please check them for viruses and other defects. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Call by value, final
Hi Jeremy, Maybe SMPSCDS? I do not recall (I've used both extensively) EVER seeing member names like that in SMPPTS and SMPSTS Regards, David On 2023-04-09 08:43, Jeremy Nicoll wrote: On Sun, 9 Apr 2023, at 11:10, Seymour J Metz wrote: Are you sure that you're not thinking of SMP through SMP4, the free SMP that preceeded SMP/E? Certain. I only ever used SMP/E - roughly between 1986 and the late 1990s. I don't recall precisely but I think these weird member names were visible via ispf member lists, and I was probably looking at the SMPMTS or SMPPTS. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Call by value, final
On Sun, 9 Apr 2023, at 11:10, Seymour J Metz wrote: > Are you sure that you're not thinking of SMP through SMP4, the free SMP > that preceeded SMP/E? Certain. I only ever used SMP/E - roughly between 1986 and the late 1990s. I don't recall precisely but I think these weird member names were visible via ispf member lists, and I was probably looking at the SMPMTS or SMPPTS. -- Jeremy Nicoll - my opinions are my own. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Call by value, final
Are you sure that you're not thinking of SMP through SMP4, the free SMP that preceeded SMP/E? -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Jeremy Nicoll [jn.ls.mfrm...@letterboxes.org] Sent: Saturday, April 8, 2023 12:02 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Call by value, final On Sat, 8 Apr 2023, at 15:54, Paul Gilmartin wrote: > On Sat, 8 Apr 2023 04:27:04 +, Frank Swarbrick wrote: >> >>... The assembler seems OK with it, but the linker is converted to upper >> case, even though I've specified CASE(MIXED). >> > I'm surprised. In an experiment long ago I was able to create a member > in an (old-fashioned) PDS simply with CASE(MIXED); NAME lower. I'm sure I recall that some of the SMP/E work PDSes had member names that not only were mixed case but also included characters that you'd not see in PDSs processed via standard ispf utilities. I can't quite remember if they used every single byte value in each of the 8 character positions, but I think they might have done, thus allowing 256 ** 8 different member names. -- Jeremy Nicoll - my opinions are my own. -- 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: Call by value, final
In particular, transient SVC routines with numbers that were multiples of 10 had names ending in 'C0'x. The free SMP also used some interesting member names. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Paul Gilmartin [042bfe9c879d-dmarc-requ...@listserv.ua.edu] Sent: Saturday, April 8, 2023 1:34 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Call by value, final On Sat, 8 Apr 2023 09:15:32 -0700, M. Ray Mullins (Ray) wrote: >PDSEs allow mixed case alias names up to 1023 bytes long. They can only be >seen through DESERV, so a utility not named ISPF can look at them (I think PDS >8.6 supports them). > >If you look at some of the CICS PDSE program object libraries, you can see >them in the member list (again, not under ISPF, sounds like a good IBM Idea™). > How does OMVS support program object names >8 characters or containing "invalid" characters? Must they be aliases? can they be re-linked or copied with "cp -X executable //LINKLIB.PDSE"? My recollection of history, fading, corrections welcome: Before Binder existed, syntax of Linkage Editor commands limited names that could be used in commands to the Classic conventions: upper case alphanumeric and a few national. The description of object (SYSLIN) formats had no such restriction: any 8 octets were accepted. Some ISVs exploited this behavior to bootleg information in ESDs containing "invalid" characters that were intentionally difficult for end users to modify. Binder, in order to accommodate long names, chose a convention of regarding any character <=x'40' as a string terminator. (Cue outrage at "null-terminated" strings.) Such ISV-generated ESDs caused Binder misbehavior, perhaps even program checks. I noted in these lists that this was a compatibility violation uncharacteristic of IBM. IBM representatives such as John Ehrman responded that the ISVs had broken the rules; it was their responsibility to deal with the damage. I believe IBM was overstating the rules: they appeared to apply only to Linkage Editor commands, not to the content of object files generated by compilers. -- 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: Call by value, final
On Sat, 8 Apr 2023 09:15:32 -0700, M. Ray Mullins (Ray) wrote: >PDSEs allow mixed case alias names up to 1023 bytes long. They can only be >seen through DESERV, so a utility not named ISPF can look at them (I think PDS >8.6 supports them). > >If you look at some of the CICS PDSE program object libraries, you can see >them in the member list (again, not under ISPF, sounds like a good IBM Idea™). > How does OMVS support program object names >8 characters or containing "invalid" characters? Must they be aliases? can they be re-linked or copied with "cp -X executable //LINKLIB.PDSE"? My recollection of history, fading, corrections welcome: Before Binder existed, syntax of Linkage Editor commands limited names that could be used in commands to the Classic conventions: upper case alphanumeric and a few national. The description of object (SYSLIN) formats had no such restriction: any 8 octets were accepted. Some ISVs exploited this behavior to bootleg information in ESDs containing "invalid" characters that were intentionally difficult for end users to modify. Binder, in order to accommodate long names, chose a convention of regarding any character <=x'40' as a string terminator. (Cue outrage at "null-terminated" strings.) Such ISV-generated ESDs caused Binder misbehavior, perhaps even program checks. I noted in these lists that this was a compatibility violation uncharacteristic of IBM. IBM representatives such as John Ehrman responded that the ISVs had broken the rules; it was their responsibility to deal with the damage. I believe IBM was overstating the rules: they appeared to apply only to Linkage Editor commands, not to the content of object files generated by compilers. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Call by value, final
__getcb alias c'@@GETCB' This works with call __getcb,(3) But is rather pointless, I suppose, since I can just call @@GETCB directly. I can also use: __getcb alias c'__getcb' This also seems to assemble properly, but the binder can't find __getcb. Which I sort of understand, because as you say, @@GETCB is the external name. However in COBOL it works, because of some sort of rename process I don't understand. 0 2610 CEEBPIRC LABEL *** M O D U L E M A P *** SECTIONCLASS --- SOURCE OFFSET OFFSET NAMETYPELENGTH DDNAME SEQ MEMBER 28B0 @@GETCB * CSECT A SYSLIB02 @@GETCB *** DATA SET SUMMARY *** DDNAMECONCAT FILE IDENTIFICATION DSNLOAD 01 SYS3.ZOSD.DSN1.SDSNLOAD SYSLIB 02 SYS1.SCEELKED SYSLIN 02 CICS.CTS540.RSU2212.SDFHLOAD SYSLIN 04 SYS23098.T101939.RA000.DVFJSC.OBJMOD.H02 *** RENAMED SYMBOL CROSS REFERENCE *** - RENAMED SYMBOL SOURCE SYMBOL - @@GETCB __getcb *** END OF RENAMED SYMBOL CROSS REFERENCE *** I don't know how the symbol rename process is invoked. From: IBM Mainframe Discussion List on behalf of Tony Harminc Sent: Saturday, April 8, 2023 8:56 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Call by value, final On Sat, 8 Apr 2023 at 00:27, Frank Swarbrick wrote: > > For those interested, the following calls C function "@@GETCB" ( int > __getcb(int); ) passing the fullword 3 by value. There are several > alternatives, as discussed earlier, but this is what I am going with. > > *** > * see if we're running under cics by calling @@GETCB with fullword * > * value 3 (call by value). * > *** > ceedsa , > ceecaa , > iscics ceeentry main=NO > call @@GETCB,(3) > ceeterm RC=(15) > ppa ceeppa , > end iscics > > Note: __getcb() and @@GETCB are the same routine. I couldn't figure out how > to get a lower case call literal to work. The assembler seems OK with it, > but the linker is converted to upper case, even though I've specified > CASE(MIXED). Any thoughts on this are welcome, even though it's working fine > as-is. Using lowercase literals in this manner is allowed in COBOL, even, > with "PGMNAME(mIxEdCaSe)". What goes wrong if you specify call __getcb ? You say "the linker is converted to upper case" - not sure what that means. What is converting what to upper case? Maybe you need an ALIAS assembler statement. I've used it for long external names, but I don't know about casing. It may be that the library supplied external name just is @@GETCB . Tony H. -- 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: Call by value, final
PDSEs allow mixed case alias names up to 1023 bytes long. They can only be seen through DESERV, so a utility not named ISPF can look at them (I think PDS 8.6 supports them). If you look at some of the CICS PDSE program object libraries, you can see them in the member list (again, not under ISPF, sounds like a good IBM Idea™). Cheers, Ray Sent from my iPhone > On Apr 8, 2023, at 09:03, Jeremy Nicoll wrote: > > On Sat, 8 Apr 2023, at 15:54, Paul Gilmartin wrote: >>> On Sat, 8 Apr 2023 04:27:04 +, Frank Swarbrick wrote: >>> >>> ... The assembler seems OK with it, but the linker is converted to upper >>> case, even though I've specified CASE(MIXED). >>> >> I'm surprised. In an experiment long ago I was able to create a member >> in an (old-fashioned) PDS simply with CASE(MIXED); NAME lower. > > I'm sure I recall that some of the SMP/E work PDSes had member names that > not only were mixed case but also included characters that you'd not see in > PDSs processed via standard ispf utilities. I can't quite remember if they > used > every single byte value in each of the 8 character positions, but I think > they > might have done, thus allowing 256 ** 8 different member names. > > -- > Jeremy Nicoll - my opinions are my own. > > -- > 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: Call by value, final
On Sat, 8 Apr 2023, at 15:54, Paul Gilmartin wrote: > On Sat, 8 Apr 2023 04:27:04 +, Frank Swarbrick wrote: >> >>... The assembler seems OK with it, but the linker is converted to upper >> case, even though I've specified CASE(MIXED). >> > I'm surprised. In an experiment long ago I was able to create a member > in an (old-fashioned) PDS simply with CASE(MIXED); NAME lower. I'm sure I recall that some of the SMP/E work PDSes had member names that not only were mixed case but also included characters that you'd not see in PDSs processed via standard ispf utilities. I can't quite remember if they used every single byte value in each of the 8 character positions, but I think they might have done, thus allowing 256 ** 8 different member names. -- Jeremy Nicoll - my opinions are my own. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Call by value, final
On Sat, 8 Apr 2023 at 00:27, Frank Swarbrick wrote: > > For those interested, the following calls C function "@@GETCB" ( int > __getcb(int); ) passing the fullword 3 by value. There are several > alternatives, as discussed earlier, but this is what I am going with. > > *** > * see if we're running under cics by calling @@GETCB with fullword * > * value 3 (call by value). * > *** > ceedsa , > ceecaa , > iscics ceeentry main=NO > call @@GETCB,(3) > ceeterm RC=(15) > ppa ceeppa , > end iscics > > Note: __getcb() and @@GETCB are the same routine. I couldn't figure out how > to get a lower case call literal to work. The assembler seems OK with it, > but the linker is converted to upper case, even though I've specified > CASE(MIXED). Any thoughts on this are welcome, even though it's working fine > as-is. Using lowercase literals in this manner is allowed in COBOL, even, > with "PGMNAME(mIxEdCaSe)". What goes wrong if you specify call __getcb ? You say "the linker is converted to upper case" - not sure what that means. What is converting what to upper case? Maybe you need an ALIAS assembler statement. I've used it for long external names, but I don't know about casing. It may be that the library supplied external name just is @@GETCB . Tony H. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Call by value, final
On Sat, 8 Apr 2023 04:27:04 +, Frank Swarbrick wrote: > >... The assembler seems OK with it, but the linker is converted to upper > case, even though I've specified CASE(MIXED). > I'm surprised. In an experiment long ago I was able to create a member in an (old-fashioned) PDS simply with CASE(MIXED); NAME lower. Has IBM subsequently broken something in reaction to a misguided customer request? Or does "MIXED" mean MIXED except where it doesn't? -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN