The module should return the likelihood value for a specified value of the parameters, given the data. The entire data set is used as input to the likelihood function, so it is not correct to say that the likelihood is evaluated "at each observation." Look at the article "Maximum likelihood estimation in SAS/IML" and see if that helps. Notice that the module takes a single argument, shich is the vector of parameters fr the model. The data are specified by using the GLOBAL clause.