BYTE IST,ICL INTEGER*4 DATA INTEGER IAB(40) INTEGER ISH(10) LOGICAL*1 ITST(7) LOGICAL*1 IB(80) LOGICAL*1 BLANK,COMMA REAL DAT(6) COMMON/FCNA/IF2,IF,IC2,IC,IN2,IN,IA2,IA,DATA ,IST,ICL,ICOUNT EQUIVALENCE (DAT,IF2) EQUIVALENCE(IB,IAB) DATA BLANK/' '/,COMMA/','/ DATA ITST/' ','F','C','N','A','D','R'/ DATA ISH/0,12,9,4,0,5*0/ CALL ASSIGN(2,'MB:') CALL CRATT(2,IQ) IF(IQ .EQ. 1) GO TO 1 WRITE(5,7050) 7050 FORMAT(' *** ERROR *** UNABLE TO ATTACH MB0:') GO TO 7000 1 WRITE(5,1003) 10 WRITE(5,1002) READ(5,1010,END=5000)IB DO 5 J = 1,80 IF(IB(81-J).NE. BLANK) GO TO 6 5 CONTINUE GO TO 150 !NO INPUT? REPEAT LAST FCNA 6 IB(82-J) = COMMA DO 50 J = 1,6 IF(IB(1) .EQ. ITST(J)) GO TO 51 50 CONTINUE GO TO 100 51 IB(1) = BLANK IF(IB(2) .EQ. '+') GO TO 70 GO TO (100,200,300,400,500,600),J 70 CONTINUE IFINC = J GO TO 150 100 CONTINUE IFINC = 0 DECODE(80,1000,IAB) IF,IC,IN,IA,DATA 150 CONTINUE GO TO (160,154,153,152,151,155) IFINC GO TO 160 151 IA = IA + 1 IF(IA .LE. 15) GO TO 160 IA = 0 152 IN = IN + 1 IF(IN .LE. 31) GO TO 160 IN = 0 153 IC = IC + 1 IF(IC .LE. 7) GO TO 160 IC = 0 154 IF = IF + 1 IF(IF .LE. 31) GO TO 160 IF = 0 GO TO 160 155 DATA = DATA + 1 160 CONTINUE WRITE(5,1007) IF,IC,IN,IA IF(IF .LT. 0 .OR. IF .GT. 31) GO TO 6000 !IF TRUE DATA IS BAD IF(IC .LT. 0 .OR. IC .GT. 7) GO TO 6000 IF(IN .LT. 0 .OR. IN .GT. 31) GO TO 6000 IF(IA .LT. 0 .OR. IA .GT. 15) GO TO 6000 CALL FCNA(2,IF,IC,IN,IA,DATA,IQ,IX) !EXECUTE THE FUNCTION IF(IQ .LT. 0 .OR. IQ .GT. 1) GO TO 7000 !IF .TRUE. BAD MIOP CALL CONTINUE IF(IAND(IF,8) .EQ. 8) WRITE(5,1004) IQ,IX !WRITE CTRL RESULT IF(IF .LT. 8) WRITE(5,1005) DATA ,IQ,IX !WRITE READ RESULT IF(IF .GE. 16 .AND. IF.LT. 24) WRITE(5,1006) DATA,IQ,IX !WRITE RESULT GO TO 10 200 CONTINUE DECODE(80,1000,IAB) IF GO TO 150 300 CONTINUE DECODE(80,1000,IAB) IC GO TO 150 400 CONTINUE DECODE(80,1000,IAB) IN GO TO 150 500 CONTINUE DECODE(80,1000,IAB) IA GO TO 150 600 CONTINUE DECODE(80,1011,IAB) DATA GO TO 150 700 CONTINUE GO TO 150 5000 CALL EXIT 6000 WRITE(5,1009) GO TO 1 7000 CONTINUE !BAD MIOP CALL IF(IQ .EQ. "372) WRITE(5,7001) !.SPC IF(IQ .EQ. "377) WRITE(5,7002) !.BAD IF(IQ .EQ. "361) WRITE(5,7003) !.ABO IF(IQ .EQ. "360) WRITE(5,7004) !.PRI IF(IQ .EQ. "360) GO TO 1 !CONTINUE IF PRIVELEGE VIOLATION IF(IQ .EQ. "376) WRITE(5,7008) !IE.IFC IF(IQ .GT. 0) GO TO 7100 IQ = IAND(IQ,"377) !MASK ERROR WORD WRITE(5,7005) !DIRECTIVE REJECTED IF(IQ .EQ. "373) WRITE(5,7006) !IE.ULN IF(IQ .EQ. "372) WRITE(5,7007) !IE.HWR 7100 WRITE(5,1008)IQ,IX CALL EXIT 7001 FORMAT(' *** ERROR *** IE.SPC PROGRAM NOT IN PARTITION MBPAR') 7003 FORMAT(' *** ERROR *** IE.ABO I/O REQUEST ABORTED') 7002 FORMAT(' *** ERROR *** IE.BAD CORELOAD PROBABLY BAD') 7004 FORMAT(' *** ERROR *** IE.PRI CRATE ATTACHED BY OTHER USER') 7005 FORMAT(' *** ERROR *** DIRECTIVE REJECTED') 7006 FORMAT(' *** ERROR *** IE.ULN LOGICAL UNIT NOT ASSIGNED') 7007 FORMAT(' *** ERROR *** IE.HWR MB: DRIVER NOT RESIDENT') 7008 FORMAT(' *** ERROR *** IE.IFC BAD ASSIGNMENT OF LUN') 1000 FORMAT(4I10,2O20) 1003 FORMAT('1CAMAC TEST ROUTINE'//' INPUT:'/' #F,C,N,A,DATA ', 1 ' FCNA IN DECIMAL, DATA IN OCTAL'/ ' #F NN (CHANGE ONLY F)'/ 2 ' SIMILARLY #C NN - #N NN - #A NN - #D NN,MM ( TO CHANGE F,C,N,A 3,DATA)'/' NO INPUT = REPEAT LAST FCNA'/ 4 ' #A+ INCREMENT A EACH REPEAT' 5 ' #N+ INCREMENT N EACH REPEAT'/' Q,X 1=TRUE 0=FALSE'//) 1002 FORMAT('$#') 1004 FORMAT(' TEST ,Q ='I3' X ='I3) 1005 FORMAT(' READ 'O10,' Q='I3' X='I3) 1006 FORMAT(' WRITE'O10' Q=' I3' X='I3) 1007 FORMAT( 5I3) 1008 FORMAT(' ERROR CODES= '4O8/) 1009 FORMAT(//' *** ERROR *** ILLEGAL INPUT F,C,N,A OUT OF RANGE'/ 1 ' F=0-7 READ 8-15 CTRL 16-23 WRITE', 2 ' 24-31 CTRL'/ 3 ' C=0-7 CRATE NUMBER'/ 4 ' N=0-31 SLOT NUMBER'/ 5 ' A=0-16 SUBADDRESS'/) 1010 FORMAT(80A1) 1011 FORMAT(2O20) END