I found the experience of being 'beaten up' drole, and I am of course
unrepentent.
It will he helpful to go back in time to the early years of OS/MFT for the
System/360. The syntax of JCL is of course modelled on that of the F
Assembler, and its macro phase in particular. JCL statements then had and
still have parameters of two sorts, positional and keyword. What was
different then was that, even for keyword statement parameters, no mechanism
for replacing their values individually was made available unless those
values were also parameters of a cataloged procedure.
To change any portion of a statement in such a procedure, it was necessary
to replace that statement with another complete one, and it was in this
context, that of suppressing undesired output, writing it to Orwell's
'memory hole', or ignoring undesired input, raising endfile on the first
read, that the agreeably brief complete statement
//<ddname> DD DUMMY
was made available. Worth noting explicitly are that (a) DUMMY is here a
positional parameter and that (b) it was devised for use outside a procedure
in order to alter the behavior of that procedure on occasions when its
standard/default behavior was unsatisfactory.
Let me also note that, while there is some similarity between the positional
and keyword parameters of a JCL statement and those of an assembly-language
macro instruction or the corresponding macro definition, there is a crucial
difference too. An HLASM macro definition may have both, and they may be
specified in any order in a corresponding macro instruction.
Thus, for example, the macro definition
macro
example &pos1,&pos2,&key1=,&key2=,&key3=
. . .
mexit
mend
can be invoked my any of the three functionally equivalent macro
instructions
example 1,key2=5,key1='hubris',key3=yes,21
example key1='hubris',key2=5,key3=yes,1,21
example 1,21,key1='hubris',key2=5,key3=yes
and many others as well. Positional arguments in a macro instruction are
mapped to the positional parameters of a macro definition from left to right
and keyword parameters are order-insensitive. Moreover, JCL did not then
have and still does not have any analogue of the HLASM's &SYSLIST facility,
which permits positional arguments to be picked off in logical sequence no
matter where they appear in a macro instruction.
Once written within a procedure neither of the DD statements
//<ddname> DD DUMMY
or
//<ddname> DD DUMMY, . . .
can be altered into one that in fact is functional, permits non-null outputs
to be written or non-null
inputs to be read.
On the other hand
//SYSPRINT DD DSN=NULLFILE,BLKSIZE=0,LRECL=137,RECFM=VBA
can be altered readily by simply supplying a different licit value of DSN=.
This
difference was the basis for my statement that DSN=NULLFILE was superior to
DUMMY when used inside procedures.
The question what is retained and what is not retained from these two dif-
gerent statements is more complicated. Different bindngs obtain for
different uses.
Volker Bandke's example is entirely correct, but what it establishes---which
was never in contention---is that textual DCB information from one DD
statement can
be 'copied' by reference into another DD statement at parse time. It does
not
address the other, in my view more important, question of what is put into
control blocks.
Moreover, while Volker's example served to establish his point, that point
is not as I unbderstand it
a functionally interesting one. If, say, one wants, N instances of the same
DCB information, this is
better accomplished by coding one operational DCB in extenso and using N - 1
references than it is
by coding one non-operational DD statement that provides DCB= values (or
their functional
equivalents) and N others that acquire this information by reference.
Finally, I want to say something about my notionally 'ex cathedra'
pronouncemnts.
I don't believe in arguments from authority of the form 'Things are thus
because I say so'.
Quos deus perdere vult amentat. Anyone but the Pope needs to be safely dead
to make
such an argument.
On the other hand, I am almost equally suspicious of simplistic alternatives
to such arguments. The opinions of the competent and the incompeternt are
not
equally valuable; and in particular, the opinions of those who are exhausted
by their never successful attempts to follow an ordered exposition of any
length have little merit. This forum is not, or at least should not be, a
talk show.
John Gilmore
Ashland, MA 01721
U.S.A.
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html