*DECK CSESCS USETEXT TEXTOV USETEXT TEXTCS USETEXT TEXTSS USETEXT TXTAPSS USETEXT TXTSMCS PROC CSESCS; # TITLE - SEND COUPLER STATUS. # BEGIN # ** CSESCS - SEND COUPLER STATUS. * * D.K. ENDO 82/03/29 * * THE PROCEDURE FORMATS THE COUPLER STATUS MESSAGE TEXT SENT WHEN A * STU/CP/U OR STU/CP/N IS RECEIVED. * * PROC CSESCS * * ENTRY 1. STU/CP/U OR STU/CP/N SM FROM THE EVENT QUEUE. * * EXIT 1. ENTRY IN OPERATOR RESPONSE QUEUE WITH THE STATUS * TEXT AND THE AUDIENCE GROUP SET TO ONE. * 2. ENTRY IN C-LAYER QUEUE WITH THE STATUS TEXT. * # # **** PROC CSESCS - XREF LIST BEGINS. # XREF BEGIN PROC CSESLE; # SEND LOG (FILE) ENTRY # PROC SSBSBF; # STORE BIT FIELD # PROC SSTAQE; # ADD QUEUE ENTRY # FUNC XCDD U; # CONVERT DECIMAL INTEGER TO DISPLAY CODE # END # **** # DEF CPS$TXTL # 50 #; # CHAR COUNT OF COUPLER STATUS TEXT # DEF HNP$TXTL # 30 #; # CHAR COUNT OF -HIP NOT PRESENT- TEXT # ITEM CNST1; # CONSTANT ---> 1 # ITEM CNST2; # CONSTANT ---> 2 # ITEM CNST3; # CONSTANT ---> 3 # ITEM I; # LOOP INDUCTION VARIABLE # ITEM ITEMP U; # UNSIGNED INTEGER TEMPORARY # ITEM J; # LOOP INDUCTION VARIABLE # # THIS ARRAY DEFINES THE COUPLER STATUS TEXT THAT IS SENT WHEN A STU/CP/U OR STU/CP/N IS RECEIVED. # ARRAY CPS$TXT [00:04] S(1); BEGIN ITEM CPS$TIM C(00,00,10); ITEM CPS$COUP C(01,00,08) = ["CPLER: "]; ITEM CPS$CNM C(01,42,07); ITEM CPS$C1 C(02,24,01) = [","]; ITEM CPS$ST C(02,30,02); ITEM CPS$C2 C(02,42,01) = [","]; ITEM CPS$CNID C(02,48,03); ITEM CPS$C3 C(03,06,01) = [","]; ITEM CPS$NNM C(03,12,07); ITEM CPS$C4 C(03,54,01) = ["/"]; ITEM CPS$CNUM C(04,00,03); ITEM CPS$ZBYT U(04,18,42) = [ 0 ]; END # THIS ARRAY DEFINES NOT -HIP NOT PRESENT- TEXT AND IS SENT WHEN A STU/CP/U IS RECEIVED WITH THE REASON CODE FIELD SET TO EIGHT. # ARRAY HNP$TXT [00:00] S(3); BEGIN ITEM HNP$TIM C(00,00,10) = [" "]; ITEM HNP$MSG C(01,00,16) = [" HIP NOT PRESENT"]; ITEM HNP$ZBYT U(02,36,24) = [ 0 ]; END # THIS ARRAY DEFINES ALL THE POSSIBLE STATUS A COUPLER CAN HAVE # DEF MX$ST # 5 #; ARRAY ST$TABLE [01:MX$ST] S(1); BEGIN ITEM ST$VAL C(00,00,02) = ["NC", "DI", "DN", "EN", "AC", ]; END # THIS ARRAY DEFINES THE NAME USED WHEN THE NAME OF THE COUPLER OR SUPPORTING NPU IS NOT FOUND. # ARRAY UNK$TXT [00:00] S(1); BEGIN ITEM UNK$NAME C(00,18,07) = ["UNKNOWN"]; END CONTROL EJECT; # # # CSESCS CODE BEGINS HERE # # # # * SEARCH THE PHYSICAL LINK XREF TABLE FOR THIS COUPLER. IF IT IS * FOUND, THEN INSERT THE COUPLER NUMBER AND NAME INTO THE STATUS * TEXT, FIND THE NPUCB OF THE NPU THAT SUPPORTS THIS COUPLER AND * IF FOUND THEN INSERT THE NPU NAME INTO THE TEXT, OTHERWISE INSERT * -UNKNOWN- FOR THE NPU NAME. IF THE COUPLER IS NOT FOUND IN THE * PHYSICAL LINK XREF TABLE, THEN INSERT -UNKNOWN- FOR THE NAMES AND * CLEAR THE COUPLER NUMBER VALUE. INSERT THE COUPLER NODE I.D. AND * STATUS FOR THE COUPLER. # FOR I=0 STEP 1 WHILE STUN1[0] NQ PLX$HNID[I] AND I LS PLXREFL/2 AND NOT PLX$TYPE[I] DO BEGIN END IF I LS PLXREFL/2 THEN BEGIN CNST1 = 1; CNST2 = 42; SSBSBF(CPS$TXT,CNST1,CNST2,CNST2,B<0,42>PLX$WORD[I]); IF PLX$CPRI[I] THEN BEGIN CPS$CNUM[0] = "SEC"; END ELSE BEGIN CPS$CNUM[0] = "PRI"; END FOR J=0 STEP 1 WHILE PLX$CNPU[I] NQ NPU$NID[J] AND J LS CSNPCNT DO BEGIN END IF J LS CSNPCNT THEN BEGIN CPS$NNM[0] = NPU$NAME[J]; END ELSE BEGIN CPS$NNM[0] = UNK$NAME[0]; END END ELSE BEGIN CNST1 = 1; CNST2 = 42; SSBSBF(CPS$TXT,CNST1,CNST2,CNST2,UNK$TXT); CPS$NNM[0] = UNK$NAME[0]; CPS$CNUM[0] = " "; END CPS$ST[0] = ST$VAL[STUST[0]]; ITEMP = XCDD(1000 + STUN1[0]); CNST1 = 2; CNST2 = 48; CNST3 = 18; SSBSBF(CPS$TXT,CNST1,CNST2,CNST3,ITEMP); # * IF THIS SM IS STU/CP/U, THEN INSERT CURRENT TIME IN STATUS TEXT. * SEND THE TEXT OFF TO THE OPERATOR RESPONSE QUEUE WITH THE AUDIENCE * GROUP SET TO ONE, IF THE REASON CODE FIELD IS NON-ZERO THEN APPEND * THE CURRENT TIME TO THE -HIP NOT PRESENT- MESSAGE TEXT AND SEND IT * TO THE OPERATOR RESPONSE RESPONSE QUEUE WITH AN AUDIENCE GROUP OF * ONE. # IF WCB$SMID[0] EQ SMID"STUCP" THEN BEGIN CPS$TIM[0] = CTM$CLOCK[0]; WCB$WORD[1] = 0; WCB$WC[1] = 2 + (CPS$TXTL / 10); ABHWORD[1] = CPS$TXTL; ABHADR[1] = AUDGR3$; ABHABN[1] = J; SSTAQE(P,WCBUF[1],ABH[1],CPS$TXT[0]); CSESLE(ABHSN[0],WCBUF[1],CPS$TXT); IF STURC[0] NQ 0 THEN BEGIN WCB$WC[1] = 2 + (HNP$TXTL / 10); ABHTLC[1] = HNP$TXTL; SSTAQE(P,WCBUF[1],ABH[1],HNP$TXT[0]); CSESLE(ABHSN[0],WCBUF[1],HNP$TXT); END END # * IF THIS SM IS STU/CP/N, THEN SEND THE STATUS TEXT TO THE OPERATOR * VIA THE C-LAYER WITH THE INPUT ALLOWED FLAG CLEARED. # ELSE # IF NOT STU/CP/U, THEN ASSUME STU/CP/N. # BEGIN WCB$WORD[1] = 0; WCB$SMID[1] = SMID"TTEXT"; WCB$WC[1] = 2 + (CPS$TXTL / 10) - 1; ABHWORD[1] = 0; ABHADR[1] = ABHCN[0]; ABHTLC[1] = CPS$TXTL - 10; SSTAQE(P,WCBUF[1],ABH[1],CPS$TXT[1]); END RETURN; # **** RETURN **** # END # CSESCS # TERM