# ord.awk --- do ord and chr | |
# Global identifiers: | |
# _ord_: numerical values indexed by characters | |
# _ord_init: function to initialize _ord_ | |
# | |
# Arnold Robbins, [email protected], Public Domain | |
# 16 January, 1992 | |
# 20 July, 1992, revised | |
BEGIN { _ord_init() } | |
function _ord_init( low, high, i, t) | |
{ | |
low = sprintf("%c", 7) # BEL is ascii 7 | |
if (low == "\a") { # regular ascii | |
low = 0 | |
high = 127 | |
} else if (sprintf("%c", 128 + 7) == "\a") { | |
# ascii, mark parity | |
low = 128 | |
high = 255 | |
} else { # ebcdic(!) | |
low = 0 | |
high = 255 | |
} | |
for (i = low; i <= high; i++) { | |
t = sprintf("%c", i) | |
_ord_[t] = i | |
} | |
} | |
function ord(str, c) | |
{ | |
# only first character is of interest | |
c = substr(str, 1, 1) | |
return _ord_[c] | |
} | |
function chr(c) | |
{ | |
# force c to be numeric by adding 0 | |
return sprintf("%c", c + 0) | |
} | |