*COMDECK  IF
          TITLE  IF 
**        IF     PROCESS IF AND IFE 
* 
*         IFE AND IF ARE TWO NAMES FOR THE SAME VERB
* 
  
 IF2      BSS 
          MX7    0
          SA7    IACICF      CLEAR INTERACTIVE CALL FLAG
          SX6    1
          SA6    PROCESS     IFE
          RJ     =XCCLEVX    EVALUATE EXPRESSION
          NZ     X5,EXIT2    EXIT IF INVALID EXPRESSION 
  
 OSNOSBE  IFNE   HOST,SC2 
          SA3    ANSSEP 
          SX6    X3-1R) 
          ZR     X6,IF4      SINGLE STATEMENT IF
          SX0    X3-1R. 
          ZR     X0,IF4            SINGLE STATEMENT IF
  
 OSNOSBE  ENDIF 
          RJ     =XCCLLAB    GET LABEL
  
*         THE LABEL MUST BE PROCESSED BEFORE THE EXPRESSION VALUE 
*         IS CHECKED BECAUSE THE LABEL MAY BE ON THE NEXT CARD OF 
*         THE STATEMENT AND IF IT IS THEN THAT CARD MUST BE READ. 
  
 IF2.1    BSS 
          SA4    EXPCHR 
          NZ     X4,EXIT     IF NON-NULL STRING - TRUE
          SA4    EXPVAL 
          NZ     X4,EXIT     EXIT IF EXPRESSION TRUE
          NG     X4,EXIT     MINUS ZERO IS ALSO TRUE
  
          SA3    =0LELSEIF
          SX7    B0+
          SA4    =0LELSE
          BX6    X3 
          SA7    TERMT+3     INDICATE END OF TERMINATORS
          BX7    X4 
          SA6    TERMT+2     STORE ELSEIF AS TERMINATOR 
          SA7    TERMT+1     STORE ELSE AS SKIP TERMINATOR
  
 IF3      BSS 
          SA2    =0LENDIF 
          BX7    X2 
          SA7    TERMT       STORE ENDIF AS TERMINATOR
          RJ     CSP         SKIP TO LABEL
  
          SA1    ANSVRB 
          SA2    =0LELSEIF
          BX3    X1-X2
          ZR     X3,IF2.1    IF ELSEIF CHECK EXPRESSION 
  
          JP     EXIT        PROCESS NEXT COMMAND 
  
  
 OSNOSBE  IFNE   HOST,SC2 
 IF4      BSS    0
          SA4    EXPCHR 
          NZ     X4,IF5            IF NON-NULL STRING - TRUE
          SA4    EXPVAL 
          NZ     X4,IF5            EXPRESSION TRUE
          NG     X4,IF5            MINUS ZERO ALSO TRUE 
          JP     EXIT              EXIT IF FALSE
  
 IF5      BSS    0
          SB1    1
          ERRNZ  S.SBCUR-N.SBCUR+1
          SA1    W.RACS      PACK NEW STATEMENT INTO RA+70
          SA2    SCATBF1     CREATE NEW HEADER
          SB3    X2          CURRENT CHARACTER
          AX2    S.SBTOT-N.SBTOT+1
          SB7    X2          TOTAL CHARACTERS 
          SB2    B7-B3       SIZE OF NEW STATEMENT
          SX7    B2 
          LX7    S.SBTOT-N.SBTOT+1
          SA7    A2+B3       NEW HEADER - NEW LOCATION
          SA2    A7 
          RJ     =XSTRPKS 
  
          EXCST  W.RACS            ISSUE CONTROL STATEMENT
  
 OSNOSBE  ENDIF 
