This is how I solved the same problem a while back.
It starts with pretranslation but uses SPNs with ARRN.
The only dodgy part is that it requires a dummy SPN that can be dedicated and never be required for any other purpose. There could be a workaround for that, maybe using CDP, but I wasn't able to work that out when I dreamt this up. ARRN's are perfect for this kind of thing but unfortunately only work with SPN's. If anyone has a better solution I'm interested.
Create two new DMI tables (I am using 94 and 95 but you can use whatever is available).
>ld 86
REQ new
CUST 0
FEAT dgt
DMI 94
DEL 3 <- For allowed calls this will delete the dummy SPN and route the call back through BARS
INST
CTYP
REQ new
CUST 0
FEAT dgt
DMI 95
DEL 4
INST 3600 <- the DN that “blocked” callers to go to when they dial 911
CTYP
Create two new RLB’s:
REQ new
CUST 0
FEAT rlb
RLI 94 <- This is for allowed calls
ENTR 0
LTER yes
DMI 94
REQ new
CUST 0
FEAT rlb
RLI 95 <- This is for blocked calls.
ENTR 0
LTER yes
DMI 95
Now add a dummy SPN. This will be a number that is unlikely to ever be dialed after dialing 9. I used 905 which is an area code that is long-distance to the switch's area code of 613. Callers dial 9-1-905-xxx-xxxx and it's unlikely they will ever need to dial 9-905-XXX-XXXX. This means we can keep the NPA 1905 but use 905 as an SPN for our special purpose.
>ld 90
ESN000
REQ new
CUST 0
FEAT net
TRAN ac1
TYPE spn
SPN 9059 <- This is the number inserted by pretranslation
FLEN
RLI 94 <- most calls are re-routed back through BARS normally
SDRR arrn
ARRN 11
ARLI 95 <- 911 calls are routed to the DN in RLI 95
ARRN 911
ARLI 95 <- 9-911 calls are routed to the DN in RLI 95
ARRN
SDRR
ITEI
So the SCL that is attached to your XLST should look like this
SCNO 0094
TYPE SCL
DNSZ 16
SIZE 10
STOR 0
STOR 1
STOR 2
STOR 3
STOR 4
STOR 5
STOR 6
STOR 7
STOR 8
STOR 9 99059