Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Architecture and functionality of ILCS

&pagelevel(3)&pagelevel

A range of ICLS basic functions can also be used directly by the language runtime systems and the applications.

ILCS is a combination of software and interface conventions:

  • ILCS comprises runtime routines which are grouped together in the CRTE library

  • It also defines the communication interface corresponding to the “standard linkage conventions in BS2000”, i.e. any module generated by an ILCS-compatible compiler is ready for linking with programs in the same or a different language in accordance with the standard linkage conventions.

The ILCS routines are part of the CRTE selectable unit and the latest version of the routines is always shipped with CRTE. They can be recognized by the prefix “IT0”

ILCS provides the following functions:

  • program initialization

  • program termination

  • convention for linking programs in different languages

  • standard guidelines for event handling

  • memory management (stack and heap memory)

  • uniform handling of program mask

  • processing of non-local branches

  • support for C++ exception handling in C/C++ V3.0 or higher

All recent versions of BS2000 compilers, as listed below, are ILCS-compatible.

Compiler

as of Version

Ada
ASSEMBH
C
C++
COBOL85
COBOL2000
FOR1
Pascal-XT
PLI1
RPG3
UX-Basic

2.1
1.1
2.0
2.1A
1.1
1.0
2.2
2.2
4.1
3.0
3.0B

In addition, openUTM is ILCS-compatible as of Version 3.3.

With the aid of ILCS, it is a simple matter to link programs compiled with ILCS-compatible compilers to form a program system. If a program system contains programs that do not behave as required by ILCS conventions, they must be modified to comply with the conventions. Otherwise incompatibility may be the result, particularly when linking programs in different languages.

The ILCS comprises

  • the code module IT0SL@ and

  • the data module IT0SL#.

ILCS (CRTECOM) is no longer supplied as a preloadable subsystem as of CRTE V2.1. When linking applications which require CRTE you must make sure that ILCS is always linked from CRTE. In particular, no old IT0INITS modules from the language runtime system libraries and no modules from $.SYSLNK.ILCS may be dynamically linked. For this reason, when resolving external references, the $.SYSLNK.CRTE library should be searched before any other of the language runtime system libraries. In addition, it must be noted that ILCS and runtime system modules may only be linked into an application once. This does not apply for encapsulated subsystems.