mid$(s$, i, 1) の代わりに s$[i] と書けます。34行はこれでスッキリするでしょう。
もっといい方法は、k = i and (1<<j) です。
1<<j は pow(2, j) と同じです。(ただし j は 0~31 までに限定)
and はビットごとの掛け算になります。二進数を表す &b を使って書くと
&b0011 and &b0101 = &b0001
になります。行を分けて欠くと
&b0011 and
&b0101 =
&b0001 '共に 1 の桁だけ 1 になる
iが &bxxxxxxxxx の時、j が 0,1,.. と変化すると
k = i and (1<<0) = i and &b1 = iの一番右の桁(0か1)
k = i and (1<<1) = i and &b10 = iの右から2番目の桁
... となります
0<=itm<=9 でいいのなら最初の if 文の塊は
var itm_to_pa7[9]
@a: data ?,?,?,?,1,2,5,6,3
copy itm_to_pa7, @a
pa7=itm_to_pa7[itm]
5334 は繋がってるの?
bx=(((b1*2+b2)*2+b3)*2+b4)*2+b5
if bx=&b11111 then pa8=2
if bx=&b10111 then pa8=3
...
もちろん上みたいに配列にしてもいいかもだし、そもそも何やりたいのかな???