[comp.sys.apollo] name_$not_found error

derstad@CIM-VAX.HONEYWELL.COM ("DAVE ERSTAD") (05/05/89)

The status field is a record structure.  There are four main fields;
a fail bit, a subsystem code, a module code, and an error code.

The E0007 is the module and error code part (subsystem is 0).  

What you are seeing is that the fail bit is being set.  This
will cause the comparison based on the .all field (a conglomeration
of all 4) to not work correctly.

One solution is to set the fail bit off:
   status.fail := false { or is it true?  I always forget... }
and then do the comparison.  Probably not too different than
the kludge you had in mind, but at least now you know why and
also that only that one bit is potentially wrong.

The elegant solution is to check the individual fields, using 
something like

    name_not_found.all := name_$not_found  { In some initialization routine };

Then, in your code, do something like

    if (name_not_found.code = status.code) and
= name_nod_found.mod) and       (name_not_found.module
       (name_not_found.subsys = status.subsys)
        then
               ....

(That should be .modc, not .mod)

Dave Erstad
DERSTAD@cim-vax.honeywell.com
Honeywell SSEC