ACCPROD 
.PROC,ACCPROD*I"ACCESS PRODUCT FILE", 
M       ' ACCESS MODE     (R,W,CREATE,RETURN)  '=(R,W,CREATE,RETURN), 
PRODUCT ' PRODUCT FILE                         '=(*N=PRODUCT,*F), 
PRODTMP ' TEMPORARY PRODUCT FILE               '=(*N=PRODTMP,*F), 
PRODLOC ' LOCK OUT FILE                        '=(*N=PRODLOC,*F), 
PRODOLD ' BACKUP FILE                          '=(*N=PRODOLD,*F), 
*CALL COMPROC 
. 
*IF,DEF,PDOC
.HELP 
  
THIS PROCEDURE IS USED TO ACCESS THE FILE PRODUCT.  THE PERMANENT 
FILE NAME TO ATTACH IS PASSED IN FROM THE CALLING PROCEDURE *ACCESS*. 
THE LOCAL FILE NAME IS ALWAYS PRODUCT.
  
.HELP,M 
*R* ATTACHES PRODUCT IN READ MODE.
*W* ATTACHES PRODUCT IN WRITE MODE. 
*CREATE* PURGE FILE THEN DEFINE IT. 
*RETURN*
.ENDHELP
*ENDIF
  
*************** A C C P R O D ********************
  
.IF, ($M$ .EQ. $R$ ) ,ACCPROD10.
  
  ATTACH(#PRODUCT=PRODUCT)
  
.ELSE(ACCPROD10)
.IF, ( $M$ .EQ. $CREATE$ ) ,ACCPROD10.
  
  RETURN(#PRODLOC,#PRODUCT) 
  PURGE(PRODLOC/NA) 
  DEFINE(#PRODLOC=PRODLOC)
  PURGE(PRODUCT/NA) 
  DEFINE(#PRODUCT=PRODUCT/#M=R,CT=S)
  BEGIN(PERMIT,INSTALL,REALFN=PRODUCT,SYMFN=PRODUCT)
  
.ELSE(ACCPROD10)
.IF, ( $M$ .EQ. $W$ ) ,ACCPROD10. 
  
  ATTACH(#PRODLOC=PRODLOC/#M=W,WB)
  PURGE(PRODTMP/NA) 
  RETURN(#PRODTMP)
  DEFINE(#PRODTMP=PRODTMP/#M=R,CT=S)
  ATTACH(#PRODOLD=PRODUCT)
  
.ELSE(ACCPROD10)
  
  .* #M=RETURN
  PURGE(PRODOLD/NA) 
  RETURN(#PRODTMP,#PRODOLD) 
  CHANGE(PRODOLD=PRODUCT,PRODUCT=PRODTMP) 
  BEGIN(PERMIT,INSTALL,REALFN=PRODUCT,SYMFN=PRODUCT)
  PURGE(PRODOLD/NA) 
  RETURN(#PRODLOC)
  
.ENDIF(ACCPROD10) 
  
RETURN(CONVERT) 
  
REVERT. ACCPROD **********************************
EXIT. ACCPROD 
REVERT(ABORT) ACCPROD ****************************
*WEOR 
