C QNA ERROR STATISTICS GATHERING PROGRAM(XQERR.FTN) C C C PAUL ELKINS C C LOS ALAMOS NATIONAL LAB. C PO BOX 1663 MS-J957 C LOS ALAMOS NM 87545 C 505 667 3502 C INCLUDE '[100,1]XQERRDEF.FTN' C PARAMETER LX=64/2 !MAXIMUM PACKET SIZE(WORDS) PARAMETER LZ=14 !ERROR COUNTERS BUFFER SIZE PARAMETER NBUF=10 !NUMBER OF NODE BUFFERS PARAMETER XQSYST=4 !XQ: SYSTEM TYPE CODE PARAMETER XQECHO=1 !XQ: ECHO MESSAGE SUB-TYPE CODE PARAMETER XQERR=5 !GET XQ: ERROR STATISTICS PARAMETER XQERRC=6 !GET/CLEAR XQ: ERROR STATISTICS C C IMPLICIT INTEGER(A-Z) C INTEGER*4 DTSK !DESTINATION TASK NAME INTEGER SBUF(LX),RBUF(LX),PRM1(6),PRM2(6),IOSB1(2),IOSB2(2) INTEGER TSKP(16),PRM3(6),IOSB3(2) INTEGER DATA(LZ) !ERROR STATISTICS BUFFER INTEGER BUF(LZ,NBUF) !PRINT BUFFER INTEGER NODES(LZ) !NODE STRING BUFFER EQUIVALENCE (DTSK,SBUF(9)) !DESTINATION TASK NAME EQUIVALENCE (DATA(1),RBUF(15)) !ERROR STATISTICS BUFFER DATA L1/1/RLB/"1000/WLB/"400/REF/1/XEF/2/ DATA EEF/3/GLC/"16430/GLI/"16420/ DATA KIL/"12/ !I/O KILL FUNCTION CODE DATA DTSK/6RLWT.../ !DESTINATION TASK NAME DATA TEF/4/ !TIME OUT EVENT FLAG C CALL GETTSK(TSKP,IDS) CALL GETADR(PRM1,RBUF(1)) CALL GETADR(PRM2,SBUF(1)) CALL GETADR(PRM3,DATA(1)) PRM1(2)=LX*2 PRM2(2)=LX*2 PRM3(2)=LZ*2 CALL WTQIO(GLI,L1,EEF,,IOSB3,PRM3,IDS) MYNOD=DATA(1) SBUF(6)=MYNOD SBUF(7)=XQSYST SBUF(11)=TSKP(1) SBUF(12)=TSKP(2) C TYPE *,'ENTER TO NODE ADDRESS STRING' ACCEPT 101,Q,(NODES(I),I=1,NBUF) C 10 CONTINUE C DO 15 I=1,NBUF DO 15 K=1,LZ 15 BUF(K,I)=0 D TYPE *,'NODES=',NODES C DO 20 I=1,NBUF IF(NODES(I).EQ.0) GOTO 20 SBUF(3)=NODES(I) D TYPE *,SBUF(3),I C IF(SBUF(3).EQ.MYNOD) THEN CALL WTQIO(GLI,L1,EEF,,IOSB3,PRM3,IDS) ELSE C SBUF(13)=XQERR DO 16 J=1,LZ 16 DATA(J)=0 CALL QIO(RLB,L1,REF,,IOSB1,PRM1,IDS) CALL QIO(WLB,L1,XEF,,IOSB2,PRM2,IDS) CALL MARK(TEF,1,2) CALL WFLOR(REF,TEF) CALL CANMT(TEF) IF(IOSB1(1).EQ.0) CALL QIO(KIL,L1) ENDIF C DO 20 K=1,LZ BUF(K,I)=DATA(K) 20 CONTINUE D TYPE *,'NODES=',NODES C TYPE 100 1,(NODES(I),I=1,NBUF) 2,(BUF(XQRCNT,I),I=1,NBUF) 3,(BUF(XQXCNT,I),I=1,NBUF) 4,(BUF(XQXERR,I),I=1,NBUF) 5,(BUF(XQLOSS,I),I=1,NBUF) 6,(BUF(XQNCAR,I),I=1,NBUF) 7,(BUF(XQABO,I),I=1,NBUF) 8,(BUF(XQCOLL,I),I=1,NBUF) 9,(BUF(XQRERR,I),I=1,NBUF) 1,(BUF(XQRUNT,I),I=1,NBUF) 2,(BUF(XQDISC,I),I=1,NBUF) 3,(BUF(XQOVF,I),I=1,NBUF) 4,(BUF(XQCRC,I),I=1,NBUF) 5,(BUF(XQFRAM,I),I=1,NBUF) C TYPE *,'$CLEAR ERROR COUNTER(Y/N) ' ACCEPT 105,Q,YES IF(YES.NE.'Y') GOTO 10 C DO 30 I=1,NBUF IF(NODES(I).EQ.0) GOTO 30 SBUF(3)=NODES(I) IF(SBUF(3).EQ.MYNOD) THEN CALL WTQIO(GLC,L1,EEF,,IOSB3,PRM3,IDS) C ELSE SBUF(13)=XQERRC CALL QIO(RLB,L1,REF,,IOSB1,PRM1,IDS) CALL WTQIO(WLB,L1,XEF,,IOSB2,PRM2,IDS) CALL MARK(TEF,1,2) CALL WFLOR(REF,TEF) CALL CANMT(TEF) IF(IOSB1(1).EQ.0) CALL QIO(KIL,L1) ENDIF 30 CONTINUE C GO TO 10 C 100 FORMAT(' NODE ERROR STATISTICS',// 1,' NODE',10I7,// 2,' RCNT',10I7,/ 3,' XCNT',10I7,// 4,' XERR',10I7,/ 5,' LOSS',10I7,/ 6,' NCAR',10I7,/ 7,' XABO',10I7,/ 8,' COLL',10I7,// 9,' RERR',10I7,/ 1,' RUNT',10I7,/ 2,' DISC',10I7,/ 3,' OVF ',10I7,/ 4,' CRC ',10I7,/ 5,' FRAM',10I7,//) 101 FORMAT(Q,10I3) 105 FORMAT(Q,A1) END