*DECK HCSTTP
USETEXT NIPDEF
USETEXT ACB
USETEXT ACNB
USETEXT ACNT
USETEXT AHEADER
USETEXT APPSTAT
USETEXT AT
USETEXT DRHDR
USETEXT DUMPFLG
USETEXT MSGIDX
USETEXT NCNB
USETEXT OVERLAY
USETEXT PARAMP
USETEXT PARAMS
USETEXT PT
USETEXT PWL
USETEXT STPRESP
USETEXT SUPMSG
PROC HCSTTP((ACBAD),(ACN),(TRIGGER),(SMPTR));
STARTIMS;
#
*1DC HCSTTP
*
* 1. PROC NAME AUTHOR DATE
* HCSTTP C. BITTNER 81/05/15
*
* 2. FUNCTIONAL DESCRIPTION
* HOST CONNECTION STATE TABLE PROCESSOR
*
* 3. METHOD USED
* VALIDATE TRIGGER. SET CURRENT STATE (IF THERE IS NO ACNB
* THEN SET THE CURRENT STATE TO STATX). CALL XSTTP (STATE
* TABLE PROCESSOR) PASSING THE STATE TABLE ORDINAL, CURRENT
* CONNECTION STATE AND TRIGGER. IF A LEGAL TRIGGER IS
* RETURNED, THEN DO THE FOLLOWING (IF VALUE NOT SET
* TO NOCHG):
* A) ACTION - EXECUTE HOST CONNECTION STATE TABLE ACTION
* (ISSUE SM, ETC)
* B) NEWSTATE - UPDATE NEW HOST CONNECTION STATE
* C) TRIGC - TRIGGER NETWORK CONNECTION STATE TABLE
* D) TRIGB - TRIGGER NETWORK BLOCK PROTOCOL (IVT) STATE TABLE.
*
* IF AN ILLEGAL TRIGGER IS RETURNED THEN DO THE FOLLOWING:
* IF THE TRIGGER IS INTERNAL TO NIP THEN ABORT NIP.
* IF ILLEGAL EXTERNAL TRIGGER ISSUE ERR/LGL TO
* APPLICATION.
*
*
*
* 4. ENTRY PARAMETERS
* ACBAD - ACB ADDRESS
* ACN - APPLICATION CONNECTION NUMBER
* TRIGGER - HOST CONNECTION STATE TABLE TRIGGER NUMBER
* SMPTR - ADDRESS OF SM BUFFER
*
* 5. EXIT PARAMETERS
* NONE
*
* 6. SYMPL TEXTS USED
* NIPDEF ACB
* ACNB ACNT
* APPSTAT AHEADER
* AT MSGIDX
* NCNB PARAMP
* PT
* PARAMS OVERLAY
* STPRESP
*
* 7. ROUTINES CALLED
* HBSTTP - HOST BLOCK PROTOCOL STATE TABLE PROCESSOR
* LOCLLCB - LOCATE LLCB
* NCSTTP - NETWORK CONNECTION STATE TABLE PROCESSOR
* XSTTP - STATE TABLE PROCESSOR
* ABORT - ABORT NIP
* OSCHAPP - SWAPIN APPLICATION
* OVLCALL - LOAD AND EXECUTE OVERLAY
* CRACNB - INTERNAL PROCEDURE TO CREATE ACNB
* STRTCON OVL TRIGGER CONNECTION CREATION ROUTINES
* HCRCBU OVL SEND CR/CB/U
* HCONCBU OVL SEND CON/CB/U
* HTCHAR OVL SEND TCH/TCHAR
* UPACNB4 OVL UPDATE ACNB ON RECEIPT OF CR/RCN/N
* HCACRQA OVL SEND CON/ACRQ/A
* STRTSW OVL TRIGGER CONNECTION SWITCHING ROUTINES
* HCRRCNR OVL SEND CR/RCN/R
* HCRTRMN OVL SEND CR/TRM/N
* HCRIAPR OVL SEND CR/IAP/R
* HSFCINA OVL SEND FC/INACT SUP MSG TO APP
* HSWACNB OVL SWITCH ACNB FROM OLD APP TO NEW APP
* SENDACC OVL TRIGGER CONNECTION ACCEPTED PROCESSORS
* RELACB OVL RELEASE ACB
* HCONEND OVL SEND CON/END/N
* STPHERR OVL ISSUE STATE TABLE ERROR MESSAGE
* HLGLERR OVL SEND ERR/LGL
* XERRMSG OVL OUTPUT ERROR MESSAGE
*
* 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
* "INVALID TRIGGER NUMBER - HCSTTP"
* "NIP INTERNAL ERROR - HCSTTP1"
* "NIP INTERNAL ERROR - HCSTTP2"
*
* THIS PROCEDURE IS CALLED BY HAPFAIL,HBSTTP,HPNOFF,
* HPPUT AND NCSTTP.
*
#
STOPIMS;
#
INPUT PARAMETERS
#
ITEM ACBAD; # ACB ADDRESS #
ITEM ACN; # APPLICATION CONNECTION NUMBER #
ITEM TRIGGER; # STATE TABLE TRIGGER NUMBER #
ITEM SMPTR; # ADDRESS OF SM BUFFER #
ITEM TEMP; # TEMP VARIABLE #
#
EXTERNAL VARIABLES
#
XREF
BEGIN
PROC HBSTTP; # HOST BLOCK PROTOCOL STATE TABLE PROC #
PROC BLINK;
PROC ABORT; # ABORT NIP #
PROC LOCLLCB; # LOCATE LLCB #
PROC NCSTTP; # NETWORK CONNECTION STATE TABLE PROC #
PROC OMSG; # ISSUE DAYFILE MESSAGE #
PROC OSCHAPP; # SWAPIN APPLICATION #
PROC OVLCALL; # LOAD AND EXECUTE OVERLAY #
PROC XSTTP; # STATE TABLE PROCESSOR #
PROC XTRACE; # RECORD PROCEDURE CALL #
PROC MGETS ;
END
#
INTERNAL VARIABLES
#
SWITCH HCACTION HC0,HC1,HC2,HC3,HC4,HC5,HC6,HC7,HC8,HC9,
HC10,HC11,HC12,HC13,HC14,HC15,HC16,HC17,
HC18,,HC20,HC21,HC22,HC23,HC24,HC25
,HC26
,HC27
,HC28
;
ITEM ACNTINDX; # ACNT INDEX #
ITEM CRAC ; # CONNECTION NUMBER IN CR/SWH/R #
ITEM AN; # APPLICATION NUMBER #
ITEM NCN; # NETWORK CONNECTION NUMBER #
ITEM CURST; # CURRENT STATE #
ITEM LLCBAD; # LLCB ADDRESS #
ITEM RESP; # RESPONSE RETURNED FROM STATE TABLE PROC #
ITEM INDEX I ;
ITEM OLDAN; # APPLICATION NUMBER #
ITEM CURACNT U ; # CURRENT ACNT #
ITEM BUFFERADR I ; # ADDRESS OF NEEDED BUFFER #
#**********************************************************************#
BEGIN
BEGIN
CONTROL IFEQ DEBUG,1;
XTRACE("HCSTT") ;
CONTROL FI;
LLCBAD = 0 ;
PARAMS5 = FALSE ;
PARAMS7 = 0 ;
# VALIDATE TRIGGER NUMBER #
IF TRIGGER LQ HCMTR AND TRIGGER GQ 0
THEN
BEGIN # VALID TRIGGER NUMBER #
P<ACB> = ACBAD; # BASE ACB #
P<ACNT> = ACBACNT[0]; # BASE ACNT #
IF ACN NQ 0
THEN
BEGIN
ACNTINDX = ACN + ACNTHSIZE - ACNTMINACN[0];
P<ACNB> = ACNTACNB[ACNTINDX];
P<NCNB> = ACNBNCNB[0]; # ADDRESS OF NCNB #
END
ELSE
P<ACNB> = 0;
IF P<ACNB> EQ 0
THEN
CURST = STATX; # CURRENT STATE #
ELSE
CURST = ACNTCS[ACNTINDX];
XSTTP(HCORD,CURST,TRIGGER,RESP);
P<STRESP> = LOC(RESP); # RESPONSE WORD #
IF LEGTRIG[0]
THEN
BEGIN # LEGAL TRIGGER #
IF ACTION[0] NQ NOCHG
THEN
GOTO HCACTION[ACTION[0]]; # EXECUTE PROPER ACTION #
ELSE
GOTO HCA;
HC0:
#
CACNBTI (ACTION NO. 0)
CREATE ACNB AND SEND CR/ITE/R TO NVF
#
PARAMP1 = SMPTR + BLKHSIZE + ABHSIZE; # FWA OF ICN/TE/R #
CRACNBP ; # CALL INTERNAL PROC TO BUILD ACNB #
PARAMS1 = SMPTR; # ADDRESS OF ICN/TE/R #
PARAMS2 = ACN; # APPLICATION CONNECTION NUMBER #
PARAMP5 = STRTCX"CRITE$" ;
OVLNAME = STRTCONP; # SEND CR/ITE/R TO NVF #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
HC1:
#
RECEIVED ICN/AP/R FROM NETWORK
#
PARAMP1 = SMPTR + BLKHSIZE + ABHSIZE; # FWA OF ICN/AP/R #
CRACNBP ; # BUILD THE ACNB #
#
AND SEND CR/RAP/R TO NVF USING THE ICN/AP/R BUFFER
#
PARAMS1 = SMPTR ;
PARAMS2 = ACN ;
PARAMS3 = P<ACNB> ;
PARAMP5 = STRTCX"CRRAP$" ;
OVLNAME = STRTCONP ; # OVERLAY TO SEND CR/RAP/R #
OVLCALL ;
GOTO HCA ;
HC2:
#
DLACNB (ACTION NO. 2)
SEND CON/CB/U TO APPLIACTION
#
PARAMS1 = RCB"LND"; # REASON CODE 1 - NETWORK TERMINATED CON #
PARAMS2 = P<ACNB>; # ACNB ADDRESS #
OVLNAME = HCONCBUP; # OVERLAY NAME #
PARAMS3 = 0 ;
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
HC3:
#
SEND TCH/TCHAR TO APPLICATION
#
IF ACNBNCNB[0] NQ 0
THEN # NCNB EXISTS #
BEGIN # SEND TCH/TCHAR TO APPLICATION #
PARAMS1 = P<ACNB>; # ACNB ADDRESS #
OVLNAME = HTCHARP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
END
#
UPDATE ACNB ON RECEIPT OF CR/RCN/N
#
PARAMS1 = P<ACNB>; # ADDR OF APPLICATION CONNECTION BLOCK #
PARAMS2 = SMPTR; # ADDR OF CR/RCN/N SM BUFFER #
OVLNAME = UPACNB4P; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
HC4:
#
CRRCNCB ( ACTION NO. 4 )
COMBINED ACTION OF ACTION 5 AND ACTION 9.
SWITCH ACNB TO NVF
SEND CR/RCN/R AND CR/CB/U TO NVF
#
HC5:
#
SACNB2 (ACTION NO. 5)
SWITCH ACNB AND SEND CR/RCN/R TO NVF
#
#
CON/REQ/A CASE
SWITCH ACNB FROM APPL TO NVF
#
PARAMS1 = ACBAD; # ADDRESS OF OLD ACB #
PARAMS2 = ACN; # ADDRESS OF OLD CONNECTION NUMBER #
PARAMS3 = ATACBA[NVFAN]; # ADDRESS OF NEW ACB #
PARAMS4 = 0; # NO NEW CONNECTION NUMBER #
PARAMS8 = FALSE; # SET NOT LOANED CONNECTION SWITCH #
OVLNAME = HSWACNBP; # NAME OF OVERLAY TO LOAD #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
# BASE ACNT TO NVF-S NEW CONNECTION JUST SWITCHED TO #
OLDAN = ACBAN[0]; # APPLIC. NO. OF APPL REFUSING CONNECTION #
P<ACNB> = PARAMS1; # ADDRESS OF NEW ACNB #
PARAMS2 = 0 ; # PRESET APPL. NAME TO ZERO #
IF ACNBPRID[0] NQ 0
THEN
BEGIN # FROM SECONDARY APPL. #
IF NOT ACNBPRAF[0] # PRIM NOT FAILED YET #
THEN
BEGIN # PRIMARY APPL. HAS NOT GONE #
P<ACB> = ATACBA[ACNBPRAN[0]] ; # ACB OF PRIMARY #
TEMP = P<ACNT>; # SAVE ACNT TEMPLATE #
P<ACNT> = ACBACNT[0]; # PRIMARY APPL ACNT #
ACNTINDX = ACNBPRACN[0] + ACNTHSIZE - ACNTMINACN[0];
# GET INDEX TO ACNT #
ACNTSECAN[ACNTINDX] = NVFAN; # ACNB IS NOW WITH NVF #
ACNTSECACN[ACNTINDX] = ACNBACN[0]; # ACN IN NVF ACNB #
P<ACNT> = TEMP; # RESTORE ACNT #
PARAMS2 = ACBANAME[0] ; # PRIMARY APPL. NAME #
PARAMS3 = ACNBRC[0] + CRSWHTAB;# SET REASON CODE TO RC+20B #
END # PRIM HAS NOT GONE #
ELSE
BEGIN
PARAMS3 = RCRC"PAF" ; # PRIM HAS GONE, SET RC TO 11B #
ACNBPRID[0] = 0 ; # #
END
END # FROM SECODARY APPL. #
ELSE
BEGIN # NOT LOANED CONN. #
PARAMS3 = ACNBRC[0] ; # SET REASON IN CR/RCN TO APL RC#
END # NOT LOANED CONN. #
# ISSUE CR/CRN/R TO NVF #
P<ACB> = ATACBA[NVFAN];
P<ACNT> = ACBACNT[0];
ACNTINDX = ACNBACN[0] + ACNTHSIZE - ACNTMINACN[0];
# ISSUE RECONNECT (CR/RCN/R) TO NVF #
PARAMS4 = OLDAN; # AN OF APPL REFUSING CONNECTION #
OVLNAME = HCRRCNRP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
#
CHECK IF THIS IS THE LAST CONNECTION OF AN EX-PRU
APPLICATION. IF SO , RELEASE THE ACB OF IT
#
P<ACB> = ATACBA[OLDAN] ;
IF ACBWOFF[0] AND ACBNPRU[0] EQ 0
THEN
BEGIN
PARAMS1 = ACBAN[0] ;
OVLNAME = RELACBP ;
OVLCALL ;
END
IF ACTION[0] EQ SACNB2
THEN
GOTO HCA; # ACTION ACNB2 SEND CR/RCN ONLY #
# CONTINUE WITH ACTION CRRCNCB (4), SEND CR/CB/U #
HC9:
#
CRCBU (ACTION NO. 9)
SEND CR/CB/U TO NVF
#
PARAMS2 = P<ACNB>; # ACNB ADDRESS #
OVLNAME = HCRCBUP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
#
SEND CON/CB TO PRIMARY APPLICATION IF THERE IS ONE
#
PARAMS1 = RCB"LND"; # REASON CODE 1 - NETWORK TERMINATED CON #
OVLNAME = HCONCBUP; # NAME OF OVERLAY TO LOAD #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
HC6:
#
CHTCCA (ACTION NO. 6)
SEND TCH/TCHAR TO APPLICATION
#
IF ACNBNCNB[0] NQ 0
THEN # NCNB EXISTS #
BEGIN # SEND TCH/TCHAR TO APPLICATION #
PARAMS1 = P<ACNB>; # ACNB ADDRESS #
OVLNAME = HTCHARP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
END
ELSE # NO NCNB EXISTS #
GOTO HC77;
HC7:
GOTO HCA;
HC8:
#
UACNB1 (ACTION NO. 8)
UPDATE ACNB
#
PARAMS1 = P<ACNB>; # ADDR OF APPL CONNECTION BLOCK #
PARAMS2 = SMPTR; # ADDR OF SM BUFFER #
PARAMS9 = COMPCX"UACNB$" ;
OVLNAME = COMPCONP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
HC10:
#
UACNB2 (ACTION NO. 10)
UPDATE ACNB WITH INFORMATION FROM CON/REQ/N
SEND CR/ACC/U TO NVF
SEND TCH/TCHAR TO APPLICATION
#
PARAMS1 = P<ACNB>; # ADDR OF APPL CONNECTION BLOCK #
PARAMS2 = SMPTR; # ADDR OF CON/REQ/N SM BUFFER #
PARAMS9 = SENDX"UACNB3$" ;
OVLNAME = SENDACCP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
# SEND CR/ACC/U TO NVF #
PARAMS1 = P<ACNB>;
PARAMS9 = SENDX"CRACC$" ;
OVLNAME = SENDACCP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
# SEND TCH/TCHAR TO APPLICATION #
PARAMS1 = P<ACNB>;
IF ACNBNCNB[0] NQ 0
THEN # NCNB EXISTS #
BEGIN # SEND TCH/TCHAR TO APPLICATION #
PARAMS1 = P<ACNB>; # ACNB ADDRESS #
OVLNAME = HTCHARP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
END
GOTO HCA;
HC11:
#
RECEIVED CR/IAP/N FROM NVF
- VLLCB - VALIDATE LOGICAL LINK (FOR A-A CONNECTIONS)
- IF EXIST CHOOSE A PROPER CONNECTION NUMBER TO USE WITH IT
#
PARAMP1 = SMPTR ; # CR/IAP/N FROM NVF #
PARAMP2 = P<ACNB> ; # CONNECTION BLOCK INFO #
# #
OVLNAME = HVLLCBP ;
OVLCALL ; # CALL OVERLAY AND EXECUTE #
# #
IF PARAMP3 EQ 0 # NO LOGICAL LINK. WE SENT ANOTHER CR/IAP #
THEN
RETURN;
ELSE
BEGIN
LLCBAD = PARAMP3 ; # LOGICAL LINK FOR THAT A-A CONNECTION #
NCN = PARAMP4 ; # CONNECTION NUMBER ON THIS LOGICAL LINK #
ACNBADD = P<ACNB> ;
P<SMNVF> = SMPTR + BLKHSIZE + ABHSIZE ;
P<SMNIP> = P<SMNVF>;
CRBYTE = CRIOCTN[0]; # SAVE BYTE COUNT IN POINTER TABLE #
ICNCN[0] = NCN; # MADE NCN AVAILABLE TO BLDNCNB #
ACNBABL[0] = CRIAABL[0] ;
ACNBVCBO[0] = CRVCB[0] ;
ACNBICT [0] = CRICT[0] ;
ACNBALN[0] = CRALN[0]; # APPLICATION LIST NUMBER #
IF CRASNOD[0] EQ 0 AND CRADNOD[0] EQ 0
THEN
ACNBDT[0] = DT$INTA ;
ELSE
ACNBDT[0] = DT$INTE ;
END
# #
GOTO HCA ;
HC12:
#
RECEIVED CR/IAP/A FROM NVF
SEND CON/ACRQ/A TO APPL WITH RC FROM CR/IAP/A
#
P<SMNVF> = SMPTR + BLKHSIZE + ABHSIZE ;
IF CRRIAP[0] NQ RCIA"APF"
THEN # APPLICATION HAS NOT FAILED #
BEGIN
P<ACB> = ATACBA[ACNBIAN[0]]; # ADR OF ACB TO QUEUE CON/ACRQ/A#
IF ACBERCNT[0] LS MAXLGERR
THEN # OKAY TO GENERATE CON/ACRQ/A #
BEGIN
PARAMS1 = CRRIAP[0]; # REASON CODE FROM CR/IAP/A #
PARAMS2 = P<ACNB>; # ADDRESS OF ACNB FOR CONNECTION#
OVLNAME = HCACRQAP; # NAME OF OVERLAY TO LOAD #
OVLCALL; # LAOD AND EXECUTE OVERLAY #
END
ELSE # REACHED MAX NO OF ERR SUP MSG #
BEGIN
IF ACBERCNT[0] EQ MAXLGERR
THEN # REACHED MAX NO OF ERR SUP MSG #
BEGIN
PARAMS1 = RLG"IAL"; # ERR/LGL RC FOR TOO MANY ERRORS#
OVLNAME = HLGLERRP; # NAME OF OVERLAY TO LOAD #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
END
END
END
GOTO HCA ;
HC13:
#
SACNB1 (ACTION NO.13)
SWITCH ACNB - SEND CR/SWH/N AND CON/REQ/R
#
# CR/SWH/R CASE #
P<SMNVF> = SMPTR + BLKHSIZE + ABHSIZE; # FWA OF CR/SWH/R TEXT #
CRAC = CRSWAN[0] ;
P<ACB> = ATACBA[CRAC] ; # ACB OF APPL TO BE SWITCHED TO #
# SEND CR/SWH/N TO NVF #
PARAMS1 = SMPTR; # SM BUFFER - CR/SWH/R #
PARAMS2 = P<ACNB> ;
PARAMS9 = STRTSX"CRSWH$" ;
OVLNAME = STRTSWP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
IF P<ACB> NQ 0 AND NOT ATNVFN[CRAC] AND NOT ATNVFF[CRAC]
THEN
BEGIN # APPL TO SWITCH TO IS NETTED ON #
# SWITCH ACNB FROM NVF TO NEW APPL #
PARAMS4 = 0; # INITIALIZE FOR NOT RETURNING LOAND CN#
IF ACNBPRID[0] NQ 0
THEN
BEGIN # IT IS LOANED CONN. #
IF CRSWLST[0] GQ CRSWHSPR
THEN
BEGIN # RETURN TO PRIMARY APPL. #
IF ACNBPRAF[0]
THEN
BEGIN # REAL PRIMARY HAS NETTED OFF BUT #
PARAMS2 = 0 ; # ANOTHER APPLICATION HAS NETTED ON #
PARAMS3 = RCRC"PAF" ; # WITH THE SAME AN #
ACNBPRID[0] = 0 ; # CLEAR BECAUSE NO LONGER A LOAN CON#
GOTO SENDCRN ; # RECONNECTION CONN. TO NVF WITH RC #
END # 11B #
ELSE
BEGIN # REAL PRIMARY HAS NOT FAILED OR #
PARAMS4 = ACNBPRACN[0]; # NETTED OFF. USE THE SAME ACN #
# ZERO OUT THE SECONDARY ID IN ACNT ENTRY OF CONN #
# CONNECTED TO PRIMARY APPLICATION. #
P<ACB> = ATACBA[ACNBPRAN[0]] ; # ACB OF PRIMARY #
P<ACNT> = ACBACNT[0] ;
INDEX = ACNBPRACN[0] + ACNTHSIZE - ACNTMINACN[0] ;
ACNTSECID[INDEX] = 0 ;
P<ACB> = ATACBA[CRAC] ; # RESET ACB ADDRESS #
ACNBPRID[0] = 0 ; # CLEAR BECAUSE IT NO LONGER A LOANE#
END # CONNECTION #
END
END # IT IS A LOANED CONN #
PARAMS1 = ACBAD; # ADDRESS OF OLD ACB #
PARAMS2 = ACN; # ADDRESS OF OLD CONNECTION NUMBER #
PARAMS3 = P<ACB>; # ADDRESS OF NEW ACB #
PARAMS8 = FALSE; # SET NOT LOANED CONNECTION SWITCH #
OVLNAME = HSWACNBP; # NAME OF OVERLAY TO LOAD #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
IF PARAMS1 EQ 0 # NO NEW ACNB WAS ASSIGNED #
THEN
BEGIN # CAN NOT ASSIGN NEW CONN. #
PARAMS2 = 0 ; # PRESET TO ZERO #
IF ACNBPRID[0] NQ 0
THEN
BEGIN # SWITCH FROM SECONDARY APPL. #
IF NOT ACNBPRAF[0]
THEN
BEGIN # PRIMARY APPL. NOT GONE YET #
P<ACB> = ATACBA[ACNBPRAN[0]] ; # ACB OF PRIMARY #
# ZERO OUT THE SECONDARY ID IN ACNT ENTRY OF CONN #
# CONNECTED TO PRIMARY APPLICATION. #
CURACNT = P<ACNT> ;
P<ACNT> = ACBACNT[0] ;
INDEX = ACNBPRACN[0] + ACNTHSIZE - ACNTMINACN[0] ;
ACNTSECID[INDEX] = 0 ;
P<ACNT> = CURACNT; # RESET ACNT ADDRESS #
PARAMS2 = ACBANAME[0] ; # SET APPL NAME IN CR TO PRIM #
PARAMS3 = RCRC"SRC" ; # REASON CODE IN CR/RCN = 25B #
END # PRIMARY HAS NOT GONE #
ELSE
BEGIN
PARAMS3 = RCRC"PAF" ; # PRIM IS GONE, REASON CODE IS 9#
ACNBPRID[0] = 0 ; # #
END
END # SWITCH FROM SECOND APPL. #
ELSE
PARAMS3 = RCRC"ARC" ;
GOTO SENDCRN ; # SEND CR/CRN/R TO NVF #
END # CONN. CAN NOT BE ASSIGNED #
ELSE
BEGIN # NEW CONN. ASSIGNED #
P<ACNB> = PARAMS1; # ADDRESS OF NEW ACNB #
IF CRSWLST[0] EQ CRSWHSOK
THEN
BEGIN # SWITCHING FROM PRIM TO SECOND #
IF NOT ACNBPRAF[0] # PRIMARY NOT FAILED #
THEN
BEGIN
OLDAN = ACBAN[0] ; # AN OF SECONDARY #
P<ACB> = ATACBA[ACNBPRAN[0]] ; # ACB OF PRIMARY #
P<ACNT> = ACBACNT[0] ; # UPDATE SECID FIELD IN ACNT #
ACNTINDX = ACNBPRACN[0] + ACNTHSIZE - ACNTMINACN[0] ;# OF#
ACNTSECAN[ACNTINDX] = OLDAN ; # PRIMARY APPLICATION #
ACNTSECACN[ACNTINDX] = ACNBACN[0] ;
END
P<ACB> = ATACBA[CRAC] ; # SET TEMPLATE BACK TO SECODARY #
END
# SEND CON/REQ/R TO APPLCATION #
PARAMS1 = SMPTR; # ADDR OF CR/SWH/R BUFFER #
PARAMS2 = P<ACNB>; # ACNB OF NEW CONN (NVF-S ACNB) #
PARAMS9 = STRTSX"CONREQ$" ;
OVLNAME = STRTSWP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
# BASE ACNT TO NEW APPLICATION-S ACNT #
P<ACNT> = ACBACNT[0];
ACNTINDX = ACNBACN[0] + ACNTHSIZE - ACNTMINACN[0];
END
END
ELSE
BEGIN # APPL SWITCHING TO FAILED OR NETTED OFF #
# SEND RECONNECT (CR/RCN/R) TO NVF #
PARAMS2 = 0 ; # PRESET TO ZERO #
IF ACNBPRID[0] NQ 0
THEN
BEGIN # FROM SECONDARY APPL #
IF NOT ACNBPRAF[0]
THEN
BEGIN # PRIMARY NOT GONE YET #
P<ACB> = ATACBA[ACNBPRAN[0]] ; # ACB OF PRIMARY #
# ZERO OUT THE SECONDARY ID IN ACNT ENTRY OF CONN #
# CONNECTED TO PRIMARY APPLICATION. #
CURACNT = P<ACNT> ;
P<ACNT> = ACBACNT[0] ;
INDEX = ACNBPRACN[0] + ACNTHSIZE - ACNTMINACN[0] ;
ACNTSECID[INDEX] = 0 ;
P<ACNT> = CURACNT ; # RESET ACNT ADDRESS #
PARAMS2 = ACBANAME[0] ; # PRIM APPL. NAME #
PARAMS3 = RCRC"SNA" ; # REASON ON CR/CRN/R = 26B #
END
ELSE
BEGIN
PARAMS3 = RCRC"PAF" ; # RC = 11B #
ACNBPRID[0] = 0 ; # #
END
END
ELSE
PARAMS3 = RCRC"ANF" ;
SENDCRN:
PARAMS1 = P<ACNB> ;
PARAMS4 = CRSWAN[0]; # AN OF APPL WHICH FAILED OR NETTED OFF #
OVLNAME = HCRRCNRP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
# CHANGE STATE TO 6 #
NEWSTATE[0] = HCRCNVF; # RECONNECT TO NVF INITIATED #
END
GOTO HCA;
HC14:
#
DLACNB5 (ACTION NO. 14)
RECEIPT OF CR/TRM/R FROM NVF
SEND CR/TRM/N AND CON/CB/U
#
# SEND CR/TRM/N TO NVF #
PARAMS1 = SMPTR;
P<SUPMSG> = SMPTR + AIPHSIZE + ABHSIZE; # FWA OF CR/TRM/R #
RCBRK = CRRTRM[0]; # SAVE REASON CODE FOR BRK #
OVLNAME = HCRTRMNP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
# SEND CON/CB/U TO APPLICATION #
PARAMS1 = RCBRK; # REASON CODE FROM CR/TRM/R #
PARAMS2 = P<ACNB>; # ACNB ADDRESS OF CONN TO TERMINATE #
OVLNAME = HCONCBUP; # OVERLAY NAME #
PARAMS3 = 0 ;
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
HC15:
#
CRTRMN1 (ACTION NO. 15)
RECEIPT OF CR/TRM/R FROM NVF
SEND CR/TRM/N TO NVF
(SEND CON/ACRQ/A TO APPL)
#
P<SMNVF> = SMPTR + AIPHSIZE + ABHSIZE;
RCBRK = CRRTRM[0]; # REASON FOR BRK #
PARAMS1 = SMPTR;
OVLNAME = HCRTRMNP;
OVLCALL; # LOAD AND EXECUTE OVERLAY #
#
SEND CON/ACRQ/A TO APPL
#
IF ACNBBS[0] EQ (ACNBSIZE+ACNBAPEN) # A-A CONNECTION ACNB #
THEN
BEGIN
P<ACB> = ATACBA[ACNBIAN[0]] ;
IF P<ACB> NQ 0
THEN
BEGIN # ACB STILL THERE #
IF ACBERCNT[0] LS MAXLGERR
THEN # OKAY TO GENERATE CON/ACRQ/A #
BEGIN
PARAMS1 = RCBRK; # REASON CODE FOR TERMINATION #
PARAMS2 = P<ACNB>; # ADDRESS OF ACNB FOR CONNECTION#
OVLNAME = HCACRQAP; # NAME OF OVERLAY TO LOAD #
OVLCALL; # LAOD AND EXECUTE OVERLAY #
END
ELSE # REACHED MAX NO OF ERR SUP MSG #
BEGIN
IF ACBERCNT[0] EQ MAXLGERR
THEN # REACHED MAX NO OF ERR SUP MSG #
BEGIN
PARAMS1 = RLG"IAL"; # ERR/LGL RC FOR TOO MANY ERRORS#
OVLNAME = HLGLERRP; # NAME OF OVERLAY TO LOAD #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
END
END
END # ACB STILL THERE #
END
GOTO HCA;
HC16:
#
CRTRMN2 (ACTION NO. 16)
RECEIPT OF CR/TRM/R FROM NVF
SEND CR/TRM/N TO NVF
#
P<SMNVF> = SMPTR + AIPHSIZE + ABHSIZE;
RCBRK = CRRTRM[0]; # REASON FOR BRK #
PARAMS1 = SMPTR;
OVLNAME = HCRTRMNP;
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
HC17:
#
RECEIVED CON/ACRQ/SM FROM APPLICATION
#
PARAMP1 = 0 ; # NO MESSAGE YET FROM NETWORK SIDE #
CRACNBP ; # CALL INTERNAL PROC TO BUILD ACNB #
P<AHEADER> = SMPTR + BLKHSIZE; # BASE APPLICATION HEADER #
ACNBABN[0] = ABHABN[0]; # APPLICATION BLOCK NUMBER #
#
AND SEND CR/IAP/R TO NVF
#
PARAMS1 = 0 ; # INDICATE FIRST CALL #
PARAMS2 = ACN ;
P<SUPMSG> = SMPTR+AIPHSIZE+ABHSIZE;
ACNBANM[0] = CONANM[0] ; # STORE REQUESTED APPLICATION NAME #
ACNBHID[0] = CONHID [0] ; # STORE HOST ID #
ACNBIAN[0] = ACBAN[0] ;
ACNBLID[0] = CONULID[0] ;
PARAMS3 = ACNBIAN[0] ;
PARAMS4 = P<ACNB> ; # SO THAT OVERLAY CAN RETRIEVE VALUES #
PARAMS7 = P<AHEADER>; # PASS CONACRQ HEADER ADDRESS #
OVLNAME = HCRIAPRP; # SEND CR/IAP/R TO NVF #
OVLCALL ;
GOTO HCA;
HC18:
#
UACNB3 (ACTION NO. 18)
UPDATE ACNB AND SEND CR/ACC/U TO NVF
#
PARAMS1 = P<ACNB>; # ADDR OF APPL CONNECTION BLOCK #
PARAMS2 = SMPTR; # ADDR OF CON/REQ/N SM BUFFER #
PARAMS3 = 0;
PARAMS9 = SENDX"UACNB3$" ;
OVLNAME = SENDACCP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
# SEND CR/ACC/U #
PARAMS1 = P<ACNB>;
PARAMS9 = SENDX"CRACC$";
OVLNAME = SENDACCP; # OVERLAY NAME #
OVLCALL;
IF PARAMS3 NQ 0
THEN
BEGIN # BAD INPUT CHAR TYPE-BREAK CONNECTIONS
AND RECONNECT TO NVF #
TRIGB[0] = NOCHG;
PARAMS1 = PARAMS3; # REASON CODE FOR CON/CB #
PARAMS2 = P<ACNB>; # ACNB OF CONN TO BREAK #
OVLNAME = HCONCBUP; # OVERLAY NAME #
PARAMS3 = 0 ;
OVLCALL; # LOAD AND EXECUTE OVERLAY #
END
GOTO HCA;
HC20:
#
SFCINAC ( ACTION NO. 20 )
SEND FC/INACT/SM TO APPLICATION
#
PARAMS1 = P<ACB>; # ADDRESS OF ACB #
PARAMS2 = ACNBACN[0]; # APPLICATION CONNECTION NUMBER #
OVLNAME = HSFCINAP; # NAME OF OVERLAY TO LOAD #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
HC21:
#
SACNB3 (ACTION NO. 21)
SWITCH ACNB - SEND CR/RCN/R AND CON/END/N
#
# CON/END/R CASE
SWITCH ACNB FROM APPL TO NVF
#
P<SUPMSG> = SMPTR + BLKHSIZE + ABHSIZE; # FWA OF CON/END/R #
# FLAG TO RELACNB NOT TO FREE THE #
# ACNT ENTRY ASSO. WITH THIS ACNB #
PARAMS1 = ACBAD; # ADDRESS OF OLD ACB #
PARAMS2 = ACN; # ADDRESS OF OLD CONNECTION NUMBER #
PARAMS3 = ATACBA[NVFAN]; # ADDRESS OF NEW ACB #
PARAMS4 = 0; # NOT RETURNING LOANED CON TO PRI APP #
PARAMS8 = CONLOAN[0]; # LOAN CONNECTION FLAG #
OVLNAME = HSWACNBP; # NAME OF OVERLAY TO LOAD #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
# BASE ACNT TO NVF-S NEW CONNECTION JUST SWITCHED TO #
OLDAN = ACBAN[0]; # APPLIC. NO. OF APPL ENDING CONNECTION #
P<ACNB> = PARAMS1; # ADDRESS OF NEW ACNB #
PARAMS7 = SMPTR ;
PARAMS5 = FALSE ; # CLEAR LOAN BIT FOR CON/END/N #
PARAMS8 = FALSE ; # ASSUMING LENDING IS O.K. #
IF ACNBPRID[0] NQ 0
THEN
BEGIN # SEC. APPL. SEND CON/END/R ON LOANED CON#
IF CONLOAN[0]
THEN
BEGIN # LENDING IS NOT O.K. #
RC[0] = 1 ; # SET REASON CODE IN CON/END/N FOR #
PARAMS8 = TRUE ;
END
# NO FORWARDING INDICATION, CONNECTION NOW #
# SWITCHED BACK TO PRIMARY APPLICATION #
IF CONANM[0] EQ "ABORT"
THEN
BEGIN # SEC. APPL. ABORTED CON #
PARAMS1 = RCB"LCA" ; # REASON OF ABORTTING ON #
PARAMS2 = P<ACNB> ; # CON/CB/R TO PRIMARY APPL.#
OVLNAME = HCONCBUP ;
OVLCALL ;
PARAMS1 = P<ACNB>; # PASS ACNB ADDR TO SEC OVERLAY #
PARAMS3 = RCRC"SAC" ; # RC = 12B REASON CODE OF CR/RCN/R #
PARAMS2 = 0 ; # NO APPL. NAME IN CR/RCN #
END # SEC. APPL. ABORTED CON #
ELSE
BEGIN # SEC APPL. PASSES CON TO #
# ANOTHER APPL. #
IF NOT ACNBPRAF[0]
THEN
BEGIN # PRI. APPL. NOT ABORTED #
# RECON TO PRIMARY APPL. #
PARAMS3 = RCRC"STC" ; # RC = 24B REASON CODE OF CR/CRN #
P<ACB> = ATACBA[ACNBPRAN[0]] ; # ACB OF PRIM. APPL. #
PARAMS2 = ACBANAME[0] ; # NAME OF PRIMARY APPL. #
END
ELSE
BEGIN # PRIM APPL. HAS ABORTED #
PARAMS3 = RCRC"PAF" ; # RC = 11B REASON CODE ON CR/CRN #
PARAMS2 = 0 ; # NO APPL. NAME #
ACNBPRID[0] = 0 ;
END
END # SEC. APPL. PASSED CON #
END # SEC. APPL. SENDS CON/END ON LOANED CON #
ELSE
BEGIN # CON/END/R FROM PRIM. APPL. #
PARAMS2 = CONUANM[0] ; # NEXT APPLICATION NAME #
IF CONLOAN[0]
THEN
BEGIN # LOAN BIT IS ON #
P<NCNB> = ACNBNCNB[0] ;
IF P<NCNB> NQ 0
AND ( NCNBDT[0] EQ DT$INTA # INTRA-HOST CONNECTN #
OR NCNBDT[0] EQ DT$INTE ) # INTER-HOST #
THEN
BEGIN # DO NOT LOAN THIS CONNECTION, TERMI#
RC[0] = 02 ; # NATE CONN. AND SEND CON/END/N WITH#
# REASON CODE 2 #
PARAMS3 = RCRC"ATC" ; # NORMAL TERMINATION REASON CODE #
PARAMS2 = 0 ; # CLEAR NEXT APPLICATION NAME #
PARAMS8 = TRUE ; # LENDING NOT O.K., FOR CON/END/N #
END
ELSE
BEGIN # PRIM. APPL. TRYING TO LOAN CON TO SEC. APL#
ACNBPRAN[0] = OLDAN ; # SAVE OLD APPL. NUM. #
ACNBPRACN[0] = ACN ; # SAVE OLD ACN IN SEC ACN#
ACNTWD[ACNTINDX] = 0 ; # CLEAR UP THE ENTRY #
ACNTSECAN[ACNTINDX] = NVFAN ; # NVF 'S AN #
ACNTSECACN[ACNTINDX] = ACNBACN[0];# ACN OF THIS CON IN NVF #
PARAMS3 = RCRC"LSA" ; # RC = 10B REASON CODE TO NVF FOR #
PARAMS5 = TRUE ; # SET LOAN BIT INDICATOR FOR #
# CON/END/N PROCESSOR #
# LOANED CONNECTION #
END
END # LOAN BIT IS ON #
ELSE
PARAMS3 = RCRC"ATC" ; # NORMAL RECONNECT #
END # CON/END/R FROM PRIM. APPL. #
P<ACB> = ATACBA[NVFAN] ; # SET BASE TO NVF 'S #
P<ACNT> = ACBACNT[0] ;
ACNTINDX = ACNBACN[0] + ACNTHSIZE - ACNTMINACN[0] ;
# SEND CR/RCN/R TO NVF #
PARAMS4 = OLDAN; # AN OF APPL ENDING CONNECTION #
OVLNAME = HCRRCNRP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
# SEND CON/END/N TO APPLICATION #
PARAMS1 = SMPTR; # SM BUFFER (CON/END/R) #
PARAMS2 = OLDAN; # AN OF APPL ENDING CONNECTION #
OVLNAME = HCONENDP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
HC27:
#
UCRCBU ( ACTION 27 )
SENDING CR/BU/U TO NVF ONLY
#
HC22:
#
GOCRCNE ( ACTION NUMBER 22 )
SEND CR/CB/U TO NVF
AND CON/END/N TO APPLICATION (BY ACTION 26)
#
PARAMS2 = P<ACNB> ;
OVLNAME = HCRCBUP ;
OVLCALL ;
IF ACTION[0] EQ UCRCBU
THEN
GOTO HCA ; # SENDING CR/CB/U ONLY #
# CONTINUE ACTION 26 TO SEND CON/END/N #
HC26:
#
NCONEND (ACTION NO. 22)
SEND CON/END/N TO APPLICATION
#
PARAMS1 = SMPTR; # SM BUFFER (CON/END/R) #
PARAMS2 = ACBAN[0];
PARAMS5 = FALSE ; # NO LOANED FLAG ON #
OVLNAME = HCONENDP; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
# NO LONGER PART OF NWL #
GOTO HCA;
HC23:
#
UPACNB4 (ACTION NO. 23)
UPDATE ACNB ON RECEIPT OF CR/RCN/N
#
PARAMS1 = P<ACNB>; # ADDR OF APPLICATION CONNECTION BLOCK #
PARAMS2 = SMPTR; # ADDR OF CR/RCN/N SM BUFFER #
OVLNAME = UPACNB4P; # OVERLAY NAME #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
GOTO HCA;
HC24:
#
ACTION 24 - SEND CR/IAP/R TO NVF WITH RC FROM ICN/AP/A
#
P<SMNIP> = SMPTR + ABHSIZE + BLKHSIZE; # GET THE ICN/AP/A #
PARAMS1 = ICNRAP[0] ; # GET THE REASON CODE #
PARAMS2 = ACN ;
PARAMS3 = 0 ; # THIS IS NOT THE FIRST CALL #
PARAMS4 = P<ACNB> ;
PARAMS7 = 0; # NO OLD AHEADER NEEDED #
OVLNAME = HCRIAPRP ; # SEND CR/IAP/R TO NVF #
OVLCALL ;
GOTO HCA ;
HC25:
#
ACTION 25 : CHANGE PWL HEADER TO APPL. BLOCK HEADER
THEN LINK TO APPROPPRIATE ACB.
#
MGETS(BLKHSIZE+ABHSIZE+LXFTN,BUFFERADR,TRUE);# GET BUFFER TO HOLD#
# IFT OR OFT/OFF/N#
P<PWLHDR> = SMPTR ;
P<AHEADER> = BUFFERADR + BLKHSIZE ;
ABHWORD[0] = 0 ;
ABHABT[0] = APPCMD ;
ABHACT[0] = CT60TRANS ;
ABHTLC[0] = LXFTN ;
P<SUPMSG> = BUFFERADR + BLKHSIZE + ABHSIZE ;
SPACN[0] = ACN ; # SEND AS ASYN SM #
IF PWLRC[0] EQ OFTRC
THEN
PFCSFC[0] = OFTOFFN ;
IF PWLRC[0] EQ IFTRC
THEN
PFCSFC[0] = IFTOFFN ;
BLINK(BUFFERADR,P<ACB>) ;
OSCHAPP(P<ACB>); # SWAP IN APPLICATION #
GOTO HCA;
HC28:
IF ACNBPRID[0] NQ 0
THEN
BEGIN # CR/RCN/A RECEIVED ON LOANED CN#
PARAMS1 = P<ACNB> ;
IF NOT ACNBPRAF[0]
THEN
BEGIN # PRIM APPL. HAS NOT GONE #
P<ACB> = ATACBA[ACNBPRAN[0]] ; # ACB IF PRIMARY APPL. #
PARAMS4 = ACBAN[0] ; # APPLICATION TO RECONN TO #
CURACNT = P<ACNT> ;
P<ACNT> = ACBACNT[0] ;
INDEX = ACNBPRACN[0] + ACNTHSIZE - ACNTMINACN[0] ;
ACNTSECID[INDEX] = 0 ;
P<ACNT> = CURACNT ; # RESET ACNT ADDRESS #
P<SMNVF> = SMPTR + BLKHSIZE + ABHSIZE ; # CR/RCN/A MESSAGE #
PARAMS2 = ACBANAME[0] ; # SO, SWITCH CON BACK TO PRI APP#
PARAMS3 = CRRRCN[0] ; # BY SENDING CR/RCN/R TO NVF #
# WITH REASON FROM CR/RCN/A #
END # PRIM HAS NOT GONE #
ELSE
BEGIN # PRIM APPL. HAS NETOFFED/FAILED#
PARAMS2 = 0 ; # NULL APPLICATION'S NAME #
PARAMS3 = RCRC"PAF" ;# RC = 11B REASON CODE OF CR/RCN/R IS 11B#
PARAMS4 = ACBAN[0] ;
ACNBPRID[0] = 0 ; # #
END
OVLNAME = HCRRCNRP ; # SEND CR/RCN/R TO NVF #
OVLCALL ;
END # CR/RCN/A RECEIVED ON LOANED CN#
ELSE
ABORT(DFMSG30,0) ; # ABORT NIP, BECAUSE OF NVF ERR #
HCA:
IF NEWSTATE[0] NQ STATX
THEN
BEGIN
ACNTCOS[ACNTINDX] = CURST; # OLD CONNECTION STATE #
ACNTCTR[ACNTINDX] = TRIGGER; # OLD CONNECTION TRIGGER #
IF NEWSTATE[0] NQ NOCHG
THEN
ACNTCS[ACNTINDX] = NEWSTATE[0]; # UPDATE NEW STATE #
END
IF TRIGC[0] NQ NOCHG
THEN # TRIGGER CONNECTION STATE TABLE #
BEGIN
IF LLCBAD EQ 0
THEN
BEGIN # THIS IS NOT AN A-A CASE WITH LL PRE-ALLOCATED#
P<NCNB> = ACNBNCNB[0];
NCN = NCNBCN[0] ; # NETWORK CONNECTION NUMBER #
CONTROL IFEQ DEBUG,1;
IF P<NCNB> EQ 0
THEN # VALID CHECK FOR T-A ONLY #
BEGIN
D27M2[0] = "HCSTTP1";
ABORT(DFMSG27,0);
END
CONTROL FI;
LOCLLCB(NCNBHN[0],NCNBTN[0],LLCBAD);
CONTROL IFEQ DEBUG,1;
IF LLCBAD EQ 0
THEN
BEGIN
D27M2[0] = "HCSTTP2";
ABORT(DFMSG27,0);
END
CONTROL FI;
END
NCSTTP(LLCBAD,NCN,TRIGC[0],SMPTR); # CALL NETWORK-SIDE #
END
IF TRIGB[0] NQ NOCHG
THEN
HBSTTP(P<ACNB>,TRIGB[0],0);
END
ELSE
BEGIN # ILLEGAL TRIGGER #
IF TRIGGER LS HCMINXT OR TRIGGER GR HCMAXXT
THEN
BEGIN # TRIGGER INTERNAL TO NIP #
PARAMS1 = ACBAN[0]; # APPLICATION NUMBER #
PARAMS2 = ACN; # APPLICATION CONNECTION NUMBER #
PARAMS3 = TRIGGER; # ILLEGAL TRIGGER NUMBER #
PARAMS4 = CURST; # CURRENT CONNECTION STATE #
PARAMS6 = "HCSTTP"; # NAME OF STATE TABLE PROCESSOR #
OVLNAME = STPHERRP; # ISSUE STP ERROR MESSAGE #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
ABORT(0,0); # ABORT NIP #
END
ELSE
BEGIN # ILLEGAL EXTERNAL TRIGGER FROM APP #
# ISSUE ERR/LGL TO APPLICATION #
PARAMS1 = RLG"ISM"; # RC=7 ILLOGICAL SM #
OVLNAME = HLGLERRP; # SEND ERR/LGL TO APP #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
END
END
END
ELSE
BEGIN
PARAMS1 = DFMSG26;
PARAMS6 = "HC";
OVLNAME = XERRMSGP;
OVLCALL;
END
HC77:
#
EXIT
#
RETURN;
END
PROC CRACNBP ; # CREATE ACNB #
BEGIN
IF PARAMP1 EQ 0
THEN
BEGIN # WE HAVE TO CREATE AN ACNB TO NVF #
PARAMP2 = ATACBA[NVFAN] ;
END
ELSE
PARAMP2 = P<ACB> ;
PARAMP5 = STRTCX"BACNB$" ;
OVLNAME = STRTCONP; # BUILD ACNB #
OVLCALL; # LOAD AND EXECUTE OVERLAY #
P<ACNB> = PARAMP3; # BASE ACNB #
P<ACNT> = PARAMP4; # BASE ACNT #
ACN = ACNBACN[0]; # APPLICATION CONNECTION NUMBER ASSIGNED #
ACNTINDX = ACN + ACNTHSIZE - ACNTMINACN[0];
RETURN ;
END
END
TERM