SELECT t.tabid, t.tabname, c.colno, c.colname, c.coltype, c.collength, HEX(c.collength),
decode(bitand(c.coltype, "0xff"), 5, "decimal", 8, "money", "<...>") || "(" ||
ifx_bit_rightshift(c.collength, 8) || "," || bitand(c.collength, "0xff") || ")"
as type
FROM "informix".systables AS t
JOIN "informix".syscolumns AS c ON t.tabid = c.tabid
WHERE c.coltype IN (5, 8, 261, 264);
Some tweaking still required...
#Informix