Define a set of statements as a procedural section

Syntax


procedural(<output variable list> = <input variable list>)

   <list of statements/equations>

end

Description


In certain cases, it may be necessary to override the default sorting logic used by the Magnolia translator.  This can happen, for instance, in models which make heavy use of array variables.  To force a particular sorting order, an collection of statements may be grouped in a ROCEDURAL section, where the input and output dependencies for the section of statements used by the sorting algorithm is set explicitly by the user.  The dependencies are specified by placing a comma-delimited list of dependent variable names on either side of the equal sign in the header of the PROCEDURAL statement.  Variables on the left of the equal size are considered output variables (i.e., calculated within the section code).  Values on the right side are considered input variables (i.e., inputs required by the equations within the section).  Either list may be empty to indicate a lack of input/output dependencies.  The PROCEDURAL section will be treated as a single statement for the purposes of sorting, and the order of statements/equations within the section will not be altered.

Example


procedural(x = a, k)

   for i = 1, 10

       x[i] = k*a[i]

   end

end