*DECK HUPDDAW
USETEXT NIPDEF
USETEXT ACB
USETEXT ACNB
PROC HUPDDAW(PACB,PACNB,BLKSQ,BLKDSQ); # UPDATE DATA AVAILABLE WORD #
STARTIMS;
#
*1DC HUPDDAW
* 1. PROC NAME AUTHOR DATE
* HUPDDAW E. GEE 07/22/85
*
* 2. FUNCTIONAL DESCRIPTION:
* UPDATING INPUT AVAILABLE OR DELIVERABLE DATA FIELDS IN DATA
* AVAILABLE WORD.
*
* 3. METHOD USED:
* UPDATE NO OF DATA BLOCKS QUEUED IN ACB AND ACNB.
* IF CONNECTION IS NOT LIST OFF OR TEMPORARY LIST OFF,
* UPDATE NUMBER OF DELIVERABLE BLOCKS.
* IF NUMBER OF DELIVERABLES BLOCKS WENT FROM ZERO TO NONZERO,
* SET D BIT FLAG IN ACB.
* SET FLAG TO UPDATE AIP-S DATA AVAILABLE WORD.
* IF NUMBER OF DELIVERABLE BLOCKS WENT FROM NONZERO TO ZERO,
* CLEAR D BIT FLAG IN ACB.
* SET FLAG TO UPDATE AIP-S DATA AVAILABLE WORD.
* IF NO NEED TO UPDATE AIP-S DATA AVAILABLE WORD YET,
* IF NUMBER OF DATA BLOCKS QUEUED WENT FROM ZERO TO NONZERO OR
* NUMBER OF DATA BLOCKS QUEUED WENT FROM NONZERO TO ZERO,
* SET FLAG TO UPDATE AIP-S DATA AVAILABLE WORD.
* IF AIP-S DATA AVAILABLE WORD NEEDS TO BE UPDATED,
* CALL HWRAVAL TO UPDATE AIP-S DATA AVAILABLE WORD.
*
* 4. ENTRY PARAMETERS
* PACB ADDRESS OF ACB.
* PACNB ADDRESS OF ACNB.
* BLKSQ VALUE FOR ADJUSTING NO OF DATA BLKS
* BLKDSQ VALUE FOR ADJUSTING NO OF DELIVERABLE DATA
*
* 5. EXIT PARAMETERS.
* NONE
*
* 6. COMDECKS CALLED AND SYMPL TEXT USED.
* NIPDEF NIP CONSTANT DEFINITIONS
* ACB APPLICATION CONTROL BLOCK TEMPLATE
* ACNB APPLICATION CONNECTION BLOCK TEMPLATE
*
* 7. ROUTINES AND OVERLAYS CALLED.
* HWRAVAL UPDATE AIP-S DATA AVAILABLE WORD
* XTRACE TRACE PROCEDURE CALL.
*
* 8. DAYFILE MESSAGES OR OTHER IMPORTANT INFORMATION.
* NONE.
#
STOPIMS;
#
INPUT VARIABLES
#
ITEM PACB U ; # ADDRESS OF ACB #
ITEM PACNB U ; # ADDRESS OF ACNB #
ITEM BLKSQ I; # VALUE FOR UPDATING NO OF DATA BLKS#
ITEM BLKDSQ I; # VALUE FOR UPDATING NO OF DELIV BLK#
#
EXTERNAL REFERENCES
#
XREF PROC HWRAVAL ; # UPDATE DATA AVAILABILITY WORD #
XREF PROC XTRACE ; # TRACE PROCEDURE CALL #
#
LOCAL VARIABLES
#
ITEM OLDBLKSQ U; # OLD VALUE OF ACBBLKSQ #
ITEM OLDLSTBLKS U ; # OLD VALUE OF ACBLSTBLKS #
ITEM UPDATEAIP B; # FLAG FOR CALLING HWRAVAL #
#**********************************************************************#
CONTROL EJECT;
BEGIN
CONTROL IFEQ DEBUG,1;
XTRACE("UPDTD"); # RECORD PROCEDURE CALL #
CONTROL FI;
UPDATEAIP = FALSE; # INIT FLAG FOR CALLING HWRAVAL #
P<ACB> = PACB ; # ADDRESS OF ACB #
P<ACNB> = PACNB ; # ADDRESS OF ACNB #
OLDBLKSQ = ACBBLKSQ[0]; # CURRENT NO OF BLKS QUEUED #
OLDLSTBLKS = ACBLSTBLKS[0] ; # CURRENT NO OF DELIVERABLE BLKS#
ACBBLKSQ[0] = ACBBLKSQ[0] + BLKSQ; # UPDATE NO OF DATA BLKS #
ACNBBLKSQ[0] = ACNBBLKSQ[0] + BLKSQ; # UPDATE NO OF BLKS QUEUED #
IF (NOT ACNBLO[0] ) AND # CONNECTION NOT LIST OFF #
(NOT ACNBTLO[0]) # CONNECTION NOT TEMP LIST OFF #
THEN # UPDATE NO OF DELIVERABLE BLKS #
BEGIN
ACBLSTBLKS[0] = ACBLSTBLKS[0] + BLKDSQ; # UPDATE NO OF DELIV #
IF BLKDSQ GR 0
THEN # INCREMENTED NO OF DELIVERABLES#
BEGIN
IF OLDLSTBLKS EQ 0 # PREVIOUS VALUE WAS ZERO #
THEN # NEED TO INFORM AIP #
BEGIN
ACBPDATA[0] = TRUE ; # SET D BIT IN DATA AVAIL WORD #
UPDATEAIP = TRUE; # SET FLAG FOR CALLING HWRAVAL #
END
END
ELSE # DID NOT ADD DELIVERABLE DATA #
BEGIN
IF BLKDSQ LS 0
THEN # DECREMENTED NO OF DELIVERABLES#
BEGIN
IF (OLDLSTBLKS NQ 0 ) AND # PREVIOUS VALUE WAS NONZERO #
(ACBLSTBLKS[0] EQ 0) # CURRENT VALUE IS NO ZERO #
THEN # NEED TO INFORM AIP #
BEGIN
ACBPDATA[0] = FALSE; # CLEAR D BIT IN DATA AVAIL WORD#
UPDATEAIP = TRUE; # SET FLAG FOR CALLING HWRAVAL #
END
END
END
END
IF NOT UPDATEAIP
THEN # DO NOT UPDATE D BIT IN AIP #
BEGIN
IF ( (OLDBLKSQ EQ 0) AND # NO DATA BLOCKS QUEUED BEFORE#
(BLKSQ GR 0 ) ) OR # DATA BLOCKS QUEUED #
( (OLDBLKSQ NQ 0 ) AND # DATA BLOCKS QUEUED BEFORE #
(ACBBLKSQ[0] EQ 0) ) # NO DATA BLOCKS QUEUED NOW #
THEN # NEED TO INFORM AIP #
BEGIN
UPDATEAIP = TRUE; # SET FLAG FOR CALLING HWRAVAL #
END
END
IF UPDATEAIP
THEN # NEED TO WRITE DATA AVAIL WORD TO AIP #
BEGIN
HWRAVAL(P<ACB>,TRUE); # WRITE DATA AVAIL WORD TO AIP #
END
RETURN;
END
TERM