title: What is definition of %DMNORMIP and $ in SAS?
body: <p>I'm an R user and I'm trying to test the SAS code below in R. I think the code is pretty straightforward, except these two topics that are troubling me:</p>
  
  <p><strong>1.</strong> What does %DMNORMIP means?<br>
  <strong>2.</strong> What does $ do? </p>
  
      
  
  <pre><code>****************************************************************;
  ******             DECISION TREE SCORING CODE             ******;
  ****************************************************************;
  
  ******         LENGTHS OF NEW CHARACTER VARIABLES         ******;
  LENGTH I_BAD  $   12; 
  LENGTH _WARN_  $    4; 
  
  ******              LABELS FOR NEW VARIABLES              ******;
  label _NODE_ = 'Node' ;
  label _LEAF_ = 'Leaf' ;
  label P_BAD1 = 'Predicted: BAD=1' ;
  label P_BAD0 = 'Predicted: BAD=0' ;
  label Q_BAD1 = 'Unadjusted P: BAD=1' ;
  label Q_BAD0 = 'Unadjusted P: BAD=0' ;
  label I_BAD = 'Into: BAD' ;
  label U_BAD = 'Unnormalized Into: BAD' ;
  label _WARN_ = 'Warnings' ;
  
  
  ******      TEMPORARY VARIABLES FOR FORMATTED VALUES      ******;
  LENGTH _ARBFMT_12 $     12; DROP _ARBFMT_12; 
  _ARBFMT_12 = ' '; /* Initialize to avoid warning. */
  LENGTH _ARBFMT_7 $      7; DROP _ARBFMT_7; 
  _ARBFMT_7 = ' '; /* Initialize to avoid warning. */
  
  
  ******             ASSIGN OBSERVATION TO NODE             ******;
  IF  NOT MISSING(DEBTINC ) AND 
    DEBTINC  &lt;     45.1549076293408 THEN DO;
    IF  NOT MISSING(VALUE ) AND 
      VALUE  &lt;             491495.5 THEN DO;
      _ARBFMT_12 = PUT( DELINQ , BEST12.);
       %DMNORMIP( _ARBFMT_12);
      IF _ARBFMT_12 IN ('2' ,'4' ,'3' ,'5' ,'7' ) THEN DO;
        _ARBFMT_12 = PUT( DELINQ , BEST12.);
         %DMNORMIP( _ARBFMT_12);
        IF _ARBFMT_12 IN ('7' ) THEN DO;
          _NODE_  =                   16;
          _LEAF_  =                    1;
          P_BAD1  =                    1;
          P_BAD0  =                    0;
          Q_BAD1  =                    1;
          Q_BAD0  =                    0;
          I_BAD  = '1' ;
          U_BAD  =                    1;
          END;
        ELSE DO;
          IF  NOT MISSING(DEBTINC ) AND 
            DEBTINC  &lt;      19.590042161704 THEN DO;
            _NODE_  =                   26;
            _LEAF_  =                    2;
            P_BAD1  =                    1;
            P_BAD0  =                    0;
            Q_BAD1  =                    1;
            Q_BAD0  =                    0;
            I_BAD  = '1' ;
            U_BAD  =                    1;
            END;
          ELSE DO;
            _NODE_  =                   27;
            _LEAF_  =                    3;
            P_BAD1  =     0.18145161290322;
            P_BAD0  =     0.81854838709677;
            Q_BAD1  =     0.18145161290322;
            Q_BAD0  =     0.81854838709677;
            I_BAD  = '0' ;
            U_BAD  =                    0;
            END;
          END;
        END;
      ELSE DO;
        _ARBFMT_12 = PUT( DEROG , BEST12.);
         %DMNORMIP( _ARBFMT_12);
        IF _ARBFMT_12 IN ('3' ,'2' ,'4' ,'6' ) THEN DO;
          IF  NOT MISSING(CLNO ) AND 
                            34.5 &lt;= CLNO  THEN DO;
            _NODE_  =                   29;
            _LEAF_  =                    5;
            P_BAD1  =                    1;
            P_BAD0  =                    0;
            Q_BAD1  =                    1;
            Q_BAD0  =                    0;
            I_BAD  = '1' ;
            U_BAD  =                    1;
            END;
          ELSE DO;
            _NODE_  =                   28;
            _LEAF_  =                    4;
            P_BAD1  =                 0.21;
            P_BAD0  =                 0.79;
            Q_BAD1  =                 0.21;
            Q_BAD0  =                 0.79;
            I_BAD  = '0' ;
            U_BAD  =                    0;
            END;
          END;
        ELSE DO;
          IF  NOT MISSING(CLNO ) AND 
            CLNO  &lt;                  2.5 THEN DO;
            IF  NOT MISSING(YOJ ) AND 
                                 2 &lt;= YOJ  THEN DO;
              _NODE_  =                   39;
              _LEAF_  =                    7;
              P_BAD1  =                    1;
              P_BAD0  =                    0;
              Q_BAD1  =                    1;
              Q_BAD0  =                    0;
              I_BAD  = '1' ;
              U_BAD  =                    1;
              END;
            ELSE DO;
              _NODE_  =                   38;
              _LEAF_  =                    6;
              P_BAD1  =      0.1025641025641;
              P_BAD0  =     0.89743589743589;
              Q_BAD1  =      0.1025641025641;
              Q_BAD0  =     0.89743589743589;
              I_BAD  = '0' ;
              U_BAD  =                    0;
              END;
            END;
          ELSE DO;
            _NODE_  =                   31;
            _LEAF_  =                    8;
            P_BAD1  =     0.04780206581791;
            P_BAD0  =     0.95219793418208;
            Q_BAD1  =     0.04780206581791;
            Q_BAD0  =     0.95219793418208;
            I_BAD  = '0' ;
            U_BAD  =                    0;
            END;
          END;
        END;
      END;
    ELSE DO;
      _ARBFMT_12 = PUT( NINQ , BEST12.);
       %DMNORMIP( _ARBFMT_12);
      IF _ARBFMT_12 IN ('1' ,'0' ) THEN DO;
        _NODE_  =                   10;
        _LEAF_  =                    9;
        P_BAD1  =                    1;
        P_BAD0  =                    0;
        Q_BAD1  =                    1;
        Q_BAD0  =                    0;
        I_BAD  = '1' ;
        U_BAD  =                    1;
        END;
      ELSE DO;
        _NODE_  =                   11;
        _LEAF_  =                   10;
        P_BAD1  =                  0.4;
        P_BAD0  =                  0.6;
        Q_BAD1  =                  0.4;
        Q_BAD0  =                  0.6;
        I_BAD  = '0' ;
        U_BAD  =                    0;
        END;
      END;
    END;
  ELSE DO;
    _ARBFMT_12 = PUT( DELINQ , BEST12.);
     %DMNORMIP( _ARBFMT_12);
    IF _ARBFMT_12 IN ('2' ,'1' ,'6' ,'4' ,'3' ,'5' ,'7' ) THEN DO;
      IF  NOT MISSING(CLAGE ) AND 
            345.933333333333 &lt;= CLAGE  THEN DO;
        _NODE_  =                   13;
        _LEAF_  =                   12;
        P_BAD1  =     0.27272727272727;
        P_BAD0  =     0.72727272727272;
        Q_BAD1  =     0.27272727272727;
        Q_BAD0  =     0.72727272727272;
        I_BAD  = '0' ;
        U_BAD  =                    0;
        END;
      ELSE DO;
        _NODE_  =                   12;
        _LEAF_  =                   11;
        P_BAD1  =     0.83755274261603;
        P_BAD0  =     0.16244725738396;
        Q_BAD1  =     0.83755274261603;
        Q_BAD0  =     0.16244725738396;
        I_BAD  = '1' ;
        U_BAD  =                    1;
        END;
      END;
    ELSE DO;
      IF  NOT MISSING(CLAGE ) AND 
            178.100666666666 &lt;= CLAGE  THEN DO;
        IF  NOT MISSING(YOJ ) AND 
          YOJ  &lt;                  5.4 THEN DO;
          _NODE_  =                   24;
          _LEAF_  =                   16;
          P_BAD1  =      0.5045045045045;
          P_BAD0  =     0.49549549549549;
          Q_BAD1  =      0.5045045045045;
          Q_BAD0  =     0.49549549549549;
          I_BAD  = '1' ;
          U_BAD  =                    1;
          END;
        ELSE DO;
          IF  NOT MISSING(VALUE ) AND 
                           34050 &lt;= VALUE  THEN DO;
            _NODE_  =                   37;
            _LEAF_  =                   18;
            P_BAD1  =      0.1988950276243;
            P_BAD0  =     0.80110497237569;
            Q_BAD1  =      0.1988950276243;
            Q_BAD0  =     0.80110497237569;
            I_BAD  = '0' ;
            U_BAD  =                    0;
            END;
          ELSE DO;
            _NODE_  =                   36;
            _LEAF_  =                   17;
            P_BAD1  =                 0.75;
            P_BAD0  =                 0.25;
            Q_BAD1  =                 0.75;
            Q_BAD0  =                 0.25;
            I_BAD  = '1' ;
            U_BAD  =                    1;
            END;
          END;
        END;
      ELSE DO;
        IF  NOT MISSING(VALUE ) AND 
                       20665.5 &lt;= VALUE  THEN DO;
          _ARBFMT_7 = PUT( JOB , $7.);
           %DMNORMIP( _ARBFMT_7);
          IF _ARBFMT_7 IN ('OTHER' ,'OFFICE' ,'SALES' ,'MGR' ,'PROFEXE' ,
          'SELF' ) THEN DO;
            _NODE_  =                   34;
            _LEAF_  =                   14;
            P_BAD1  =     0.64634146341463;
            P_BAD0  =     0.35365853658536;
            Q_BAD1  =     0.64634146341463;
            Q_BAD0  =     0.35365853658536;
            I_BAD  = '1' ;
            U_BAD  =                    1;
            END;
          ELSE DO;
            _NODE_  =                   35;
            _LEAF_  =                   15;
            P_BAD1  =     0.19230769230769;
            P_BAD0  =      0.8076923076923;
            Q_BAD1  =     0.19230769230769;
            Q_BAD0  =      0.8076923076923;
            I_BAD  = '0' ;
            U_BAD  =                    0;
            END;
          END;
        ELSE DO;
          _NODE_  =                   22;
          _LEAF_  =                   13;
          P_BAD1  =     0.95652173913043;
          P_BAD0  =     0.04347826086956;
          Q_BAD1  =     0.95652173913043;
          Q_BAD0  =     0.04347826086956;
          I_BAD  = '1' ;
          U_BAD  =                    1;
          END;
        END;
      END;
    END;
  
  ****************************************************************;
  ******          END OF DECISION TREE SCORING CODE         ******;
  ****************************************************************;
  </code></pre>
  
  <p>I couldn't find the answer in the SAS website.</p>