S U B R O U T I N E D A L U P D C ================================= C C C COMPONENT: DALUPD -- UPDATE VOLUME ALLOCATION ENTRY(S) C --------- C C DATE: 27-NOV-79 C ---- C C AUTHOR: GR JOHNSON C ------ BATTELLE NORTHWEST C P O BOX 999 C RICHLAND WA 99352 C C SOURCE: FORTRAN IV-PLUS C ------ C C REVISIONS: 08-FEB-80 GR JOHNSON LOCK & UNLOCK QUALIFIERS C --------- AUDIT UPDATED VAF ENTRIES C C C C DESCRIPTION: C ----------- C C ROUTINE "DALUPD" UPDATES ENTRIES IN THE VOLUME ALLOCATION FILE C BEFORE PASSING CONTROL TO THE ALLOCATION AUDIT ROUTINE ("DALADT"). C C THE VOLUME TO BE UPDATED IS SPECIFIED BY INITIALIZING VARIABLES C "VAFDEV" AND "VAFUNT" IN THE COMMON BLOCK "VAFILE". A SPECIFIC USER C DIRECTORY MAY BE SPECIFIED BY INITIALIZING THE VARIABLE "VAFUIC". C IF THE USER DIRECTORY ARGUMENT IS NOT INITIALIZED, ALLOCATION LIMITS C WILL BE UPDATED FOR ALL ENTRIES IN THE VOLUME ALLOCATION FILE. C C THE VOLUME DEFAULT ALLOCATION LIMIT MAY BE UPDATED BY INITIATING C THE ROUTINE VIA THE "UPDDEF" ENTRY POINT. C C AUTOMATIC LOCKING/UNLOCKING OF THE UFD AND ANY ASSOCIATED ACCOUNTS C MAY BE OVERRIDDEN BY INITIATING THE ROUTINE VIA THE "UPDLOK" OR "UPDUNL" C ENTRY POINT. C C THE ALLOCATION LIMIT IS SPECIFIED BY INITIALIZING VARIABLE "VAFLIM" C IN THE COMMON BLOCK "VAFILE". C C C G L O B A L P A R A M E T E R S A N D V A R I A B L E S C ============================================================= C C C INCLUDE 'VAFILE.COM/NOLIST' C C C L O C A L P A R A M E T E R S A N D V A R I A B L E S C =========================================================== C C C PARAMETER VAFLUN = 1 ! VAFILE LUN PARAMETER TTYLUN = 5 ! TTY I/O LUN C LOGICAL ALL ! UPDATE ALL LOGICAL DEF ! UPDATE DEFAULT LOGICAL LOK ! UPDATE AND LOCK LOGICAL UNL ! UPDATE AND UNLOCK C INTEGER DALUIC ! SPECIFIED USER DIRECTORY INTEGER*4 DALLIM ! SPECIFIED ALLOCATION LIMIT C C C I N I T I A L I Z A T I O N C =========================== C C C C "UPDATE" ENTRY POINT -- SET FLAGS C 10 DEF=.FALSE. LOK=.FALSE. UNL=.FALSE. C GO TO 1002 C C C C "LOCK" ENTRY POINT -- SET FLAGS C ENTRY UPDLOK C DEF=.FALSE. LOK=.TRUE. UNL=.FALSE. C GO TO 1002 C C C C "UNLOCK" ENTRY POINT -- SET FLAGS C ENTRY UPDUNL C DEF=.FALSE. LOK=.FALSE. UNL=.TRUE. C GO TO 1002 C C C C "DEFAULT" ENTRY POINT -- SET FLAGS C ENTRY UPDDEF C DEF=.TRUE. LOK=.FALSE. UNL=.FALSE. C C C C SET "ALL" FLAG IF SPECIFIC UFD NOT REQUESTED C 1002 DALUIC=VAFUIC ALL=DALUIC.EQ.0 C C C C INITIALIZE LOCAL UFD LIMIT BUFFER C DALLIM=VAFLIM C IF(LOK.AND.(DALLIM.EQ.VAFNDF)) GO TO 3004 IF(UNL.AND.(DALLIM.EQ.VAFNDF)) GO TO 3006 C C C U P D A T E V O L U M E A L L O C A T I O N E N T R Y ( S ) C ================================================================= C C C C ASSIGN LOGICAL UNIT C 20 CALL ASNLUN(VAFLUN,VAFDEV,VAFUNT) C C C C OPEN VOLUME ALLOCATION FILE C CALL NOLOCK(VAFLUN) C 2002 OPEN( UNIT=VAFLUN, 2 NAME=VAFFNM, 3 TYPE='OLD', 4 ACCESS='DIRECT',RECORDSIZE=2, 5 SHARED, 6 ERR=2004) C READ(VAFLUN'1,ERR=90200) VAFDEF GO TO 2006 C 2004 CALL ERRSNS(ISW,IFCS) IF(ISW.EQ.29) GO TO 90000 IF(ISW.NE.30) GO TO 90100 IF(IFCS.NE.-27.AND.IFCS.NE.-29) GO TO 90100 CALL WAIT(1,2,ISW) GO TO 2002 C C C C UPDATE VOLUME DEFAULT AND RETURN (IF REQUESTED) C 2006 IF(.NOT.DEF) GO TO 2008 C IF(DALLIM.NE.VAFDFL) DEFLIM=DALLIM C WRITE(VAFLUN'1,ERR=90300) VAFDEF C GO TO 2014 C C C C SCAN AND UPDATE VOLUME ALLOCATION FILE C 2008 IF(DALLIM.EQ.VAFDFL) DALLIM=DEFLIM C DO 2010 VAFPNT=VAFFRP,VAFLRP READ(VAFLUN'VAFPNT,ERR=90200) VAFREC C IF((.NOT.ALL).AND.(VAFUIC.NE.DALUIC)) GO TO 2010 C VAFLIM=DALLIM WRITE(VAFLUN'VAFPNT,ERR=90300) VAFREC C IF(.NOT.ALL) GO TO 2014 C 2010 CONTINUE C IF(ALL) GO TO 2014 C C C C OUTPUT WARNING MESSAGE -- (SPECIFIED VAF ENTRY NOT FOUND) C WRITE(TTYLUN,2012) 2012 FORMAT(' VAF entry not found') C C C C CLOSE VOLUME ALLOCATION FILE C 2014 CLOSE(UNIT=VAFLUN) C C C C "AUDIT" UPDATED USER DIRECTORIES AND RETURN TO CALLER C 30 VAFUIC=DALUIC C IF(DEF) RETURN IF(LOK) GO TO 3004 IF(UNL) GO TO 3006 C 3002 CALL ADTUPD RETURN C 3004 CALL ADTLOK RETURN C 3006 CALL ADTUNL RETURN C C C P R O C E S S F A T A L E R R O R S C ======================================= C C C 90000 WRITE(TTYLUN,90001) 90001 FORMAT(' Volume not initialized for directory allocation'/) CALL EXIT C 90100 WRITE(TTYLUN,90101) 90101 FORMAT(' DAL -- VAF open error'/) CALL EXIT C 90200 WRITE(TTYLUN,90201) 90201 FORMAT(' DAL -- VAF read error'/) CALL EXIT C 90300 WRITE(TTYLUN,90301) 90301 FORMAT(' DAL -- VAF write error'/) CALL EXIT C C END