*DECK HWRAVAL USETEXT NIPDEF USETEXT ACB USETEXT AT USETEXT SCPCOM USETEXT STATTAB USETEXT SYSTIME PROC HWRAVAL(ACBADR, CHECK); # WRITE DATA AVAIABLE WORD # *IF DEF,IMS # *1DC HWRAVAL * * 1. PROC NAME AUTHOR DATE. * HWRAVAL P.C.TAM 79/02/09 * * 2. FUNCTIONAL DESCRIPTION. * WRITE DATA AVAILABLE WORD * * 3. METHOD USED. * IF APP NOT SWAPPED OUT, * SET UP SCP REQUEST, CALL OSCALL FOR SCP SERVICE. * IF RETURN CODE NOT ZERO, * SCHEDULE APP, SET ATU FLAG. * * 4. ENTRY PARAMETER. * ACBADR ADDRESS OF THE ACB OF APP TO WHOM * NIP HAS TO WRITE DATA AVAILABLE WORD * CHECK CHECK OR NOT CHECK OF ACB IN SWAPPED * OUT STATE * * 5. EXIT PARAMETER. * NONE. * * 6. COMDECKS CALLED AND SYMPL TEXTS USED. * NIPDEF ACB SCPCOM PT AT * STATTAB * * 7. ROUTINES CALLED. * OSCHAPP SCHEDULE APP * OSCCALL SCP SERVICE REQUEST * OTIME GET SYSTEM RTIME * XTRACE TRACE PROCEDURE CALL * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT MESSAGES. * THIS PROCEDURE IS CALLED BY BDELINK,BLINK, AND XSACB. * # *ENDIF # INPUT PARAMETERS # ITEM ACBADR, # ACB ADDRESS # CHECK B; # CHECK OR NO CHECK FLAG # # OUTPUT PARAMETERS # # NONE # # EXTERNAL VARIABLES # XREF BEGIN PROC OSCCALL; # SCP REQUEST SERVICE # PROC OSCHAPP; # SCHEDULE APPLICATION # PROC OTIME; # GET SYSTEM RTIME # PROC XTRACE; # TRACE PROCEDURE CALLS # END # LOCAL VARIABLES # ITEM RC, # REASON CODE # I; # TEMPORARY VARIABLE # CONTROL IFEQ STAT,1; ARRAY STIME P(1); # RTIME BUFFER FOR STARTING TIME # BEGIN ITEM SMILS U(0,24,36); # STARTING TIME IN MILLESECONDS # END ARRAY ETIME P(1); # RTIME BUFFER FOR ENDING TIME # BEGIN ITEM EMILS U(0,24,36); # ENDING TIME IN MILLESECONDS # END ITEM STTEMP; # TEMPORARY STATISTICS VARIABLE # CONTROL FI; # ******************************************************************* # BEGIN CONTROL IFEQ DEBUG,1; XTRACE("HWRAV") ; CONTROL FI ; CONTROL IFEQ STAT,1; OTIME(STIME); # GET SYSTEM TIME AT BEGINNING OF PROC # CONTROL FI; P = ACBADR ; # SET ACB ADDRESS # I = ACBAN[0]; # APPLICATION NUMBER # IF NOT ATNVFN[I] # NOT WAITING FOR NET/OFF/N # AND NOT ATNVFF[I] # NOT WAITING FOR FAIL/APPL/N # THEN BEGIN IF NOT CHECK # NO CHECK FOR ACB SWAPPED OUT STATE # OR (ATASBI[I] AND # SCP SWAPIN REQUEST HAS BEEN ISSUED AND # ACBSCPCB[0] NQ 0) # HAS COMPLETED # OR NOT (ATU[I] OR # NOT HWRAVAL DETECTED SWAPPED OUT APP # ATASBSO[I]) # NOT APPLICATION SWAPPED OUT # THEN # OKAY TO USE ACB FOR SF.WRITE SCP FUNCT # BEGIN # NEED TO MODIFY DATA AVAILABLE WORD # ACBSWAPWR[0] = ACBIASCP[0]; # SCP FUNCTION REQUEST WORD # P = LOC(ACBSWAPWR[0]); OSCCALL(SCPCALL); RC = ACBSCPRC[0]; # REPLY CODE # IF RC NQ 0 THEN BEGIN ATU[I] = TRUE; # UPDATE DATA AVAILABLE WORD # OSCHAPP(ACBADR); END ELSE BEGIN # SUCCESSFUL UPDATE RC=0 # IF ATASBW[I] # APPLICATION IN NETWAIT STATE # THEN BEGIN # APPLICATION HAS TO BE AT CONTROL POINT # MSG$AN = I; # STORE AT INDEX IN GLOBAL MSG$AN # ATAMSG[I] = TRUE; # FLAG MESSAGE FOR APPLICATION # END END END ELSE ATU[I] = TRUE; # UPDATE DATA AVAILABLE FLAG # END CONTROL IFEQ STAT,1; OTIME(ETIME); # GET SYSTEM TIME AT END OF PROC # ST$NDA = ST$NDA + 1; # INCREMENT NUMBER OF TIMES HWRAVAL CALLED# STTEMP = EMILS[0] - SMILS[0]; # TIME SPENT IN THIS ROUTINE # ST$TDA = ST$TDA + STTEMP; # TOTAL TIME SPENT IN THIS ROUTINE # IF ST$LDA LS STTEMP THEN # FOUND LARGER TIME INTERVAL IN ROUTINE # BEGIN ST$LDA = STTEMP; # NEW LARGEST TIME INTERVAL # END CONTROL FI; RETURN; # RETURN TO CALLER # END TERM