ICL(ID:4930/icl002)

Interactive Control Language 


Interactive Control Language for the ADAM (Astronomical Data Acquisition Monitor) system. Originally VAX/VMS then ported to UNIX (?1992)

"ICL was written by Jeremy Bailey, working at the Anglo-Australian Observatory and subsequently at the Joint Astronomy Centre, Hilo. Responsibility for support has now passed to the ADAM Support Group, part of the Science and Engineering Research Council's Starlink Project at the Rutherford Appleton Laboratory"



References:
  • Pucillo, M.; Santin, P. "ICL: an user oriented interactive command language for data processing in astrophysics" Memorie della Societa Astronomia Italiana, Vol. 51, p.437 1980 view details
  • Bailey, J A and Chipperfield, A J "ICL: The Interactive Command Language for ADAM - User's Guide " Version 1.5-6 9th June 1998 CCLRC / Rutherford Appleton Laboratory Particle Physics & Astronomy Research Council view details Abstract: ICL is a language designed to provide a programmable user interface to an astronomical data reduction or data acquisition system. It is the primary user interface for the ADAM software environment. External link: Online copy
    Resources
    • What is ICL
      The Interactive Command Language (ICL) is a language designed to provide a programmable user interface to an astronomical data reduction or data acquisition system. It is the primary user interface for the ADAM software environment and its use with ADAM is described in Part II.

      ICL is in some ways similar to a high level programming language such as Fortran or Pascal, but it has some important differences.

      It is a command language. One of its main uses is to enable the typing of commands with few restrictions on the possible command format For example ICL can be used to run the FIGARO data reduction system and it is possible to type FIGARO commands in exactly the same format as was previously used from DCL.
      It is an interactive language. ICL provides a complete environment for entering, editing and debugging programs, rather than relying on external editors, linkers etc.
      ICL can be used as a programming language, but it is intended for writing relatively simple and straightforward programs. It's requirements are different from those of most modern programming languages, which are designed for the needs of big software projects such as writing operating systems or controlling missiles. ICL is designed to make simple programs easy to write.external link
    • Home page for ICL at Rutherford lab
      external link
    • Account of the port from from VMS to UNIX by the BITD
      Introduction
      In 1992 the department collaborated with the Starlink Group at RAL in porting a major astronomical package from VAX/VMS to Unix.


      --------------------------------------------------------------------------------

      The project
      Starlink is a computing facility provided for UK astronomers by the Particle Physics and Astronomy Research Council. Starlink's main objectives include the provision of:

      interactive data reduction and analysis facilities for use as a research tool by UK astronomers
      software sharing and standardisation to prevent unnecessary duplication of effort
      systems software support for astronomers
      In the past, to achieve this, Starlink provided computer hardware based on the DEC VAX range which is now installed at about 25 astronomical sites throughout the country. A standard software environment called ADAM (Astronomical Data Acquisition Monitor) is provided which includes a programmer interface (subroutine libraries) and a standard user interface, the Interactive Command Language - ICL. The latter enables the user to manipulate data in a concise but natural way, while the subroutine libraries give programmers efficient and easy access to command parameters, bulk data, graphics devices and other resources.


      --------------------------------------------------------------------------------

      Departments role
      With the development of powerful and inexpensive Unix based workstations the opportunity for such workstations to act as host to the Starlink software arose. This was not possible without modification to the code and Starlink, with SEG, therefore undertook the port of the software to Unix.

      In particular, SEG undertook the porting of ICL itself to Sun Unix workstations, and then onto other Unix platforms, primarily the DECstation running Ultrix. The porting work required a complete re-write of ICL into C and the result is a system that emulates its VMS predecessor despite being fundamentally new.


      --------------------------------------------------------------------------------

      Porting details
      ICL is, in some ways, similar to a high level programming language but it has significant differences: it is a command language - one of its main uses is to enable the use of 'commands' with few restrictions on the possible command format. For example, ICL can be used to run the FIGARO data reduction system and it is possible to type FIGARO commands into ICL in exactly the same format as were previously used in direct mode. ICL also provides a complete environment for entering, editing and debugging programs rather than relying on external editors, linkers etc.

      ICL behaves in a similar fashion to a Unix Bourne or C shell (sh/csh) in that it parses and verifies commands which are then either interpreted as:

      internal ICL data manipulation commands eg. x = sqrt(9.0)
      external commands eg. loading a process to display an image - known as a task
      Host Operating System (OS) commands, which are passed through to the underlying OS
      Because of the way in which Unix handles signal events, the new ICL has been split into three constituent components: an I/O subsystem, a virtual clock, and an interface to an interpreter of ICL. These three parts communicate via a communications subsystem (also developed and based on sockets) and a multi-tasking server.

      The communications subsystem consists of a MESage SYStem library (MESSYS) that provides an interface to a lower level Message System Protocol library (MSP). Communications take place between ICL and an independent multi-tasking server (Q) via asynchronous sockets and all [ICL/task, task/ICL] communications pass through this server.The implementation's I/O subsystem uses the Unix curses terminal interface library, ensuring

      external link