Re: IEATDUMP MF=L Can someone explain this?

2018-08-27 Thread Ngan, Robert
I'm so use to splitting the name after the 3rd character I did not even notice 
this, until one of our younger programmers pronounced it as "I EAT DUMP"

Robert Ngan
HCL Technologies

-Original Message-
From: IBM Mainframe Assembler List  On Behalf 
Of Jim Mulder
Sent: Sunday, August 26, 2018 00:19
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: IEATDUMP MF=L Can someone explain this?

  I suppose the way one groups the letters would be influenced by one's own 
habits.  I would expect that experienced z/OS programmers would know that  for 
the past few decades, new macro names follow the same convention as module 
names and message IDs by starting with the 3 character prefix of the owning 
component.

IEA  - component prefix
T- Transaction
DUMP - Dump

Jim Mulder z/OS Diagnosis, Design, Development, Test  IBM Corp.
Poughkeepsie NY

> From: "Paul Gilmartin"
> <0014e0e4a59b-dmarc-requ...@listserv.uga.edu>
> To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
> Date: 08/26/2018 01:07 AM
> Subject: Re: IEATDUMP MF=L Can someone explain this?
> Sent by: "IBM Mainframe Assembler List"


> Who thinks up these macro names, anyway?  That one wouldn't pass
> muster as a California vanity license plate.

DXC Technology Company - Headquarters: 1775 Tysons Boulevard, Tysons, Virginia 
22102, USA.
DXC Technology Company -- This message is transmitted to you by or on behalf of 
DXC Technology Company or one of its affiliates.  It is intended exclusively 
for the addressee.  The substance of this message, along with any attachments, 
may contain proprietary, confidential or privileged information or information 
that is otherwise legally exempt from disclosure. Any unauthorized review, use, 
disclosure or distribution is prohibited. If you are not the intended recipient 
of this message, you are not authorized to read, print, retain, copy or 
disseminate any part of this message. If you have received this message in 
error, please destroy and delete all copies and notify the sender by return 
e-mail. Regardless of content, this e-mail shall not operate to bind DXC 
Technology Company or any of its affiliates to any order or other contract 
unless pursuant to explicit written agreement or government initiative 
expressly permitting the use of e-mail for such purpose.


Re: IEATDUMP MF=L Can someone explain this?

2018-08-27 Thread Charles Mills
Bytes are cheap. (30-40 bytes anyway. )
Programmer time is expensive. 
Bugs are very expensive. 
I may just keep doing it the way I have been.
CharlesSent from a mobile; please excuse the brevity.
 Original message From: Steve Smith  Date: 
8/27/18  12:04 PM  (GMT-05:00) To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: 
IEATDUMP MF=L Can someone explain this? 
Me too.  But remember, This is for NEW macros, the ones whose MF=E forms 
start with something like XC 88(,1),0(1), and use MF=(L,xxx).

The older ones, that often have required data in the MF=L form, still 
have to be copied first.  Typically you would put those MF=L in static 
storage, and define a working area DS XL(parml) to copy it into.  I've 
overlaid a dozen of both types on each other in a case or two.

Look at the expansions, and verify you didn't make incorrect assumptions.

sas


On 8/27/2018 11:18, Ed Jaffe wrote:
> On 8/27/2018 4:45 AM, Charles Mills wrote:
>>> Consider using the same list area for multiple services
>> Is that documented anywhere?
>>
>> In other words, you are saying -- just to pick three macros that come to
>> mind -- I could issue an ATTACHX, an EXTRACT and a CLOSE and use the 
>> same
>> MF=L area for all (assuming the re-sue considerations you list)?
>
> I've been doing that since Old Man Noah cornered the market on gopher 
> wood!
>
> MyDSECT  DSECT ,
> MacParm DS    0D
>     MACRO1 MF=L
>     ORG    MacParm
>     MACRO2 MF=L
>     ORG    MacParm
>     MACRO3 MF=L
>     ORG    ,
>     DS 0D
>     .
>     . (other stuff in MyDSECT)
>     .
>
> MyPgm   RSECT ,
>     .
>     MACRO1 MF=(E,MacParm)
>     .
>     MACRO2 MF=(E,MacParm)
>     .
>     MACRO3 MF=(E,MacParm)
>     .
>     . (etc)
>     .
>


Re: IEATDUMP MF=L Can someone explain this?

2018-08-27 Thread Steve Smith
Me too.  But remember, This is for NEW macros, the ones whose MF=E forms 
start with something like XC 88(,1),0(1), and use MF=(L,xxx).


The older ones, that often have required data in the MF=L form, still 
have to be copied first.  Typically you would put those MF=L in static 
storage, and define a working area DS XL(parml) to copy it into.  I've 
overlaid a dozen of both types on each other in a case or two.


Look at the expansions, and verify you didn't make incorrect assumptions.

sas


On 8/27/2018 11:18, Ed Jaffe wrote:

On 8/27/2018 4:45 AM, Charles Mills wrote:

Consider using the same list area for multiple services

Is that documented anywhere?

In other words, you are saying -- just to pick three macros that come to
mind -- I could issue an ATTACHX, an EXTRACT and a CLOSE and use the 
same

MF=L area for all (assuming the re-sue considerations you list)?


I've been doing that since Old Man Noah cornered the market on gopher 
wood!


MyDSECT  DSECT ,
MacParm DS    0D
    MACRO1 MF=L
    ORG    MacParm
    MACRO2 MF=L
    ORG    MacParm
    MACRO3 MF=L
    ORG    ,
    DS 0D
    .
    . (other stuff in MyDSECT)
    .

MyPgm   RSECT ,
    .
    MACRO1 MF=(E,MacParm)
    .
    MACRO2 MF=(E,MacParm)
    .
    MACRO3 MF=(E,MacParm)
    .
    . (etc)
    .



Re: IEATDUMP MF=L Can someone explain this?

2018-08-27 Thread Ed Jaffe

On 8/27/2018 4:45 AM, Charles Mills wrote:

Consider using the same list area for multiple services

Is that documented anywhere?

In other words, you are saying -- just to pick three macros that come to
mind -- I could issue an ATTACHX, an EXTRACT and a CLOSE and use the same
MF=L area for all (assuming the re-sue considerations you list)?


I've been doing that since Old Man Noah cornered the market on gopher wood!

MyDSECT  DSECT ,
MacParm DS    0D
    MACRO1 MF=L
    ORG    MacParm
    MACRO2 MF=L
    ORG    MacParm
    MACRO3 MF=L
    ORG    ,
    DS 0D
    .
    . (other stuff in MyDSECT)
    .

MyPgm   RSECT ,
    .
    MACRO1 MF=(E,MacParm)
    .
    MACRO2 MF=(E,MacParm)
    .
    MACRO3 MF=(E,MacParm)
    .
    . (etc)
    .

--
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: IEATDUMP MF=L Can someone explain this?

2018-08-27 Thread Paul Gilmartin
On 2018-08-27, at 06:20:40, Peter Relson wrote:
> 
>> I've never had the slightest need to use the labels generated in the 
> MF=L form. Who does?  They're not documented.  I'll grant that they can 
> probably be considered self-documenting, but is there a reasonable 
> guarantee the labels won't be changed in a new release?  The MF=E 
> expansions don't use them (thank goodness), ...
>> 
> The doc (and Peter Relson) seem to say they can and should be used that 
> way.
> 
> 
> I'm not positive which "that way" referred to. I don't think I said that 
> the labels produced by the list form ought to be used. The interface is 
> the macro. Anything else is not supported (but might well work). 
>  
I apologize for any misattribution or misunderstanding.  I imagined:

 ANYMAC  MF=(L,AXXX)Defines AXXX
 ...
 ANYMAC  MF=(E,AXXX)Refers to AXXX defined above

If I understand correctly, a similar Example ought to appear in the
Users Guide to clarify the use for the OP of this thread.  (Everyone
is supposed to read the Users Guide.)


> 
> I'd prefer staying with tradition and coding its name in column
> one, for legibility.
> 
> 
> FWIW, I suppose that you could code
> LABEL_TRADITIONAL   THEMACRO MF=(L,LABEL_NEWFORM),PLISTVER=MAX
> and you could use  THEMACRO MF=(E,LABEL_TRADITIONAL)
> if you must (but the "two labels" would have to be unique)
> 
> For the list form, you would land with
> LABEL_TRADITIONAL EQU LABEL_NEWFORM 
> LABEL_NEWFORM   DS0D 
> ...
I'm imagining something like:

 MACRO
 WRAPLIST ,,,...
  MF=(L,),,,...
 MEND

For this sort of thing, I truly miss the POSIX shell constructs:
"shift", which discards one or more leading parameters, and
"$@", which formats the remaining parameters (think DOUBLE)
to be passed to another command.

> 
> I notice that for older macros with "M=L" the parameter
> descriptions are in table form; for newer macros with "MF=(L,list addr)"
> the descriptions are in outline form.
> 
> I'm not sure what you mean here. Could you provide an example? I think of 
> the syntax diagram being a table (when it's not RR-track), but the 
> parameter descriptions being textual.  ...
>   
I stand corrected; I didn't read thoroughly.  For IEATDUMP, I see:

o No RR-track  (Blessedly, I suppose.)

o "Syntax" Looks like a spreadsheet; I called that "table".

o "Parameters"
  The parameters are explained as follows:
  ...
The parameters and subparameters are variously indented.  I called that 
"outline".

So the "spreadsheet" replaces the "RR-track" (which wouldn't fit on
the page.  Or several pages.)

-- gil


Re: IEATDUMP MF=L Can someone explain this?

2018-08-27 Thread Tom Marchant
On Mon, 27 Aug 2018 07:45:08 -0400, Charles Mills wrote:

>> making sure that you have allotted the maximum that any of them could need
>
>How would I make sure of that (other than by "hacking" the macros or by
>doing a test assembly)?

MF_L_AREA DS 0D
MACRO_1_L MACRO1 MF=L
   ORG MF_L_AREA
MACRO_2_L MACRO2 MF=L
   ORG MF_L_AREA
MACRO_3_L MACRO3 MF=L
   ORG  ,

-- 
Tom Marchant


Re: IEATDUMP MF=L Can someone explain this?

2018-08-27 Thread Peter Relson

> I've never had the slightest need to use the labels generated in the 
MF=L form. Who does?  They're not documented.  I'll grant that they can 
probably be considered self-documenting, but is there a reasonable 
guarantee the labels won't be changed in a new release?  The MF=E 
expansions don't use them (thank goodness), ...
> 
The doc (and Peter Relson) seem to say they can and should be used that 
way.


I'm not positive which "that way" referred to. I don't think I said that 
the labels produced by the list form ought to be used. The interface is 
the macro. Anything else is not supported (but might well work). 


... so what are they for? Macros that I have had occasion to reference the 
parmlist for (ATTACH comes to mind), have a perfectly good DSECT macro 
that I can use when I need it.
 

As long as you don't mind being in unsupported territory. The IEZATTCH and 
IEZATTCX macros are not programming interfaces.


I'd prefer staying with tradition and coding its name in column
one, for legibility.


FWIW, I suppose that you could code
LABEL_TRADITIONAL   THEMACRO MF=(L,LABEL_NEWFORM),PLISTVER=MAX
and you could use  THEMACRO MF=(E,LABEL_TRADITIONAL)
if you must (but the "two labels" would have to be unique)

For the list form, you would land with
LABEL_TRADITIONAL EQU LABEL_NEWFORM 
LABEL_NEWFORM   DS0D 
...


It's great that the new MF=L macros do not require initialization but is
"which ones" documented anywhere? I tend to use a "model" scheme for

I cannot imagine anyone trying to make (let alone be willing to keep up to 
date) a list of "which ones". I could imagine there being a sentence on 
individual macros saying that the list form need not be used as a "model" 
(or whatever wording seems suitable). In practice, if the list form 
supports no keywords other than PLISTVER, it need not be used as a model. 
In practice, any time that the execute form defaults to "COMPLETE", e.g. 
MF=(E,mylist,COMPLETE), the list form need not be used as a model -- 
because "COMPLETE" means that the entire parameter area is to be 
initialized. 


I notice that for older macros with "M=L" the parameter
descriptions are in table form; for newer macros with "MF=(L,list addr)"
the descriptions are in outline form.

I'm not sure what you mean here. Could you provide an example? I think of 
the syntax diagram being a table (when it's not RR-track), but the 
parameter descriptions being textual. And of course for list form itself, 
those with MF=(L,list addr) support only PLISTVER or no keywords at all.

Peter Relson
z/OS Core Technology Design


Re: IEATDUMP MF=L Can someone explain this?

2018-08-27 Thread Charles Mills
> Consider using the same list area for multiple services

Is that documented anywhere?

In other words, you are saying -- just to pick three macros that come to
mind -- I could issue an ATTACHX, an EXTRACT and a CLOSE and use the same
MF=L area for all (assuming the re-sue considerations you list)?

> making sure that you have allotted the maximum that any of them could need

How would I make sure of that (other than by "hacking" the macros or by
doing a test assembly)?

So you are saying in essence that there is little or no difference between
some MVS MACRO with no keywords except MF=L, and DS nD  ?

Charles


-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU]
On Behalf Of Peter Relson
Sent: Sunday, August 26, 2018 9:23 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: IEATDUMP MF=L Can someone explain this?

Coding a CSECT for the MF=L "model" is, as Gil has pointed out, basically 
not helpful for those macros that begin by zeroing the entire area, which 
in turn will be those macros that support no keywords on the list form 
other than PLISTVER. I'd also suggest that anyone doing a unique getmain 
for storage for a parameter parameter area ought to re-investigate their 
approach.  If your module already has a getmain for dynamic storage, then 
include the list form into that area. Consider using the same list area 
for multiple services (making sure that you have allotted the maximum that 
any of them could need) if the services cannot be used concurrently 
(which, for any given reentrant module is "almost always" -- except for 
something like a case where the service you invoke might branch back to an 
exit point in your module which might then need to invoke some other 
service using an execute form).

While someone might have gotten burned by the default not being 
PLISTVER=MAX (specifically on MF=L), a default of PLISTVER=MAX on MF=L 
would be incompatible and that is why it has not been, and will never be, 
implemented. A simple problem case is where the list form is part of a 
DSECT, with other fields after it, when not every user of a DSECT might be 
recompiled "all the time".

We always like to hear your opinions. However, the "label" case is is one 
where nothing will change. Perhaps if this had been brought up 30 years 
ago, it might have been different, but I doubt that would have been the 
case even then. It is unsettling to have two different protocols. I 
understand that. That's what happens when newer and (we hope) better 
approaches are developed while still having to maintain the older ones. 

Peter Relson
z/OS Core Technology Design