*DECK     CLOSE2
          IDENT  CLOSE2 
          TITLE  CLOSE2 - PASS 2 END PROCESSING 
*CALL     SSTCALL 
          PASS2TM 
  
**        PS2CTL - END OF PASS 2 PROCESSING 
  
 PROGRAM  EQU    56B               PROGRAM/SUBPROGRAM INDICATOR 
  
 B=CLOS2  RPVDEF
  
          USE    // 
 F.MEM    BSS    101B 
          USE    0
  
 P2.FL    ENTRY. F.MEM       PASS 2 FL USED 
 PASS2    TITLE  PASS2 - ENTRY FROM OVERLAY LOADER
**        PASS2 - ENTRY TO PASS 2 FROM THE OVERLAY LOADER 
  
*         IF (BREAK=22) WAS SELECTED, ENTRY TO OVERLAY(2,2) WILL BE TO
*         *FTN22-1* TO CALL THE COMPILE-TIME INTERACTIVE DEBUG PACKAGE. 
  
 FTN22    BREAK 
  
          ENTRY  FTN22
 FTN22    BSS    0           ** LOADER ENTRY POINT ** 
 .T       IFNE   TEST,0 
          SA1    RPVPLG 
          BX7    X1 
          SA7    =XDMPTBL=   SET PLUG FOR REPRIEVE
 .T       ENDIF 
          SB1    1
          SA1    =XCP.AFLS
          BX6    X1 
          LX6    30 
          SA6    =XINT.P2M   INT.P2M = SHIFT(CP.AFLS,30)
 #OVL     IFEQ   .OVL,0 
          SA5    PROGRAM
          ZR     X5,PS2CTL4  IF A BLOCK DATA SUBPROGRAM 
          SA3    =XQFLAG
          NZ     X3,PS2CTL4  IF Q MODE SELECTED 
          SA1    =XN.FERR 
          ZR     X1,PS2CTL1  IF NO FATAL ERRORS 
          SA2    =XDFLAG
          ZR     X2,PS2CTL4  IF NOT DEBUG 
          SA3    =XP2NOGO 
          NZ     X3,PS2CTL4  IF NOT EXECUTING 
  
 PS2CTL1  BSS    0
 #OVL     ENDIF 
  
 #RM      IFEQ   CP#RM,0
          READ   =XF.RLST 
 #RM      ENDIF 
          CALL   PRE         PROCESS THE RLIST FILE 
  
          SA1    =XOPT2 
          ZR     X1,PS2CTL2  IF OPT2 = 0
          CALL   GPO         PERFORM GLOBAL OPTIMIZATION
  
 PS2CTL2  CALL   OTC         OUTPUT TERMINAL CODE 
  
 PS2CTL3  SA1    OPT2 
          ZR     X1,PS2CTL4  IF OPT2 = 0
  
*         CLOSE THE *OPT* FILE
  
 #RM      IFEQ   CP#RM,0
          SX6    1000B
          SA6    =XF.OPT+1
          SA6    A6+B1
          SA6    A6+B1
          LX6    1
          SA6    A6+B1
          EVICT  F.OPT,R
 #RM      ELSE
          CLOSEM =XFI.OPT,U 
 #RM      ENDIF 
  
 PS2CTL4  BSS    0
          CALL   AFL         ADJUST FL
 #OVL     IFEQ   .OVL,0 
          EQ     =XFTN25
 #OVL     ELSE
          LOVER  OVL25       LOAD AND EXECUTE PASS3 
 #OVL     ENDIF 
 EREXITS  SPACE  3,14 
**        PUNT - INSUFFICIENT MEMORY TO COMPILE 
  
 P2MO     DIS    ,*0PASS 2 MEMORY OVERFLOW AT SOURCE LINE  ..... IN ....
,...* 
 L.P2MO   =      *-P2MO 
  
 PUNT     ENTRY.
          BX6    X1 
          MX7    0
          SB1    1
          SA6    P2MO+5      FAILING ROUTINE NAME TO ERROR MSG TEXT 
          SA7    =XL.LOOP    NULLIFY THE LOOP TABLE 
          SA1    =XLINENR 
          CALL   CDD         RETURNS (X4) = LINE NR, DPC -H- FORMAT 
          SX6    2RIN&2R
          LX6    6
          BX7    X4-X6
          SA7    P2MO+4      *NNNNNN IN *   TO ERROR LINE 
          LISTL  P2MO,L.P2MO ERROR MESSAGE TO SOURCE LISTING FILE 
  
          IFEQ   TEST,0,1 
          MESSAGE  =XCOMPMSG,,R    *  COMPILING NAME *
  
          MESSAGE  (=C/    ** PASS 2 MEMORY OVERFLOW **/),,R
  
          ENTRY  PS2ABT 
 PS2ABT   SA2    =XN.FERR 
          SX7    X2+B1       FATAL ERROR COUNT + 1
          SA7    A2 
          EQ     PS2CTL3
  
 .T       IFNE   TEST,0,1 
 RPVPLG   RJ     =XPTC=      PLUG FOR REPRIEVE
  
          END 
