* * $Id: fmgvol.F,v 1.1.1.1 1996/03/07 15:18:15 mclareni Exp $ * * $Log: fmgvol.F,v $ * Revision 1.1.1.1 1996/03/07 15:18:15 mclareni * Fatmen * * #include "fatmen/pilot.h" SUBROUTINE FMGVOL(GENAM,LFAT,KEYS,CHLIB,CHPOOL,CHFREE,CHOPT,IRC) CHARACTER*(*) GENAM CHARACTER*(*) CHLIB, CHPOOL, CHFREE CHARACTER*6 CHVSN, CHVID #include "fatmen/fmnkeys.inc" DIMENSION KEYS(LKEYFA) #include "fatmen/fatbank.inc" #include "fatmen/fatpara.inc" #include "fatmen/fatopts.inc" * * Get a tape volume that has at least NFREE megabytes from pool * CHPOOL. If no volume exists in this pool with enough space, a * volume is allocated from the pool CHFREE. * IRC = 0 LGN = LENOCC(GENAM) IF(LFAT.EQ.0) THEN CALL FMGETK(GENAM(1:LGN),LBANK,KEYS,IRC) IF(IRC.NE.0) THEN WRITE (LPRTFA,*) 'FMGVOL. Return code ',IRC,' from FMGETK' RETURN ENDIF LBANK = LBANK + KOFUFA ELSEIF(LFAT.EQ.-1) THEN CALL FMUPKY(GENAM(1:LGN),LADDBK,KEYS,IRC) LBANK = LADDBK + KOFUFA ELSE IF(IDEBFA.GE.0) WRITE(LPRTFA,* ) + 'FMGVOL. Enter for user-supplied bank at address ',LFAT LBANK = LFAT + KOFUFA ENDIF NFREE = IQ(LBANK+MFSZFA) IMEDIA = IQ(LBANK+MMTPFA) IF(NFREE.LE.0) THEN IRC = 4 IF(IDEBFA.GE.-3) PRINT *,'FMGVOL. error - file size must '// + 'be set to a positive integer before calling this routine' GOTO 99 ENDIF * * Now try to get volume * CALL FMGVID(NFREE,IMEDIA,CHLIB,CHPOOL,CHFREE,CHVSN,CHVID,IFILE, + CHOPT,IRC) * * Update bank with volume information if successful * CALL VBLANK(IQ(LBANK+MVSNFA),2) CALL VBLANK(IQ(LBANK+MVIDFA),2) IF(IRC.EQ.0) THEN IQ(LBANK+MFSQFA) = IFILE CALL UCTOH(CHVSN,IQ(LBANK+MVSNFA),4,NVSNFA) CALL UCTOH(CHVID,IQ(LBANK+MVIDFA),4,NVIDFA) ENDIF 99 CONTINUE END