Interesting.

The HLASM team's dance card is already pretty full but you can certainly
picture something like that in HLASM:

J *+3I

Meaning "here + 3 instructions." 'I' is perhaps not the best indicator
because it is easily confused with a digit, although J *+n seldom ends in a
legitimate 1.

Yes, the assembler would have to do look-ahead. Yes, HLASM would have to
impose some limits and caveats.

I'm not crazy about it. It solves the "what if the instruction length
changes, such as from A to AG?" problem, but not the "what if someone
hastily and with inadequate thought inserts or deletes an instruction?"
problem.

Charles


-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU]
On Behalf Of Peter Relson
Sent: Saturday, August 4, 2018 7:23 AM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: EQU * considered harmful

>"This isn't a 'real' branch-that is, we aren't going very far..."

Donald Knuth's assembler, which we had available in college in the 70's, 
had the concept of a "relative label".
I can't remember if there was one name pattern for "forward" and one for 
"backward" or whether you couldn't use it for "backward". It avoided 
unnecessarily unreadable label names, and avoided the uniqueness problem. 
And when used properly (i.e., well within a "screen" amout) it was 
perfectly clear.

The label name was like "1R" for "first one ahead, relative" or perhaps it 
was "find the first 1R label ahead", for example 
J     1R

When used appropriately (as a substitue for all of these *+small_number 
types of cases) it avoided the maintainability problems of having to know 
how long everything was.

Reply via email to