TXR Lisp program:

  (defvarl ch-name (relate (rlist 0..32 127)
                           '#"NUL SOH STX ETX EOT ENQ ACK BEL BS \
                              HT LF VT FF CR SO SI DLE DC1 DC2 DC3 \
                              DC4 NAK SYN ETB CAN EM SUB ESC FS GS \
                              RS US SPC DEL"
                           nil))

  (defun print-row (ch)
    (format t "~,3d ~,02x ~,07b ~,03o ~a\n"
            ch ch ch ch (or [ch-name ch] (chr-num ch))))

  (match-case *args*
    (@(require @(or @(with (`0x@{dig #/[\dA-Fa-f]+/}`) base 16)
                    @(with (`0b@{dig #/[01]+/}`) base 2)
                    @(with (`0o@{dig #/[0-7]+/}`) base 8)
                    @(with (`@{dig #/\d+/}`) base 10))
               (let ((val (toint dig base)))
                 (if (<= 0 val 127)
                   (print-row val)))))
    (() [mapdo print-row 0..128])
    (@else (put-line "error in argument") (exit nil)))

No need to use a word list literal in definition of ch-name; symbols will do:

  (defvarl ch-name (relate (rlist 0..32 127)
                           '(NUL SOH STX ETX EOT ENQ ACK BEL BS
                             HT LF VT FF CR SO SI DLE DC1 DC2 DC3
                             DC4 NAK SYN ETB CAN EM SUB ESC FS GS
                             RS US SPC DEL)
                           nil))