*DECK CSESLS
USETEXT TEXTOV
USETEXT TEXTCS
USETEXT TEXTSS
USETEXT TXTAPSS
USETEXT TXTSMCS
PROC CSESLS;
# TITLE - SEND LINE STATUS. #
BEGIN
#
** CSESLS - SEND LINE STATUS.
*
* D.K. ENDO 82/03/17
*
* THIS PROCEDURE FORMATS A LINE STATUS TEXT AND SENDS IT OUT TO THE
* OPERATORS.
*
* PROC CSESLS
*
* ENTRY 1. STU/LI/U, STU/LI/N, OR MSG/LI/A SM.
*
* EXIT 1. LINE STATUS TEXT IN THE OPERATOR RESPONSE QUEUE.
* 2. TEXT SENT TO THE C-LAYER VIA THE CONNECTION QUEUE.
*
#
#
**** PROC CSESLS - XREF LIST BEGINS.
#
XREF
BEGIN
PROC CSESLE; # SEND LOG (FILE) ENTRY #
PROC SSBSBF; # STORE BIT FIELD #
PROC SSTAQE; # ADD QUEUE ENTRY #
FUNC XCHD C(10); # CONVERT HEX INTEGER TO DISPLAY CODE #
END
#
****
#
DEF ADS$TXTL # 40 #; # CHAR COUNT OF ALREADY IN STATE TEXT #
DEF CDP$TXTL # 40 #; # CHAR COUNT OF CE DIAG IN PROGRESS TEXT #
DEF DCA$TXTL # 40 #; # CHAR COUNT OF DUP CLA ADDRESS TEXT #
DEF LNS$TXTL # 50 #; # CHAR COUNT OF LINE STATUS TEXT #
DEF MNS$TXTL # 40 #; # CHAR COUNT OF MSG NOT SENT TEXT #
DEF NTC$TXTL # 40 #; # CHAR COUNT OF NO TERMS CONFIG TEXT #
DEF NTE$TXTL # 40 #; # CHAR COUNT OF NO TERMS ENABLED TEXT #
DEF TNC$TXTL # 40 #; # CHAR COUNT OF TIP NOT CONFIGURED TEXT #
ITEM CNST1; # CONSTANT ---> 1 #
ITEM CNST2; # CONSTANT ---> 2 #
ITEM CNST3; # CONSTANT ---> 3 #
ITEM I; # LOOP INDUCTION VARIABLE #
ITEM GOODRC B; # FLAG INDICATING GOOD REASON CODE #
#
THIS ARRAY DEFINES THE -ALREADY IN DESIRED STATE- MESSAGE TEXT.
IT IS SENT WHEN A STU/LI/U SM COMES IN AND THE REASON CODE FIELD
IS EIGHT.
#
ARRAY ADS$TXT [00:00] S(4);
BEGIN
ITEM ADS$TIM C(00,00,10) = [" "];
ITEM ADS$MSG C(01,00,25) = [" ALREADY IN DESIRED STATE"];
ITEM ADS$ZBYT1 U(03,30,30) = [ 0 ];
END
#
THIS ARRAY DEFINES THE -CE DIAGNOSTICS IN PROGRESS- MESSAGE TEXT.
IT IS SENT WHEN A STU/LI/U SM COMES IN AND THE REASON CODE FIELD
IS SET TO SEVEN.
#
ARRAY CDP$TXT [00:00] S(4);
BEGIN
ITEM CDP$TIM C(00,00,10) = [" "];
ITEM CDP$MSG C(01,00,25) = [" CE DIAG TEST IN PROGRESS"];
ITEM CDP$ZBYT1 U(03,30,30) = [ 0 ];
END
#
THIS ARRAY IS USED AS A TEMPORY FOR STORING A CHARACTER STRING TO
BE LATER PLACE IN THE TEXT.
#
ARRAY CTEMP$WORD [00:00] S(1);
BEGIN
ITEM CTEMP C(00,00,10);
ITEM CTEMP2 C(00,48,02);
END
#
THIS ARRAY DEFINES THE -DUPLICATE CLA ADDRESS- MESSAGE TEXT. IT
IS SENT OUT WHEN AN INCOMING STU/LI/U HAS A REASON CODE SET TO SIX
#
ARRAY DCA$TXT [00:00] S(4);
BEGIN
ITEM DCA$TIM C(00,00,10) = [" "];
ITEM DCA$MSG C(01,00,22) = [" DUPLICATE CLA ADDRESS"];
ITEM DCA$ZBYT U(03,12,48) = [ 0 ];
END
#
THIS BASED ARRAY IS USED AS A TEMPLATE TO GO OVER ONE OF THE
MESSAGES SENT WHEN THE REASON CODE FIELD OF THE STU/LI/U SM IS
NON ZERO.
#
BASED ARRAY ERR$MSG [00:00] S(6);
BEGIN
ITEM ERM$TIM C(00,00,10);
ITEM ERM$LNM C(01,36,07);
END
#
THIS ARRAY DEFINES THE LINE STATUS TEXT SENT TO THE OPERATORS.
#
ARRAY LNS$TXT [00:04] S(1);
BEGIN
ITEM LNS$TIM C(00,00,10);
ITEM LNS$LIN C(01,00,06) = ["LINE: "];
ITEM LNS$LNM C(01,36,07);
ITEM LNS$C1 C(02,18,01) = [","];
ITEM LNS$ST C(02,24,02);
ITEM LNS$C2 C(02,36,01) = [","];
ITEM LNS$LT C(02,42,02);
ITEM LNS$C3 C(02,54,01) = [","];
ITEM LNS$NNM C(03,00,07);
ITEM LNS$S1 C(03,42,01) = ["/"];
ITEM LNS$PRT C(03,48,02);
ITEM LNS$ZBYT U(04,00,60) = [ 0 ];
END
#
THIS TABLE CONTAINS ALL THE POSSIBLE LINE TYPES. THE NUMERIC
VALUE MAPS DIRECTLY INTO THE TABLE.
#
DEF MX$LT # 12 #;
ARRAY LT$TABLE [01:MX$LT] S(1);
BEGIN
ITEM LT$VAL C(00,00,02) = ["S1",
"S2",
"S3",
,,
"A1",
"A2",
,
"A6",
"H1",
"S4",
"H2"
];
END
#
THIS ARRAY DEFINES THE -MESSAGE NOT SENT- MESSAGE TEXT. IT IS
SENT WHEN THERE IS AN INCOMING MSG/LI/A SM.
#
ARRAY MNS$TXT [00:00] S(4);
BEGIN
ITEM MNS$NPU C(00,00,05) = ["NPU: "];
ITEM MNS$NNM C(00,30,07);
ITEM MNS$MSG C(01,12,18) = [", MESSAGE NOT SENT"];
ITEM MNS$ZBYT U(03,00,60) = [ 0 ];
END
#
THIS ARRAY DEFINES THE -NO TERMINALS CONFIGUED- MESSAGE TEXT.
IT IS SENT OUT WHEN AN INCOMING STU/LI/U HAS A REASON CODE SET
TO TWO.
#
ARRAY NTC$TXT [00:00] S(4);
BEGIN
ITEM NTC$TIM C(00,00,10) = [" "];
ITEM NTC$MSG C(01,00,24) = [" NO TERMINALS CONFIGURED"];
ITEM NTC$ZBYT U(03,24,36) = [ 0 ];
END
#
THIS ARRAY DEFINES THE -NO TERMINALS ENABLED- MESSAGE TEXT. IT
IS SENT OUT WHEN AN INCOMING STU/LI/U HAS A REASON CODE SET TO
ONE.
#
ARRAY NTE$TXT [00:00] S(4);
BEGIN
ITEM NTE$TIM C(00,00,10) = [" "];
ITEM NTE$MSG C(01,00,21) = [" NO TERMINALS ENABLED"];
ITEM NTE$ZBYT U(03,06,54) = [ 0 ];
END
#
THIS CONTAINS ALL THE POSSIBLE STATUS THAT THE LINE CAN HAVE. IT
CAN BE MAPPED DIRECT TO THE NUMERIC STATUS VALUE IN THE INCOMING
SM.
#
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 -TIP NOT CONFIGURED- MESSAGE TEXT. IT IS
SENT WHEN AN INCOMING STU/LI/U SM HAS A REASON CODE SET TO FIVE.
#
ARRAY TNC$TXT [00:00] S(4);
BEGIN
ITEM TNC$TIM C(00,00,10) = [" "];
ITEM TNC$MSG C(01,00,20) = [" TIP NOT CONFIGURED"];
ITEM TNC$ZBYT U(03,00,60) = [ 0 ];
END
#
THIS ARRAY IS USED TO STORE THE LINE NAME TO BE INSERTED INTO THE
TEXT WHEN ONE IS NOT FOUND.
#
ARRAY UNK$TXT [00:00] S(1);
BEGIN
ITEM UNK$NAM C(00,18,07) = ["UNKNOWN"];
END
CONTROL EJECT;
# #
# CSESLS CODE BEGINS HERE #
# #
#
* FORMAT THE LINE STATUS TEXT. SEARCH THE LINE XREF TABLE, GIVEN
* THE PORT AND NODE I.D. AND FIND THE NAME FOR THIS LINE. IF A NAME
* IS FOUND INSERT NAME INTO TEXT, ELSE INSERT -UNKNOWN- INTO TEXT.
* INSERT THE STATUS AND LTYPE INTO THE TEXT. SEARCH NPUCB-S FOR THE
* NAME OF THE NPU SUPPORTING THE LINE. IF FOUND, INSERT NAME INTO
* TEXT. CONVERT THE PORT NUMBER AND APPEND IT TO THE TEXT.
#
FOR I=0 STEP 1 WHILE NOT(STUP[0] EQ LIX$PORT[I] AND
ABHSN[0] EQ LIX$NID[I]) AND
I LS LIXL
DO
BEGIN
END
IF I LS LIXL
THEN
BEGIN
CNST1 = 1;
CNST2 = 36;
CNST3 = 42;
SSBSBF(LNS$TXT,CNST1,CNST2,CNST3,B<0,42>LIX$WORD[I]);
END
ELSE
BEGIN
CNST1 = 1;
CNST2 = 36;
CNST3 = 42;
SSBSBF(LNS$TXT,CNST1,CNST2,CNST3,UNK$TXT);
END
LNS$ST[0] = ST$VAL[STUSTI[0]];
LNS$LT[0] = LT$VAL[STULT[0]];
FOR I=0 STEP 1 WHILE ABHSN[0] NQ NPU$NID[I] AND
I LS CSNPCNT
DO
BEGIN
END
IF I LS CSNPCNT
THEN
BEGIN
LNS$NNM[0] = NPU$NAME[I];
END
ELSE
BEGIN
LNS$NNM[0] = " ";
END
CTEMP[0] = XCHD(STUP[0] + X"100");
LNS$PRT[0] = CTEMP2[0];
#
* IF THIS SM IS STU/LI/U, APPEND THE CURRENT TIME TO THE TEXT. SET
* THE AUDIENCE GROUP TO ONE AND SEND IT OFF TO THE OPERATOR RESPONSE
* QUEUE. IF THE REASON CODE IS NOT ZERO, THEN APPEND A MESSAGE,
* BASED ON THE RC, TO THE TIME AND SEND THE MESSAGE OFF TO THE ORQ
* WITH AN AUDIENCE GROUP OF ONE.
#
IF WCB$SMID[0] EQ SMID"STULI"
THEN
BEGIN
LNS$TIM[0] = CTM$CLOCK[0];
WCB$WORD[1] = 0;
WCB$WC[1] = 2 + (LNS$TXTL / 10);
ABHWORD[1] = LNS$TXTL;
ABHADR[1] = AUDGR3$;
ABHABN[1] = I;
SSTAQE(P<ORQ>,WCBUF[1],ABH[1],LNS$TXT[0]);
CSESLE(ABHSN[0],WCBUF[1],LNS$TXT);
IF STURCL[0] NQ 0
THEN
BEGIN
GOODRC = FALSE;
IF STURCL[0] EQ RRCI"N1"
THEN # NO TERMS ENABLED, RC=1 #
BEGIN
P<ERR$MSG> = LOC(NTE$TXT);
ABHTLC[1] = NTE$TXTL;
GOODRC = TRUE;
END
ELSE IF STURCL[0] EQ RRCI"N2"
THEN # NO TERMS CONFIGURED, RC=2 #
BEGIN
P<ERR$MSG> = LOC(NTC$TXT);
ABHTLC[1] = NTC$TXTL;
GOODRC = TRUE;
END
ELSE IF STURCL[0] EQ RRCI"NT"
THEN # TIP NOT CONFIGURED, RC=5 #
BEGIN
P<ERR$MSG> = LOC(TNC$TXT);
ABHTLC[1] = TNC$TXTL;
GOODRC = TRUE;
END
ELSE IF STURCL[0] EQ RRCI"DC"
THEN # DUPLICATE CLA ADDRESS, RC=6 #
BEGIN
P<ERR$MSG> = LOC(DCA$TXT);
ABHTLC[1] = DCA$TXTL;
GOODRC = TRUE;
END
ELSE IF STURCL[0] EQ RRCI"CD"
THEN # CE DIAGNOSTICS IN PROGESS,RC=7#
BEGIN
P<ERR$MSG> = LOC(CDP$TXT);
ABHTLC[1] = CDP$TXTL;
GOODRC = TRUE;
END
ELSE IF STURCL[0] EQ RRCI"UC"
THEN # ALREADY IN DESIRED STATE, RC=8#
BEGIN
P<ERR$MSG> = LOC(ADS$TXT);
ABHTLC[1] = ADS$TXTL;
GOODRC = TRUE;
END
IF GOODRC
THEN
BEGIN
WCB$WC[1] = 2 + (ABHTLC[1] / 10 );
SSTAQE(P<ORQ>,WCBUF[1],ABH[1],ERR$MSG[0]);
CSESLE(ABHSN[0],WCBUF[1],ERR$MSG);
END
END
END
#
* IF THIS SM IS STU/LI/N OR MSG/LI/A, THEN SEND THE STATUS TEXT TO
* THE OPERATOR IDENTIFIED BY THE ACN WITH THE INPUT ALLOW FLAG
* CLEARED. IF THIS SM IS MSG/LI/A, APPEND THE NPU NAME TO THE -NOT
* SENT- MESSAGE AND SEND IT TO THE OPERATOR WITH THE INPUT ALLOWED
* FLAG SET.
#
ELSE # THE SM WAS NOT STU/LI/U, ASSUME IT IS #
BEGIN # STU/LI/N OR MSG/LI/A #
WCB$WORD[1] = 0;
WCB$SMID[1] = SMID"TTEXT";
WCB$WC[1] = 2 + (LNS$TXTL / 10) - 1;
ABHWORD[1] = 0;
ABHADR[1] = ABHCN[0];
ABHTLC[1] = LNS$TXTL - 10;
SSTAQE(P<CNQ>,WCBUF[1],ABH[1],LNS$TXT[1]);
IF WCB$SMID[0] EQ SMID"MSGLIA"
THEN
BEGIN
FOR I=0 STEP 1 WHILE ABHSN[0] NQ NPU$NID[I] AND
I LS CSNPCNT
DO
BEGIN
END
IF I LS CSNPCNT
THEN
BEGIN
CNST1 = 0;
CNST2 = 30;
CNST3 = 42;
SSBSBF(MNS$TXT,CNST1,CNST2,CNST3,B<0,42>NPU$WORD[I]);
END
WCB$IAF[1] = TRUE;
WCB$WC[1] = 2 + (MNS$TXTL / 10);
ABHTLC[1] = MNS$TXTL;
SSTAQE(P<CNQ>,WCBUF[1],ABH[1],MNS$TXT[0]);
END
END
RETURN;
END # CSESLS #
TERM