FTN4 INTEGER FUNCTION ICRLU(NUMB),. 92080-1X015 REV.2026 800515 C C SOURCE 92080-18015 C C C C ************************************************************** C * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. ALL RIGHTS * C * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * C * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * C * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * C ************************************************************** C C C ************************************************************** C * * C * THIS FUNCTION RETURNS THE FOLLOWING VALUES: * C * * C * IF NUMB = -(DISC LU) -----> ICRLU = CARTRIDGE # * C * IF NUMB = CARTRIDGE # -----> ICRLU = DISC LU * C * IF NUMB = 0 -----> ICRLU = 1ST CARTRIDGE # * C * IF ANY ERROR (UNDEF..) -----> ICRLU = -1 (IF NOT MOUNTED) * C * ICRLU = -2 (IF CR LOCKED, * C * LOCK NOT 0 OR 77777B)* C * * C ************************************************************** C C DIMENSION IDCB(128),IREG(2) INTEGER AREG,BREG EQUIVALENCE (REG,IREG,AREG),(IREG(2),BREG) LOGICAL ISBTW C C-----IF NUMB NEGATIVE #, 1 < -(NUMB) < 64 ? C IF(NUMB.GE.0) GOTO 100 IF(ISBTW(-NUMB,2,63)) GOTO 300 C C-----READ CARTRIDGES DIRECTORY TABLE C 100 CALL FSTAT(IDCB) IF(NUMB.GT.0) GOTO 400 IF(NUMB.NE.0) GOTO 150 I=1 GOTO 160 C C-----SEARCH A CARTRIDGE NUMBER FROM A LU NUMBER C 150 DO 200 I=1,121,4 IF(IDCB(I).EQ.0) GOTO 300 IF(IDCB(I).NE.-NUMB) GOTO 200 160 ICRLU=IDCB(I+2) 180 IF( IDCB(I+3).NE.0 .AND. IDCB(I+3).NE.77777B ) GOTO 350 RETURN 200 CONTINUE C-----ERROR = -1, CARTRIDGE NOT MOUNTED 300 ICRLU=-1 RETURN C-----ERROR = -2, CARTRIDGE LOCKED 350 ICRLU=-2 RETURN C C-----SEARCH AN LU NUMBER FROM A CR NUMBER C 400 DO 500 I=1,121,4 IF(IDCB(I).EQ.0) GOTO 300 IF(IDCB(I+2).EQ.NUMB) GOTO 600 500 CONTINUE GOTO 300 600 ICRLU=IDCB(I) GOTO 180 END END$