1. A method of generating procedural language code for extracting data from an operational system, the method comprising the steps of: accepting a declarative specification; and generating procedural language code from the declarative specification, to execute a data extraction, transformation and loading process defined by the declarative specification.