kusunoki@...-inet.or.jp さん wrote.
> 文字をアスキーコードにして、数字にするというの考えたのですが、そんな関数ないですよね。
sunsite にある gawk のドキュメントを見ると、以下のような関数の定義方法が
載っています。したがって、オリジナルの gawk は ord, chr に当たる関数を持っ
てないということですね。
# ord.awk --- do ord and chr
# Global identifiers:
# _ord_: numerical values indexed by characters
# _ord_init: function to initialize _ord_
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)
}
#### test code Modified by 閑舎
BEGIN \
{
for (i = 65; i < 91; i++) {
printf("ord(%s) = %d\n", chr(i), ord(chr(i)))
}
}
--
本田博通(閑舎)
テキストとスクリプトの http://rakunet.org/TSNET/