#module
#defcfunc cnvswtos str a, local b, local c, local d, local e
sdim b, strlen(a)+10
b = a
c = 0
sdim d, strlen(a)
e = 0
repeat
if c >= strlen(a) : break
if wpeek(b,c) == 0x755C {
wpoke d, e, int("$"+strmid(b,c+2,4))
c += 6
} else {
wpoke d, e, peek(b,c)
c++
}
e += 2
loop
return cnvwtos(d)
#global
変換前 = "\\u30c6\\u30b9\\u30c8\\u30e1\\u30c3\\u30bb\\u30fc\\u30b8\\u3067\\u3059\\uff01 HSP\\u7528\\u306e\\u3002"
変換後 = cnvswtos(変換前)
mes 変換前
mes 変換後
エラーチェックとかしてませんが、正しい入力なら動作はします。
今回どうなるのかわからなかったので\記号のエスケープ処理は入れてませんが、
もし\記号がエスケープされて\\になる場合はソースコードを一部修正する必要があります。