*DECK HSFCBRK USETEXT NIPDEF USETEXT PARAMS USETEXT PT USETEXT ACB USETEXT ACNT USETEXT AT USETEXT ACNB USETEXT AHEADER USETEXT DRHDR USETEXT KDIS USETEXT SUPMSG PRGM HSFCBRK ; STARTIMS ; # *1DC HSFCBRK * * 1. PROC NAME AUTHOR DATE * HSFCBRK L.T.NGUYEN 81/12/10 * * 2. FUNCTION * FOFM FC/BRK OR FC/RST AND SEND TO APPLICATION * IF BREAK - ALSO DELETE MSG QUEUED ON ACNB * * 3. METHOD * ALLOCATE BUFFER FOR FC/BRK(RST) * LINK TO ACB * * 4. ENTRY PARAMETERS: * PARAMS1 - ACNB * PARAMS2 - IF BREAK = BUFFER ADDRESS * IF RST = 0 * * 5. EXIT PARAMETERS * NONE * * 6. COMDECKS CALLED AND SYMPL TEXTS USED * NIPDEF PARAMS PT * ACB ACNT AT * ACNB AHEADER DRHDR * NCNB SUPMSG OSSIZE * * 7. ROUTINES CALLED * DELCDR DELINK ACNB FROM CONNECTION DATA RING * HUPDDAW UPDATE DATA AVAILABLE WORD * MGETS ALLOCATE A BUFFER * MRELS RELEASE BUFFER * BLINK LINK MESSAGE ON DATA RING * NXBLOCK SEND SPECIAL BLOCKS TO CCP * OSCHAPP SCHEDULE APPLICATION * XTRACE TRACE PROCEDURE CALL * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * THIS IS A SECONDARY OVERLAY CALLED BY HBSTTP. * W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY *CALL OSSIZE * * # STOPIMS; XREF LABEL RJMAIN ; XREF PROC DELCDR; XREF PROC HUPDDAW; # UPDATE DATA AVAILABLE WORD # XREF PROC MGETS ; XREF PROC MRELS ; XREF PROC KPUT ; XREF PROC BLINK ; XREF PROC OSCHAPP ; XREF PROC XTRACE ; ITEM BUFFER ; # BUFFER TO HOLD FC/BRK # ITEM I ; ITEM NEXT ; ITEM TEMPBLKSQ ; BASED ARRAY NHSECOND P(1) ; BEGIN ITEM NHBRKRC U (0,0,8) ; ITEM NHWORD2 U (0,0,WL) ; END ITEM ACNTINDX U ; BEGIN # HSFCBRK # CONTROL IFEQ DEBUG,1 ; XTRACE("HSBRK") ; CONTROL FI; TEMPBLKSQ = 0 ; P = PARAMS1 ; P = PARAMS2 + BLKHSIZE + NBHSIZE ; IF ACNBDRFP[0] NQ 0 THEN BEGIN # DISCARD DATA # NEXT = ACNBDRFP[0] ; # FIRST DATA BLOCK # P = 0 ; P = 0 ; FOR I = I WHILE NEXT NQ LOC(ACNBDRFP[0]) DO BEGIN # PROCESS THE WHOLE RING # BUFFER = NEXT ; NEXT = NEXTPTR[BUFFER] ; # NEXT OF BUFFER # TEMPBLKSQ = TEMPBLKSQ + 1 ; MRELS(BUFFER) ; # RELEASE THE BUFFER BLOCK # END # PROCESS THE WHOLE RING # ACNBDRFP[0] = 0 ; # THE WHOLE RING HAS BEEN # ACNBDRBP[0] = 0 ; # RELEASED # DELCDR(P); # DELINK ACNB FROM CON DATA RING# END P = ATACBA[ACNBAN[0]] ; P = ACBACNT[0] ; HUPDDAW(P,P,-TEMPBLKSQ,-TEMPBLKSQ); ACNTINDX = ACNBACN[0] - ACNTMINACN[0] + ACNTHSIZE ; ACNTABO[ACNTINDX] = 0 ;# RESET THE ABO COUNT # MGETS(LFCBRK + BLKHSIZE + ABHSIZE,BUFFER,TRUE); # SET UP APPLICATION BLOCK HEADER # P = BUFFER + BLKHSIZE ; ABHABT[0] = APPCMD ; # COMMAND BLOCK # ABHACT[0] = CT60TRANS ; # CHAR TYPE - TRANSPARENT # ABHTLC[0] = LFCBRK ; # SET UP FC/BRK (RST) # P = BUFFER + BLKHSIZE + ABHSIZE ; FCACN[0] = ACNBACN[0] ; IF PARAMS2 NQ 0 # (BREAK) # THEN BEGIN PFCSFC[0] = FCBRK ; FCRBR[0] = NHBRKRC[0] ; END ELSE PFCSFC[0] = FCRST ; BLINK(BUFFER,ATACBA[ACNBAN[0]]) ; OSCHAPP(ATACBA[ACNBAN[0]]) ; GOTO RJMAIN ; END # HSFCBRK # TERM