TPXL0053 ... BINDLOST - NO SB FOUND FOR CLSDST PASS
This error message indicates a lost BIND when TPX tries to establish a session from a 'GROUP' type terminal to an application using Substring (like TSO).
This condition is observed when more than one application is defined with matching Substrings that are not unique.
See following example for explanation:
- There are three applications using Substring definitions in the ACT :
APPL Substring
TSO1 TS1
TSO2 TS2
TSO3 TS
- When a request for a session with TSO2 is initiated, TPX selects virtual terminal (TYPE=GRP) GRP0001, and sends a REQSESS to TSO2:
+------------------+ +----------------+
! Virtual Terminal ! REQSESS ! Application !
! GRP0001 ! ----------> ! TSO2 !
+------------------+ +----------------+
- TSO2 accepts this request and passes it to one of its Minor Nodes, for example TS20001. A BIND is returned to VT GRP0001:
+-------------+
! Application !
! TSO2 !
+-------------+
!
V
+------------------+ +-------------+
! Virtual Terminal ! BIND ! Application !
! GRP0001 ! <---------- ! TS20001 !
+------------------+ +-------------+
Since the VT is TYPE-GRP, TPX cannot determine which REQSESS the incoming BIND belongs to.
There may be other REQSESS being issued in parallel and waiting for reply from the application at the same time.
The only way TPX can glue together the REQSESS from TSO2 to the BIND from TS20001 is by checking the Substrings.
- At TPX startup, a Substrings table is created, in reverse order.
For our example this table will look like:
APPL Substring
TSO3 TS
TSO2 TS2
TSO1 TS1
Since the Substrings are tested in this sequence: 'TS', 'TS2' and 'TS1', TS20001 matches the first Substring 'TS'.
TPX is attempting to connect the REQSESS to TSO3 rather than TSO2, incorrectly, displaying the error message :
TPXL0053 ... BINDLOST - NO SB FOUND FOR CLSDST PASS
There are two possible solutions for this:
- Make sure that every Application has unique substrings values.
In our example the substring 'TS' is not unique enough as every Minor Node starting with 'TS1' or 'TS2' will fit into 'TS' as well.
If TSO3 had been defined with a substring of 'TS3' than TPX would correctly interpret application for TS20001, namely TSO2.
- The other solution is to use (TYPE=UNQ) Unique virtual terminals rather than TYP=GRP.
This forces a one-to-one Appl:VT relationship and correctly interprets a REQSESS to TSO2 and accepts any BIND received for that session request. The downside is that you likely need to define many more UNQ ACBs within your VTAMLST member since one is needed for each session.