logical sBase_SharedData :: InitKey (char *prop_path, char *extnames )
{
  PropertyHandle    *ph        = GetPropertyHandle();
  PropertyHandle    *kennung   = ph->GPH("kennung");
  PropertyHandle    *id        = ph->GPH(prop_path);
  char               idkey[16];
BEGINSEQ
  if ( kennung->IsEmpty() )
    kennung->SetValue(::GetEigentuemerKennung(),NO);
    
  if ( extnames && id->IsEmpty() )
  {
    id->SetValue(1,NO);  

    PropertyHandle    all(ph->GetObjectHandle(),extnames,PI_Read);
                                                    SDBCERR
    all.SetOrder("ik_kennung");
    memset(idkey,0,sizeof(idkey));
    *idkey = *kennung->GetString();
    if ( !all.LocateKey(Key(idkey)) )
      all.Position(-1);
    else
      all.Get(LAST_INSTANCE);
    if ( all.IsPositioned() )
      if ( *all.GPH("kennung") == *kennung )
        id->SetValue(all.GPH(prop_path)->GetInt()+1,NO);  
  }

RECOVER

ENDSEQ
  return(NO);
}
char *pc_ODC_Variable :: DataTypeCString (NString &nstring )
{
  PropertyHandle   *ddetype   = GPH("ddetype");
  char             *save_type = NULL;
  logical           term      = NO;
BEGINSEQ
  if ( GPH("const_val")->IsTrue() )
  {
    nstring += "const";
    nstring.Append(' ');
  }

  if ( TestSysVariable("C_INTERFACE","Y") )
  {
    PropertyHandle   inst_coll(GetDBHandle(),"InstCollection",PI_Read);
                                                    SDBCERR
	PropertyHandle phCInterface("CInterface");
    if ( !inst_coll(phCInterface) ) SDBERR(99)

    if ( inst_coll.GPH("collection")->Get(*ddetype) )
    {
      save_type = strdup(ddetype->GetString());
      ddetype->SetValue("void",NO);
    }
  }