cdc:nos2.source:nam5871:hconcbu
Table of Contents
HCONCBU
Table Of Contents
- [00012] PRGM HCONCBU
- [00071] PROC BLINK
- [00072] PROC MGETS
- [00073] PROC OSCHAPP
- [00074] PROC XTRACE
Source Code
- HCONCBU.txt
- *DECK HCONCBU
- USETEXT NIPDEF
- USETEXT ACB
- USETEXT ACNB
- USETEXT ACNT
- USETEXT AHEADER
- USETEXT APPSTAT
- USETEXT AT
- USETEXT PARAMS
- USETEXT PT
- USETEXT SUPMSG
- PRGM HCONCBU;
- STARTIMS;
- #
- *1DC HCONCBU
- *
- * 1. PROC NAME AUTHOR DATE
- * HCONCBU E. GEE 01/02/86
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * SEND CON/CB/U TO PRIMARY AND/OR SECONDARY APPLICATION.
- *
- * 3. METHOD USED
- * DETERMINE IF CON/CB IS TO BE SENT TO PRIMARY APPLICATION.
- * DETERMINE IF CON/CB IS TO BE SENT TO SECONDARY APPLICATION.
- * LOOP BUILDING CON/CB SUP MSG TO SEND TO ZERO, ONE, OR TWO APPS.
- * FORMAT APPLICATION BLOCK HEADER
- * SET UP CON/CB/U MESSAGE
- * QUEUE MESSAGE ON APPLICATION-S ACB
- *
- * 4. ENTRY PARAMETERS
- * PARAMS1 REASON CODE FOR CON/CB SUP MSG
- * PARAMS2 ACNB OF APPLICATION
- *
- * 5. EXIT PARAMETERS
- * NONE
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED
- * ACB APPLICATION CONTROL BLOCK TEMPLATE
- * ACNB APPLICATION CONNECTION BLOCK TEMPLATE
- * ACNT APPLICATION CONNECTION TABLE TEMPLATE
- * AHEADER APPLICATION BLOCK HEADER WORD TEMPLATE
- * AT APPLICATION TABLE
- * NIPDEF CONSTANT DEFINITIONS
- * PARAMS COM BLK FOR PASSING PARAMETERS TO SEC OVLYS
- * PT MISCELLANEOUS VARIABLES, POINTERS
- * SUPMSG SUPERVISORY MESSAGE TEMPLATE
- *
- * 7. ROUTINES CALLED
- * BLINK LINK MESSAGE ON APPLICATION-S ACB
- * MGETS ALLOCATE EMTPY BUFFER
- * OSCHAPP SCHEDULE APPLICATION
- * XTRACE TRACE 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
- * OVERLAY BUFFER SIZE MINUS 5 (443B WORDS).
- *
- *
- #
- STOPIMS;
- #
- EXTERNAL VARIABLES
- #
- XREF
- BEGIN
- PROC BLINK; # LINK MSG ON APPL-S ACB #
- PROC MGETS; # ALLOCATE EMPTY BUFFER #
- PROC OSCHAPP; # SCHEDULE APPLICATION #
- PROC XTRACE; # TRACE PROCEDURE CALL #
- LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
- END
- #
- INTERNAL VARIABLES
- #
- ITEM BUFADDR; # SM BUFFER ADDRESS #
- ITEM I ; # INDUCTION VARIABLE #
- ITEM ACNTINDX ;
- ITEM INDX ;
- ITEM FOUND B ;
- ITEM PRIAPP; # = 0 IF SENDING CON/CB TO PRIMARY APP #
- # = 1 IF NOT SENDING CON/CB TO PRIMARY AP #
- ITEM SECAPP; # = 0 IF NOT SENDING CON/CB TO SEC APP #
- # = 1 IF SENDING CON/CB TO SEC APP #
- #**********************************************************************#
- BEGIN
- CONTROL IFEQ DEBUG,1;
- XTRACE("CONCB"); # RECORD PROCEDURE CALL #
- CONTROL FI;
- P<ACNB> = PARAMS2 ; # ADDRESS OF ACNB #
- P<ACB> = ATACBA[ACNBAN[0]] ;
- P<ACNT> = ACBACNT[0] ;
- IF (ACBORD2[0]) # THIS APPLICATION SENT SAC/NCL#
- # TO SET ERROR CONDITION FOR #
- THEN # CON/CB/U. #
- BEGIN
- ACBABTCB[0] = TRUE ; # READY TO ABORT THIS APPL #
- # AND DONT QUEUE ANY SM #
- GOTO HCONCBE ;
- END
- #
- DETERMINE IF PRIMARY APPLICATION NEEDS TO INFORMED
- #
- IF (ACNBPRID[0] NQ 0 ) AND # THERE IS A PRIMARY APP #
- (NOT ACNBPRAF[0] ) AND # PRIMARY APP HAS NOT FAILED #
- (PARAMS1 NQ RCB"CNB") # SEC APP NOT SENT BAD CON/REQ/N#
- THEN # NEED TO SEND CON/CB TO PRI APP#
- BEGIN
- PRIAPP = 0; # SET FLAG TO SEND CON/CB TO PRI#
- END
- ELSE # NO NEED TO SEND CON/CB TO PRI #
- BEGIN
- PRIAPP = 1; # SET FLAG TO NOT SEND CON/CB #
- END
- #
- DETERMINE IF SECONDARY APPLICATION NEEDS TO BE INFORMED. THE
- SECONDARY APPLICATION IS CONSIDERED TO BE THE APPLICATION THAT
- THE ACNB IS CURRENTLY CONNECTED TO.
- #
- IF (ACNBAN[0] EQ NVFAN ) OR # SEC APP IS NVF #
- (PARAMS1 EQ RCB"LCA") # SEC APP ABORTING CONNECTION #
- THEN # NEED TO SEND CON/CB TO SEC APP#
- BEGIN
- SECAPP = 0; # SET FLAG TO NOT SEND CON/CB #
- END
- ELSE
- BEGIN
- IF ( ACNTCS[ACNBACN[0] + ACNTHSIZE - ACNTMINACN[0]]
- EQ HCSINVF ) # IN THE STATE THAT IS EXPECTING#
- # CON/REQ/N FROM APPLICATION #
- THEN # DO NOT SEND CON/CB/U NOW #
- SECAPP = 0 ; # SEND IT WHEN CON/REQ/N COMES #
- ELSE
- SECAPP = 1 ; # SET FLAG TO SEND CON/CB/U #
- END
- #
- LOOPING ISSUING CON/CB SUPERVISORY MESSAGES
- #
- FOR I = PRIAPP STEP 1 WHILE I LQ SECAPP
- DO
- BEGIN
- IF I EQ 0
- THEN # SENDING CON/CB TO PRI APP #
- BEGIN # THIS IS A LOANED CONNECTION #
- P<ACB> = ATACBA[ACNBPRAN[0]];# ACB OF PRIMARY APP #
- P<ACNT> = ACBACNT[0] ;
- ACNTSECID[ACNBPRACN[0] + ACNTHSIZE - ACNTMINACN[0]] = 0 ;
- #
- PRIMARY APPLICATION RECEIVES CON/CB/U ON THIS LOANED CONNECTION,
- IT CONSIDERS THIS CONNECTION IS GONE, NIP NEEDS TO CLEAN UP THE
- ACNT TABLE FOR FUTURE USAGE.
- #
- ACNTINDX = ACNBPRACN[0] + ACNTHSIZE - ACNTMINACN[0] ;
- ACNTNFE[0] = ACNTNFE[0] + 1 ; # UPDATE NUMBER OF FREE ENTR#
- IF ACNBPRACN[0] LS ACNTFFCN[0]
- THEN
- ACNTFFCN[0] = ACNBPRACN[0] ; # UPDATE FIRST FREE ACN #
- FOUND = FALSE;
- IF ACNBPRACN[0] EQ ACNTHCN[0]
- THEN # UPDATE HIGHEST CN IN USE #
- BEGIN # SEARCH FOR HIGHEST CN IN USE #
- FOR INDX = ACNTINDX - 1 STEP -1 WHILE INDX GQ ACNTHSIZE
- AND NOT FOUND
- DO
- BEGIN
- IF ACNTWD[INDX] NQ 0
- THEN # HIGHEST CN FOUND #
- BEGIN
- ACNTHCN[0] = INDX + ACNTMINACN[0] - ACNTHSIZE;
- FOUND = TRUE; # SET HIGHEST CN IN USE FOUND FLAG #
- END
- END
- IF NOT FOUND
- THEN # THERE ARE NO ENTRIES IN ACNT #
- ACNTHCN[0] = 0;
- END
- END
- ELSE # SENDING CON/CB TO SEC APP #
- BEGIN
- P<ACB> = ATACBA[ACNBAN[0]] ; # ACB OF SECONDARY APP #
- END
- #
- ALLOCATE BUFFER FOR CON/CB/U
- #
- MGETS(LCONCB + BLKHSIZE + ABHSIZE,BUFADDR,TRUE);
- #
- SET UP APPLICATION BLOCK HEADER
- #
- P<AHEADER> = BUFADDR + BLKHSIZE; # BASE ABH #
- ABHABT[0] = APPCMD; # BLOCK TYPE #
- ABHACT[0] = CT60TRANS; # CHARACTER TYPE - TRANSPARENT #
- ABHTLC[0] = LCONCB; # TEXT LENGTH #
- #
- SET UP CON/CB/U MESSAGE
- #
- P<SUPMSG> = P<AHEADER> + ABHSIZE; # FWA OF TEXT #
- PFCSFC[0] = CONCB; # SET FUNCTION CODE #
- CONRCB[0] = PARAMS1; # CONN. WITH RC FROM HCSTTP #
- IF I EQ 0 # CON/CB FOR PRIMARY APPLICATION#
- THEN
- BEGIN # SEND CON/CB TO PRIM. APPL. TOO#
- CONACN[0] = ACNBPRACN[0]; # ACN OF PRIMARY. #
- CONLOAN[0] = TRUE; # LOANED CONNECTION TERMINATED #
- END
- ELSE
- BEGIN # SEND CON/CB TO SECONDARY APP #
- CONACN[0] = ACNBACN[0] ;
- END
- #
- QUEUE CON/CB/U ON APPLICATION-S ACB
- #
- BLINK(BUFADDR,P<ACB>) ; # LINK CON/CB TO APPL. ACB #
- OSCHAPP(P<ACB>) ;
- END # END OF I FOR LOOP #
- HCONCBE:
- ACNBPRID[0] = 0 ; # CLEAR PRIMARY ID ,ANYWAY #
- GOTO RJMAIN; # RETURN TO CALLING PROGRAM #
- END
- TERM
cdc/nos2.source/nam5871/hconcbu.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator