*DECK HCONREQ USETEXT ACB USETEXT ACNB USETEXT AT USETEXT LLCB USETEXT NCNB USETEXT NCNT USETEXT NIPDEF USETEXT PARAMS USETEXT PT USETEXT SUPMSG PROC HCONREQ; STARTIMS; # *1DC HCONREQ * 1. PROC NAME AUTHOR DATE * HCONREQ C. BITTNER 81/12/01 * * 2. FUNCTIONAL DESCRIPTION * FORMAT AND SEND CON/REQ/R TO APPLICATION * * 3. METHOD * USE CR/SWH/R BUFFER * SET UP CON/REQ/R * SET FUNCTION CODE * SET NEW ACN ASSIGNED TO THIS APPLICATION * QUEUE CON/REQ/R ON APPLICATION-S ACB * * 4. ENTRY PARAMETERS * PARAMS1 - SM BUFFER OF CR/SWH/R * PARAMS2 - ACNB OF NEW CONNECTION * * 5. EXIT PARAMETERS * NONE * * 6. COMDECKS CALLED AND SYMPL TEXTS USED * ACB APPLICATION CONTROL BLOCK TEMPLATE * ACNB * AT * LLCB LOGICAL LINK CONTROL BLOCK TEMPLATE * NCNB * NCNT NETWORK CONNECTION TABLE TEMPLATE * NIPDEF * PARAMS * PT * SUPMSG * * 7. ROUTINES AND OVERLAYS CALLED * ABORT - ISSUE DAYFILE MESSAGE AND ABORT NIP * BLINK - QUEUE MSG ON APPL-S ACB * LOCLLCB - LOCATE LOGICAL LINK CONTROL BLOCK * LOCNCNT - LOCATE NETWORK CONNECTION TABLE * OSCHAPP - SCHEDULE APPLICATION * MRELS - RELEASE BUFFER SPACE * XTRACE - RECORD PROCEDURE CALL * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * THIS PROCEDURE IS CALLED BY SECONDARY OVERLAY STRTSW * VIA HCSTTP. * # STOPIMS; # EXTERNAL VARIABLES # XREF BEGIN PROC ABORT; # ISSUE DAYFILE MESSAGE AND ABORT NIP # PROC BLINK; # QUEUE MSG ON APPL-S ACB # PROC LOCLLCB; # LOCATE LOGICAL LINK CONTROL BLOCK # PROC LOCNCNT; # LOCATE NETWORK CONNECTION TABLE # PROC OSCHAPP; # SCHEDULE APPLICATION # PROC MRELS ; PROC XTRACE; # RECORD PROCEDURE CALL # END # INTERNAL VARIABLES # ITEM BUFADDR; # SM BUFFER ADDRESS # ITEM ERROR; # INTERNAL ERROR FLAG # #**********************************************************************# BEGIN CONTROL IFEQ DEBUG,1; XTRACE("HCONR") ; CONTROL FI; BUFADDR = PARAMS1; # SM BUFFER CR/SWH/R # P = BUFADDR + BLKHSIZE + ABHSIZE; # FWA OF CR/SWH/R # P = P; # BASE CON/REQ # # SET UP CON/REQ/R # PFCSFC[0] = CONREQ; # SET FUNCTION CODE # P = PARAMS2; CONACN[0] = ACNBACN[0]; # NEW ACN ASSIGNED TO THIS APPL # IF ACNBBS[0] EQ (ACNBSIZE+ACNBAPEN) THEN # A-A CONNECTION SENDING APPL # BEGIN IF ACNBDT[0] EQ DT$INTA THEN # INTRAHOST A-A CONNECTION # BEGIN # ADD CALLED APP NAME TO CON/REQ # CONANM[0] = ACNBANM[0]; # NAME OF CALLED APPLICATION # END CONABN[0] = ACNBABN[0]; # APPLICATION BLOCK NUMBER # ACNBBS [0] = ACNBSIZE; # GET RID NOW OF APPENDIX ACNB # ACNBABS[0] = ACNBAPEN; # GET READY FOR MRELS CALL ON APPENDIX# MRELS (PARAMS2+ACNBSIZE);# AND RELEASE THE APPENDIX FROM ACNB # END ELSE # APPLICATION RECEIVING NEW CONNECTION # BEGIN IF ACNBDT[0] EQ DT$INTA THEN # INTRAHOST A-A CONNECTION # BEGIN # ADD CALLED APP NAME TO CON/REQ # P = ACNBNCNB[0]; # ADDR OF CORRESPONDING NCNB # ERROR = 0; # INITIALIZE INTERNAL ERROR FLAG # IF P EQ 0 THEN # INTERNAL ERROR - NCNB SHOULD EXIST # BEGIN ERROR = 1; # SET INTERNAL ERROR FLAG # END ELSE # NCNB EXISTS # BEGIN LOCLLCB(NCNBTN[0],NCNBHN[0],P); # FIND REVERSE LLCB # # FOR INTRAHOST A-A CONNECTION # IF P EQ 0 THEN # INTERNAL ERROR - LLCB SHOULD EXIST # BEGIN ERROR = 2; # SET INTERNAL ERROR FLAG # END ELSE # REVERSE LLCB EXISTS # BEGIN LOCNCNT(P,NCNBCN[0],P); # FIND REVERSE NCNT # IF P EQ 0 THEN # INTERNAL ERR - REVERSE NCNT SHOULD EXIST# BEGIN ERROR = 3; # SET INTERNAL ERROR FLAG # END ELSE # NCNT EXISTS # BEGIN P = NCNTNCNB[0]; # ADDRESS OF REVERSE NCNB # IF P EQ 0 THEN # NIP ERR - REVERSE NCNB SHOULD EXIST # BEGIN ERROR = 4; # SET INTERNAL ERROR FLAG # END ELSE # NCNB EXISTS # BEGIN P = NCNBACNB[0]; # ADDR OF REVERSE ACNB # IF P EQ 0 THEN # NIP ERR - REVERSE ACNB SHOULD EXIST # BEGIN ERROR = 5; # SET INTERNAL ERROR FLAG # END ELSE # ACNB EXISTS # BEGIN IF ACNBBS[0] EQ (ACNBSIZE+ACNBAPEN) THEN # CONNECTION NOT SWITCHED FROM NVF YET # BEGIN P = ATACBA[ACNBIAN[0]]; # ACB ADDRESS # END ELSE # CONNECTION SWITCHED TO INITIATING APP # BEGIN P = ATACBA[ACNBAN[0]]; # ACB ADDRESS # END CONANM[0] = ACBANAME[0]; # NAME OF OTHER APP # P = PARAMS2; # RESTORE ACNB BASE ARRAY # END END END END END IF ERROR NQ 0 THEN # INTERNAL NIP ERROR HAS OCCURRED # BEGIN ABORT("NIP INTERNAL ERROR - HCONREQ",0); END END END # QUEUE ON APPLICATION-S ACB # BLINK(BUFADDR,ATACBA[ACNBAN[0]]); # QUEUE MSG ON APPL-S ACB # OSCHAPP(ATACBA[ACNBAN[0]]); # SCHEDULE APPLICATION # RETURN ; END TERM