The user may prepare an input file to Merlin, containing commands that are to be executed sequentially. This however is a static, rather than a dynamic way of using Merlin. A more efficient way is to use it interactively, entering the commands through a terminal. For example, one may realize during execution, that one of the implemented algorithms has a superior performance and so may decide to use it repeatedly, or (since Merlin commands are parametric), one may determine the values for the so called panel-parameters that seem to be most effective. On the other hand, this requires quite some time of on-line experimentation in front of a terminal which is highly undesirable.
MCL is built to deal primarily with this problem. It is a comprehensive and easy to learn language that controls Merlin dynamically, in the same way a user would from a terminal, yet it does not require the user's attention or intervention. MCL supports branching structures, arithmetic operations, and other features described in detail in this article. To make this possible, we constructed the MCL-compiler and we added to Merlin an appropriate "interface" package of subroutines that perform the additional necessary procedures required by the language. The MCL object code (MOC) is input to Merlin and dictates its execution at run-time. For immediate use of MCL, one needs to be familiar with the Merlin optimization system, at the user level.