*COMDECK IFM
#----------------------------------------------------------------------#
#                                                                      #
#     I F M                                                            #
#                                                                      #
# THIS PROC PROCESSES *IF* STATEMENTS.                                 #
#----------------------------------------------------------------------#
      PROC IFM (TRUEIF);
      BEGIN 
      ITEM TRUEIF B;           # TRUE IF -IF- IS TRUE  #
      ITEM REJ B; 
  
      B<0,60>PROGSTACKLOC = BASCADDR[BASTABIND];
      LOGICALRESLT = TRUE;
      EXPEVAL(RC);                 # EVALUATE EXPRESSION               #
      TRUEIF    = LOGICALRESLT; 
  
      IF DESPASS                   # IF EXPR CONTAINED DESCRIBED ITEM  #
      THEN
        BEGIN 
        RETURN;                    # EXIT BEFORE CALLS TO DBP-S        #
        END 
  
      IF LOGICALRESLT AND FILEPASS THEN 
        BEGIN 
        CHKMAT(REJ);                                                     CTL40
        IF REJ THEN TRUEIF = FALSE; 
        RETURN; 
        END 
      RELCALLOWN(ON"MISMATCH", RC);  # CALL *MISMATCH* DBP             #
      IF RC EQ 1 THEN              # IF SHOULD ACCEPT RECORD ANYWAY    #
        BEGIN 
        TRUEIF = TRUE;             # THE -IF- IS TRUE                  #
        OWNFORCD = OWNFORCD + 1;   # ONE MORE FORCED INTO ACCEPTED     #
        END 
      END  # IFM   #
