[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference azur::mcc

Title:DECmcc user notes file. Does not replace IPMT.
Notice:Use IPMT for problems. Newsletter location in note 6187
Moderator:TAEC::BEROUD
Created:Mon Aug 21 1989
Last Modified:Wed Jun 04 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:6497
Total number of notes:27359

244.0. "Getting ADD through FCL_PM" by COOKIE::KITTELL (Richard - Architected Info Mgmt) Thu Aug 09 1990 04:22

I've got an attribute whose type is SET OF Latin1String. When I try to do 
an ADD I get our old friend NOENTITY:

DECmcc (T1.0.1)
MCC> add pbd x containers = {a}
%MCC-E-NOENTITY,  No corresponding entity instance exists

FCL understands the attribute for output:

PBD DEC:.aug8_nite
Characteristics
AT  8-AUG-1990 22:19:27

                             Containers = { "DISK$AIM1",
                                            "DISK$AIM2",
                                            "DISK$AIM3",
                                            "" }

Here's the MSL for the attribute and the directive. 

    TYPE ContainerSet = 100 SET OF Latin1String;

             ATTRIBUTE Containers = 1200 : ContainerSet
                ACCESS = SETTABLE,
                DISPLAY = TRUE,
                SYMBOL = ATTR_Containers,
                DEFAULT = NO DEFAULT,
                CATEGORIES = ( CONFIGURATION )
             END ATTRIBUTE Containers;
 
       DIRECTIVE Add = 21 :

         DIRECTIVE-TYPE = MODIFY,
         DISPLAY = TRUE,
         CATEGORIES = (CONFIGURATION ),

         REQUEST
           ARGUMENT Values to Add = 2800 : Attrib_List
              SYMBOL = ARG_ADD_VALUE_LIST,
              DISPLAY = TRUE,
              REQUIRED = TRUE,
              DEFAULT = NO DEFAULT
           END ARGUMENT Values to Add;
         END REQUEST;

         RESPONSE Add Success = 2900 :
           SYMBOL = ADD_SUCCESS,
           TEXT = "Values Added Successfully.",
           ARGUMENT Add Result List = 2910 : Attrib_List
              DISPLAY = TRUE,
              SYMBOL = ARG_ADD_LIST
           END ARGUMENT Add Result List;
         END RESPONSE;

         EXCEPTION Add Incomplete = 3000 :
           SYMBOL = ADD_INCOMPLETE,
           TEXT = "Problem(s) adding value(s):",
           ARGUMENT Add Result List = 2910 : Attrib_List
              DISPLAY = TRUE,
              SYMBOL = ARG_ADD_LIST
           END ARGUMENT Add Result List;
         END EXCEPTION Add Incomplete;
      END DIRECTIVE Add;

T.RTitleUserPersonal
Name
DateLines
244.1check the directive typeGOSTE::CALLANDERThu Aug 09 1990 16:3115
    Could you also post your definition of the ADD directive. The problem
    you are encountering looks like you (or some one else in your
    dictionary) has the ADD directive defined as an ACTION directive.
    You see this is checked on input, but on output we simply look
    up the reponse/argument information and can handle the output
    of the attribute_list data (since it is defined as the arguments
    data type).
    
    Now another thing to try if you don't feel real comfortable with
    DAP is to turn on the MCC_FCL_PM_LOG to 28 and to see if the
    partition argument if value 10 on the call (this means NULL, and
    is ONLY set to NULL on ACTION directives).
    
    jill
    
244.2ADD is ModifyCOOKIE::KITTELLRichard - Architected Info MgmtThu Aug 09 1990 16:4812
Jill,

Scroll .0 a little and you'll see the definition of ADD I'm using. It is
declared as Modify.

But I set MCC_FCL_PM_LOG to 28 as you suggested and got an attribute value
of 10, so FCL is somehow thinking ADD is an Action, right? Most curious.

MCC> register pbd aug8_nite
ATTRIBUTE PARTITION: 10

244.3jeez, I gotta stop working nites...COOKIE::KITTELLRichard - Architected Info MgmtThu Aug 09 1990 19:1714
RE: .3

.2 was factual except for the example given. That was from the register
problem I've been working on, sorry.

I looked at the dictionary with DAP, and the DIRECTIVE_TYPE definition of
the ADD directive has a value of 1, or MCC_K_DIR_MODIFY.

When I do the ADD command with FCL logging set to 28, I get no logging
output, the error is returned immediately:

MCC> add pbd aug8_nite containers = {a}
%MCC-E-NOENTITY,  No corresponding entity instance exists
244.4check the dat fileGOSTE::CALLANDERFri Aug 10 1990 21:359
    
    The way the parse build works, it only reads the FIRST occurrence
    of a directives definition. To save time it assumes that the each
    definition is identical (because the registry is supposed to insure
    that). The quickest way to see which definition is in your way is
    to look at the MCC_PTB_PARSER.DAT and find the first occurrence
    of ADD.
    
    
244.5definition to checkGOSTE::CALLANDERFri Aug 10 1990 21:438
    should have read .3 first.
    
    Okay since containers is defined as a set of something, PTB doesn't
    pull the "what it's a set of" into the tables. Instead the parser
    looks that up as it is needed. You might want to check on the
    definitions of the containers argument.
    
    
244.6Here's the poop from DAP COOKIE::KITTELLRichard - Architected Info MgmtFri Aug 10 1990 22:4124
For the CONTAINERS ATTRIBUTE

   Definition Name = CONSTRUCTOR_DATA_TYPE
   Type = T   Length = 11   Count = 1   Defined = TRUE   Class = S   Usage = ILV

         (
          1 = (
              1 = (
                  3 = %X        03
                )
            )         )

   Definition Name = VALUE_DATA_TYPE
   Type = L   Length = 4   Count = 1   Defined = TRUE   Class = S
   value[1] = 52

(thats DT_SET_OF)

For the argument of the ADD REQUEST

   Definition Name = VALUE_DATA_TYPE
   Type = L   Length = 4   Count = 1   Defined = TRUE   Class = S
   value[1] = 66
(thats DT_ATTRIB_LIST)
244.7I know what, but not whyTOOK::HAOMon Aug 13 1990 14:4329
    The error that you're seeing is the infamous "no entity instance
    exists" one, which I've explained to really mean "cannot find what I
    want in the Dictionary" elsewhere in this notesfile.
    
    As Jill pointed out before, FCL goes directly to the Dictionary when
    parsing constructor datatypes rather than the parse tables.  To access
    the Dictionary, it has to build the correct dictionary spec.  It looks
    like the dictionary spec isn't correct.  The parser either builds an
    "attribute" dictionary spec (CLASS x ATTRIBUTE y) or an "argument" 
    dictionary spec (CLASS x DIRECTIVE y REQUEST y ARGUMENT z), depending
    on the directive-type of the directive.
    
    There's a few possibilities here:
    
    1) When running PTB, some other global entity was processed first,
    	and that entity defined ADD as an action directive.  This will
    	cause the parser to build the wrong dictionary spec.
    2) Your MSL is incorrect, such that the right dictionary spec cannot
    	find what it needs.  This doesn't appear to be the case.  Your
        MSL looks correct.
    3) Bug in parser/PTB, where it picking up the wrong thing to switch
     	off on, when trying to decide which dictionary spec to build.
    
    Could you please check out #1 and #2 above for your situation, and
    we will check out #3 here.
    
    Thanks,
    Christine
    
244.8Perhaps this will be a clear indication...COOKIE::KITTELLRichard - Architected Info MgmtMon Aug 13 1990 19:3949
It has gotten worse. Since I've been updating the dictionary every time I
fiddle with my MSL, I thought I'd get a clean start. I did:

$ COPY MCC_COMMON:MCC_DICTIONARY.DAT MCC_DICTIONARY.DAT
$ PURGE/LOG MCC_DICTIONARY.DAT
$ COPY MCC_COMMON:MCC_DEFINITION.DAT MCC_DEFINITION.DAT
$ PURGE/LOG MCC_DEFINITION.DAT
$ COPY MCC_COMMON:MCC_DISPATCH_TABLE.DAT []
$ PURGE/LOG MCC_DISPATCH_TABLE.DAT
$ MANAGE/TOOLKIT/DICTIONARY DELETE CLASS BRIDGE
$ MANAGE/TOOLKIT/DICTIONARY DELETE CLASS NODE
$ MANAGE/TOOLKIT/DICTIONARY DELETE CLASS NODE4
$ MANAGE/TOOLKIT/DICTIONARY DELETE CLASS SAMPLE
$ MANAGE/TOOLKIT/DICTIONARY DELETE CLASS STATION

This leaves me with a "developer's dictionary" that only contains entities
I'm working with, to wit:

DAP> show

   Class (1) : COMMON 52
   Class (1) : DOMAIN 8
   Class (1) : MCC 7
   Class (1) : PBD 80

Of those, PBD is the only class that defines an ADD directive, and its type
is:

DAP> show Definition DIRECTIVE_TYPE

   Definition Name = DIRECTIVE_TYPE
   Type = BU   Length = 1   Count = 1   Defined = TRUE   Class = S
   value[1] = 1

Next I run through a build /FROM_SOURCE, which compiles the MSL, loads
the service and management defs into the dictionary, and builds the
parse table. Also, recompiles and links the AM.

MCC> enroll mcc_dhsm_am
%MCC-E-NOENTITY,  No corresponding entity instance exists

Uh, oh. Now I'm in big trouble. But at the same time, perhaps this more
cosmic symptom will be a more obvious indication of the problem?

Looking at MCC_PTB_PARSER.DAT, I notice that ENROLL is there only for:

Command:  ENROLL MCC FCL
Command:  ENROLL MCC ICONICMAP
244.9Getting ADD dispatched nowCOOKIE::KITTELLRichard - Architected Info MgmtWed Aug 15 1990 16:0319
With the help of a couple of Jill's phone calls, I'm getting ADD dispatched
to my entry point now.

The primary reason I was getting NOENTITY was because my INIT routine opens
and reads the MIR, and was getting that error. Because that all happens
before the init breakpoint gets hit, it looked like it wasn't even getting
to my MM. I'll post a note about this to alert future generations.

Jill found a bug or two as we worked on that, they're on the list.

And finally, in order to get Add to dispatch I had to change the partition
from NULL to CHAR, so the dispatch entry looks like:

        mcc_dispatch_entry -
                ADD,-
                <mcc_entity <PBD,* >>,-
                CHAR,-
                DHSM_AM__PBD_ADD