Paul Gilmartin wrote:
| This is a joke, right?
It is not a joke. My suggestion was carefully qualified. In what I called a
fill-in-the-blanks situation the scheme I proposed it is eminently feasible.
Consider the skeletal macro
| macro
| EDITLITK &literal=,
*
| &outGBLCid=
| . . .
| mexit
| mend
Was the parameter supplied? The statements
|&in setb (t'&literal ne 'O') --value supplied?
| aif (&in).literal_in --if so, examine
itabort setb 1 --|&abort setb 1
--no, set quit switch
| mnote . . .
| ago .after_literal
|.literal_in anop
|&kl seta k'&literal --get byte count
| . . .
|&id_ok setb ISSYM(&outGBLCid)
| aif (&id_ok).id_ok --if so, ok
|&abort setb 1 --no, set quit switch
| mnote . . .
| ago .after_outGBLCid
|.id_ok anop
| gblc &(&outGBLCid)
| . . .
| . . .
|&lit setc '&literal' --make editable copy
of input
| . . .
| . . .
| . . .
|&(&outGBLCid) setc '&lit' --externalize edited value
| mexit
| mend
In such an exercise the data type of the value of ¶meter can be determined,
often now using BIFs like ISBIN, ISDEC, ISHEX, even ISSYM, or in extenso using
one's own trivial service macros.
It can then be altered by padding it, as others have suggested; or again an
additional innocuous literal having a complementary length can be added to the
literal pool following it. (I forbear to demonstrate how this can be done, but
I suspect that here again I should perhaps "string things out for the
delectation of . . . ".)
Such schemes permit 'customers' to continue to use literals. They even permit
marginal or dubious literals to be edited or repaired. They are workaday
facilities for those of us who have elected to master the the facilities of the
macro language and to use them effectively.
This is as good a place as any to deal with Paul Gilmartin's (not, I hope, very
serious) sally about such constructs as
|paul DC 0CL4'Paul'
In it neither the 0 repetition factor nor the explicit byte length 4 determines
the alignment of paul. The data-type specifier, C here, does that.
Moreover, in exactly the tenuous but not spurious sense in which 0 is a
multiple of 16 it is also a multiple of 1, 2, 4, 8, and indeed any integer.
Division by zero is in fact interdicted for just this reason.
For the benefit of those who need such guidance I will in future mark any
jocular technical suggestions I make here with the delimiters
|<technical joke begins>
| . . .
|<technical joke ends>
I promise to be parsimonious in my use of them. My contributions here are
anyway not usually jocular. They are typically informed by the bleak
perception that a significant fraction of the problems raised here are
pseudo-problems, artefacts of radical if perhaps excusable ignorance.
Let me very much more specific about this. The HLASM is imperfect. There are
many ways in which it could be improved or extended. That said, it is also a
powerful and expressive vehicle. Too many contributors here are too ready to
impute their own inadequacies to it: Extend it please, in this or that ad hoc
way, so that my problem of the moment will go away.
They would usually do much better to explore how the facilities it already
makes available can be used to address that problem.
John Gilmore Ashland, MA 01721-1817 USA