This is the code I used, originally back in 2005, before Informix acquired the CHR and ASCII functions:
CREATE PROCEDURE ascii(C CHAR) RETURNING INT AS result;
DEFINE i INTEGER;
IF c IS NULL THEN
LET i = 0;
ELSE
SELECT val INTO i FROM ascii WHERE chr = c;
END IF;
RETURN i;
END PROCEDURE;
CREATE PROCEDURE chr(i INTEGER) RETURNING CHAR(1) AS result;
DEFINE c CHAR;
IF i < 0 OR i > 255 THEN
RAISE EXCEPTION -746, 0, 'CHR(): integer value out of range 0..255';
END IF;
IF i = 0 OR i IS NULL THEN
LET c = NULL;
ELSE
SELECT chr INTO c FROM ascii WHERE val = i;
END IF;
RETURN c;
END PROCEDURE;
CREATE TABLE ascii
(
val INTEGER NOT NULL UNIQUE CONSTRAINT u1_ascii,
chr CHAR(1) NOT NULL UNIQUE CONSTRAINT u2_ascii
);
REVOKE ALL ON ascii FROM PUBLIC;
GRANT SELECT ON ascii TO PUBLIC;
There's also a data file with numbers 1..255 and the corresponding character code. It doesn't print well on a UTF-8 terminal since half the characters (from 128..255) are broken UTF-8 when treated as UTF-8. It only works for code sets like ISO 8859-15 (8859-1, …). You could decide that ASCII really means code points 1..127; that can be made to work since the UTF-8 and ASCII representations of those code points are identical.
If you really can't generate an appropriate load file for the ASCII table, let me know (by email — see my profile; it might already be available in the IIUG Software archive) and I can send you the gzipped archive with the data as well as the SQL above (a grand total of 1716 bytes in gzipped tar file format).