/* decode %xx hex values in string to ascii * Written by Harry Sintonen * Public Domain. */ options results a = arg(1) say a 'decoded: 'decode(a) exit 0 decode: PROCEDURE v = arg(1) l = length(v) r = '' do i = 1 to l c = substr(v, i, 1) if c == '%' & i <= l - 2 then do hex = substr(v, i + 1, 2) if datatype(hex, 'X') then do dec = x2d(hex) /* filter out ctrlcodes */ if ((dec >= 32 & dec <= 126) | dec >= 160) then r = r || x2c(hex) else r = r || '?' i = i + 2 end else r = r || c end else r = r || c end return r