Re: Call by value, final

2023-04-10 Thread Allan Staller
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

2023-04-09 Thread David Spiegel

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

2023-04-09 Thread Jeremy Nicoll
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

2023-04-09 Thread Seymour J Metz
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

2023-04-09 Thread Seymour J Metz
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

2023-04-08 Thread Paul Gilmartin
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

2023-04-08 Thread Frank Swarbrick
__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

2023-04-08 Thread M. Ray Mullins (Ray)
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

2023-04-08 Thread Jeremy Nicoll
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

2023-04-08 Thread Tony Harminc
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

2023-04-08 Thread Paul Gilmartin
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


Call by value, final

2023-04-07 Thread Frank Swarbrick
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)".

By the way, there's no great reason this particular "program" couldn't be coded 
in COBOL, PL/I or even C.  I have similar code, along with additional code, in 
another assembler program, which is why I wanted to know how to call by value.

If you are interested where I found @@GETCB for checking if running in a CICS 
environment, check the  C header file.

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