Ok, to start with... What is the CDA assembler? (You might ask.)
If you're a Metal C programmer, you will know. Please correct me if I
don't have the details quite right, but when you run the Metal C
compiler (CCNDRVR), its output is not an object file. Its output is
assembler source, but with variations. To assemble that output, you
use CDAHLASM.
CDAHLASM consists of a front-end to ASMA90 and a set of standard exit
routines that ASMA90 invokes. Its purpose is to create a DWARF file
for Metal C debugging. Its method is to pass clean assembler code to
ASMA90, and to capture the resulting ADATA for use in constructing
DWARF data. (Do I have that right?)
OK, so much for the intro...
This past holiday I have spent my ENTIRE spare time battling an RC=16
ASMA90 failure!
Here's the //SYSPRINT output in its entirety:
** ASMA417C Unable to open OBJECT file
PAGE
1
HIGH LEVEL ASSEMBLER - INTERRUPT AND DIAGNOSTIC
DUMP HLASM R6.0
** ASMA935U One or more required files not available
OPTIONS MESSAGES
** ASMA438N Attempt to override ASMAOPT parameter. Option NOLIST ignored.
** ASMA438N Attempt to override ASMAOPT parameter. Option NOTERM ignored.
Here's the //SYSTERM output, also in its entirety:
** ASMA254I *** MNOTE *** 5915+
7, 01-#DBCVRSN
** ASMA254I *** MNOTE *** 5916+ 7,&SYSIN_DSN
= >SYS22329.T181251.RA0 [...] 01-#DBCVRSN
** ASMA254I *** MNOTE *** 5917+ 7,INDEX'.XDCSOUR =
32 01-#DBCVRSN
** ASMA254I *** MNOTE *** 5918+ 7,K'&C1=7, &C1
= >URM.H01< 01-#DBCVRSN
** ASMA254I *** MNOTE *** 5919+
7,&XDCINHOUSE=1 01-#DBCVRSN
** ASMA254I *** MNOTE *** 5920+
7, 01-#DBCVRSN
Assembler Done 6 Statements Flagged / 7 was Highest Severity Code
** ASMA935U One or more required files not available
** ASMA438N Attempt to override ASMAOPT parameter. Option NOLIST ignored.
** ASMA438N Attempt to override ASMAOPT parameter. Option NOTERM ignored.
[I have compressed the above horizontally]
[Minor annoyance: Why is a key message, ASMA417C, missing from //SYSTERM?]
Soooo... What the Hey happened??????
The MNOTEs? They're mine. I'm just trying to debug something in one
of my inner macros.
What about the ASMA417C message?
That claims that I don't have a //SYSLIN file. [I do.]
What about the ASMA438N messages?
They claim that I am attempting to "override ASMAOPT parameters". [I'm not.]
- First of all, I have no idea why trying to override ASMAOPT is a
bad thing.
- Second, I have specified neither NOLIST nor NOTERM anywhere.
- So is CDAHLASM invoking ASMA90 with "NOLIST,NOTERM" as
invocation overrides?
- Well, I guess so. But why would it do so if it were a bug!
Well, finally a colleague of mine (Frank Chu) came to the rescue! He
spent a couple of hours poking at it, pulling one WAG after another
out of his butt, when finally he found the WAG that worked... He
changed the severity level of the MNOTEs from level-7 to level-1 and
voila! Everything went back to normal! The assembly ran to completion
and everyone was happy.
Except me. I'm not happy! <rant on>
1) Since when does an MNOTE severity level have any affect upon the
assembler's processing? Well, since CDAHLASM came along, I guess.
2) Is that behavior documented anywhere? Not that I could find. If
you know where, then by all means, please share. [Inquiring minds
want to know.]
3) It turns out that CDAHLASM terminates the assembly when the
running severity code exceeds four. Setting aside from my thoughts as
to the wisdom of this, why is there no messaging???? Why keep it a secret?
4) Finally, why all the unchallenged lies??? Why ASMA417C? Why ASMA438N?
5) And finally finally, yes I do know about NOPESTOP, and I have
asked that to be added to our assembler's installation options. [Of
course NOPESTOP is not a real solution here, but at least the
assembly would not abort.]
</rant off>
Love and kisses,
David Cole
[email protected] (personal)
[email protected] (business)
540-456-6518 (cell)