*DECK CSESVC
USETEXT TEXTCS
USETEXT TEXTSS
USETEXT TXTAPSS
USETEXT TXTSMCS
PROC CSESVC;
# TITLE - SEND ARCHETYPE SVC STATUS #
BEGIN
#
** CSESVC - SEND ARCHETYPE SVC STATUS
*
* A. L. TURKE 84/01/01
*
* THIS PROCEDURE FORMATS THE ARCHETYPE SVC STATUS TEXT
* FROM THE INCOMING SM, AND SENDS IT OUT.
*
* PROC CSESVC
*
* ENTRY 1. STU/VC/U, OR STU/VC/N SM.
*
* EXIT 1. ENTRY IN CONNECTION QUEUE WITH STATUS TEXT.
* 2. ENTRY IN OPERATOR QUEUE WITH STATUS TEXT.
*
#
#
**** PROC CSESVC - XREF LIST BEGINS.
#
XREF
BEGIN
PROC CSESLE; # SEND LOG (FILE) ENTRY #
PROC SSBSBF; # STORE BIT FIELD #
FUNC SSDCAD U; # CONVERT ASCII TO DISPLAY CODE CHAR #
PROC SSTAQE; # ADD QUEUE ENTRY #
FUNC XCDD C(10); # CONVERT DECIMAL INTEGER TO DISPLAY #
END
#
****
#
DEF SVC$TXTL # 50 #; # CHAR COUNT OF STATUS MESSAGE TEXT #
DEF UNA$TXTL # 50 #; # CHAR COUNT OF SVC UNACTIONED CMD TEXT #
DEF UNC$TXTL # 40 #; # CHAR COUNT OF UNACTIONED CMD TEXT #
ITEM CNST1; # CONSTANT ---> 1 #
ITEM CNST2; # CONSTANT ---> 2 #
ITEM CNST3; # CONSTANT ---> 3 #
ITEM I; # LOOP INDUCTION VARIABLE #
#
THIS ARRAY DEFINES THE BUFFER WHERE THE NAME OF THE CURRENT
DEVICE IS SAVED.
#
ARRAY CRNT$SVC [00:00] S(1);
BEGIN
ITEM CRNT$VCN C(00,30,05);
END
#
THIS ARRAY IS USED AS A TEMPORARY STORAGE AREA FOR CHARACTER
STRINGS TO BE PLACED IN THE TEXT CURRENTLY BEING BUILT
#
ARRAY CTEMP$WORD [00:00] S(1);
BEGIN
ITEM CTEMP C(00,00,10);
ITEM UTEMP U(00,30,30);
ITEM CTEMP1 C(00,54,01);
ITEM CTEMP2 C(00,48,02);
ITEM CTEMP3 C(00,42,03);
ITEM CTEMP5 C(00,30,05);
END
#
THIS TABLE CONTAINS THE POSSIBLE SUBTIP TYPES THAT THE
NUMERIC VALUE WILL MAP INTO.
#
DEF MX$STIP # 7 #;
ARRAY STIP$TBL [00:MX$STIP] S(1);
BEGIN
ITEM STIP$VAL C(00,00,05) = ["UNDEF",
"PAD ",
"ITML ",
"APPL ",
"1CDC ",
"2CDC ",
"1USR ",
"2USR "
];
END
#
THIS ARRAY DEFINES THE TEXT OF THE ARCHETYPE SVC STATUS
MESSAGE FORMATTED BY THIS PROC.
#
ARRAY SVC$TXT [00:04] S(1);
BEGIN
ITEM SVC$TIM C(00,00,10);
ITEM SVC$SVC C(01,00,05) = ["SVC: "];
ITEM SVC$VCN C(01,30,05);
ITEM SVC$EN C(02,00,04) = [",EN="];
ITEM SVC$ENN C(02,24,03);
ITEM SVC$DI C(02,42,04) = [",DI="];
ITEM SVC$DIN C(03,06,03);
ITEM SVC$AC C(03,24,04) = [",AC="];
ITEM SVC$ACN C(03,48,03);
ITEM SVC$COM C(04,06,02) = [", "];
ITEM SVC$STIP C(04,18,05);
ITEM SVC$ZBYT U(04,48,12) = [ 0 ];
END
#
THIS ARRAY DEFINES THE -SVC UNACTIONED COMMAND- MESSAGE
TEXT THAT IS SENT OUT WHEN A STU/VC/U HAS A REASON CODE
OF TEM(DUE AN ARCHETYPE SVC NOT CONFIGURED).
#
ARRAY UNA$TXT [00:00] S(5);
BEGIN
ITEM UNA$TIM C(00,00,10) = [" "];
ITEM UNA$SVC C(01,00,05) = ["SVC: "];
ITEM UNA$VCN C(01,30,05);
ITEM UNA$MSG C(02,00,20) = [", UNACTIONED COMMAND"];
ITEM UNA$ZBYT U(04,00,60) = [ 0 ];
END
#
THIS ARRAY DEFINES THE -UNACTIONED COMMAND- MESSAGE TEXT
THAT IS SENT WHEN A STU/VC/U HAS A REASON CODE OF NINE
(AN EXPLANATORY ARCHETYE SVC STATUS LINE FOLLOWS).
#
ARRAY UNC$TXT [00:00] S(4);
BEGIN
ITEM UNC$TIM C(00,00,10) = [" "];
ITEM UNC$MSG C(01,00,19) = [" UNACTIONED COMMAND"];
ITEM UNC$ZBYT1 U(02,54,06) = [ 0 ];
ITEM UNC$ZBYT2 U(03,00,60) = [ 0 ];
END
CONTROL EJECT;
# #
# CSESVC CODE BEGINS HERE #
# #
#
* BEGIN CONSTRUCTING THE LINE IMAGE FOR THE ARCHETYPE SVC
* STATUS. CONVERT THE ASCII ARCHETYPE SVC NAME TO DISPLAY
* CODE AND PLACE IT IN THE TEXT. CONVERT THE ES(NO. OF ENABLED
* SVCS), DS(NO. OF DISABLED SVCS), AS(NO. OF ACTIVE SVCS), AND
* STIP FIELDS TO DISPLAY CODE AND INSERT THEM INTO THE TEXT.
#
ABHWORD[1] = 0; # INITIALIZE ABH #
FOR I = 0 STEP 1 UNTIL 4
DO
BEGIN
B<I*6,6>UTEMP[0] = SSDCAD(B<I*8,8>STUAN[0]);
END
SVC$VCN[0] = CTEMP5[0]; # STORE ARCHETYPE SVC NAME #
CRNT$VCN[0] = CTEMP5[0]; # SAVE ARCHETYPE SVC NAME TEMPORARILY #
CTEMP[0] = XCDD(1000 + STUES[0]); # CAUSES LEADING ZEROES #
SVC$ENN[0] = CTEMP3[0]; # STORE NO. OF ENABLED SVCS #
CTEMP[0] = XCDD(1000 + STUDS[0]); # CAUSES LEADING ZEROES #
SVC$DIN[0] = CTEMP3[0]; # STORE NO. OF DISABLED SVCS #
CTEMP [0] = XCDD(1000 + STUAS[0]); # CAUSES LEADING ZEROES #
CNST1 = 3; # WORD ORDINAL OF BITFIELD #
CNST2 = 48; # STARTING BIT POSITION #
CNST3 = 18; # NO. OF BITS TO STORE #
SSBSBF(SVC$TXT,CNST1,CNST2,CNST3,CTEMP$WORD); # STORE BITFIELD #
SVC$STIP[0] = STIP$VAL[STUSTP[0]]; # STORE SUBTIP TYPE #
#
* IF THIS SM IS STU/VC/U, GET THE CURRENT TIME AND APPEND IT
* TO THE BEGINNING OF THE STATUS TEXT. IF THE REASON CODE
* INDICATES NOT CONFIGURED, THEN SEND THE -SVC UNACTIONED
* COMMAND- TEXT TO THE OPERATOR REPONSE QUEUE WITH AN
* AUDIENCE GROUP OF ONE. IF THE REASON CODE INDICATES CCP
* COULD NOT ENABLE/DISABLE ARCHETYPE SVCS, THEN SEND THE
* -UNACTIONED COMMMAND- TEXT FOLLOWED BY AN EXPLANATORY
* ARCHETYPE SVC STATUS LINE.
#
IF WCB$SMID[0] EQ SMID"STUVC"
THEN
BEGIN
WCB$WORD[1] = 0;
ABHADR[1] = AUDGR3$;
FOR I = 0 STEP 1 WHILE NPU$NID[I] NQ ABHSN[0] AND
I LS CSNPCNT
DO
BEGIN
END
ABHABN[1] = I;
IF STURCV[0] EQ RRCV"SNC" # REASON CODE = 10 #
THEN
BEGIN
UNA$TIM[0] = CTM$CLOCK[0]; # STORE CURRENT TIME #
UNA$VCN[0] = CRNT$VCN[0]; # STORE ARCHETYPE SVC NAME #
WCB$WC[1] = 2 + (UNA$TXTL / 10); # WORD LENGTH OF TEXT #
ABHTLC[1] = UNA$TXTL; # WORD LENGTH OF TEXT #
SSTAQE(P<ORQ>,WCBUF[1],ABH[1],UNA$TXT[0]);
CSESLE(ABHSN[0],WCBUF[1],UNA$TXT);
END
ELSE
BEGIN
IF STURCV[0] EQ RRCV"NED" # REASON CODE = 9 #
THEN
BEGIN
UNC$TIM[0] = CTM$CLOCK[0]; # STORE CURRENT TIME #
WCB$WC[1] = 2 + (UNC$TXTL / 10); # WORD LENGTH OF TEXT #
ABHTLC[1] = UNC$TXTL; # CHAR LENGTH OF TEXT #
SSTAQE(P<ORQ>,WCBUF[1],ABH[1],UNC$TXT[0]);
CSESLE(ABHSN[0],WCBUF[1],UNC$TXT);
SVC$TIM[0] = CTM$CLOCK[0]; # STORE CURRENT TIME #
WCB$WC[1] = 2 + (SVC$TXTL / 10); # WORD LENGTH OF TEXT #
ABHTLC[1] = SVC$TXTL; # TEXT CHAR LENGTH #
SSTAQE(P<ORQ>,WCBUF[1],ABH[1],SVC$TXT[0]);
CSESLE(ABHSN[0],WCBUF[1],SVC$TXT);
END
ELSE # STU/VC/U NO REASON CODE #
BEGIN
SVC$TIM[0] = CTM$CLOCK[0]; # STORE CURRENT TIME #
WCB$WC[1] = 2 + (SVC$TXTL / 10); # WORD LENGTH OF TEXT #
ABHTLC[1] = SVC$TXTL; # TEXT CHAR LENGTH #
SSTAQE(P<ORQ>,WCBUF[1],ABH[1],SVC$TXT[0]);
CSESLE(ABHSN[0],WCBUF[1],SVC$TXT);
END
END
END # STU/VC/U #
#
* IF THIS SM IS STU/VC/N, THEN SEND THE STATUS TEXT TO
* THE OPERATOR IDENTIFIED BY THE ACN OF INCOMING SM
#
ELSE # ASSUME STU/VC/N #
BEGIN
WCB$WORD[1] = 0;
WCB$WC[1] = 2 + (SVC$TXTL / 10) -1; # SUBTRACT TIME WORD #
WCB$SMID[1] = SMID"TTEXT";
ABHADR[1] = ABHCN[0];
ABHTLC[1] = SVC$TXTL - 10; # SUBTRACT WORD CONTAINING TIME #
SSTAQE(P<CNQ>,WCBUF[1],ABH[1],SVC$TXT[1]);
END
RETURN; # **** RETURN **** #
END # CSESVC #
TERM