cdc:nos2.source:nam5871:cseses
Table of Contents
CSESES
Table Of Contents
- [00007] PROC CSESES
- [00008] SEND ELEMENT STATISTICS.
- [00011] SEND ELEMENT STATISTICS.
- [00057] PROC MESSAGE
- [00058] PROC SSBEBF
- [00059] PROC SSBSBF
- [00060] PROC SSTAQE
- [00061] FUNC SSDCDA U
- [00062] FUNC XCDD U
- [00063] FUNC XCHD U
- [00361] PROC CONVERT
- [00362] CONVERT - CONVERTS DISPLAY CODE TEXT TO ASCII.
- [00366] CONVERT - CONVERTS DISPLAY CODE TEXT TO ASCII.
Source Code
- CSESES.txt
- *DECK CSESES
- USETEXT TEXTOV
- USETEXT TEXTCS
- USETEXT TEXTSS
- USETEXT TXTAPSS
- USETEXT TXTSMCS
- PROC CSESES;
- # TITLE - SEND ELEMENT STATISTICS. #
- BEGIN
- #
- ** CSESES - SEND ELEMENT STATISTICS.
- *
- * D.K. ENDO 82/03/30
- *
- * THIS PROCEDURE FORMATS STATISTICS INFORMATION FROM THE INCOMING
- * SM. IT THEN SENDS IT OUT TO THE SYSTEM ACCOUNT FILES.
- * FOR STI/NP/U, CHECK FOR CPU AND BUFFER THRESHOLD.
- * IF EXCEEDED, SEND ALM/OP SM.
- *
- * PROC CSESES
- *
- * ENTRY 1. STI/NP/U, STI/TR/U, OR STI/LI/U SM FROM THE EVENT
- * QUEUE.
- *
- * EXIT 1. STATISTICS INFO SENT TO THE SYSTEM ACCOUNT FILES.
- * 2. ALM/OP SM SENT TO * EVQ* .
- *
- *
- * ACCOUNT DAYFILE MESSAGE FORMATS:
- *
- * *SCLI, NODE, C1, PORT, TTTTTTLLLLLL.
- * *SCLI, NODE, C2, SSSSSSCCCCCC.
- * *SCLI, NODE, C3, BBBBBBPPPPPPAAAAAA.
- * NUMBER OF BLOCKS AND CHARACTERS TRANSMITTED AND
- * RECEIVED ON NODE NUMBER *NODE* AND LINE NUMBER
- * *PORT*. ALSO NUMBER OF PAD AND A-A REJECTS.
- *
- * *SCNQ, NODE, C1, CCCCCCDDDDDDLLLLLL.
- * *SCNQ, NODE, C2, GGGGGGRRRRRRSSSSSS.
- * *SCNQ, NODE, C3, PPPPPPIIIIIINNNNNN.
- * *SCNQ, NODE, C4, WWWWWW.
- * VARIOUS STATISTICS FOR NODE NUMBER *NODE*.
- *
- * *SCTU, NODE, C1, PORT, TTTTTTLLLLLL.
- * *SCTU, NODE, C2, SSSSSSCCCCCC.
- * *SCTU, NODE, C3, BBBBBB.
- * NUMBER OF BLOCKS AND CHARACTERS TRANSMITTED AND
- * RECEIVED ON NODE NUMBER *NODE* AND PORT NUMBER
- * *PORT*.
- *
- #
- #
- **** PROC CSESES - XREF LIST BEGINS.
- #
- XREF
- BEGIN
- PROC MESSAGE; # SEND TEXT TO SYSTEM ACCOUNT FILE #
- PROC SSBEBF; # EXTRACT BIT FIELD #
- PROC SSBSBF; # STORE BIT FIELD #
- PROC SSTAQE; # ACCEPT A QUEUE ENTRY #
- FUNC SSDCDA U; # CONVERT DISPLAY CODE TO ASCII #
- FUNC XCDD U; # CONVERT DECIMAL INTEGER TO DISPLAY CODE #
- FUNC XCHD U; # CONVERT HEX INTEGER TO DISPLAY CODE #
- END
- #
- ****
- #
- DEF ACCT # 5 #; # IDENTIFIER FOR ACCOUNT FILE #
- DEF ERRLOG # 4 #; # IDENTIFIER FOR ERROR LOG FILE #
- ITEM CNST1; # CONSTANT ---> 1 #
- ITEM CNST2; # CONSTANT ---> 2 #
- ITEM CNST3; # CONSTANT ---> 3 #
- ITEM I; # LOOP INDUCTION VARIABLE #
- ITEM ITEMP U; # UNSIGNED INTEGER TEMPORARY #
- ITEM LEN U; # LENGTH OF TEXT #
- ITEM NP U; # NPUCB INDEX #
- #
- THIS ARRAY DEFINES THE STATISTICS TEXT FORMAT THAT IS SENT WHEN
- THIS PROC IS INVOKED.
- #
- ARRAY ELS$TXT [00:00] S(4);
- BEGIN
- ITEM ELS$SC C(00,00,02) = ["SC"];
- ITEM ELS$TYP C(00,12,02);
- ITEM ELS$C1 C(00,24,02) = [", "];
- ITEM ELS$SN U(00,36,24);
- ITEM ELS$C2 C(01,00,03) = [", C"];
- ITEM ELS$CNUM C(01,18,01);
- ITEM ELS$C3 C(01,24,02) = [", "];
- ITEM ELS$PRM1 C(01,36,06);
- ITEM ELS$P U(01,36,24);
- ITEM ELS$C4 C(02,00,02);
- ITEM ELS$PRM2 U(02,12,36);
- ITEM ELS$P1 C(02,48,01);
- ITEM ELS$ZBYT11 U(02,54,06);
- ITEM ELS$ZBYT12 U(03,00,12);
- ITEM ELS$PRM3 C(02,48,06);
- ITEM ELS$PER C(03,24,01) = ["."];
- ITEM ELS$ZBYT U(03,30,30) = [ 0 ];
- END
- #
- THIS ARRAY DEFINES THE SECOND BUFFER WHICH ONLY CONTAINS ONE
- PARAMETER.
- #
- ARRAY ES1$TXT [00:00] S(3);
- BEGIN
- ITEM ES1$SC C(00,00,02) = ["SC"];
- ITEM ES1$TYP C(00,12,02);
- ITEM ES1$C1 C(00,24,02) = [", "];
- ITEM ES1$SN U(00,36,24);
- ITEM ES1$C2 C(01,00,03) = [", C"];
- ITEM ES1$CNUM C(01,18,01);
- ITEM ES1$C3 C(01,24,02) = [", "];
- ITEM ES1$PRM1 C(01,36,06);
- ITEM ES1$PER C(02,12,01) = ["."];
- ITEM ES1$ZBYT U(02,18,42) = [0];
- END
- #
- * THE FOLLOWING ARRAY DEFINES THE TEXT PORTION OF CPU UTILIZATION
- * ALARM MESSAGE.
- #
- ARRAY CPUMSG [00:00] S(3);
- BEGIN
- ITEM CPU$MSG C(00,00,22) =
- ["CPU THRESHOLD EXCEEDED"];
- END
- #
- * THE FOLLOWING ARRAY DEFINES THE BUFFER AVAILABILITY ALARM MESSAGE.
- #
- ARRAY BUFMSG [00:00] S(3);
- BEGIN
- ITEM BUF$MSG C(00,00,25) =
- ["BUFFER THRESHOLD EXCEEDED"];
- END
- #
- * THE FOLLOWING BASED ARRAY IS FOR GENERAL PURPOSE USAGE.
- #
- BASED ARRAY GENPBUF[00:00] S(1);;
- CONTROL EJECT;
- # #
- # CSESES CODE BEGINS HERE #
- # #
- #
- * CONVERT THE SOURCE NODE I.D. AND APPEND IT TO THE TEXT.
- #
- ELS$SN[0] = XCDD(ABHSN[0] );
- #
- * IF THIS SM IS STI/NP/U, THEN CONVERT THE MG, MP, AND MB VALUES TO
- * DISPLAY CODE AND APPEND THEM TO THE MESSAGE TEXT. SEND THE TEXT
- * TO THE ACCOUNT FILE. CONVERT THE BD, BF, AND L3 VALUES AND APPEND
- * THEM TO THE TEXT. SEND THE MESSAGE OUT TO THE ACCOUNT FILE.
- * CONVERT THE L2, L1, AND L0 VALUES AND APPEND THEM TO THE TEXT.
- * SEND THE MESSAGE OFF TO THE ACCOUNT FILE.
- #
- IF WCB$SMID[0] EQ SMID"STINP"
- THEN
- BEGIN
- ELS$TYP[0] = "NQ";
- ELS$CNUM[0] = "1";
- ITEMP = XCDD(STIMG[0]);
- CNST1 = 1;
- CNST2 = 36;
- CNST3 = 36;
- SSBSBF(ELS$TXT,CNST1,CNST2,CNST3,ITEMP);
- ELS$PRM2[0] = XCDD(STIMP[0]);
- ITEMP = 0;
- B<44,12>ITEMP = STIMB1[0];
- B<56,4>ITEMP = STIMB2[0];
- ITEMP = XCDD(ITEMP);
- CNST1 = 2;
- CNST2 = 48;
- CNST3 = 36;
- SSBSBF(ELS$TXT,CNST1,CNST2,CNST3,ITEMP);
- MESSAGE(ELS$TXT,ACCT);
- MESSAGE(ELS$TXT,ERRLOG);
- ELS$CNUM[0] = "2";
- ITEMP = XCDD(STIBD[0]);
- CNST1 = 1;
- CNST2 = 36;
- CNST3 = 36;
- SSBSBF(ELS$TXT,CNST1,CNST2,CNST3,ITEMP);
- ELS$PRM2[0] = XCDD(STIBF[0]);
- ITEMP = XCDD(STIL3[0]);
- CNST1 = 2;
- CNST2 = 48;
- CNST3 = 36;
- SSBSBF(ELS$TXT,CNST1,CNST2,CNST3,ITEMP);
- MESSAGE(ELS$TXT,ACCT);
- MESSAGE(ELS$TXT,ERRLOG);
- ELS$CNUM[0] = "3";
- ITEMP = 0;
- B<44,8>ITEMP = STIL21[0];
- B<52,8>ITEMP = STIL22[0];
- ITEMP = XCDD(ITEMP);
- CNST1 = 1;
- CNST2 = 36;
- CNST3 = 36;
- SSBSBF(ELS$TXT,CNST1,CNST2,CNST3,ITEMP);
- ELS$PRM2[0] = XCDD(STIL1[0]);
- ITEMP = XCDD(STIL0[0]);
- CNST1 = 2;
- CNST2 = 48;
- CNST3 = 36;
- SSBSBF(ELS$TXT,CNST1,CNST2,CNST3,ITEMP);
- MESSAGE(ELS$TXT,ACCT);
- MESSAGE(ELS$TXT,ERRLOG);
- ES1$TYP[0] = ELS$TYP[0];
- ES1$SN[0] = ELS$SN[0];
- ES1$CNUM[0] = "4";
- ITEMP = XCDD(STIAW[0]);
- CNST1 = 1;
- CNST2 = 36;
- CNST3 = 36;
- SSBSBF(ES1$TXT,CNST1,CNST2,CNST3,ITEMP);
- MESSAGE(ES1$TXT,ACCT);
- MESSAGE(ES1$TXT,ERRLOG);
- #
- * SEARCH THE *NPUCBS* FOR THE NPU. IF NOT FOUND, IGNORE THE SM.
- * IF FOUND, CHECK FOR CPU AND BUFFER THRESHOLD, AND
- * SEND THE APPROPRIATE ALARM MESSAGE(S) TO THE *EVQ* IF NECESSARY.
- #
- FOR I = 0 STEP 1 WHILE (ABHSN[0] NQ NPU$NID[I])
- AND (I LS CSNPCNT)
- DO
- BEGIN
- END
- NP = I;
- IF NP GQ CSNPCNT
- THEN
- BEGIN
- GOTO EXIT;
- END
- IF NPU$CP[NP] NQ DEFCP$
- THEN
- BEGIN # CP NOT DEFAULT VALUE #
- IF STIMG[0] GR (NPU$CP[NP] * 10)
- THEN
- BEGIN # CP IN STI/NP GR CP VALUE #
- P<GENPBUF> = LOC(CPUMSG[0]); # SEND ALM/OP SM #
- LEN = 22;
- CONVERT;
- END
- END
- IF NPU$BU[NP] NQ DEFBU$
- THEN
- BEGIN # BU IN STI/NP GR BU VALUE #
- IF STIMP[0] LS NPU$BU[NP]
- THEN
- BEGIN # BU IN STI/NP GR BU VALUE #
- P<GENPBUF> = LOC(BUFMSG[0]); # SEND ALM/OP SM #
- LEN = 25;
- CONVERT;
- END
- END
- END
- #
- * IF THIS SM IS STI/TR/U OR STI/LI/U, THEN CONVERT THE PORT AND
- * APPEND IT TO THE TEXT. IF THIS SM IS STI/LI/U, SET THE SUB-PORT
- * VALUE TO ZERO, ELSE SEARCH THE PHYSICAL LINK XREF TABLE FOR THE
- * NODE AT THE OTHER END OF TRUNK, IF FOUND, SAVE THE NODE I.D., ELSE
- * SET IT TO ZERO. CONVERT THE SUB-PORT OR NODE I.D. AND APPEND IT
- * TO THE TEXT. CONVERT THE BT VALUE AND APPEND IT TO THE TEXT. SEND
- * THE MESSAGE TO THE ACCOUNT FILE. CONVERT THE BR, CT, AND CR VALUE
- * AND APPEND THEM TO THE TEXT. SEND THE MESSAGE TO THE ACCOUNT
- * FILE. CONVERT THE BB VALUE AND APPEND IT TO THE TEXT. SEND THE
- * TEXT TO THE ACCOUNT FILE.
- #
- ELSE
- BEGIN
- IF WCB$SMID[0] EQ SMID"STILI"
- THEN
- BEGIN
- ELS$TYP[0] = "LI";
- ITEMP = 0;
- END
- ELSE
- BEGIN
- ELS$TYP[0] = "TU";
- END
- ELS$CNUM[0] = "1";
- ELS$P[0] = XCHD(STIP[0]);
- ELS$C4[0] = ", ";
- ELS$PRM2[0] = XCDD(STIBT[0]);
- ITEMP = 0;
- B<44,12>ITEMP = STIBR1[0];
- B<56,4>ITEMP = STIBR2[0];
- ITEMP = XCDD(ITEMP);
- CNST1 = 2;
- CNST2 = 48;
- CNST3 = 36;
- SSBSBF(ELS$TXT,CNST1,CNST2,CNST3,ITEMP);
- MESSAGE(ELS$TXT,ACCT);
- MESSAGE(ELS$TXT,ERRLOG);
- ELS$CNUM[0] = "2";
- ITEMP = XCDD(STICT[0]);
- CNST1 = 1;
- CNST2 = 36;
- CNST3 = 36;
- SSBSBF(ELS$TXT,CNST1,CNST2,CNST3,ITEMP);
- ELS$PRM2[0] = XCDD(STICR[0]);
- ELS$P1[0] = ".";
- ELS$ZBYT11[0] = 0;
- ELS$ZBYT12[0] = 0;
- MESSAGE(ELS$TXT,ACCT);
- MESSAGE(ELS$TXT,ERRLOG);
- IF WCB$SMID[0] EQ SMID"STILI"
- THEN
- BEGIN # PROCESS SCLI C3 TEXT #
- ELS$CNUM[0] = "3";
- ITEMP = XCDD(STIBB[0]); # CONVERT NO. BAD BLKS TRANSMITTED#
- CNST1 = 1; # WORD ORDINAL OF BITFIELD #
- CNST2 = 36; # STARTING BIT POSITION #
- CNST3 = 36; # NO. OF BITS TO STORE #
- SSBSBF(ELS$TXT,CNST1,CNST2,CNST3,ITEMP); # STORE BITFIELD #
- ITEMP = 0;
- B<44,8>ITEMP = STIRP1[0];
- B<52,8>ITEMP = STIRP2[0];
- ELS$PRM2[0] = XCDD(ITEMP); # CONVERT NO. PAD REJECTS #
- ITEMP = XCDD(STIRA[0]); # CONVERT NO. A-A REJECTS #
- CNST1 = 2; # WORD ORDINAL OF BITFIELD #
- CNST2 = 48; # STARTING BIT POSITION #
- CNST3 = 36; # NO. OF BITS TO STORE #
- SSBSBF(ELS$TXT,CNST1,CNST2,CNST3,ITEMP); # STORE BITFIELD #
- MESSAGE(ELS$TXT,ACCT); # SEND TEXT TO ACCOUNT FILE #
- MESSAGE(ELS$TXT,ERRLOG); # SEND TEXT TO ERRLOG FILE #
- END # PROCESS SCLI C3 TEXT #
- ELSE
- BEGIN # PROCESS SCTU C3 TEXT #
- ES1$TYP[0] = ELS$TYP[0]; # MOVE *TU* TO TEXT ARRAY #
- ES1$SN[0] = ELS$SN[0]; # MOVE SOURCE NODE TO TEXT ARRAY #
- ES1$CNUM[0] = "3";
- ITEMP = XCDD(STIBB[0]); # CONVERT NO. BAD BLKS TRANS #
- CNST1 = 1; # WORD ORDINAL OF BITFIELD #
- CNST2 = 36; # STARTING BITPOSITION #
- CNST3 = 36; # NO. OF BITS TO STORE #
- SSBSBF(ES1$TXT,CNST1,CNST2,CNST3,ITEMP); # STORE BITFIELD #
- MESSAGE(ES1$TXT,ACCT); # SEND TEXT TO ACCOUNT FILE #
- MESSAGE(ES1$TXT,ERRLOG); # SEND TEXT TO ERRLOG FILE #
- END # PROCESS SCTU C3 TEXT #
- END
- EXIT:
- RETURN; # **** RETURN **** #
- CONTROL EJECT;
- PROC CONVERT;
- # TITLE CONVERT - CONVERTS DISPLAY CODE TEXT TO ASCII. #
- BEGIN # CONVERT #
- #
- ** CONVERT - CONVERTS DISPLAY CODE TEXT TO ASCII.
- *
- * A. LIM 83/02/24
- *
- * THIS PROCEDURE IS INTERNAL TO *CSESES* AND IS ONLY CALLED BY
- * *CSESES*. ITS MAIN FUNCTION IS TO CONVERT DISPLAY CODE TEXT
- * TO ASCII AND STORE IT INTO TEXT PORTION OF AN ALM/OP SM ( WITH
- * PFC/SFS, PORT AND SUBPORT PRESET TO ZERO). THEN THE SM IS
- * SENT TO THE *EVQ*.
- *
- * PROC CONVERT
- *
- * ENTRY: TEXT IN AREA POINTED TO BY *GENPBUF*
- * LEN = LENGTH IN CHARACTERS OF TEXT
- *
- * EXIT: TEXT CONVERTED TO ASCII, AND AN ALM/OP SENT TO *EVQ*
- *
- #
- ITEM CHAR U; # CHARACTER #
- ITEM I U; # LOOP INDUCTION VAR #
- ITEM EBIT U; # STARTING BIT OF EXTRACTION #
- ITEM EORD U; # STARTING WORD OF EXTRACTION #
- ITEM SBIT U; # STARTING BIT OF STORING #
- ITEM SORD U; # STARTING WORD OF STORING #
- #
- * CLEAR BUFFER AREAS.
- #
- WCB$WORD[1] = 0;
- ABHWORD[1] = 0;
- FOR I = (NMSGBUF$ + 1)/2 STEP 1 UNTIL NMSGBUF$
- DO
- BEGIN
- MSG$WORD[I] = 0; # CLEAR 2ND HALF OF *MSGBUF* #
- END
- #
- * INITIALIZE INDICES.
- #
- EBIT = 0;
- EORD = 0;
- SBIT = 32;
- SORD = 0;
- #
- * CONVERT MESSAGE INTO ASCII AND STORE IT INTO THE TEXT PORTION OF
- * AN ALM/OP SM.
- #
- FOR I = 0 STEP 1 UNTIL LEN-1
- DO
- BEGIN
- SSBEBF(GENPBUF[0],EORD,EBIT,6,CHAR); # EXTRACT A CHAR #
- CHAR = SSDCDA(CHAR); # CONVERT IT TO ASCII #
- SSBSBF(CSSM[1],SORD,SBIT,8,CHAR); # STORE IT IN ALM/OP #
- END
- #
- * BUILD ABH, WC AND SEND SM TO *EVQ*.
- #
- ABHSN[1] = ABHSN[0];
- ABHTLC[1] = 4 + LEN; # PFC + SFC + P + SP + TEXT #
- WCB$SMID[1] = SMID"ALMOP";
- WCB$WC[1] = (((ABHTLC[1]*8)+59)/60) + 2;
- SSTAQE(P<EVQ>, WCBUF[1], ABH[1], CSSM[1]);
- END # CONVERT #
- END # CSESES #
- TERM
cdc/nos2.source/nam5871/cseses.txt ยท Last modified: 2023/08/05 17:21 by Site Administrator