*DECK HCRRCNR
USETEXT ACNB
USETEXT AHEADER
USETEXT AT
USETEXT DRHDR
USETEXT NCNB
USETEXT NIPDEF
USETEXT PARAMS
USETEXT PT
USETEXT SUPMSG
PRGM HCRRCNR;
STARTIMS;
#
*1DC HCRRCNR
*
* 1. PROC NAME AUTHOR DATE
* HCRRCNR C. BITTNER 81/12/01
*
* 2. FUNCTIONAL DESCRIPTION
* FORMAT AND SEND CR/RCN/R TO NVF
*
* 3. METHOD
* ALLOCATE A BUFFER FOR CR/RCN/R
* SET UP APPLICATION BLOCK HEADER
* SET UP CR/RCN/R TEXT
* QUEUE MESSAGE ON NVF-S ACB
*
* 4. ENTRY PARAMETERS
* PARAMS1 - ACNB OF NVF CONNECTION TO RECONNECT TO
* PARAMS2 - ANAME FIELD OF CON/END/R
* PARAMS3 - REASON CODE FOR RECONNECT
* PARAMS4 - APPLICATION NO. OF APPL WHICH HAD THE CONNECTION
*
* 5. EXIT PARAMETERS
* NONE
*
* 6. COMDECKS CALLED AND SYMPL TEXTS USED
* ACNB
* AHEADER
* AT
* NCNB
* NIPDEF
* PARAMS
* PT
* SUPMSG
*
* 7. ROUTINES AND OVERLAYS CALLED
* BLINK - QUEUE MSG ON APPL-S ACB
* MGETS - ALLOCATE EMPTY BUFFER
* OSCHAPP - SCHEDULE APPLICATION
* XTRACE - RECORD PROCEDURE CALL
*
* 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
* THIS IS A SECONDARY OVERLAY CALLED BY HCSTTP.
* W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY
*CALL OSSIZE
*
#
STOPIMS;
#
EXTERNAL VARIABLES
#
XREF
BEGIN
PROC MGETS; # ALLOCATE EMPTY BUFFER #
PROC BLINK; # QUEUE MSG ON APPL-S ACB #
PROC OSCHAPP; # SCHEDULE APPLICATION #
PROC XTRACE; # RECORD PROCEDURE CALL #
LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
END
#
INTERNAL VARIABLES
#
ITEM BUFADDR; # SM BUFFER #
ITEM BUFSIZE ;
ITEM EXTRAB U ; # EXTRA LENGTH OF CON/END/R #
ITEM I ;
#**********************************************************************#
BEGIN
CONTROL IFEQ DEBUG,1;
XTRACE("HCRRC") ;
CONTROL FI;
# GET BUFFER TO HOLD CR/RCN/R #
P<DRHDRWD> = PARAMS7 ; # CON/END/R BUFFER #
IF PARAMS7 EQ 0 # NOT CON/END/R CASE #
OR ( DRBS[0] LQ ABHSIZE + BLKHSIZE + LCONEN # = 4 #
AND PARAMS7 NQ 0 ) # AND FOR CON/END/R CASE #
THEN
EXTRAB = 0 ;
ELSE
BEGIN
EXTRAB = DRBS[0] - BLKHSIZE - ABHSIZE - LCONEN ; # EXTRA WORDS #
# IN CON/END/R #
END
BUFSIZE = LCRRCN + BLKHSIZE + ABHSIZE # NORMAL LENGTH OF CR/RC#
+ EXTRAB ; # AND LENGTH #
# OF EXTRA WORD IN CON/END #
MGETS(BUFSIZE, BUFADDR, TRUE) ;
# SET UP APPLICATION BLOCK HEADER #
P<AHEADER> = BUFADDR + BLKHSIZE; # ADDR TO HOLD ABH #
ABHABT[0] = APPCMD; # BLOCK TYPE #
ABHACT[0] = CT60TRANS; # CHARACTER TYPE - TRANSPARENT #
ABHTLC[0] = LCRRCN + EXTRAB ; # TEXT LENGTH #
# SET UP CR/RCN/R MESSAGE #
P<SUPMSG> = BUFADDR + BLKHSIZE + ABHSIZE; # FWA OF TEXT #
P<SMNVF> = P<SUPMSG>; # BASE CR/RCN/R #
PFCSFC[0] = CRRCN; # SET FUNCTION CODE #
CRRRCN[0] = PARAMS3; # REASON CODE FOR RECONNECT TO NVF #
P<ACNB> = PARAMS1; # ACNB FOR NVF RECONNECT #
P<NCNB> = ACNBNCNB[0]; # ADDR OF CORRESPONDING NCNB #
CRNACN[0] = ACNBACN[0]; # NVF CONNECTION #
CRABL[0] = ACNBABL[0]; # APPLICATION BLOCK LIMIT #
CRDT[0] = ACNBDT[0]; # DEVICE TYPE #
CRVCB[0] = ACNBVCBO[0]; # VCB ORDINAL #
CRUNAME[0] = PARAMS2; # NEXT APPLICATION NAME #
CRAN[0] = PARAMS4; # AN OF APPL WHICH HAD THE CONN #
CRRCTC[0] = NCNBTC[0]; # TERMINAL CLASS #
CRRCPW[0] = NCNBPW[0]; # PAGE WIDTH #
CRRCPL[0] = NCNBPL[0]; # PAGE LENGTH #
IF ACNBLIM[0]
THEN # CONNECTION IN LIMBO #
CRLIMBO[0] = TRUE;
# COPY EXTRA WORDS IN CON/END INTO CR/RCN/R BUFFER #
IF BUFSIZE GR LCRRCN + BLKHSIZE + ABHSIZE
THEN
BEGIN # EXTRA BUFFER TO BE COPIED#
FOR I = 0 STEP 1 UNTIL EXTRAB - 1
DO
BEGIN
SPMWD[ LCRRCN + I ] = CMWORD[ BLKHSIZE + ABHSIZE
+ LCONEN + I ] ;
END
END # EXTRA BUFFER TO BE COPIED#
# QUEUE CR/RCN/R ON NVF-S ACB #
BLINK(BUFADDR,ATACBA[NVFAN]); # QUEUE MSG ON NVF-S ACB #
OSCHAPP(ATACBA[NVFAN]); # SCHEDULE APPLICATION #
GOTO RJMAIN; # RETURN TO CALLING PROGRAM #
END
TERM