Re: Load and Add

2013-02-19 Thread Edward Jaffe

On 2/19/2013 7:09 AM, Steve Conway wrote:

Paul Gilmartin wrote, in response to Ed Jaffe:
I perceive a bit of expert's elitism, even narcissism in that rhetoric:
"If you don't already know that, you're beneath my attention!"  (I've
tripped over the convention myself, at times.)

You obviously don't know Ed Jaffe.  You read a whole lot more into his
post than he put there.


Classic projection. ;)

I have a personal and professional interest in identifying and working with
folks who are new to our platform. I am actively involved, especially in
conjunction with the MVS Program and zNextGen at SHARE, in helping to identify
real and/or perceived problems/barriers through which new folks must work once
they suddenly find themselves immersed in a mainframe environment (especially
z/OS). I assumed that HLASM "old timers" would be so familiar with the
conventions used in PoOp that the "second operand" discussion would not have
originated with them--thus my inquiry as to the experience level of the OP along
with an attempt to explain my rationale for asking.

This is an area of great general interest to the mainframe community at large.
The topic of shortages of mainframe skills and so-called "vitality hires"
dominated the "Ask the Experts Panel and MVS Program Closing" at SHARE in San
Francisco -- a session over which I preside as MC. The discussion involved so
many different people and points of view that not one single technical question
was asked! (First time ever for such a discussion, I think...)

In case you were wondering, there most definitely ARE new, young, highly-skilled
and motivated HLASM programmers entering the workforce. Most of them work for
IBM and ISVs. Vit Gottwald (from CA Technologies), co-Project Manager of the
zNextGen Project at SHARE, is one such person. Vit took a few minutes during the
above-referenced SHARE session, to explain what excites him about our platform.
The audience applauded when he told them that being able to program in HLASM was
the primary reason he took his current job! The other zNextGen co-Project
Manager is Linda Mooney who is a great example of how a person can be new to the
platform without also being fresh out of school.

[Aside: If you're interested in getting involved with zNextGen, search for and
join their groups on Facebook and/or Linked-In. I believe there are currently
about 700 members. More are always welcome...]

Modernization efforts are underway to try to make configuring, managing, and
even programming a mainframe more "user friendly" to folks that are new to the
platform. (Some examples from IBM are z/OSMF and RDz. ISV's are doing some great
things in this realm as well. I reviewed some of Phoenix Software
International's mainframe modernization strategy during my Valentine's Day
webinar, hosted last week by IBM Systems Magazine.) The efficacy of these
efforts has yet to be fully measured and realized.

In any case, a change to the conventions used in PoOp is unlikely to be a
candidate for any such effort.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/


Re: Load and Add

2013-02-18 Thread Edward Jaffe

On 2/18/2013 2:19 PM, Bodoh John Robert [Contractor] wrote:

I couldn't disagree more.  The document was written in English.  I presume that, being written in 
English, it was meant for people that speak English.  In every context that I can remember, 
"second operand" always referred to the operand that was in the second position.  I have 
never heard of the phrase "second operand" to refer to a subscript.


I don't necessarily disagree with your logic, but I must ask: How long have you
been reading Principles of Operation? Are you new to the platform?

Many of us on this list have been using the "bible" since the 1980s, 1970s or
even (in some cases) the 1960s and we are well acquainted with the conventions
used throughout the book. Even if they might seem arcane to some, my point was
that they are what they are and have always been. Changing them now would
require tremendous effort--arguably wasting precious IBM hardware development
resources.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/


Re: Load and Add

2013-02-18 Thread Edward Jaffe

On 2/18/2013 12:37 PM, Bodoh John Robert [Contractor] wrote:

That's right, the operands are listed after the mnemonic.  However, my presumption was the 
"second operand" is referring to the operand that is in the second position.  It is very 
confusing to say "second" refers to the subscript.


It has always been thus. The reason for the subscript is to denote which operand
is being discussed--since storage operands are routinely broken up into pieces
e.g., B2 and D2.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/


Re: DSPSERV with SCOPE=?

2013-02-11 Thread Edward Jaffe

On 2/11/2013 7:59 AM, Paul Gilmartin wrote:

On Feb 11, 2013, at 08:37, Bill Fairchild wrote:


In order to make a simple trick like this easy to maintain by someone else in 
the future, or even myself (since my intricately detailed memory is rather 
short-lived), I would want to write so much documentation into the code that I 
would rather spend much less time and write three copies of the macro to make 
the code triple-pathed.


Dismayingly, when there are multiple options, the multiplicity
grows exponentially.


The MF=M form of RACROUTE is sooo nice for situations like this. I wish all
macros had that!

We once had a situation where we coded two GETMAIN macros in a service (one for
MVS/SP and one for MVS/XA. Yes, this was a long time ago...) Then we needed
boundary=page as an option; suddenly it was four macros. Before too long we had
32 GETMAINs coded!

From experience I can tell you it's NOT easier to read and NOT easier to
maintain 32 macros (and the logic to get to them) than it is to maintain ONE
stream of conditional IF/ENDIF with modification of a single parameter
list--preferably via the MF=M form macro.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/


Re: SVC 34

2013-02-08 Thread Edward Jaffe

On 2/7/2013 5:24 PM, retired mainframer wrote:

I didn't think water cooled machines were still supported.


zEC12 can be water cooled for those that wish to save energy in their data 
center.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/


Re: Debugger and Structured Programming Macros

2013-01-22 Thread Edward Jaffe

On 1/22/2013 7:06 AM, Bodoh John Robert wrote:

We use the IBM debugger program to unit test assembler programs.  We also use 
the structured programming macros.  When viewing the source code in the 
debugger, all of the internal macros used by the structured macros also are 
displayed.  This results in cluttering the screen with these macros.  This 
makes following the flow of the program difficult.  Is there an option either 
in the assembler or the debugger that will eliminate these internal macros from 
the display?


Many years ago there was a similar problem with z/XDC. I reported it to Dave
Cole and he fixed it.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/


APAR OA41232 Opened Today

2013-01-17 Thread Edward Jaffe

I thought some of you on this list might be interested...

WARNING: you cannot AMASPZAP a module compiled with SECTALGN(16). Only lower and
higher SECTALGN values are supported. This has caused us some grief in the
field. The ability to ZAP a module to provide temporary relief for a customer
problem is fairly important... :\

APAR Identifier .. OA41232  Last Changed  13/01/17
AMASPZAP CANNOT PROCESS A MODULE COMPILED WITH SECTALGN(16)

Symptom .. IN INCORROUT Status ... INTRAN
Severity ... 3  Date Closed .
Component .. 5752SC112  Duplicate of 
Reported Release . 780  Fixed Release 
Component Name SVA UTILITIESSpecial Notice
Current Target Date ..  Flags
SCP ...
Platform 

Status Detail: Not Available

PE PTF List:

PTF List:

Parent APAR:
Child APAR list:

ERROR DESCRIPTION:
AMASPZAP can't process modules that are compiled with
SECTALGN(16). Only lower and higher values can be zapped.

LOCAL FIX:
none

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/


Re: SVC 34

2013-01-16 Thread Edward Jaffe

On 1/16/2013 2:26 PM, Ward, Mike S wrote:

Can anyone please tell me where the description on how to use SVC's in z/OS is.

I remember back when there was a book devoted to MVS svc's and the parameters 
required to call them. I can't seem to find one for z/OS.


MGCR/MGCRE is described in Authorized Assembler Services Guide and Reference.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/


Re: 64Bit Addressing and CALL

2012-12-20 Thread Edward Jaffe

On 12/20/2012 12:36 PM, esst...@juno.com wrote:

I have a program that loads CSRSI,  It obtains Storage for the response area, 
and invokes CSRSI via a Call

I wanted to replace the STORAGE MACRO with IAVR64
So I believe the program could be re-wriiten as follows:
*
  LOAD  EP=CSRSI  Load CSRSI Function
  STR0,CSRSI@ Save Address Of CSRSI Function
*
  IARV64 REQUEST=GETSTOR,SEGMENT==AD(MAXSIZE),
  ORIGIN=ORIGIN,MF=E,IARV64,COMPLETE)   
  * 
   LGR0,ORIGIN   Get Starting Address Of Memory 
Object
  STG   R0,CSRSI_INFO@  Store Mem-Obj Address for CSRSI

  SYSSTATE AMODE64=YES,ARCHLVL=2

  L R15,CSRSI@   Load R15 with CSRSI Address
CALL  (R15),(CSRSI_TYPE,CSRSI_INFOLEN,CSRSI_INFO@,CSRSI_RC)
  LTR   R15,R15 Examine Return code
  BNZ   BAD_CSRSI   No, Exit


Multiple issues here. If this service *could* be called in 64-bit mode, then you
would probably need to use LGF with LINKINST=BASSM to invoke it and probably
using PLIST8 for the parm list. But, that is all moot because the service
supports 24- and 31-bit addresses only.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/


Re: Use of "sequence numbering" in current HLASM source?

2012-11-07 Thread Edward Jaffe

On 11/7/2012 7:21 AM, McKown, John wrote:

So, other than being "non main stream" and even "obsessively weird", is there 
any *technical* reason to maintain sequence numbers?


We got rid of sequence numbers in the majority of our HLASM source code long
ago. Only source code that is distributed to customers (for exits and such) has
them.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: ASMLANGX files

2012-11-06 Thread Edward Jaffe

On 11/6/2012 7:01 AM, Chuck Arney wrote:

I'm sure there are a number of tool providers that would like to take
advantage of smaller formats of ADATA.  Each provider could roll their own,
but a standard published format would of course be more desirable for the
good of both provider and user.  The ADATA format is published exactly for
this reason.  Why not the ASMLANGX format?


I think this is a very sensible suggestion. How about making it a SHARE 
requirement?

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: ASMLANGX files

2012-11-05 Thread Edward Jaffe

On 11/5/2012 7:48 AM, David Cole wrote:

Does anyone know if the internal format of ASMLANGX files has been published?


Some of our ADATA libraries are larger than an entire 3390 mod3! XDC use of the
more compact ASMLANGX format would be most welcome...

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Curosity Question

2012-11-02 Thread Edward Jaffe

On 11/2/2012 7:40 AM, Bill Fairchild wrote:

Rather than belabor this issue any further, if you could post a link to some 
explanation of the mathematical proof why clustering occurs around prime 
factors of a composite modulo, I would love to read it and try to understand 
what is going on.


ISTR that Knuth provides this proof in his SaS book. Unfortunately, it's in my
other office so I can't check for myself until Monday...

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Weird Metal C problem

2012-10-30 Thread Edward Jaffe

On 10/28/2012 9:46 PM, Edward Jaffe wrote:

On 10/27/2012 10:01 AM, Johnny Luo wrote:

  #include 
  #include 
   void main()
{
   _asm(" here we are " );
}


Shouldn't it be __asm instead of _asm?


A test conducted under z/OS 1.13 shows that _asm is an external function whereas
__asm inserts the supplied text directly into the METALC assembler language 
output:

*_asm(" here we are ");
 LR14,11
 OILH  14,X'8000'
 L 15,=V(@ASM)
 LA1,76(,13)   #MX_TEMP1
 ST14,76(,13)  #MX_TEMP1
 MVC   8(4,13),#NAB_1
 BASR  14,15

 here  we  are
*__asm(" here we are ");

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Weird Metal C problem

2012-10-28 Thread Edward Jaffe

On 10/27/2012 10:01 AM, Johnny Luo wrote:

  #include 
  #include 
   void main()
{
   _asm(" here we are " );
}


Shouldn't it be __asm instead of _asm?

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Conditional Sequential RLDs

2012-09-26 Thread Edward Jaffe

On 9/26/2012 11:36 AM, Duffy Nightingale wrote:

I just used this and I run on an old system (something that is very
desireable for a software company).  I thought it was cool because I have a
table full of the V() and the addresses are all automatically filled in.


We used to use V-cons but when we started writing 64-bit code in 2002 we changed
them all to A-cons. We use pointer-defined linkage *everywhere*! The problem is
that the HOBSET binder option, which sets the high-order bit in a 32-bit word
for AMODE(31) EPAs, does not set the equivalent low-order bit for 64-bit EPAs in
a doubleword. And, there is no LOBSET option. :(

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: The Transaction state (was Model 2827 New Instructions)

2012-09-22 Thread Edward Jaffe

On 9/22/2012 12:55 PM, Binyamin Dissen wrote:

On Fri, 21 Sep 2012 08:20:38 -0700 Edward Jaffe 
wrote:

:>There are existing search/update models in which the "runner" performs its
:>search using only block-concurrent instructions (such as L) without
:>serialization and then checks later whether a retry is needed. A good example 
is
:>IEANTRT. That code is FAST because the "retrieve" function never serializes
:>against the "update" function.

Wonder how the delete works. Perhaps it leaves the storage orphaned? Otherwise
the scan, if interrupted, could be left with a link pointer to nowhere.


A delete does not leave storage "orphaned", but it doesn't release it either.
The entry is simply made available for reuse by another create. The total amount
of storage required gradually increases until it reaches a high water mark. We
use similar techniques in some of our queue managers.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: The Transaction state (was Model 2827 New Instructions)

2012-09-21 Thread Edward Jaffe

On 9/21/2012 5:01 AM, Peter Relson wrote:

Of course Binyamin is right. Since the "runner" can get interrupted, then
the runner needs to run within a transaction too. (Getting interrupted
includes the z/OS LPAR getting interrupted by LPAR processing, which
covers even the disabled PSW case)


There are existing search/update models in which the "runner" performs its
search using only block-concurrent instructions (such as L) without
serialization and then checks later whether a retry is needed. A good example is
IEANTRT. That code is FAST because the "retrieve" function never serializes
against the "update" function.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Model 2827 New Instructions

2012-09-18 Thread Edward Jaffe

On 9/18/2012 2:09 PM, John Gilmore wrote:

Tony H:

I have already marked the typos I h ave found in SA22-7871-07.  I plan
to send them to John Ehrman, who will see to their annihilation; and I
urge you to send yours to him too.


Better yet, send them to Dan Greiner.

Ed Jaffe


Re: which instructions should I use?

2012-08-29 Thread Edward Jaffe

On 8/29/2012 11:07 AM, John Ehrman wrote:


But be careful: I've seen many examples of poor coding practices that --
simply because they were familar -- were propagated from one program to
another, to the detriment of all.


When I worked for a large bank in the 1980s, and saw how "new" JCL was
constructed there, I conjectured that all batch JCL is descended from the same
singular job stream.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: which instructions should I use?

2012-08-29 Thread Edward Jaffe

On 8/29/2012 6:33 AM, John Gilmore wrote:

Second, and more important, while Mr Dissen's notion that stereotyped,
'easy to understand' code sequences are to be prized "in the real
world" is his to cherish, I find it unattractive.  Such sequences,
often copied unreflectively from elsewhere, are too often the foci of
error.  Failure to take thought is but seldom a virtue, even in "the
real world" that Mr Dissen inhabits..


Keep in mind that some 'stereotyped' code sequences are so common that the
hardware contains optimizations for them. For example, the use of LA to
increment a pointer, followed closely by a use of the target register as an
address, is so common that special 'bypass' circuitry exists in the hardware to
make this sequence run fast. MVI/MVC to clear a field by propagation is
similarly optimized. There are numerous other examples as well. Replacing such
code sequences with well-intentioned alternatives will tend to make the code run
slower.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: which instructions should I use?

2012-08-28 Thread Edward Jaffe

On 8/28/2012 5:45 AM, David Bond wrote:

TMLL was included with the first set of Relative and Immediate instructions
  way back on the 9672-G2.  If you are willing to use AHI and BRC, then there
is not reason not to use TMLL.


I didn't see your response before I wrote mine. I said 'G3' but I'm sure you are
correct with 'G2'.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: which instructions should I use?

2012-08-28 Thread Edward Jaffe

On 8/28/2012 5:27 AM, McKown, John wrote:

Value to be tested is in a register, not storage. On the newer machines, the 
TMLL instruction can do this. But I run on a z9BC.


TMLL has been supported since 9672-G3 as TML.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Strange PC entry

2012-08-26 Thread Edward Jaffe

On 8/25/2012 7:26 AM, Chuck@arneycomputer wrote:

If you use a zPDT or Hercules, I guess you could use a PC (Private code) 
section running on your PC (Personal Computer) to execute a PC (Program Call) 
instruction.  Just for fun of course.


But, doing so would not be politically correct!

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Strange PC entry

2012-08-24 Thread Edward Jaffe

On 8/23/2012 3:40 PM, John Gilmore wrote:

PC is now an overloaded term, one that needs to be used carefully.


I'll say! I only read this thread because I thought it was talking about some
anomalous entry into a PC routine!

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


SHARE MVS Program Survey - Your Participation Requested

2012-07-26 Thread Edward Jaffe

The SHARE MVS Program has created a survey to help determine which topics to
include in upcoming conferences. The survey contains a list of z/OS enhancements
that we think should be implemented in most installations. Many of these aren't
implemented and we'd like your input to understand why. Our Projects will use
the survey results to help adapt session focus in these areas. The list itself
is very interesting and you'll be able to compare your installation to others
after the survey concludes.

Already a SHARE member? Go to http://www.share.org/MVS and use your existing
SHARE login and password, or click the link at the bottom of the page for reset
options. From http://www.share.org, you can also select 'Our Community', and
then select the 'MVS Program' as the Area of Interest.

Not a SHARE member? It’s easy to create a web user profile!

 * Visit http://www.share.org/membership
 * Check to see if your company is already a SHARE member – there’s no cost to
   you or your company to be added to the membership, and you’ll receive full
   member benefits!
 * If your company is not a member, select “Non-Member Account”. You’ll be
   asked to provide your contact information and optional demographic
   information. This should take less than 5 minutes to complete.
 * Your request to access SHARE.org will be approved within one business day.
   If you need to expedite this process, please call (888-574-2735) or email
   SHARE HQ (shar...@share.org) and request immediate access.
 * Follow the instructions above to access the survey.

[Shameless Plug: If you haven't seen the new SHARE website, you'll be impressed
by the many new features such as a z/OS blog, user forums, access to prior
years' proceedings, free webcasts, and additional publications.]


Re: Subject: AW: ** ASMA030E Invalid literal usage - =CL8'MARTINWH'

2012-07-12 Thread Edward Jaffe

On 7/12/2012 9:56 AM, McKown, John wrote:

Which is totally simplistic these days. You bought your cell phone, right? Do
you really think that you can do anything to it that you want to? And that it
is totally documented? In today's "IP is __mine__" world, more and more things
are becoming "black boxes". "No user serviceable parts in side."


I am not afraid to 'root' my Android phone. If I had an iPhone, I would
'jail-break' it for sure!

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Detecting RMODE at assembly time

2012-07-02 Thread Edward Jaffe

On 7/1/2012 7:03 PM, Alex Kodat wrote:


As far as requiring "smarts" to see out eligible GETMAINs, my point was that it
shouldn't require any. Heck, even I was able to change all our storage
allocations
years ago to use 64-bit backing and haven't ever had a problem resulting from
that. I can assure you that I don't have the smarts to look for eligible 
GETMAINs
as I wouldn't even know what to look for. What would I look for?



As part of our RSCR effort many years ago, we changed all of our GETMAIN and
STORAGE OBTAIN requests to back everything in 64-bit real. Everything seemed to
work fine at first, but eventually failed when some of the code was executed in
an LPAR with >2G of real. We found numerous occurrences of code that needed to
be enhanced to use LRAG instead of LRA. (IIRC, some were real-mode channel
programs, some were PR/SM DIAGNOSE, some were VM DIAGNOSE. There may have been
others.) This had to be done conditionally, since at the time we still supported
ESA/390 architecture. This is why I mentioned 'eligible' GETMAINs.

Naturally, I highly recommend LOC=(xx,64) be specified whenever possible.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Detecting RMODE at assembly time

2012-07-02 Thread Edward Jaffe

On 7/1/2012 7:03 PM, Alex Kodat wrote:

Sorry but I don't understand what re-entrancy has to do with how storage is
backed.
Care to explain?


I was referring to the practice of using GETMAIN to acquire working storage
areas. This technique is most often employed by RENT programs.



Also, I assume by "have no control over the backing of storage" you meant that
most older programs don't specify the required backing for their GETMAIN?


No. I meant that programs don't have control over where the storage, into which
they are loaded by the contents supervisor, is backed.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Detecting RMODE at assembly time

2012-07-01 Thread Edward Jaffe

On 6/30/2012 10:04 AM, Alex Kodat wrote:


Storage for all data areas and control blocks can be backed above the 2 GB bar
even if your program is running in 24-bit mode. This means that you can code
either of the following:
* LOC=(BELOW,ANY)
* LOC=(BELOW,64)
on the GETMAIN or STORAGE macro.
Recommendation: Code the second value as 64.
Note: Code LOC=(BELOW,ANY) or LOC=(BELOW,24) when using tape devices
that do not support 64-bit IDAWs.


This recommendation assumes the AMODE(24)/RMODE(24) program is coded using
re-entrant programming techniques and is actively being maintained by someone
with enough "smarts" to seek out all eligible GETMAINs, specify a backing
location other than the default, and test to be sure everything works as
expected. Note that many older programs are not re-entrant and have no control
over the backing of the storage into which they are loaded. (The system has no
choice but to use 24-bit backing.)

IMO, anyone doing active development in the 21st century should be writing
interface macros and services that support RMODE 31 calling programs. Enhancing
existing 24-bit-only services to support 31-bit-resident callers seems to me to
be a much better use of programmer resources than spending time 'enhancing'
those 24-bit interfaces to detect RMODE 31 callers at assembly time only to
issue an error MNOTE.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Detecting RMODE at assembly time

2012-07-01 Thread Edward Jaffe

On 6/30/2012 9:32 AM, Paul Gilmartin wrote:

Does the z hardware support 64-bit I/O?


Of course! CCW-based channel programs support 64-bit IDAWs (and MIDAWs). zHPF
channel programs, with or without TIDAWs, are natively 64-bit.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Detecting RMODE at assembly time

2012-06-30 Thread Edward Jaffe

On 6/30/2012 7:57 AM, Edward Jaffe wrote:


For example, if a z/OS system is now capable of running 1000 more address spaces
than it could twenty years ago, that means 384,000 additional bytes of fixed,
common storage below 16MB is required just to hold the ASCBs (address space
control blocks -- 384 bytes each)! There are other fixed, common storage control
blocks needed as well. And 24-bit common storage, whether fixed or not, reduces
the amount of 24-bit virtual private area available.


Lol! In reading back my post as it was echoed to me, I see I failed to directly
state the most important point. :-[

While there is one shrinking virtual 24-bit area per address space, there is
ONLY ONE 24-bit real storage area shared by the ENTIRE SYSTEM! So, not only does
growth of fixed, common 24-bit storage 'eat' into the total that is available,
but private 24-bit addresses when they are fixed (such as during an I/O) are
competing for an ever-shrinking pool of 4K frames in that singular system-wide 
area.

24-bit I/O. Don't do it!

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Detecting RMODE at assembly time

2012-06-30 Thread Edward Jaffe

On 6/28/2012 2:12 PM, Binyamin Dissen wrote:

In what way?

RMODE ANY/31 does NOT guarantee that the module will be loaded above the line.
It is a preference.


Lol! If your address space is so 31-bit storage constrained that your RMODE(31)
program must be loaded into 24-bit memory, the just-loaded program probably
won't run worth a damn. IJS...

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Detecting RMODE at assembly time

2012-06-30 Thread Edward Jaffe

On 6/28/2012 7:02 AM, Jay Toran wrote:

If the module is above the line, my code that the macro calls doesn't run.
I want to give the programmer a warning if that could happen by letting them
know at assemble time.

If it isn't possible, any ideas?


When presented with a similar challenge many years ago, we decided to invest the
development resources necessary to make ALL programs RMODE(31).

Surprisingly, 24-bit VSCR is as important today as when MVS/XA first arrived on
the scene. It's not a problem that was 'solved' decades ago and can now be
ignored. The number of logical processors per LPAR is growing as is the number
of concurrent address spaces supported by z/OS and other operating systems. This
'horizontal' growth is putting new pressure on virtual and (precious real)
memory below 16MB.

For example, if a z/OS system is now capable of running 1000 more address spaces
than it could twenty years ago, that means 384,000 additional bytes of fixed,
common storage below 16MB is required just to hold the ASCBs (address space
control blocks -- 384 bytes each)! There are other fixed, common storage control
blocks needed as well. And 24-bit common storage, whether fixed or not, reduces
the amount of 24-bit virtual private area available.

IMHO, any programs that still do I/O to buffers below the line should be
modified to do I/O to buffers above the line as soon as possible. (Even if you
think your RMODE(24) program does no I/O, consider that below-the-line I/O
occurs in CSV FETCH processing just to load your RMODE(24) program into memory!)

Of course, the goal should be RMODE(31) for all programs if practical to do so.
That should get you positioned just in time for entry into the world of
RMODE(64) programming when/if such a thing comes to be reality. :-)

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: HLASM - 20 years old

2012-06-21 Thread Edward Jaffe

On 6/21/2012 7:36 AM, Sharuff Morsa3 wrote:

John took the initiative for creating High Level Assembler as a follow up
product to the older Assembler F and Assembler H; and he is widely
regarded as the "father of HLASM".


[snip]


Many thanks to John and the developers in Perth (many of them called John
- at one point I'm sure you couldn't work on HLASM unless your name was
John or possibly Craig).

Without all of their hard work and dedication; the product, the language,
its many facilities, HLASM would not be what it is today.

Happy Birthday HLASM.


Happy Birthday, indeed and a hearty congratulations! Hard to believe it's been
20 years already!

For those interested in such things, see
http://2012atlanta.share.org/WrapUpArticle.aspx

"In Atlanta, SHARE recognized a long-time SHARE volunteer, gentleman and
scholar, Dr. John R. Ehrman with the Distinguished Service Award. John has been
a SHARE volunteer for over 40 years. His first SHARE event was in February 1964,
and he has only missed two meetings since then in August 1965 and February 1966.
John is the longest continuing attendee that SHARE has had! He served on the
SHARE Board of Directors in 1972-73 and sketched out the initial design of the
previous SHARE logo of the red 'S'. Most recently John has been serving as the
Project Manager for the Assembler Project. He has won multiple best session
awards, including for the Assembler Boot Camp, and has also been awarded the
Distinguished Speaker Award. John is the 'father' and champion of the High Level
Assembler and his work led to approval for its development in 1992.
Congratulations John!"

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: To Gen or Not To Gen

2012-06-18 Thread Edward Jaffe

n 6/17/2012 8:18 AM, Hardee, Chuck wrote:

Hello Listers!

I am in the process of writing a macro and would like to control whether or not 
some MNOTEs are generated.

What I am looking for is whether or not I can check the current status of GEN 
versus NOGEN.

If the macro is assembled and PRINT GEN is specified, I don't want to issue my 
MNOTEs but if the assembly is performed with PRINT NOGEN, then I want to 
execute the MNOTEs.

Has anyone ever done anything like this?
If so, how does one test for the GEN/NOGEN status?



You might choose to define your own PUSH, POP and PRINT macros and use OPSYN to
make them active. Those three macros would then internally manage the binary
on/off value for producing the MNOTEs as needed. Here is a quick 'proof of
concept' PRINT macro:

Stmt  Source Statement
   1  MACRO ,
   2  XPMAC &A,&B
   3  GBLB  &Mnotes
   4  AIF   ('&A' EQ 'GEN').L1
   5  AIF   ('&A' EQ 'NOGEN').L2
   6  AGO   .L3
   7 .L1  ANOP  ,
   8 &Mnotes  SETB  0
   9  MNOTE 'Debugging: Mnotes will be suppressed'
  10  AGO   .L3
  11 .L2  ANOP  ,
  12 &Mnotes  SETB  1
  13  MNOTE 'Debugging: Mnotes will be produced'
  14 .L3  ANOP  ,
  15  XPRINT &A,&B
  16  MEND  ,
  17 XPRINT   OPSYN PRINT
  18 PRINTOPSYN XPMAC
  19 TEST RSECT ,
  20  PRINT GEN
  21+Debugging: Mnotes will be suppressed
  22+ XPRINT GEN,
  23  PRINT NOGEN
  24+Debugging: Mnotes will be produced
  25+ XPRINT NOGEN,
  26  PRINT ON
  27+ XPRINT ON,
  28  PRINT OFF
  29+ XPRINT OFF,
  38  PRINT OFF,NOPRINT

This last statement illustrates a drawback to this approach. The 'NOPRINT'
keyword is not honored for your OPSYNed PRINT statement.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Jumpify Your Code (Was: Base registers)

2012-06-17 Thread Edward Jaffe

On 6/17/2012 9:13 AM, Martin Truebner wrote:

Ed,

can I link to yours from mine?

http://pi-sysprog.de/free/makerel.html

or (in another language)

http://pi-sysprog.de/free/makereld.html

on the very end


Of course! 8-)

Your bilingual perspective (I mean VSE/MVS, not English/German ;-) ) is always
highly appreciated!

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Jumpify Your Code (Was: Base registers)

2012-06-17 Thread Edward Jaffe

On 6/16/2012 2:54 PM, Scott Ford wrote:

I saw your 2007 presentation and have a copy. I am always looking for good 
examples to aid my education and understanding.


For those having trouble finding the February 2011 version of this presentation
on SHARE's new web site, here is a link to it on the Phoenix Software site:
ftp://ftp.phoenixsoftware.com/pub/demo/Jumpify_Your_Code_2011.pdf

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Base registers

2012-06-15 Thread Edward Jaffe

On 6/5/2012 2:19 PM, Tom Marchant wrote:

On Tue, 5 Jun 2012 15:59:36 -0400, Scott Ford wrote:


where can you find a good sample of baseless assembler code ?

Look for Ed Jaffe's SHARE presentation "Jumpify your code".


The original "jumpify your code" presentation was from 2007. When I updated it
in 2011 for zEnterprise, I retitled it "jumpify your programs".

I *knew* I should have kept the original title! >:o

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Base registers

2012-06-15 Thread Edward Jaffe

On 6/2/2012 5:38 PM, Tony Thigpen wrote:

>  but there is none to be made for doing so in
> writing even a new single RSECT.

How about this reason.

We have several customers running our software that are on pre-MP3000
machines that don't even support relative instructions. They still pay
us for support and that includes software upgrades.

Other vendors may not care about existing customers, but we do.

Almost all of these customers also can't upgrade their VSE. They fell
into the ESL trap with IBM many years ago and now can't get their budget
dollars back to get current because of the IBM monthly charges. As
faithful customers for many years, we do not want to kick them while
they are down just so we can do 'fancier' code.


There are two sides to this. You need to care about all of your customers, not
just those with no money. Dragging premier customers, with the latest hardware
and software, down to the level of the laggards is not fair to them. Customers
that continue to invest heavily in the platform must be rewarded for doing so.
IBM and ISV software should exploit the latest hardware and software features in
ways that provide these leading edge customers with the very best performance
and feature set possible lest they find an alternative (seemingly cheaper) way
to host their applications.

It's not just 'fancier' code. The productivity gains accrued by allowing
programmers to leverage new facilities are immense; new features can be
implemented in far less time giving customers more of they want for their
maintenance dollars; tremendous run-time performance savings can be realized by
leveraging new hardware and software features; today's memory rich (especially)
64-bit environments allow programs to do things only dreamed of twenty years
ago; and, so on...

The ESL problem is a unique problem for VSE that does not exist for MVS
customers. Nevertheless, the reality is that very, Very, VERY few customers
running severely back-level operating system releases are interested in
installing the latest and greatest release of 'Product X' -- even on VSE. Often,
such systems exist because the customer is in their 15th year of their 3-year
plan to migrate off the mainframe.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: DS 0H

2012-06-14 Thread Edward Jaffe

On 6/14/2012 9:52 AM, McKown, John wrote:

If that is the definition:

label:

is functionally identical to:

label DS 0H

It would be __simple__ to implement for users of FLOWASM. Just modify the 
source input routine to change the statement to remove the tailing : and insert 
DS 0H.


Change this:

   IF CLI,0(R3),GT,C' '  If label present
 JAS   R14,FLOW_SrcParse   Advance past Label
   ENDIF ,   EndIf

to this:

   IF CLI,0(R3),GT,C' '  If label present
 JAS   R14,FLOW_SrcParse   Advance past label
 IF LTR,R4,R4,NP   If nothing after label
   LRR14,R3  Point to last character
   AHI   R14,-1  (same)
   IF CLI,0(R14),EQ,C':' If trailing colon
 L R0,FLOWSAV2+4   Old stmt pointer
 L R1,FLOWSAV2 Old stmt length
 AHI   R1,-1   Adjust for colon
 LAR3,FLOWSTMW New stmt pointer
 STR3,FLOWSAV2+4   (same)
 LAR4,L'FLOWSTMW   New stmt length
 STR4,FLOWSAV2 (same)
 LRR14,R3  Target pointer
 LRR15,R4  Target length
 DO UNTIL=NO   Do for MVCLE
   MVCLE R14,R0,C' ' Copy with blank pad
 ENDDO ,   EndDo
 JAS   R14,FLOW_SrcParse   Advance past label
 MVC   1(5,R3),=C'DC 0H'   Set 'DC 0H'
   ENDIF ,   EndIf trailing colon
 ENDIF ,   EndIf nothing after label
   ENDIF ,   EndIf label present

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: DS 0H

2012-06-13 Thread Edward Jaffe

On 6/13/2012 11:32 AM, Rob van der Heij wrote:

What's this talk about labels in assembler programs?  Don't we all do
structured assembler now? ;-)


Of course! But, subroutines still need labels.

***
* Subroutine to Accumulate FOOs   *
***
AccumulateFoos DC 0H
 STKPUSH ,  Save the registers
 .
 . (FOOs get accumulated here)
 .
 STKPOP ,   Restore the registers
 BRR14  Return

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: anti 4095 base guys

2012-06-13 Thread Edward Jaffe

On 6/4/2012 12:48 PM, Binyamin Dissen wrote:

On Mon, 4 Jun 2012 14:20:09 -0500 "McKown, John"
  wrote:

:>No such thing as a negative displacement. A displacement is more like an 
unsigned immediate operand. From 0..4095 (0x000 to 0xFFF for a 12 bit 
displacement) or 0..1048575 (0x0 to 0xF for a 20 bit long displacement).

You may wish to look up the **Y instructions.


The corresponding 'grande' instructions, introduced with z/Architecture, also
use 20-bit *signed* displacements.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: DS 0H

2012-06-12 Thread Edward Jaffe

On 6/5/2012 4:51 AM, McKown, John wrote:

My rule for most instructions is "place any required label on a separate DS 0H
as the preceding statement."


I use DC 0H rather than DS 0H, but that is a minor difference. Naturally, the
label is always on its own line. Otherwise the instruction would not line up
with the others below and that would look ugly. For example:

***
* Subroutine to Accumulate FOOs   *
***
AccumulateFoos DC 0H
 STKPUSH ,  Save the registers
 .
 . (FOOs get accumulated here)
 .
 STKPOP ,   Restore the registers
 BRR14  Return

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: MVC with 2nd operand length

2012-05-23 Thread Edward Jaffe

On 5/23/2012 11:43 AM, Ray Mullins wrote:

Try using the HLASMTK SPM SELECT on a CLC where a variable-length literal is
the first operand. A CLC:2 or CLC2 macro or whatever would use the length of
the second operand would simplify a lot of code that I have inherited.


Excellent use case, Ray. We use both CLC2 and MVC2 macros in exactly that way.
Slick!

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Messages - Was MVC with 2nd operand length

2012-05-22 Thread Edward Jaffe

On 5/22/2012 1:56 PM, Mike Shaw wrote:

On Tue, May 22, 2012 at 2:29 PM, McKown, John
wrote:
<...snip...>IMO. I.e. a BASH UNIX prompt beats the crap out of line mode
TSO.<...snip...>


Jeepers John, I gotta disagree with you on that one. How is '#' as a prompt
any better than 'READY'?


He's talking about the capabilities available at the prompt. TSO/E READY is
very, very weak.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: MVC with 2nd operand length

2012-05-22 Thread Edward Jaffe

On 5/22/2012 6:56 AM, Art Celestini wrote:

Personally, I have not encountered many circumstances where I needed to MVC 
using
the length of the source.


I find that surprising.

I just scanned the assembler source code for one of our more popular products
and found 27,930 MVCs and 927 MVC2s. That means our programmers found MVC2
preferable to MVC in at least 3.2% of cases. These results are heavily skewed by
the fact that many MVCs are found in code authored before we came up with MVC2
some years ago.

I then randomly chose one recently-coded program and found 70 MVCs and 4 MVC2s.
MVC2 was used in 5.4% of cases or approximately one in every eighteen moves.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: MVC with 2nd operand length

2012-05-16 Thread Edward Jaffe

On 5/16/2012 9:48 AM, John Ehrman wrote:

 Macro
&LabMVC2&Target,&Source
&LabCLC   0(0,0),&SourceX'D500 ',S(&Source)
 Org   *-6   Back up to first byte of instruction
 LA0,&Target.(0) X'4100',S(&Target),S(&Source)
 Org   *-4   Back up to first byte of instruction
 DCAL1(X'D2',L'&Source-1)  First 2 bytes of instruction
 Org   *+4   Step to next instruction
 MEnd


This is very similar to the macro we have of the same name. Only ours has an AIF
that tests the first character of &Target for '(' and takes a second path that
supports the following coding format:

   MVC2  displacement(,reg),source_field

For example:

   MVC2  0(,R14),_1.DSTDEST  Set Character DEST data

Without that second path through the macro, the above code will fail with:

** ASMA173S Delimiter error, expected blank - (0)

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Where to find out about "PER zero-address detection"?

2012-04-25 Thread Edward Jaffe

On 4/25/2012 8:31 AM, Mike Shaw wrote:

One could always try a SLIP SET,... command with ACTION=IGNORE to see if
the syntax one has a hunch about is correct.


And, if you try it on a z10 or earlier processor you will get:

IEE745I THE ZAD  FACILITY IS NOT AVAILABLE

Looking up that message yields:


IEE745I   THE facility FACILITY IS NOT AVAILABLE

Explanation:  The named facility is not available.

In the message text:

facility
ZAD, which indicates that the zero-address-detection facility, as
requested by the SLIP SET,ZAD command, is not installed on the
machine.


--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Where to find out about "PER zero-address detection"?

2012-04-25 Thread Edward Jaffe

On 4/25/2012 6:53 AM, McKown, John wrote:

I've tried finding about this using the -08 version of the Principles of 
Operation. I got a few hits, but nothing which described what it actually 
__does__. I can guess from the phrase, but I'd like something documented.


The description for z/OS msgIEE735I (output of D SLIP= command) contains:

| PER-ZAD
| PER zero address detection trap.

This suggests strongly that you can issue a SLIP SET,ZAD,... command to
capture/track ZAD events on a z/OS system.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: CALL macro "enhancement" thought

2012-04-11 Thread Edward Jaffe

On 4/11/2012 2:27 AM, Martin Packer wrote:

Trashing the I Cache is still very much a concern.


However, in the case posed to the group (branching around a constant to be
loaded into a register), the "data" is not being modified.

Though not ideal, it's perfectly OK to have instructions and constants in the
same cache line. Multiple copies of the line can be loaded simultaneously
"read-only" into both I-cache and D-cache on multiple processors and perform 
well.

However, if you UPDATE the line, two things will happen as I understand things:
a) all copies of that line will be purged from D-cache on all 'other' processors
so that the 'current' processor can exclusively lock/update the line and b) the
line will be purged from I-cache on all processors forcing the processor
pipeline to go back to an earlier point in instruction fetch processing to
re-fetch the line -- bad news.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: curiosity: In AR mode, why doesn't BALR/BASR/BRAS/BRASL set the value of the corresponding AR register ?

2012-04-10 Thread Edward Jaffe

On 4/10/2012 11:31 AM, McKown, John wrote:

But that made me wonder why the z/Architecture does not specify that the contents of the 
AR register associated with the link register in any of the "branch and link" 
type instructions: BALR, BASR, BRAS, BRASL, and BASSM will be set to 0?

Anybody have any idea why these type of instructions don't set the AR?


Unnecessary. Instruction fetch is always from the primary address space.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: DataSpace & LOAD

2012-03-05 Thread Edward Jaffe

On 3/5/2012 3:18 PM, Kevin Lynch wrote:

A Common Area Dataspace is automatically shared between all existing and future 
Address Spaces, whereas 64 bit shared storage is not automatically addressable 
by all Address Spaces.


For that requirement one can acquire 64-bit common storage instead.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: DataSpace & LOAD

2012-03-05 Thread Edward Jaffe

On 3/5/2012 12:32 PM, Gainsford, Allen wrote:

I take it that you're referring to using a guard area, and using CHANGEGUARD
to convert guard space to usable space as needed.


We do exactly that in numerous places; it's a useful technique. The only "trick"
is choosing the upper bound.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: DataSpace & LOAD

2012-03-04 Thread Edward Jaffe

On 3/4/2012 4:34 PM, esst...@juno.com wrote:

Ed Jaffe wrote
What we do is invoke the binder (via the IEWBIND macro) to read in the RLDs for 
the load module. Then we can relocate the module anywhere we want, including to 
a data space.


I have been using offsets in the past and would like to see if I can use 
addresses. Now having stated that, can You elaborate on using IWEBIND. It is 
not a macro I use regularly.


The binder API (IEWBIND) is described here:
http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2b2b0/3.0

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: DataSpace & LOAD

2012-03-04 Thread Edward Jaffe

On 3/4/2012 1:21 PM, esst...@juno.com wrote:

Has anyone ever tried to issue a LOAD macro and have the program (i.e Table) 
placed directly into a data space.

I have issued MVS LOADS (which is a load for a table) and then use MVCL in AR 
mode to copy the Table into a Dataspace.

Now if the Table contained Address/pointers to sub list what techniques do 
others use to resolve Address Tranlation ?


What we do is invoke the binder (via the IEWBIND macro) to read in the RLDs for
the load module. Then we can relocate the module anywhere we want, including to
a data space.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Program FLIH backdoor - This is a criminal breach of security!

2012-03-02 Thread Edward Jaffe

On 3/2/2012 9:09 AM, David Cole wrote:

Certainly, the "hearsay" could be wrong. And I do hope that it is wrong.
But it is a better course to assume that the charge is right and
raise awareness to the point where it will be investigated and PROVEN
to be right or wrong...

... than it is to assume that the charge is wrong and just sit back
and *hope* that nothing bad happens.

In other words, I think that being noisy about this issue will have a
more constructive result than being silent will.


The subject line of this thread started off as "Program FLIH". Then, you renamed
it to, "Program FLIH backdoor - This is a criminal breach of security!" Making
noise is one thing; making speculative accusations of criminal wrongdoing is
quite another. That's the stuff of lawsuits. Innocent until proven guilty is the
American way; not the other way 'round.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Program FLIH backdoor - This is a criminal breach of security!

2012-03-02 Thread Edward Jaffe

On 3/2/2012 1:29 AM, David Cole wrote:

If the PFLIH hook is (as it has been described earlier in these
threads) a mechanism by which a non-authorized process can become
authorized, then its very existence is a "substantive offense" in and
of itself. It is not just "a template", it doesn't just show the way.
It *is* the way.


I keep coming back to IGX00011. It's presence on z/OS systems PROVES that the
very existence of a "magic" SVC service, while arguably not a 21st-century best
practice, is NOT considered an exposure or "substantive offense" when done
correctly. (Those last three words are very important!)

A "magic" PFLIH technique is not substantially different, from an integrity
standpoint, than a "magic" SVC except that the code gets control for EVERY
interrupt and so has the potential to slow things down if not implemented
efficiently.

The real question is whether an unintended third party can use the code to
become authorized. Unlike the "magic" SVCs of the past, I'm confident that
IGX00011 cannot be exploited by unintended third parties. The same might very
well be true of the PFLIH approach being discussed here, despite any third-party
hearsay from Bill Fairchild's colleague claiming otherwise.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Program FLIH backdoor - This is a criminal breach of security!

2012-03-01 Thread Edward Jaffe

On 3/1/2012 9:23 AM, Binyamin Dissen wrote:

I would suggest by the fact that they do it in a tricky way and not in a
forthright way that there is an exposure. Otherwise why not simply use a PC?
There is no need to do this (at least since DAS) in the FLIH.


I suspect the code was written long before the existence of PC routines. The
approach is clever for sure, but that in itself does not guarantee there is an
exposure.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Program FLIH backdoor - This is a criminal breach of security!

2012-03-01 Thread Edward Jaffe

On 3/1/2012 6:52 AM, David Cole wrote:


This is not just despicable, under today's law, it is actually criminal! Any
vendor who does this could be (and should be) jailed in criminal courts and
sued out of existence in civil courts.

I do not know who is doing this, but I believe utmost pressure must be brought
to bear upon that vendor so that it will commit every resource to removing the
breach from its products.


Just to clear: intercepting the FLIH does not itself constitute an exposure and,
as far as state changes go, the checking and requirements could be complete
enough to avoid any integrity problem. For example, the methodology could be
similar to that employed by IBM's IGX00011 "magic" SVC and its intended caller.
Unless someone can prove there really is an exposure, which to my knowledge has
not been done, I suggest that passing such judgment is premature.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Requiring FLOWASM for CBT donations

2012-02-27 Thread Edward Jaffe

On 2/27/2012 1:44 PM, Gary DiPillo wrote:

Well, Ed, you must have already done that, since I just found it in CBT724.

The FILE724.XMI has a 12/26/2011 date, and the files in the .XMI have dates
from 2005.


Forgot about that. I think Sam Golob did that for me...

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Requiring FLOWASM for CBT donations

2012-02-27 Thread Edward Jaffe

On 2/27/2012 1:02 PM, McKown, John wrote:

OK, I'm considering donating some code to the CBTtape so that others can use 
it, if they want. The code, such as it is, is all for UNIX commands.
I use FLOWASM because it makes it easier for me to use vi to edit HLASM code if 
I don't need to conform to the normal HLASM syntax requirements.
I especially like not needing the continuation indicator in column 72.

Does anybody know if the CBT will accept HLASM which requires FLOWASM to 
assemble? Or should I reformat the code, just to be nice?


Maybe FLOWASM should be donated to the CBT as well?

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Program FLIH

2012-02-25 Thread Edward Jaffe

On 2/24/2012 9:54 AM, Gibney, Dave wrote:

What I don't understand, pardon my "naifness" (split the thread John:), is the 
need for such today.


I suspect new code authored from-scratch today, by the "offending" vendor, would
never intentionally use a hook like the one that has been described here. But an
existing infrastructure might depend on it heavily. And, many different products
from a single ISV can share the same robust infrastructure.

The exploit (if it exists) might not be any harder to crack than it was for
NEON's zPrime to turn on a bit to make TCB work eligible for zIIP execution. Or
it might now be a maze of checks that cannot be exploited by others.

It is a complete myth that IBM doesn't sanction SVCs that turn off the problem
state bit in the PSW. If that were true, the mere existence of IGX00011 would
invalidate IBM's integrity statement for z/OS. That extended SVC routine (ESR)
can be invoked by an unauthorized problem program with the right name and other
attributes and it will return in supervisor state. Guaranteed!


When any of the vendors I named instruct me so, I dutifully APF their libraries 
and they often reside in the linklist which we at least do set AFP via IEASYSxx.


You can't be expected to catch subtle MVS integrity exposures at install time.
You must assume that no legitimate software vendor--including IBM--would
knowingly violate its own integrity statement.

Furthermore, I hope you didn't hesitate when our installation instructions asked
you to covertly deploy our sabotage backbone along with the rest of our
authorized components. To activate, press ATTN three-times and in the secret
prompt area type in the name 'JOSHUA". Enjoy!
.
.
.
.
.
.
.
.
.
.
.
.
LOL! This is a JOKE! We have no back doors of any kind. We take MVS integrity
VERY seriously! :-D

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Program FLIH

2012-02-24 Thread Edward Jaffe

On 2/24/2012 9:51 AM, Mike Shaw wrote:

On Fri, Feb 24, 2012 at 8:43 AM, John Gilmorewrote:



I believe, however, that this name should be made public.  This
information should not be confined to the priesthood


John,

The name of the offending ISV can be inferred if you read the text of each
post in this thread carefully...


I think John meant PUBLIC--as opposed to known among a small minority, including
those involved in this discussion.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Program FLIH

2012-02-24 Thread Edward Jaffe

On 2/24/2012 5:43 AM, John Gilmore wrote:

There had been a tacit assumption that notionally respectable ISVs do
not do such things.  That assumption has been undermined, and even
responsible ISVs will now have to spend time and energy reassuring
their customers that they are not guilty too.

They are all now in the position of a locksmith suspected of burglary.


I had a similar thought, so yesterday I reviewed our integrity statement...

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Program FLIH

2012-02-23 Thread Edward Jaffe

On 2/23/2012 1:08 PM, Hall, Keven wrote:

If you're at all curious to see if it's in your system/s you can use
IPCS (as of z/OS v1.9) to browse real storage when source is specified
as ACTIVE.  You need to have read access to BLSACTV.SYSTEM in class
FACILITY and then use the command:
 IP  L  pointer_at_location_1DC  ABS  INST

If the address at location 1DC points to a page boundary it's most
likely that the 3rd party code is installed.


Interesting. It's not on ANY of our systems. HOWEVER, I looked at a dump
recently sent in from a large customer and there it was!

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: FLOWASM observation

2012-02-22 Thread Edward Jaffe

On 2/22/2012 7:01 AM, McKown, John wrote:

... but still send each record read by the assembler to the PROCESS
subfunction in order to "do its magic". It works wonderfully.


Yay! Another happy customer! :-)


I've also changed the PROCESS subfunction to translate all x'05' (EBCDIC tabs)
to x'40' (a single space). That's because I sometimes use vi to edit my
assembler. I forget myself and use the ! tab key.


If there are changes you think should be permanently incorporated into FLOWASM,
please send them to me. Thanks!

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: FLOWASM observation

2012-02-22 Thread Edward Jaffe

On 2/22/2012 6:47 AM, Paul Gilmartin wrote:

Why is a RDJFCB required at all?  I'm primarily not an assembler
programmer, but I've coded a few OPENs successfully, but never
a RDJFCB.  I would suggest that if RDJFCB fails, let FLOWASM,
not assembler, proceed with its OPEN and I/O processing.


If RDJFCB fails, so will OPEN. The reason it failed in John's case is simply
because he didn't provide a SYSIN DD statement.

RDJFCB is used to provide the "Source Information" requested by the assembler on
its AXPROPN call to the exit:

AXPMEMN Member Name
AXPMEMT Member Type (VSE only)
AXPDSN  Data Set Name
AXPVOL  Volume Serial Number

You could get this information by chasing control blocks, but it's far better to
use supported services whenever you can.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: FLOWASM observation

2012-02-21 Thread Edward Jaffe

On 2/21/2012 8:52 AM, McKown, John wrote:

I keep my HLASM source in z/OS UNIX files. "Just because I want to.". This works well for me. The only problem that I've run into is 
when I edit with "vi" (yes, I get what I deserve). ISPF edit "knows" that if I replace "ABCD" with "EF", 
it should only move the non-blank characters immediately to the right of the "ABCD" left. vi doesn't do this. This is really disruptive 
of continuation characters in column 72. So, looked at FLOWASM. Wonderfully, one thing it allows is continuation of a statement without the 
continuation character in column 72! So I thought it would be wonder to use and remove all the characters from column 72. Unfortunately, FLOWASM 
uses RDJFCB on the DCB which describe the input dataset. This RDJFCB gets an RC of 4 when the input is a UNIX file.. It appears that 
the RDJFCB is really only used to pass back the DSN and volume of the input dataset to the assembler.


John,

In studying the FLOWASM code, I see the only reason there is an OPEN at all in
routine FLOW_SrcOpen is to handle long, variable-length records. If your records
are all <= 80 characters in length (which I assume they must be since you're not
currently a FLOWASM user), then it should be OK to let the assembler perform the
OPEN and READs for us.

I would change the following code from this:

DO ,  Do for OPEN processing
  LAR2,FLOWDCB  Point to the DCB
  MVC   FLOWMACW(FLOWRDFML),FLOWRDFM Copy model RDJFCB macro
  RDJFCB ((2)), Read the JFCB
  MF=(E,FLOWMACW)   (same)
  IF LTR,R15,R15,NZ If non-zero return code
LAR15,AXPCBAD Indicate OPEN failed
XRR0,R0   Set reason code = 0
ASMLEAVE ,Leave the structure
  ENDIF ,   EndIf

to this (only one line changed. See '<== HERE' comment):

DO ,  Do for OPEN processing
  LAR2,FLOWDCB  Point to the DCB
  MVC   FLOWMACW(FLOWRDFML),FLOWRDFM Copy model RDJFCB macro
  RDJFCB ((2)), Read the JFCB
  MF=(E,FLOWMACW)   (same)
  IF LTR,R15,R15,NZ If non-zero return code
XRR15,R15 Set return code = 0 <== HERE!
XRR0,R0   Set reason code = 0
ASMLEAVE ,Leave the structure
  ENDIF ,   EndIf

I believe this change will instruct the assembler to fall back to its own
internal OPEN and READ processing for SYSIN (or whatever DD you're using) which,
as you know, contains support for z/OS UNIX files.

Regards,

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: FLOWASM observation

2012-02-21 Thread Edward Jaffe

On 2/21/2012 8:52 AM, McKown, John wrote:

I keep my HLASM source in z/OS UNIX files. "Just because I want to.". This works well for me. The only problem that I've run into is 
when I edit with "vi" (yes, I get what I deserve). ISPF edit "knows" that if I replace "ABCD" with "EF", 
it should only move the non-blank characters immediately to the right of the "ABCD" left. vi doesn't do this. This is really disruptive 
of continuation characters in column 72. So, looked at FLOWASM. Wonderfully, one thing it allows is continuation of a statement without the 
continuation character in column 72! So I thought it would be wonder to use and remove all the characters from column 72. Unfortunately, FLOWASM 
uses RDJFCB on the DCB which describe the input dataset. This RDJFCB gets an RC of 4 when the input is a UNIX file.. It appears that 
the RDJFCB is really only used to pass back the DSN and volume of the input dataset to the assembler.

I'm wondering if I have an old version and a newer version supports input from 
a UNIX file. Did I mention that I keep my macros in UNIX as well? Yes, I'm 
weird.


I will take a look at this...

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Printing out LCLC values

2012-01-19 Thread Edward Jaffe

On 1/19/2012 3:38 PM, Micheal Butz wrote:

  Is there anyway to print character variables to debug macros  LCLC GBLC or
for that matter arithmetic values GBLA LBLA binary values LBLB GBLB


MHELP

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: How bad is the EX instruction?

2012-01-17 Thread Edward Jaffe

On 1/17/2012 8:06 AM, Farley, Peter x23353 wrote:


Others have said here that performance is a strong reason
for _not_ coding in assembler:

o Compiler developers have done the research on instruction
   timings and know better than most end users what sequences
   fit the pipelines optimally.

Notoriously NOT for the IBM COBOL compilers.


The PL/X compiler also generates 'poor' code. (It's one reason it's been
difficult to convince the 'powers that be' to establish a new Architectural
Level Set for z/OS.)

IBM has hinted that they plan to address these compiler deficiencies--when is
anybody's guess. But, at least they admit there's a problem. That's the first
step...

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: How good is the EX instruction?

2012-01-17 Thread Edward Jaffe

On 1/17/2012 6:40 AM, Paul Gilmartin wrote:

I forget; is the target of EX treated as a data access or as an instruction 
access for cacne management?


The 256-byte cache line containing the target instruction is loaded into 
I-cache.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: How bad is the EX instruction?

2012-01-13 Thread Edward Jaffe

On 1/12/2012 7:32 AM, McKown, John wrote:

I ask about the CPU cost of an EX because that same program that I'm working on uses the 
EX a fair amount to move "variable length" strings into a blank-initialized 
area for reporting purposes. Instead of EX of an MVC, I could use MVCL or MVCLE. But many 
have said that EX of an MVC is less overhead than MVCL in many cases. Especially since I 
know that my length is always no more than 255 characters. I check and report an error if 
the length is 256 or more.


Relative instruction performance is a moving target. We run benchmarks whenever
we get a new processor so we can understand the trends. Most new hardware
generations build on the microprocessor design of the prior generation, so the
changes tend to be incremental.

Now and then, the microprocessor gets completely redesigned. One such redesign
occurred with the introduction of the z10. I mentioned our observations re:
EXecute and MVCL performance in my "z10 User Experience" at SHARE in Denver.
Check out slide 13 for this information. Thanks again to David Bond for helping
us make sense of our measurements.

http://proceedings.share.org/client_files/SHARE_in_Denver/S2215EJ161728.pdf

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Interesting(?) observation

2012-01-11 Thread Edward Jaffe

On 1/11/2012 6:42 AM, McKown, John wrote:

What is the big deal? Well, I remember how everybody complains when IBM "steps on" their 
macro name. But, if you name your internal macro with a _ in it, which is valid in an HLASM symbol, 
but which cannot be easily used in a PDS member name, the probability of IBM "stepping 
on" it is greatly reduced. And you should be able to use the subdirectory name in your batch 
compiles simply by including it in the SYSLIB for the assembler. From looking, _ is the only such 
character.


Clever!

You can also define exotically-named macros within a member that you COPY into
your program, e.g. member MYMACS can define macros _A, _B, _C etc.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Enhanced CALL macro?

2012-01-11 Thread Edward Jaffe

On 1/11/2012 6:27 AM, McKown, John wrote:


Is the ROI for the conversion less than a single year? If not, forget it. That's all that is 
keeping the z alive here. The "break even" on the up front cost to convert from z/OS to 
Windows is currently estimated to be 2 to 3 years. That is "far too long" according to 
our management. And so we stay on z/OS for the time being.


I've spoken with many IBM customers that are on their (for example) 11th year of
a 2-3 year conversion effort.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Enhanced CALL macro?

2012-01-10 Thread Edward Jaffe

On 1/10/2012 4:04 PM, John P. Baker wrote:

 LAEY instruction if the operand is specified as '(SL,{"symbol" |
"expression"})' and SYSSTATE ASCENV=ASC is in effect ;


LAEY. I wish! We can't use the general-instructions-extension facility. :-(

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Enhanced CALL macro?

2012-01-10 Thread Edward Jaffe

On 1/10/2012 1:41 PM, Gord Tomlin wrote:

What we do for this is use multiple location counters and code in our
prolog/epilog macros to automatically set up a base register for the
part of the CSECT containing the constants. The using range of the base
register is automatically defined to cover only the constants so that no
code inadvertently uses base/displacement branching. The code referring
to constants "just works".


Same here. Only a very small 'nit' program could get away without needing a base
register to 'cover' its constants.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: 128-bit arithmetic

2012-01-10 Thread Edward Jaffe

On 1/9/2012 10:38 PM, Paul Gilmartin wrote:

I have an Immodest Proposal. (I'll not leave that platform to John M.,
exclusively.) Define the future extension of the TOD clock as a signed binary
112-bit (111+sign) value. Rationale: given that some contracts and treaties
entered in the 19th century are likely still in effect, there would be more
utility in supporting a STCKE-compatible representation of dates in the 19th
century or somewhat before than of dates in the 204th century and later.


I like that idea! :-) Unfortunately, STCKE is old (it pre-dates z/Architecture).
An awful lot of code has been authored that treats the STCKE result as unsigned
based upon the description you quoted from PoOp. So, some might judge it to
already be too late for this sort of change.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: 128-bit arithmetic

2012-01-09 Thread Edward Jaffe

On 1/9/2012 1:40 PM, Steve Comstock wrote:

Here's what I'm thinking:

LMG   R2,R4,datetimen  - put datetime into R2/R3
 (use 64 bits in each reg)
 and put datetimes into R4/R5
 (use 64 bits in each reg)
SLBGR  R3,R5
SLBGR  R2,R4


You're not supposed to use a logical subtract 'with borrow' on the low-order
part. You use it only on the high-order part--AFTER doing a logical subtract
'without borrow' on the low-order part.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: z/Arch design question.

2012-01-09 Thread Edward Jaffe

On 1/7/2012 9:03 AM, John P. Baker wrote:

Benchmark tests have indicated that MVCL is less efficient than an MVC loop
designed to perform the same function.  I suggest that the inherent
inefficiencies of interruptive instruction design could well be the cause.


Based on our own internal benchmarks of various instructions, I don't think MVCL
runs any slower because it's interruptible. (In fact, it runs faster than
looping MVC for larger moves. The slowness for shorter moves seems attributable
to millicode instruction overhead. MVCLE performs similarly.)

However, your point is well taken in the larger context of instruction
complexity, so I think we are saying essentially the same thing.

Supporting interruptible instructions is complex and expensive. Whether the goal
is to minimize hardware engineering time, chip "real estate," or possible
sub-standard performance, it's clear that the additional development costs
required to make an instruction interruptible are simply not worth the end
result: eliminating one software branch.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: z/Arch design question.

2012-01-06 Thread Edward Jaffe

On 1/6/2012 8:24 AM, McKown, John wrote:

My curiosity is why MVCLE sets the CC, thus forcing user code to branch back. Why not  
just not update the PSW instruction address until all the data is processed? Still allow 
the interrupt like MVCL does, of course. I understand why the interrupt is necessary, 
especially in a single CP environment. Does anybody know? Is it a "millicode" 
thing?


It is a chip "real estate" thing. The amount of extra silicon used to make an
instruction interruptible is extreme. It is a complex undertaking.

Using standard, non-interruptible instructions is simpler and allows many more
new and useful instructions to be added to the instruction set.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Calculate elapsed time from MM/DD/YY HH:MM:SS formats

2012-01-05 Thread Edward Jaffe

On 1/5/2012 12:54 PM, Paul Gilmartin wrote:

On 1/4/2012 8:32 PM, James P Connelley wrote:

CONVTOD is the ticket.


Does that yield correct results even when a Daylight Saving
change occurs within the interval?


For time stamp math, you simply convert your date/time to STCK form using an
offset of zero, do your addition/subtraction, and convert back also using an
offset of zero.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Mixed Case in Assembler

2012-01-02 Thread Edward Jaffe

On 1/1/2012 7:42 PM, Tony Harminc wrote:

On 30 December 2011 10:29, Edward Jaffe  wrote:


The current behavior is fine for those who like it. I would like an option
to enforce case matching.

For example, if I create a field called EZDrmStringsUpper and some developer
codes it as EZDrmStringSupper I would like to have the assembler generate a
diagnostic. Our products support uppercase strings; but we don't feed them
supper! ;-)

That sounds like something to be enforced by either the global xref
program that every development shop has, or perhaps by some stage of
the SCCS check-in process.


We don't have that global XREF program! Lol!

Consider the following:

EZDrm DSECT ,
EZDrmEyeCatch DSCL4
.
. (other fields for EZDrm)

The most obvious solution is a SYMCASE(ANY|ASIS) assembler option that, like
most options, would affect the entire assembly. There would be ACONTROL support
to handle exceptions--for example references made from inside IBM or other
providers' macros you cannot change.

With the default of SYMCASE(ANY), the assembler would work as it does today
i.e., allow any case when referencing EZDrmEyeCatch such as EzDRMEYeCaTCh. But,
with SYMCASE(ASIS), symbols would need to be specified exactly as they are
defined or an informational or warning diagnostic would be produced.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: mixed case in assembler

2011-12-31 Thread Edward Jaffe

On 12/31/2011 8:08 AM, Paul Gilmartin wrote:

We did well enough for 40 years with case-sensitive assemblers. The misguided
attempt to add case-insensitivity causes chaos and instability.


AFAICT, these options have been around since the very first release of HLASM.
They provide enforcement of the stricter rules used by older assemblers.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: mixed case in assembler

2011-12-30 Thread Edward Jaffe

On 12/30/2011 9:47 AM, John Gilmore wrote:

NOCOMPAT(NOCASE,NOMACROCASE)

[snip]

With NOCOMPAT(NOCASE) in effect the HLASM thus distinguishes among
MyLabel, MYLABEL, etc.  I does not treat them as synonyms.


This does not appear to be true in the assembler I'm using (HLASM 6.0). Please
post an example.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: mixed case in assembler

2011-12-30 Thread Edward Jaffe

On 12/30/2011 7:33 AM, Edward Jaffe wrote:

On 12/30/2011 6:43 AM, John Gilmore wrote:

Case control is a more complicated issue.  In situations like the one
EJ describes I have found the two options that the HLASM already
supports, viz.,

o CASE | NOCASE, and

o MACROCASE|NOMACROCASE

entirely adequate; but this is because I work in a very small group of
usually two and never more than three people in which my taste is, if
not controlling,  very influential.


Honestly, I forgot about these options. Thanks for reminding me. I will see if
they meet my needs.


OK. I reviewed these options. They do NOT do what I need. (This is probably why
I forgot about them.)

1. COMPAT(CASE) enforces a requirement for uppercase opcodes and symbols. Almost
exactly the opposite of what I want.
2. COMPAT(MACROCASE) converts macro operands to uppercase.

I'm not interested in a COMPAT() option to remain compatible with older
assemblers. I want a new option, as described previously, to generate a
diagnostic when a programmer references MyField as (for example) MyfiEld. For
ease of transition, it might be nice if the option could be limited to certain
symbols or sections. For example, a new operand on the DSECT statement that says
the fields defined herein must be referenced using the correct case.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: mixed case in assembler

2011-12-30 Thread Edward Jaffe

On 12/30/2011 6:43 AM, John Gilmore wrote:

Case control is a more complicated issue.  In situations like the one
EJ describes I have found the two options that the HLASM already
supports, viz.,

o CASE | NOCASE, and

o MACROCASE|NOMACROCASE

entirely adequate; but this is because I work in a very small group of
usually two and never more than three people in which my taste is, if
not controlling,  very influential.


Honestly, I forgot about these options. Thanks for reminding me. I will see if
they meet my needs.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Mixed Case in Assembler [Was: ASSEMBLER-LIST Digest - 20 Dec 2011 to 21 Dec 2011 (#2011-208)]

2011-12-30 Thread Edward Jaffe

On 12/30/2011 5:23 AM, Steve Comstock wrote:

On 12/30/2011 12:34 AM, Edward Jaffe wrote:

I also like camel case. It looks much better than using underscores to separate
uppercase words. However, I don't consider the assembler's current behavior to
be 'nice'. For example, I will painstakingly plan and create camel case fields
in a control block and then later see code referencing those fields using the
wrong case (due to typos, dyslexia, or what have you). Sometimes those
'misspelled' references get propagated to other code and things really start to
get ugly. I wish there was a way to tell the assembler to be case sensitive.


But words with the same string of letters but different case
are _not_ misspellings. They are the same word, so they
reference the same variables. Using the 'wrong case' just
means using the case preferred by the coder: they are still
the same variables. I consider it 'nice' because each coder
can use the case pattern they prefer and yet everyone is
referencing the same variable: these are not typos.


When I have pointed these issues out, the programmers have acknowledged that
they ARE typos!

The current behavior is fine for those who like it. I would like an option to
enforce case matching.

For example, if I create a field called EZDrmStringsUpper and some developer
codes it as EZDrmStringSupper I would like to have the assembler generate a
diagnostic. Our products support uppercase strings; but we don't feed them
supper! ;-)



But, to each his own.


This is anarchy--exactly what I want to avoid. For our environment, I want the
designer of the control block field to choose the name by which it will be
referenced by other programmers.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Mixed Case in Assembler [Was: ASSEMBLER-LIST Digest - 20 Dec 2011 to 21 Dec 2011 (#2011-208)]

2011-12-29 Thread Edward Jaffe

On 12/23/2011 8:42 AM, Steve Comstock wrote:


Sure, camel case. And the nice thing is the Assembler
will recognize variable names if you happen to forget
and not capitalize the first letter, since it is
case-insensitive.


I also like camel case. It looks much better than using underscores to separate
uppercase words. However, I don't consider the assembler's current behavior to
be 'nice'. For example, I will painstakingly plan and create camel case fields
in a control block and then later see code referencing those fields using the
wrong case (due to typos, dyslexia, or what have you). Sometimes those
'misspelled' references get propagated to other code and things really start to
get ugly. I wish there was a way to tell the assembler to be case sensitive.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: ASM Program to copy a file

2011-12-10 Thread Edward Jaffe

On 12/10/2011 11:41 AM, Steve Comstock wrote:


Wow! I didn't know I wielded such power.  :-)


You da Man! :-D

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: ASM Program to copy a file

2011-12-10 Thread Edward Jaffe

On 12/10/2011 6:22 AM, Steve Comstock wrote:

Hmmm. Are you advocating use of semiprivileged instructions
in application code then? Or only some of them? Which ones
are 'safe' or 'OK' to use in standard application programs?
Where does one draw the line?


Once your minimum supported operating system enables use of a particular
semi-privileged instruction, then you can use it just the same as you would any
new macro-based system service provided by that same level of the OS.

If you write code for multiple operating systems, you need to take extra care.
For example, very old z/VSE systems (pre-VSE/ESA 2.5?) used to not enable
'extraction-authority control' so often-used instructions like IPK would not
work in problem state. Thankfully, that is ancient history now. I haven't seen a
similar mismatch between z/OS and z/VSE in quite a while. Nevertheless, if your
code might run under multiple operating systems, this is a consideration.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: ASM Program to copy a file

2011-12-10 Thread Edward Jaffe

On 12/10/2011 4:08 AM, Bernd Oppolzer wrote:

To solve this problem, I ended up with a GET routine for every QSAM dataset,
where the EODAD address is part of the routine. The GET routine looked like
this (from memory, I don't have the sources at hand):

GET1 PSTART (R10,R14)start macro for local procedure
 GET   DATASET1  get record from dataset
 XRR15,R15   set eof rc to zero
 LRR5,R1 move record address to reg 5
 LEAVE , success, leave proc (comma VERY important!!)
EOF1 DS0H= EODAD address of DATASET1
 LAR15,8 end of file, set eof rc to 8
GET1ZPSTOP (R10,R14) end macro for local procedure

so the EODAD branch is hidden in the GET-ROUTINE.


We have done similar things. Typically the caller places the DCB address in R1
and does a JAS[L] to the 'GetNextRec' subroutine. It expects back R1 (record
pointer for MACRF=L) and R15 (return code: 0=OK, 4=EOF). In addition to setting
return codes, the subroutine ensures R1 contains an invalid address in the EOF 
case.

|   L R1,InputDCB1  Point to input DCB 1
|   JAS   R14,GetNextRecGet next record
|   DOEXIT LTR,R15,R15,NZ   Exit if nothing left
|   .
|   .

|GetNextRec DC 0H
| STKPUSH (R14)   Save link register
| DO ,Do for GET
|   GET   (1)   Get next record
|   XRR15,R15   Set retcode = 0
|   LEAVE , Exit
|GetNextEof DC 0H <--- EOF branches here
|   L R1,=A(X'7000) Set invalid address
|   LHI   R15,4 Set retcode = 4 (EOF)
| ENDDO , EndDo for GET
| STKPOP (R14)Restore link register
| BRR14   Return

I didn't mention this technique because I knew Steve would not approve. If he
thinks one TM/BNZ is too much overhead, imagine how he feels about adding a
JAS[L]/STKPUSH/STKPOP for every GET! :D



In our shop, we tell the developer to write ASSEMBLER modules without B
or J instructions. All control flow is done using SP macros, which have
been developed or at least improved inhouse in the past 35 years (I don't
know the beginning of the history, because I'm with this company since 1988
"only").


A very sensible development strategy. It sounds you you guys were (and still
are) way ahead of your time. Thanks for sharing...

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: ASM Program to copy a file

2011-12-09 Thread Edward Jaffe

On 12/9/2011 11:33 AM, Steve Comstock wrote:


For application programming (granted: there are precious few
applications written in Assembler these days, except by
software product developers), I actually disdain using the
linkage stack, for these reasons:


Actually, I wasn't talking about the linkage stack at all. I was referring to
software-only stacking.

In the early days, people rarely coded hierarchically. Everything was a flat
programming model, one routine following another with (one or more) branches to
the label of the next routine. These days, people understand the value of nested
logic. A software register stack is practically a necessity for such coding.

I have made a simple stacking macro available publicly to help those who might
be challenged to 'roll' their own. More sophisticated stack services (such as
the one we use internally) handle so-called 'automatic' variables as well.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: ASM Program to copy a file

2011-12-09 Thread Edward Jaffe

On 12/9/2011 9:07 AM, Steve Comstock wrote:


Right, so I would argue that the GET approach is more 'traditional'
than the 'traditional approach' you describe: it's been around longer.


I should have said 'typical'. The flaws introduced by older 1960s-era designs
have been corrected in modern implementations. It's practically impossible to
find a modern-era service that handles a simple 'end-of-data' condition using an
out-of-line branch, and with good reason.



You set up a deliberate disonance when you use the word 'arbitrary';
there need be nothing arbitrary about the routine jumped to for an
EODAD occurrence: it should be well planned and naturally take the
control flow to the next part of the logic.


When DCBEODAD was designed, stacks were not used. In modern code, an out-of-line
branch risks a situation where one or more stack frames do not get unwound. This
is exactly the sort of thing that would be flagged by tools that look for
problematic programming that violates good architectural and coding practices,
such as those from 'Cast Software' that are getting so much press lately--having
found Java to be the most problematic language and COBOL the least in a study
involving 745 applications from 160 companies in nearly a dozen industries which
totaled 365 million lines of code.
http://www.computerworlduk.com/news/applications/3323819/java-apps-have-most-flaws-cobol-apps-least-study-finds/




Actually, the EODAD (and other DCB exit routines) might be more
closely compared to exception routines in languages such as
Java: event-driven routines that get control specifically when
some event occurs. Event handlers, if you will. Which is more
'modern'? Which is 'better'? As you know, the answer is always
'it depends'.


Such 'event handlers' are usually designed to deal with the stack frame issue I
mentioned above, just as ESTAE is aware of the System z hardware linkage stack.
DCBEODAD does no such thing.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: ASM Program to copy a file

2011-12-09 Thread Edward Jaffe

On 12/9/2011 7:53 AM, Steve Comstock wrote:

I disagree. Why test a flag after every GET? QSAM essentially
does that for you and branches you to EODAD automatically; if
you find yourself in your EODAD routine you know you're ready
for the next phase of your processing, which might be just
shutting down (CLOSE and RETURN), but it might be more complex,
such as taking subtotals, CLOSE-ing one file and OPEN-ing
another, etc.

But to add the overhead of test-and-branch after every GET is
totally unnecessary.


QSAM GET is but one example of a whole class of similar operations provided by
many IBM and ISV systems services. The notion of an "open," followed by one or
many "gets," followed by a "close" is just how programming works for hundreds of
different resources--from REXX/CLIST variables, to ENQs, to logger, to BCPii,
and more.

The traditional approach is for the return code to be set non-zero (e.g., 4)
when end of data is reached. For example:

 DO INF  Do for all objects
   SOMESERV REQUEST=GETObtain next object
   DOEXIT LTR,R15,R15,NZ   Exit if no more objects
   .   .
   process the returned data   .
   .   .
 ENDDO , EndDo for all objects

QSAM GET was invented before there were structured disciplines. Having the
system branch to an arbitrary 'EODAD' label outside the GET loop increases the
program's complexity and makes GET's behavior 'arcane' when compared to the
processing methodology used by nearly every other service that has been invented
since.

An approach that sets a flag that can be tested in the loop solves this problem
nicely, making GET's processing more mainstream.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: ASM Program to copy a file

2011-12-08 Thread Edward Jaffe

On 12/8/2011 9:57 AM, Steve Comstock wrote:



  BAKR  R14,0   Save caller's ARs and GPRs


Why do you care about the caller's ARs? First, you are
a main program so the caller is z/OS. Overkill. Why not
use standard save area chaining?


BAKR R14,0 is a standard entry linkage approach. (At least, it has been since
the advent of ESA/390.) R13 should then be set to point to an F1SA.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: ASM Program to copy a file

2011-12-08 Thread Edward Jaffe

On 12/8/2011 8:14 AM, Martin Truebner wrote:

Much better solution is what (ITIR) Ed J. uses ... a MACRO called MVCSL (or
so) which means MVC in sender length.


I'm surprised you remember this! It was something I accidentally left in a
sample code fragment in a SHARE presentation years ago.

We call the macro MVC2: MVC using the length of the second operand.

We also have MVCX: generate as many MVCs as needed to copy variables of any
length without using MVCL. (Yes, I realize MVCX is the name of a millicode
mnemonic, but I think the chances of that instruction being exposed to 'normal'
code is unlikely.) We also have XCX, OCX, and others.

I just realized we are missing MVC2X! Lol!

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Conditional assembly test for current AMODE

2011-10-22 Thread Edward Jaffe

On 10/21/2011 5:40 AM, Tom Marchant wrote:

On Thu, 20 Oct 2011 14:03:55 -0700, Edward Jaffe wrote:


It's inconvenient to have to keep SYSSTATE manually synchronized.

You could issue SYSSTATE first and then code a macro that tests
SYSSTATE and uses it to specify the corresponding AMODE.


Nice idea!

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


Re: Conditional assembly test for current AMODE

2011-10-20 Thread Edward Jaffe

On 10/20/2011 12:23 PM, John Ehrman wrote:

There is no system variable symbol that captures this information.


Too bad. It would be useful to be able to code SYSSTATE operands based upon the
value of a variable like &SYSAMODE--the AMODE of the CSECT at an entry point.

The AMODE value in the ESD, propagated by the binder, is what drives the
pointer-defined linkage that will ultimately give the module control in the
right AMODE.

It's inconvenient to have to keep SYSSTATE manually synchronized.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
310-338-0400 x318
edja...@phoenixsoftware.com
http://www.phoenixsoftware.com/


  1   2   >