*DECK SSCRTR
USETEXT TEXTSS
PROC SSCRTR;
# TITLE SSCRTR - RETURN TIMER REQUEST. #
BEGIN # SSCRTR #
#
** SSCRTR - RETURN TIMER REQUEST.
*
* F. HOU. 81/09/11.
*
* ALL TIMER REQUESTS THAT HAVE FIRED ARE REMOVED FROM
* TRQ1 TABLE AND PLACED IN THE REQUESTED QUEUE.
*
* PROC SSCRTR
*
* ENTRY NONE.
*
* EXIT ALL TIMER REQUESTS THAT HAVE FIRED ARE RETURNED
* FOR PROCESSING VIA A Q ENTRY.
*
* NOTES NONE.
*
* METHOD
*
* DO ALL TIMER REQUESTS:
* IF TRQ1 1ST ENTRY HAS FIRE-TIME GREATER THAN CURRENT TIME-OF-DAY,
* THEN SET CTM FIRE-TIME TO THE FIRE-TIME OF TRQ1 FIRST ENTRY.
* AND RETURN TO CALLER.
* ELSE CALL SSTRQE TO REMOVE QUEUE(TRQ1) ENTRY.
* CALL SSTAQE TO ACCEPT TRQ1 QUEUE ENTRY.
* IF NO MORE TRQ1 ENTRIES, SET CTM FIRE-TIME TO 77777777.
* RETURN TO CALLER.
*
#
#
****
#
XREF
BEGIN
PROC SSTAQE; # ACCEPT QUEUE ENTRY #
PROC SSTRQE; # REMOVE QUEUE ENTRY #
END
#
****
#
ITEM I U; # I IS A LOOP VARIABLE #
BASED ARRAY DUMMY [0:0] S(1);
BEGIN
ITEM DUMMYY U(00,00,60);
END
CONTROL EJECT;
P<TRQ1>=SSTRQ[0]; # SET BASED ARRAY-TRQ1 POINTER. #
FOR I=0 WHILE SSTRQL[0] NQ 0 # ALL TIMER REQUESTS #
DO
BEGIN
IF(TRQ1$FTIME[0] GR CTM$RTSEC[0]) # FTIME > CURRENT TIME #
THEN
BEGIN
CTM$FTIME[0]=TRQ1$FTIME[0]; # SET FTIME TO TRQ1 FIRE TIME #
RETURN;
END
ELSE
BEGIN
P<DUMMY>=TRQ1$QNUM[0];
SSTRQE(SSITRQ,WCBUF,ABHBUF,MSGBUF); # REMOVE QUEUE ENTRY #
SSTAQE(DUMMY,WCBUF,ABHBUF,MSGBUF); # ACCEPT QUEUE ENTRY #
P<TRQ1> = SSTRQ[0]; # ALIGN *TRQ1* W/PROG'S MGD TBL #
END
END
IF (SSTRQL[0] EQ 0) # NO MORE QUEUE ENTRY #
THEN
BEGIN
CTM$FTIME[0]=O"77777777"; # SET CTM FIRE-TIME TO 77777777 #
END
END # SSCRTR #
TERM