[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

793.0. "PROBLEM: Iconic PM can't retrieve variant information" by COOKIE::KITTELL (Richard - Architected Info Mgmt) Wed Mar 13 1991 18:21

Using the V1.1 30 day MCS kit, the iconic PM is having trouble with
attributes that have the DEPENDS ON clause.

Global Entity BranchLibrary
  Child Entity Cartridge
    Char Attr Base : Enumeration
    Char Attr Location State : Enumeration
    6 Status Attr with DEPENDS ON referencing either Base or Location State

Everything works normally from FCL (where "normally" is all the status attrs
always appear). From the Iconic PM, when I try to do any operation on a 
Cartridge instance, the message "Management Window Message: Variant 
information for this entity cannot be retrieved" appears. The next reply 
shows a screen capture of the message box.

The error occurs even if I show an attribute partition that doesn't have any
variants in it such as Identifiers, or execute an action directive.

Using the FCL PM, I've verified that a show of the Characteristics partition
does return a valid value for each of the two selector attributes.

Using DEBUG, I've established that the Iconic PM is generating a show of the 
characteristics partition when some other partition is referenced, and that
the ILV returned for the selector attributes looks valid.

What other things might I have botched to trip up the PM?
T.RTitleUserPersonal
Name
DateLines
793.1The screen captureCOOKIE::KITTELLRichard - Architected Info MgmtWed Mar 13 1991 18:2263
793.2working...COOKIE::KITTELLRichard - Architected Info MgmtThu Mar 14 1991 15:413
I've been contacted off-line by a member of the development group who is
investigating this problem.
793.3variant selectorsB8OVEN::MULLIGANFri Mar 15 1991 18:1529
From the Iconic Map PM, when an operation is selected on a
entity that has variant selectors defined the Iconic Map PM 
does a call_function(GETVARSELECTOR, class instance)
to retrieve those attributes that have been defined has 
variant selectors.
  If there are variant selectors defined for the (sub)entity,
GETVARSELECTOR first tries to retrieve the attributes
from the instance repository.  If the (sub)entity is 
registered the attributes would have been stored.  If the 
(sub)entity has not been registered then GETVARSELECTOR does a 
call_access(SHOW, class instance, ALL CHAR) to get the attribute
values from the AM.
  The problem reported here was caused by the 
call_access(SHOW, class instance, ALL CHAR) failing, returning
an error CVR to GETVARSELECTOR which returned an error CVR to
the Iconic Map PM which displayed an error message box.
  The SHOW entry point in the AM called the design 
framework routine mcc_desfram_validate_callargs() 
to perform call argument validation. 
mcc_desfram_validate_callargs() determined that the
out_p argument passed by GETVARSELECTOR was invalid and 
returned a CVR of MCC_S_INV_OUT_P.  The out_p argument
was invalid because the mcc_l_dt member of the MCC_T_Descriptor 
structure was not set to MCC_K_DT_ILV
  This is a bug in GETVARSELECTOR, I will QAR it and fix
it for 1.2.  A work around is for the SHOW entry point 
to set the mcc_l_dt member of the MCC_T_Descriptor structure 
of the out_p argument to MCC_K_DT_ILV before calling 
mcc_desfram_validate_callargs().
793.4CLOSEDCOOKIE::KITTELLRichard - Architected Info MgmtFri Mar 15 1991 18:5716

Here's an example of the workaround. If your management spec
uses DEPENDS ON clauses anywhere, and your SHOW entry point uses the
design framework or otherwise validates the datatype of out_p, add
this as the first executable code of the SHOW entry point:

   /*
    * WORKAROUND: The config FM that shipped with V1.1 of MCC sets the
    * datatype of the out_p descriptor to DT_ENUMERATION. We detect this
    * here, and fix it.
    */
   if (out_p->mcc_l_dt == MCC_K_DT_ENUMERATION)
       out_p->mcc_l_dt = MCC_K_DT_ILV;

Thanks, Pat for the help resolving this.