def contents(self):
code = "<STR_LIT>" + self.libref + '<STR_LIT:.>' + self.table + self._dsopts() + "<STR_LIT>"<EOL>if self.sas.nosub:<EOL><INDENT>print(code)<EOL>return<EOL><DEDENT>ll = self._is_valid()<EOL>if self.results.upper() == '<STR_LIT>':<EOL><INDENT>code  = "<STR_LIT>" % (self.libref, self.table, self._dsopts())<EOL>code += "<STR_LIT>"<EOL>code += "<STR_LIT>"<EOL>code += "<STR_LIT>"<EOL>code += "<STR_LIT>"<EOL>code += "<STR_LIT>"<EOL>return self._returnPD(code, ['<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>'])<EOL><DEDENT>else:<EOL><INDENT>if self.HTML:<EOL><INDENT>if not ll:<EOL><INDENT>ll = self.sas._io.submit(code)<EOL><DEDENT>if not self.sas.batch:<EOL><INDENT>self.sas.DISPLAY(self.sas.HTML(ll['<STR_LIT>']))<EOL><DEDENT>else:<EOL><INDENT>return ll<EOL><DEDENT><DEDENT>else:<EOL><INDENT>if not ll:<EOL><INDENT>ll = self.sas._io.submit(code, "<STR_LIT:text>")<EOL><DEDENT>if not self.sas.batch:<EOL><INDENT>print(ll['<STR_LIT>'])<EOL><DEDENT>else:<EOL><INDENT>return ll<EOL><DEDENT><DEDENT><DEDENT>
display metadata about the table. size, number of rows, columns and their data type ...

:return: output