code: def contents(self):
          
          code = "proc contents data=" + self.libref + '.' + self.table + self._dsopts() + ";run;"
  
          if self.sas.nosub:
              print(code)
              return
  
          ll = self._is_valid()
          if self.results.upper() == 'PANDAS':
              code  = "proc contents data=%s.%s %s ;" % (self.libref, self.table, self._dsopts())
              code += "ods output Attributes=work._attributes;"
              code += "ods output EngineHost=work._EngineHost;"
              code += "ods output Variables=work._Variables;"
              code += "ods output Sortedby=work._Sortedby;"
              code += "run;"
              return self._returnPD(code, ['_attributes', '_EngineHost', '_Variables', '_Sortedby'])
  
          else:
              if self.HTML:
                  if not ll:
                      ll = self.sas._io.submit(code)
                  if not self.sas.batch:
                      self.sas.DISPLAY(self.sas.HTML(ll['LST']))
                  else:
                      return ll
              else:
                  if not ll:
                      ll = self.sas._io.submit(code, "text")
                  if not self.sas.batch:
                      print(ll['LST'])
                  else:
                      return ll
docs: display metadata about the table. size, number of rows, columns and their data type ...
  
          :return: output