private bool JumptToDataSet(DataBlock dataBlock)
 {
     if (dataBlock.moveTo("DATASET") == false)
         return false;
     // valida el tipo de dato
     if (checkDataType(dataBlock) == false)
             return false;
         //
     dataBlock.move(-2);
     // retrocede para leer el nombre
     if (dataBlock.moveBackString(32) < 1)
     {
         dataBlock.move(6);
         // este no es válido... busca si hay más...
         return JumptToDataSet(dataBlock);
     }
     else
         return true;
 }
 private bool checkDataType(DataBlock dataBlock)
 {
     dataBlock.move(8); // "DATASET "
         if (dataBlock.n + 3 > dataBlock.data.Length)
                 return false;
         string type = dataBlock.eatChars(3); // "DBL", "LNG", etc
         if (new List<string>(validTypes).Contains(type) == false)
         {
                 // este no es válido... busca si hay más...
                 return JumptToDataSet(dataBlock);
         }
         // retrocede hasta el inicio de DATASET
         dataBlock.move(-11);
         return true;
 }