The TableMetaData object can be used to obtain information about an specific table and it's columns.

1 Get table metadata

You can obtain a TableMetaData object from connection by table name.

var md = Ax.db.getMetaData().getTableMetaData("systables", true);
console.log("    NRows: " + md.getRowCount());
console.log("    NCols: " + md.getColumnCount());
console.log(" ColNames: " + md.getColumnNames());
NRows: 137
    NCols: 26
 ColNames: [tabname, owner, partnum, tabid, rowsize, ncols, nindexes, nrows, created, version, tabtype, locklevel, npused, fextsize, nextsize, flags, site, dbname, type_xid, am_id, pagesize, ustlowts, secpolicyid, protgranularity, statchange, statlevel]

Even you can request Column metadata Info for Temporary tables:

Ax.db.execute('DROP  TABLE IF EXISTS test')
Ax.db.execute('CREATE TEMP TABLE test(a char(1))')

let md  = Ax.db.getMetaData().getTableMetaData('test', true);
console.log("Contains column a?: " + md.getColumnNames().contains("a"));
Contains column a?: true

2 Column metadata

The following example shows how to get column metadata.

    var refresh = false;
    Ax.db.execute("DROP TABLE IF EXISTS t1 ");    
    Ax.db.execute("CREATE TABLE t1 (a DECIMAL(12, 3) DEFAULT 10.2 NOT NULL, b VARCHAR(20))");    
    var md = Ax.db.getMetaData().getTableMetaData("t1", refresh);
    for  (var columnName of md.getColumnNames()) {
        console.log("      Name: " + columnName);
        console.log("      Size: " + md.getColumnSize(columnName));
        console.log("     Scale: " + md.getColumnScale(columnName));
        console.log(" Precision: " + md.getColumnPrecision(columnName));
        console.log("   Default: " + md.getColumnDefault(columnName));
        console.log("  Nullable: " + md.isColumnNullable(columnName));

    Ax.db.execute('DROP TABLE t1');
Name: a
      Size: 12
     Scale: 3
 Precision: 12
   Default: 10,2000000000
  Nullable: false
      Name: b
      Size: 20
     Scale: 0
 Precision: 20
   Default: null
  Nullable: true