C C INTERACTIVE PROGRAM TO RETURN SYSTEM STANDARD ERROR C CODE DESCRIPTIONS WHEN EITHER THE DECIMAL OR C OCTAL VALUE IS INPUT. C C KAREN D. ELKINS 11/79 C [135,60] C BYTE B(80),IDEC,CODE(6),ADUM(6),BDUM(50) BYTE MINUS,BLK,PERIOD,BCODE(6) DATA MINUS/1H-/ DATA BLK/1H / DATA PERIOD/1H./ DATA BCODE/6*1H / IDEC = 0 ICOUNT = 0 N = 0 J = 0 C C OPEN FILE CONTAINING STANDARD ERROR CODES C OPEN(UNIT=1,NAME='LB0:[1,2]QIOERR.DIR',ERR=10, + ACCESS='SEQUENTIAL',TYPE='OLD',READONLY) GO TO 15 10 CONTINUE WRITE(5,5000) 5000 FORMAT(' ERROR IN OPENING [1,2]QIOERR.DIR') STOP C C READ AND DECODE PDS LINE C 15 CONTINUE CALL GETMCR(B,ISW) C C CHECK TO SEE IF ONLY "IOE" WAS INPUT C IF(ISW.LE.3) GO TO 39 JSW = ISW+1 DO 20 I=JSW,80 B(I) = BLK 20 CONTINUE I = 0 27 CONTINUE I = I+1 IF(I.GT.ISW) GO TO 200 IF(B(I).NE.BLK) GO TO 27 I = I+1 C C DETERMINE IF INPUT ERROR CODE WAS ENTERED AS DECIMAL C OR OCTAL C IF(B(I).EQ.MINUS) IDEC = 1 30 CONTINUE C C MOVE KEY CHARACTERS INTO CODE C J = J+1 IF(IDEC.EQ.1.AND.J.GT.3) GO TO 210 IF(J.GT.6) GO TO 210 CODE(J) = B(I) I = I+1 IF(B(I).EQ.BLK.OR.B(I).EQ.PERIOD) GO TO 37 GO TO 30 37 CONTINUE 38 CONTINUE C C PROMPT USER IF ERROR CODE NOT ENTERED OR WAS C ENTERED INCORRECTLY C IF(KOMSTR(CODE,1,6,BCODE,1).NE.0) GO TO 42 39 CONTINUE WRITE(5,5005) 5005 FORMAT(/,'$ENTER ERROR CODE (DECIMAL OR OCTAL VALUE) I>') READ(5,5007,END=220) CODE 5007 FORMAT(6A1) IF(CODE(1).EQ.BLK) GO TO 39 IF(CODE(1).EQ.MINUS) IDEC = 1 C C CALCULATE NUMBER OF CHARACTERS IN CODE C IF USER PROMPTED C DO 40 I = 1,6 IF(CODE(I).EQ."40) GO TO 41 40 CONTINUE 41 CONTINUE J = I-1 42 CONTINUE C C CONVERT INPUT FROM CHARACTER FORMAT TO INTERNAL FORMAT C IF(IDEC.NE.1) GO TO 45 DECODE(J,5010,CODE) ICODE 5010 FORMAT(I3) GO TO 50 45 CONTINUE DECODE(J,5015,CODE) ICODE 5015 FORMAT(O6) C C LOOK FOR ERROR CODE MATCH AND WRITE ERROR DESCRIPTION C TO TERMINAL C 50 CONTINUE READ(1,5025,END=210) ADUM,JCODE,BDUM 5025 FORMAT(6A1,1X,I3,2X,50A1) IF(JCODE.EQ.ICODE) GO TO 55 GO TO 50 55 CONTINUE WRITE(5,5030) ADUM,JCODE,BDUM 5030 FORMAT(/,3X,6A1,1X,I3,5X,50A1,/) ICOUNT = ICOUNT+1 IF(ICODE.EQ.-80.AND.ICOUNT.LE.1) GO TO 50 GO TO 220 200 CONTINUE WRITE(5,5998) 5998 FORMAT(/,' INVALID COMMAND ENTERED') REWIND 1 GO TO 39 210 CONTINUE WRITE(5,5999) 5999 FORMAT(/,' ERROR CODE ENTERED IS NOT VALID') REWIND 1 GO TO 39 220 CONTINUE END