The COBOL2000 runtime system is a component of the Common RunTime Environment (CRTE) for COBOL2000 and C/C++ programs.
CRTE is described in a separate “CRTE User Guide” [2].
The COBOL2000 runtime routines are subprograms that are known to the COBOL2000 compiler. They can basically be divided into three groups:
1.Subprograms for complex COBOL statements
Examples of complex COBOL statements are given in “COBOL2000 Reference Manual” [1] (e.g. SEARCH ALL...). However, even seemingly simple functions (e.g. COMPUTE A = B ** C), for which no corresponding machine instructions exist, are broken down by forming subprograms which are then stored externally in precompiled modules.
2.Subprograms for connecting the generated module to operating system functions
The main purpose of these subprograms is to ensure that the code generation of the compiler is totally independent of the operating system. The resulting loss in efficiency is largely offset by greater operating system independence. If interfaces to the operating system are changed, it is generally sufficient to relink the existing modules with the new runtime system.
Essential functions in this context are:
Connection of COBOL programs to the input-output system
Connection of COBOL programs to SORT
Connection of COBOL programs to UDS/SQL
Connection of COBOL programs to Executive functions
The following table contains a list of the names and functions of the COBOL2000 runtime modules. The table does not include those runtime modules that must be present in the COBOL2000 runtime system for compatibility reasons only, nor those modules that are used for access to the POSIX file system.
Name | Function |
ITCMADPT *) | Adapter module for the partial bind technique |
ITCMAID1 *) | AID connection module (Data Division) |
ITCMECE1 *) | ENTRY, CANCEL, EXIT work area |
ITCMECE2 *) | Table for COMOPT OPTIMIZE-CALL-IDENTIFIER and SDF CALL-IDENTIFIER =OPTIMIZE |
ITCMERF1 *) | Error analysis routine for input/output |
ITCMINIT *) | ILCS initialization |
ITCMMAT1 *) | Data for math (IML...-) functions |
ITCMMDP0 *) | OCCURS DEPENDING (recursive) |
ITCMMEM1 | ALLOCATE and FREE work area |
ITCMOBAS *) | OO: BASE CLASS |
ITCMOWK0 *) | OO: work area for OO runtime routines |
ITCMPOVH *) | COBOL2000 program manager |
ITCMSMG0 *) | SORT/MERGE statement |
ITCMSTBO *) | Table sort |
ITCMTOM0 *) | TOM adapter routine |
ITCMXCAB *) | XML: callback adapter for basic functions |
ITCMXCAS *) | XML: callback adapter for XML PARSE statement |
ITCMXDT1 *) | Data module for exception handling |
ITCMXHC2 *) | XHCS conversion work area |
ITCMXMD1 *) | XML: data area for XML PARSE special registers |
ITCMXWK0 *) | XML: data area for XML runtime routines |
ITCRACA0 | ACCEPT statement |
ITCRACX0 | ACCEPT statement for environment variable/command line |
ITCRAID2 | AID connection module (Procedure Division) |
ITCRBCT0 | Binary constant table |
ITCRBEG0 | Program system initialization routine |
ITCRCCL1 | CLOSE for INITIAL / CANCEL |
ITCRCHP0 | RERUN clause with integer RECORDS phrase |
ITCRCHP2 | RERUN clause for SORT files and END OF REEL |
ITCRCLA0 | Compare ALL literal |
ITCRCLI0 | CLOSE statement for indexed files |
ITCRCLL0 | CLOSE statement for line-sequential files |
ITCRCLR0 | CLOSE statement for relative files |
ITCRCLS0 | CLOSE statement for sequential files |
ITCRCLX0 | CLOSE statement for XML files |
ITCRCMD0 | Execution of a BS2000 command |
ITCRCNA0 | Comparison national figurative constant |
ITCRCVB0 | Conversion of packed decimal to binary (10 to 18 digits) |
ITCRCVD0 | Conversion of binary to packed decimal (10 to 18 digits) |
ITCRCVF0 | Conversion to and from floating point |
ITCRCVL0 | Conversion of packed + decimal to/from binary (>18 digits) |
ITCRDFE0 | Division external floating point |
ITCRDPL0 | Division of decimal numbers > 15 positions |
ITCRDSA0 | DISPLAY statement |
ITCRDSI1 | Storage assignment DYNAMIC data |
ITCRDSX0 | DISPLAY statement for environment variable |
ITCRDYF1 | Reservation of storage space for the functions REVERSE, UPPER-CASE, and LOWER-CASE |
ITCRECE0 | ENTRY, CANCEL, EXIT for separately compiled programs |
ITCREND0 | Program termination routine (normal and abnormal) |
ITCREPL2 | Output line with line-feed control character |
ITCREV0 | Event handling (return from subroutine of another language) |
ITCREV1 | Event handling (“recoverable interrupts”) |
ITCREV2 | Event handling (“unrecoverable interrupts”) |
ITCREV3 | Event handling (remaining events) |
ITCRFAT0 | Table for FACTORIAL function |
ITCRFCH0 | Message output for function argument check |
ITCRFCT1 | Floating point constants |
ITCRFDT0 | Date conversion functions |
ITCRFMD0 | MEDIAN function |
ITCRFMX0 | Functions: MAX, MIN, ORD-MAX, ORD-MIN, RANGE, MIDRANGE |
ITCRFNM0 | Functions: NUMVAL, NUMVAL-C |
ITCRFPV0 | PRESENT-VALUE function |
ITCRFRN0 | RANDOM function |
ITCRFST0 | Functions: REVERSE, UPPER-CASE, LOWER-CASE, DISPLAY-OF, NATIONAL-OF |
ITCRFVR0 | VARIANCE function |
ITCRHSW0 | Set and check job/user switches |
ITCRIFA0 | FCB initialization; control routine |
ITCRIFC1 | RERUN clause FCB generation |
ITCRIFI1 | ISAM FCB generation for indexed files |
ITCRIFL1 | SAM FCB generation for line-sequential files |
ITCRIFR1 | ISAM FCB generation for relative files |
ITCRIFS1 | SAM FCB generation for sequential files |
ITCRIFX1 | FCB generation for XML files |
ITCRINI0 | INITIALIZE statement |
ITCRINS0 | INSPECT statement |
ITCRLHS2 | User label handling for sequential files |
ITCRLNL1 | LINKAGE clause with WRITE for line-sequential files |
ITCRLNS1 | LINKAGE clause with WRITE for record-sequential files |
ITCRMAT0 | Connection module for math (IML...-) functions |
ITCRMEM0 | ALLOCATE and FREE statement |
ITCRMEV2 | Interrupt message for event handling routine |
ITCRMPL0 | Multiplication of decimal numbers > 15 positions |
ITCRMSG0 | Output of error messages, level 0 |
ITCRMSG3 | Output of error messages |
ITCRMVE0 | MOVE for numeric-edited items |
ITCRNED0 | De-editing MOVE |
ITCRNSP0 | CALL, CANCEL, ENTRY, EXIT in nested program |
ITCROCA0 | Check match between current / formal methods parameters |
ITCROFP2 | OO:Formal parameter description |
ITCROIF1 | OO: Initialization routine for files in objects |
ITCROIS0 | OO: Initialization routine for classes / interfaces |
ITCROMD0 | OO: Check routine for object view |
ITCROMS1 | OO: Output of OO error messages |
ITCRONW1 | OO: Create and initialize new object |
ITCROOI0 | Control routine for object-oriented initialization and termination |
ITCROPI0 | OPEN statement for indexed files |
ITCROPL0 | OPEN statement for line-sequential files |
ITCROPR0 | OPEN statement for relative files |
ITCROPS0 | OPEN statement for sequential files |
ITCROPX0 | OPEN statement for XML files |
ITCROSM0 | OO: Select method |
ITCROTC2 | OO: Conformance test |
ITCROVC1 | OO: Check interface conformance |
ITCROVI2 | OO: Check class inheritance |
ITCRPAM1 | Physical read/write routine for relative files (PAM) |
ITCRPBND | Partial-bind large module |
ITCRPCA0 | Comparisons under PROGRAM COLLATING SEQUENCE |
ITCRPCS0 | Comparisons under PROGRAM COLLATING SEQUENCE |
ITCRRCH0 | Check table limits |
ITCRRDI0 | READ/START statement for indexed files |
ITCRRDL0 | READ/START statement for line-sequential files |
ITCRRDR0 | READ/START statement for relative files |
ITCRRDS0 | READ statement for sequential files |
ITCRRDX0 | READ/START statement for XML files |
ITCRRPW0 | REPORT-WRITER control module |
ITCRSCH0 | SEARCH ALL statement |
ITCRSEG0 | Activation of segmented COBOL programs |
ITCRST11 | CODE SET table for ASCII |
ITCRST21 | CODE SET table for ISO-7 |
ITCRSTG0 | STRING statement |
ITCRSTP0 | STOP literal statement |
ITCRTCA1 | Class test table for ALPHABETIC test |
ITCRTCD1 | Class test table for NUMERIC (COMP-3 with sign) test |
ITCRTCE1 | Class test table for NUMERIC (COMP-3 without sign) test |
ITCRTCL1 | Class test table for ALPHABETIC-LOWER test |
ITCRTCN0 | Class test for national operands |
ITCRTCP1 | Class test table for ALPHABETIC-UPPER test |
ITCRTCS1 | Class test table for NUMERIC test (with sign) |
ITCRTCU1 | Class test table for NUMERIC test |
ITCRTCV0 | Class test for data items > 256 bytes or variables |
ITCRTOD3 | Time of day / Date (SVC-free) |
ITCRUDS0 | DML link to database handler |
ITCRUPC0 | Processing declaratives |
ITCRUPC1 | Processing declaratives |
ITCRUPC2 | Processing declaratives |
ITCRUST0 | UNSTRING statement |
ITCRVCL0 | Comparison for items of variable length/address or > 256 bytes |
ITCRVCN0 | Comparison for national items of variable length/address or > 256 bytes |
ITCRVMA0 | MOVE ALL literal |
ITCRVMN0 | MOVE for national items of variable length/address or > 256 bytes |
ITCRVMP0 | Padding for items > 256 bytes in case of MOVE |
ITCRVMV0 | MOVE for items of variable length/address or > 256 bytes |
ITCRWRI0 | WRITE/REWRITE statement for indexed files |
ITCRWRL0 | WRITE/REWRITE statement for line sequential files |
ITCRWRR0 | WRITE/REWRITE statement for relative files |
ITCRWRS0 | WRITE statement for sequential files |
ITCRXBND | XML: parser dynamic loading routing |
ITCRXCFB | XML: callback functions for basic functionality |
ITCRXCFS | XML: callback functions for XML PARSE statement |
ITCRXDP1 | XML: document tree processing |
ITCRXFS0 | Extended file status |
ITCRXGE0 | XML GENERATE statement |
ITCRXHC0 | XHCS conversions |
ITCRXIT0 | FILE STATUS and error handling routine |
ITCRXLC0 | Exception handling |
ITCRXPA0 | XML PARSE statement |
ITCRXPC1 | XML: document file processing |
ITCRXPF0 | Exponentiation (floating point) |
ITCRXPI0 | Exponentiation (integer) |
*) Module not shareable