ACCESS
.PROC,ACCESS*I, 
FILE    ' NAME OF FILE TO ACCESS               '
          =(GLOBLIB,PRODUCT,DAYFILS,JOBSTAT,DIRFILE), 
M       ' FILE ACCESS MODE/OPTION              '
          =(R,W,CREATE,RETURN,RESET,*N=R),
*CALL COMPROC 
. 
*IF,DEF,PDOC
.HELP 
  
THIS PROCEDURE IS USED TO CONTROL ALL PERMANENT FILE ACCESS TO
FILES WHICH MUST BE KEPT SEPARATE IF DIFFERENT BUILDS ARE TO
EXECUTE SIMULTANEOUSLY.  THE CURRENT LIST OF FILES WHICH MUST BE
HANDLED IN THIS WAY ARE *DAYFILS*, *JOBSTAT*, *PRODUCT*, *DIRFILE*, AND 
*GLOBLIB*. (*GLOBLIB* INCLUDES THE FILES *GLOBLIB*,*GLOBLOC*,*GLOBOLD*, 
AND *GLOBTMP*.)(WHICH FILE TO ACCESS IS DETERMINED BY THE *FILE*
PARAMETER.) (FILES PRODUCT, DAYFILS, AND DIRFILE ARE HANDLED SIMILARLY) 
 THE *M* PARAMETER IS NOT USED FOR ALL OF THE FILES, ONLY FOR THOSE 
WHERE IT IS APPLICABLE.  THE NAMES FOR THESE FILES ARE BASED ON THE 
VALUE OF THE R1G GLOBAL CCL REGISTER.  WHEN R1G IS ZERO, THE DEFAULT
NAMES FOR THE FILES ARE USED.  WHEN R1G IS NON-ZERO ITS VALUE IS
INCLUDED IN THE FILE NAME.  R1G MUST BE NUMERIC AND CAN BE UP TO THREE
DIGITS LONG.  IN THIS PROCEDURE R1G IS MADE USABLE BY PASSING IT TO THE 
PROCEDURE *CONVERT* IN THE *MFT* PARAMETER.  REFER TO THE 
PROCEDURE CALLS IN PROC *CONVERT* TO SEE THE NAMES FOR THE FILES
IF R1G IS NON-ZERO.  HELPER PROCEDURES *ACCGLOB*, *ACCPROD*, *ACCDIRF*, 
*ACCDAYF*, AND *ACCJOBS* ARE USED.  THE STEPS INVOLVED IN 
ACCESSING GLOBLIB AND PRODUCT ARE OUTLINED BELOW. 
  
1. CALL *CONVERT* TO CONVERT R1G INTO THE USABLE PARAMETER *MFT*. 
  
2.  *CONVERT* WILL CALL A HELPER PROCEDURE BASED ON THE VALUE OF
THE *FILE* PARAMETER.  IF R1G IS NON-ZERO THEN THE CALL WILL
SPECIFY THE SPECIAL FORMAT FOR THE PERMANENT FILE NAMES.  IF R1G
IS ZERO THEN THE DEFAULT FILE NAME FORMAT WILL BE USED.  THE
*M* PARAMETER IS PASSED DIRECTLY TO THE HELPER PROCEDURES.
( ANY INVALID VALUES FOR *M* WILL BE CAUGHT BY THE CCL CHECKLISTS OF
EACH HELPER PROCEDURE, EG. THE CHECKLISTS IN ACCGLOB AND ACCPROD
WILL NOT ALLOW M=RESET WHICH IS ONLY ALLOWED FOR ACCDAYF AND ACCJOBS.)
WHENEVER M=W IS CALLED FOR GLOBLIB,DIRFILE,PRODUCT, AND DAYFILS,
ACCESS MUST BE CALLED WITH M=RETURN.
  
REFER TO THE HELP SECTION OF HELPER PROCS FOR MORE DETAILS. 
  
.ENDHELP
*ENDIF
  
REVERT(EX)CONVERT(MFT=R1G+) 
  
EXIT. ACCESS
.* SHOULD NOT GET HERE UNLESS THERE IS A PROBLEM EXPANDING *CONVERT*
REVERT(ABORT)ACCESS 
  
.DATA,CONVERT 
.PROC,CONVERT*I,MFT=(*S3(0123456789)).
.*
.* THIS TEST AGAINST R1G IS USED TO SEE IF THE HELPER PROCEDURES SHOULD 
.* BE CALLED WITH DEFAULT FILE NAMES OR WITH FILE NAMES BASED ON THE
.* *MFT* PARAMETER VALUE. 
.* ( R1G IS USED INSTEAD OF MFT BECAUSE THE .IF'S ARE PROCESSED WHEN
.* THE PROC *ACCESS* IS ENTERED, NOT WHEN THE PROC *CONVERT* IS ENTERED.
.*
.IF, ( R1G .NE. 0 ) ,CONVERT10. 
  
  .* CALL THE PROCEDURES WITH FILE NAMES BASED ON *MFT* 
  
  .IF, ( $FILE$ .EQ. $PRODUCT$ ) ,CONVERT15.
    BEGIN(ACCPROD,INSTALL,#M=M,#PRODLOC=PLOC#_MFT,#PRODTMP=PTMP#_MFT, 
                          #PRODUCT=PROD#_MFT,#PRODOLD=POLD#_MFT)
  .ELSE(CONVERT15)
  .IF, ( $FILE$ .EQ. $GLOBLIB$ ) ,CONVERT15.
    BEGIN(ACCGLOB,INSTALL,#M=M,#GLOBLOC=LOCK#_MFT,#GLOBTMP=TEMP#_MFT, 
                          #GLOBLIB=GLIB#_MFT,#GLOBOLD=GOLD#_MFT)
  .ELSE(CONVERT15)
  .IF, ( $FILE$ .EQ. $DAYFILS$ ) ,CONVERT15.
    BEGIN(ACCDAYF,INSTALL,#M=M,#DAYFLOC=DAYL#_MFT,#DAYFTMP=DAYT#_MFT, 
                          #DAYFILS=DAYF#_MFT,#DAYFOLD=DAYO#_MFT)
  .ELSE(CONVERT15)
  .IF, ( $FILE$ .EQ. $JOBSTAT$ ) ,CONVERT15.
    BEGIN(ACCJOBS,INSTALL,#M=M,#JOBSTAT=JOBS#_MFT)
  .ELSE(CONVERT15)
  .IF, ( $FILE$ .EQ. $DIRFILE$ ) ,CONVERT15.
    BEGIN(ACCDIRF,INSTALL,#M=M,#DIRFLOC=DIRL#_MFT,#DIRFTMP=DIRT#_MFT, 
                          #DIRFILE=DIRF#_MFT,#DIRFOLD=DIRO#_MFT)
  .ENDIF(CONVERT15) 
  
.ELSE(CONVERT10)
  
  .* CALL THE PROCEDURES AND ALLOW THE FILE NAMES TO DEFAULT. 
  
  .IF, ( $FILE$ .EQ. $PRODUCT$ ) ,CONVERT17.
    BEGIN(ACCPROD,INSTALL,#M=M) 
  .ELSE(CONVERT17)
  .IF, ( $FILE$ .EQ. $GLOBLIB$ ) ,CONVERT17.
    BEGIN(ACCGLOB,INSTALL,#M=M) 
  .ELSE(CONVERT17)
  .IF, ( $FILE$ .EQ. $DAYFILS$ ) ,CONVERT17.
    BEGIN(ACCDAYF,INSTALL,#M=M) 
  .ELSE(CONVERT17)
  .IF, ( $FILE$ .EQ. $JOBSTAT$ ) ,CONVERT17.
    BEGIN(ACCJOBS,INSTALL,#M=M) 
  .ELSE(CONVERT17)
  .IF, ( $FILE$ .EQ. $DIRFILE$ ) ,CONVERT17.
    BEGIN(ACCDIRF,INSTALL,#M=M) 
  .ENDIF(CONVERT17) 
  
.ENDIF(CONVERT10) 
  
REVERT(NOLIST) CONVERT
EXIT. CONVERT/ACCESS
REVERT(ABORT) CONVERT/ACCESS
*WEOR 
