function prots2mode { typeset -i m x typeset b s set -A b $(echo "x$1" | sed 's/./& /g') x=2; m=0 while [ $x -le 10 ]; do [ "${b[$x]}" = "s" ] && s[$x]=1 [ "${b[$x]}" = "S" ] && s[$x]=1 && b[$x]="-" [ "${b[$x]}" = "t" ] && s[$x]=1 [ "${b[$x]}" = "T" ] && s[$x]=1 && b[$x]="-" ((m *= 2)) [ "${b[$x]}" = "-" ] || m=$(($m + 1)) x=$(($x + 1)) done printf "%d%03d\n" $((${s[4]-0} * 4 + ${s[7]-0} * 2 + ${s[10]-0})) $(echo 8o${m}p | dc) }