The HPNLMOD Procedure

Programming Statements

Programming statements define the arguments of the MODEL, ESTIMATE, and PREDICT statements in PROC HPNLMOD. Most of the programming statements that can be used in the SAS DATA step can also be used in the HPNLMOD procedure. See SAS Language Reference: Concepts for a description of SAS programming statements. The following are valid programming statements:

ABORT;
CALL name [ ( expression [, expression …] ) ];
DELETE;
DO[variable = expression
[TO expression] [BY expression]
[, expression [ TO expression] [ BY expression ] …]
]
[ WHILE expression ] [ UNTIL expression ] ;
END;
GOTO statement_label;
IF expression;
IF expression THEN program_statement;
ELSE program_statement;
variable = expression;
variable + expression;
LINK statement_label;
PUT [variable] [=] [...];
RETURN;
SELECT[(expression)];
STOP;
SUBSTR( variable, index, length )= expression;
WHEN (expression) program_statement;
OTHERWISE program_statement;

For the most part, the SAS programming statements work the same as they do in the SAS DATA step, as documented in SAS Language Reference: Concepts. However, they differ as follows:

  • The ABORT statement does not allow any arguments.

  • The DO statement does not allow a character index variable. Thus, the first of the following statements is supported, but the second is not:

    do i = 1,2,3;
    
    do i = 'A','B','C';
    

  • In contrast to other procedures that share PROC HPNLMOD’s programming syntax, PROC HPNLMOD does not support the LAG function. Because observations are not processed sequentially when high-performance analytical procedures perform the parameter optimization, information for computing lagged values is not available.

  • The PUT statement, used mostly for program debugging in PROC HPNLMOD, supports only some of the features of the DATA step PUT statement, and it has some new features that the DATA step PUT statement does not have:

    • The PROC HPNLMOD PUT statement does not support line pointers, factored lists, iteration factors, overprinting, _INFILE_, the colon (:) format modifier, or $.

    • The PROC HPNLMOD PUT statement supports expressions, but the expression must be enclosed in parentheses. For example, the following statement displays the square root of x:

             put  (sqrt(x));
      
      
    • The PROC HPNLMOD PUT statement supports the item _PDV_, which displays a formatted listing of all variables in the program. For example, the following statement displays a much more readable listing of the variables than the _ALL_ print item:

             put _pdv_;
      
      
  • The WHEN and OTHERWISE statements enable you to specify more than one programming statement. That is, DO/END groups are not necessary for multiple WHEN statements. For example, the following syntax is valid:

    select;
       when (exp1) stmt1;
                   stmt2;
       when (exp2) stmt3;
                   stmt4;
    end;
    

When you code your programming statements, avoid defining variables that begin with an underscore (_) because they might conflict with internal variables that are created by PROC HPNLMOD. The MODEL statement must come after any SAS programming statements that define or modify terms that are used to specify the model.