*COMDECK,FA=OPE 
          CTEXT  FA=OPE - OPEN FILE 
 OPE      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   FA=OPE 
  
  
**        FA=OPE - OPEN FILE. 
* 
*                OPENS A FILE, RELIABLY.  PREVENTS REDUNDANT OPEN 
*         ERRORS.  HONORS AND PRESERVES *PD*, *OF* AND *CF* IN FIT. 
* 
* 
*         ENTRY  (X2) = FIT ADDRESS 
* 
*         EXIT   (X2) = FIT ADDRESS 
* 
*         USES   X - 3, 6 
*                A - 3
*                B - 2
* 
*         SAVES  (A5), (X5) 
* 
*         CALLS  CLOSEM, FETCH, OPENM, SETFIT, STORE
  
  
 FA=OPE   JP     *+4S15      ** ENTRY/EXIT ** 
  
*         CHECK FILE OPEN/CLOSED STATUS.
  
          FETCH  X2,PD,X6,X3
          SB2    X6          TEMP SAVE *PD* (*SETFIT* WILL DESTROY) 
          SETFIT X2          FDT PARAMETERS TO FIT
          FETCH  X2,OC,X6,X3
          SX6    X6-#OPE# 
          NZ     X6,OPE2     IF FILE NOT OPEN 
  
*         HERE IF FILE LEFT OPEN BY PREVIOUS JOB STEP.  SOME ATTRIBUTES 
*         OF AN OPEN FILE, SUCH AS *PD*, CANNOT BE CHANGED, SO WE CLOSE 
*         IT FIRST (SIGH).
  
          FETCH  X2,CF,X6,X3 TEMP SAVE *CF* (*CLOSEM* WILL DESTROY) 
          CLOSEM X2,N 
          STORE  X2,CF=X6,X3
  
*         (RE)OPEN FILE.
  
 OPE2     SX6    B2 
          STORE  X2,PD=X6,X3
  
**        ** NASTY (TEMPORARY) KLUDGE ** FOLLOWS
  
          SA3    =XCO.REWI
          PL     X3,OPE5     IF REW OPTION NOT ON 
          SA3    =XF.IN 
          BX3    X3-X2
          SX3    X3 
          NZ     X3,OPE5     IF NOT FILE INPUT
          STORE  X2,OF=R
  
 OPE5     SA3    =XCO.REWB
          PL     X3,OPE6     IF REW OPTION NOT ON 
          SA3    =XF.LGO
          BX3    X3-X2
          SX3    X3 
          NZ     X3,OPE6     IF NOT FILE LGO
          STORE  X2,OF=R
  
**        END OF NASTY KLUDGE 
  
 OPE6     OPENM  X2 
          JP     FA=OPE      EXIT 
  
  
          IF     -DEF,QUAL$,2 
          QUAL   *
 FA=OPE   EQU    /FA=OPE/FA=OPE 
  
          IF     -ABS,FA=OPE,1
          ENTRY  FA=OPE 
  
          ENDX
