For as long as I have been alive, the Chicago area has used exclusively 1+10 digit dialing. It does not matter if it's a local call, and it does not matter if it's in your NPA or in your same exchange or nearby, you cannot use 7 digit dialing and you must prefix with 1.
When you try to place a call without dialing a 1 first, you receive a recorded announcement instructing you to dial your call by prefixing with a 1 and the area code before dialing.
Since this is what I'm used to, I usually configure my PBXes to use '1' as the access digit and accept 10 digit numbers after the access digit. This way, dialing a number even on an inside line is the same as if it were a normal POTS line. My plan is to configured the SL-100 in a similar fashion.
To do this, we have to start with a pretranslator, defined in STDPRTCT and subtable STDPRT, so that we can remove the '1' prefix. The standard pretranslator is where preliminary call type classisification can be performed as well as catching certain special cases that should proceed to normal translations.
EXTPRTNM STDPRT AMAPRT
------------------------
POTS ( 0) ( 0)
FROMDIGS TODIGS
PRETRTE
-------------------------------------------------------
0 11
D VACT
12 19
N DD 1 NA
2 9
N NP 0 NA
This is a fairly simple pretranslator used to match the expected call types for a digit strings like you'd expect for the NANP.
Operator assisted, international, carrier access codes, and a few other special cases are in the 0 to 11 range. The 'D' route selector routes these to treatment, here I'm using the vacant code treatment (VACT). As of right now, I'm not handling those options.
12 through 19 cover direct dialed cases, in other words calls which are not considered local calls. The N selector is used to indicate these calls should go through national or international translations. DD specifies the call type as direct-dialed. 1 is the number of preceding prefix digits to remove before passing to the translations tables. Finally, NA specifies to use the national translations tables rather than the international tables.
2 through 9 cover local calls. We use the N selector again, but this time the call is flagged as non-prefixed (NP) and has 0 prefix digits to delete.
We set our pretranslator in our XLAPLAN that we had configured when we initially set up the 1FR line attribute:
XLAPIDX SCRNCL HSTS PRTNM ZEROMPOS RESINF
OPTIONS ADMININF
-------------------------------------------------------------------
222_POTS_0 NSCR 222 POTS NONE N
$ 1FR_POTS
The PRTNM field is updated to 'POTS' as shown.
With just that, we're now able to dial calls that begin with 1, whereas before they would go to intercept because the 3 digit code didn't match in HNPACODE. With the pretranslator removing the prefix, we could now dial 1-563-xxxx to reach local destinations on the switch.
In order to support 10 digit dialing, we need to involve a concept called 6 digit translations. Where HNPACONT alone is 3 digit translations (that is, translations performed by examining the first 3 digits of the dialed number), 6 digit translations involves another table to examine the next 3 digits as well. That table is FNPACONT.
NPA MAXRTE
ROUTES
FNPACODE FNPASTS RTEREF RTEMAP
---------------------------------------------------------------------
222 10
-
( 0) ( 0) ( 0) ( 0)
Here I've created an entry for my fake NPA, 222. You'll notice some similarity with HNPACONT, but there are differences too. The routing in FNPACODE works differently, so we need to start by defining a RTEREF in the appropriate subtable.
RTE RTELIST
----------------------------------------------------------------------------
563 ( DN 222 563 4)$
This table follows the same format as OFRT.
I picked the route number to be the same as the NXX it routes to make it easy to remember. The route specifies that it should route to a local switch DN in the 222-563 range using the last 4 digits of the dialed number as the station code.
We can now use this route in FNPACODE:
FROMDIGS TODIGS RTEREF CAMAAUTH
-------------------------------
563 563 563 Y
The entry is fairly simple, with the details being hidden in the route list.
In order to use our FNPACONT entry and also enforce 1+10d dialing, the next modifications we make will be to our HNPACODE subtable for out 222 STS. I'm going to use ambiguous codes to do this, which I'll explain a bit later, so I need to make sure I have enough allowed in the HNPACONT table (field NOAMBIGC).
STS SNPA NORTREFS NOAMBIGC RTEREF HNPACODE ATTRIB RTEMAP
OPTIONS
----------------------------------------------------------------------------
222 Y 99 20 ( 0) ( 1) ( 0) ( 0)
$
FROMDIGS TODIGS
CDRRTMT
------------------------------------------
20 210
AMBI OPF VCT VACT VCT VACT
212 221
AMBI OPF VCT VACT VCT VACT
222 222
AMBI OPF VCT VACT FNPA 0
223 410
AMBI OPF VCT VACT VCT VACT
412 510
AMBI OPF VCT VACT VCT VACT
512 610
AMBI OPF VCT VACT VCT VACT
612 710
AMBI OPF VCT VACT VCT VACT
712 810
AMBI OPF VCT VACT VCT VACT
812 910
AMBI OPF VCT VACT VCT VACT
912 987
AMBI OPF VCT VACT VCT VACT
989 99
AMBI OPF VCT VACT VCT VACT
The HNPACODE AMBI selector using the OPF option lets us key off NP or DD, determined in the pretranslator, to select between a 'short' 7 digit route or a 'long' 10 digit route. I've built the whole HNPACODE subtable to cover every code except N11 and 988 codes this way (which are 3 digit special cases). For all codes, the 7 digit option routes to the VACT treatment to disallow 7 digit dialing. For the 222 code, I route to the FNPACONT table using the FNPA selector. The additional '0' option isn't used and is just a dummy option required because of how the data scheme for the table is built.
Anything other than the 222 NPA is routed to VACT right now since I don't have any trunking and no way to route to the actual PSTN.
With everything in place, trying to dial anything other than a 1-222-563-XXXX number results in reorder (substituted for VACT treatment since I don't have VACT configured). This captures any 7 digit and non-prefixed calls. An improvement would be to play a message advising the caller to dial 1+NPA first, but I'm not there yet.
The next step will be to get trunks provisioned so that I can call into and out of the switch.