*DECK CSSARE
USETEXT TEXTCS
USETEXT TEXTSS
USETEXT TXCMDCS
USETEXT TXTAPSS
PROC CSSARE;
# TITLE - ACTION REPORT COMMAND #
BEGIN
#
** CSSARE - ACTION REPORT COMMAND.
*
* D.K. ENDO 83/02/09
*
* THIS PROCEDURE PROCESSES THE REPORT COMMAND.
*
* PROC CSSARE
*
* ENTRY 1. HDRCMD = COMMAND HEADER.
* 2. PARMS = PARAMETER LIST.
*
* EXIT 1. ENTRIES IN THE EVENT QUEUE. (CONTROL ON/OFF)
* 2. MESSAGES TO THE C-LAYER.
*
#
#
**** PROC CSSARE - XREF LIST.
#
XREF
BEGIN
PROC SSBCBW; # CLEAR BIT IN WORD #
PROC SSBSBW; # SET BET IN WORD #
PROC SSTAQE; # ACCEPT QUEUE ENTRY #
END
#
****
#
DEF MODEIDX # HDR$TXWCNT[0]+2 #; # INDEX TO MODE (ON/OFF) WORD #
DEF NORIDX # HDR$TXWCNT[0]+3 #; # INDEX TO NPUCB ORDINAL WORD #
DEF NPUIDX # HDR$TXWCNT[0]+1 #; # INDEX TO NP/NPS PARAMETER WORD#
ITEM I; # LOOP INDUCTION VARIABLE #
#
* FLG$WORD - BASED ARRAY POINTED TO A REPORT FLAG WORD IN THE
* NPUCB-S.
#
BASED ARRAY FLG$WORD [00:00] S(1);
BEGIN
ITEM FW$WORD I(00,00,60);
END
#
* CSSARE CODE BEGINS HERE
#
#
* IF REQUEST TO RECEIVE REPORTS, THEN IF ONE NPU IS SPECIFIED, THEN
* SET THE REPORT FLAG IN THE NPUCB CORRESPONDING TO THIS OPERATOR.
* IF *NPUS* IS SPECIFIED, THEN SET THE REPORT FLAG IN ALL THE ACTIVE
* NPUCB-S FOR THIS OPERATOR.
#
IF PAR$PCODE[MODEIDX] EQ "ON0"
THEN
BEGIN
IF PAR$PCODE[NPUIDX] EQ "NP0"
THEN
BEGIN
P<FLG$WORD> = LOC(NPU$RFLGS[PAR$ORD[NORIDX]]);
SSBSBW( FLG$WORD , HDR$OPORD[0] );
END
ELSE
BEGIN
FOR I=0 STEP 1 WHILE I LS CSNPCNT
DO
BEGIN
IF NPU$STAT[I] NQ SUPSTAT"SUPLOST"
THEN
BEGIN
P<FLG$WORD> = LOC(NPU$RFLGS[I]);
SSBSBW( FLG$WORD , HDR$OPORD[0] );
END
END
END
END
#
* IF REPORTS ARE TO BE TURNED OFF, THEN IF ONE NPU WAS SPECIFIED,
* THEN CLEAR THE REPORT FLAG IN THE NPUCB FOR THIS OPERATOR. IF
* ALL NPUS WAS SPECIFIED, THEN CLEAR THE FLAGS IN ALL THE NPUCB-S
* FOR THIS OPERATOR.
#
ELSE
BEGIN
IF PAR$PCODE[NPUIDX] EQ "NP0"
THEN
BEGIN
P<FLG$WORD> = LOC(NPU$RFLGS[PAR$ORD[NORIDX]]);
SSBCBW( FLG$WORD , HDR$OPORD[0]);
END
ELSE
BEGIN
FOR I=0 STEP 1 WHILE I LS CSNPCNT
DO
BEGIN
IF NPU$STAT[I] NQ SUPSTAT"SUPLOST"
THEN
BEGIN
P<FLG$WORD> = LOC(NPU$RFLGS[I]);
SSBCBW( FLG$WORD , HDR$OPORD[0] );
END
END
END
END
#
* SEND AN EMPTY TERMINAL TEXT WITH THE INPUT ALLOWED FLAG SET TO
* INDICATE THAT THE COMMAND IS COMPLETE.
#
WCB$WORD[1] = 2;
WCB$SMID[1] = SMID"TTEXT";
WCB$IAF[1] = TRUE;
ABHWORD[1] = 0;
ABHADR[1] = HDR$OPORD[0];
SSTAQE(P<CNQ>,WCBUF[1],ABH[1],MSGBUF);
END # CSSARE #
TERM