[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

149.0. "Tools wanted for AES data type" by TENERE::LAVILLAT () Fri Jun 08 1990 09:28

   I'm debugging an AM, and have sometimes problems with AES variables (when
   using MCC$AES_XXX routines).

   I would appreciate to have a MCC$AES_DUMP routine  (equivalent of
   MCC$ILV_DUMP for AES structures) to check all the fields of an AES.

   I know this can be coded using some MCC$AES_DEPTH and MCC$AES_GET calls, but
   I'm a bit lazy and I'm sure this would be usefull for every MCC$AES_XXX
   routine caller.

   Have you got this and do you plan to make it public or did I miss it 
   somewhere (perhaps there is another way to do it) ?

						Pierre.
	
T.RTitleUserPersonal
Name
DateLines
149.1TOOK::SWISTJim Swist LKG2-2/T2 DTN 226-7102Fri Jun 08 1990 14:136
    I'm not saying we shouldn't do this but the AES structure is
    supposed to be opaque with regard to the caller of the AES routines.
    If we released a tool to dump the AES *fields* we would break
    the opaqueness.  A tool which logically dumped the AES in an
    implementation-independent format would be a better idea.
    
149.2Depends on what version you are running.TOOK::GUERTINWherever you go, there you are.Fri Jun 08 1990 14:4812
    What version of MCC are you running?  If you are running the latest
    version (UT0.1.1 ?) try :
    
    DBG> SET IMAGE MCC$KERNEL_SHR
    DBG> SET MODULE MCC$AES
    DBG> CALL MCC$AES_DUMP( address-of-AES-goes-here )
    
    As Jim noted in the previous note, this is a generic non-implementation
    specific display of the AES.  So it may not be *exactly* what you want.
    
    -Matt.
    A
149.3Thanks, but...TENERE::LAVILLATFri Jun 08 1990 15:3910
	Thanks, that's exactly what I wanted.

	I'm unfortunatly running T1.0.0 version and did not found any
	MCC$AES_DUMP routine in the MCC$KERNEL_SHR image.

	So the best is wait for the next update...


						Pierre.
149.4Can't TBD do much of this?MKNME::DANIELEFri Jun 08 1990 15:410
149.5there are usesGOSTE::CALLANDERMon Jun 11 1990 16:0715
    Mike,
    
    TBD can do some of it but the problem is if you are running from
    another PM (like the TRM) it is useful to be able to turn on 
    a logical and have your code dump the information; or from the
    debugger be able to do a set image and call the routine directly
    to validate a parameter. I know this later is used heavily in our
    debugging.
    
    Also note that the TRM dump (under the control of the MCC$TRM_PM
    logical in UT1) will be udated in the next release to handle the
    dumping of constructed data types as instances.
    
    jill
    
149.6This ugly but it works for me. Your mileage may vary.COOKIE::KITTELLRichard - Architected Info MgmtSat Sep 01 1990 19:0866
/*
 *                   D U M P _ A E S
 *
 * Call this with the address of the handle. That is, if you have
 *
 *   MCC_A_AES   entity;
 *
 *   DBG>eval/addr entity
 *   DBG>call dump_aes (xxxxxxxxxx)
 */
static dump_aes (handle)
   MCC_A_AES *handle;
{
   unsigned long depth, status, i, class, wild_type, wild_depth;
   MCC_T_FullName val_buf;
   MCC_T_Descriptor value = 
   {
      sizeof (MCC_T_FullName), DSC_K_DTYPE_T, DSC_K_CLASS_S, val_buf,
      sizeof (MCC_T_FullName), 0, 1, 0, 0, 0
      }
   ;
   
   /* Display the depth of the entity spec and any wildcard */
   status = mcc_aes_depth (handle, &depth);
   if (BAD(status)) return (status);
   printf ("%d CI Pairs in Entity Spec, ", depth);

   wild_depth = 0;
   status = mcc_aes_wild (handle, &wild_depth, &wild_type);
   if (BAD(status)) return (status);
   switch (wild_type)
   {
      case MCC_K_AES_NOT_WILD:
         printf ("No Wildcard\n");
         break;
      case MCC_K_AES_CLASS_WILD:
	    printf ("Wildcarded Class at Depth %d\n", wild_depth);
	    break;
      case MCC_K_AES_INSTANCE_FULL:
	    printf ("Full Instance Wildcard at Depth %d\n", wild_depth);
	    break;
      case MCC_K_AES_INSTANCE_PARTIAL:
	    printf ("Partial Instance Wildcard at Depth %d\n", wild_depth);
	    break;
      default:
	    printf ("Unknown Wildcard Type\n");
	    break;
   }

   /* For each CI pair, display everything we know about it */
   for (i=0;i<depth;i++)
   {
      value.mcc_w_curlen = value.mcc_w_maxstrlen;
      status = mcc_aes_get (handle, &i, &class, &value);
      if (BAD(status)) return (status);

      printf ("  %d: Class: %d DataType: %d Length: %d Id: %d",
	      i, class, value.mcc_l_dt, value.mcc_w_curlen,
	      value.mcc_l_id);
      printf (" Flags: %d\n", value.mcc_b_flags);

   }

   return (status);
}

149.7Good job!!VERS::PETROUThu Mar 07 1991 15:185

	Very good example.
	It's a very good help...
	Regards, Philippe.