Running LE-Compliant Compiler Programs Under CA IDMS/DC

This section describes what you need to do to compile, link, and run a program compiled with an LE-compliant compiler.
idmscu19
This section describes what you need to do to compile, link, and run a program compiled with an LE-compliant compiler.
General Preparation
The next paragraph describes how to prepare LE-compiled programs for use with CA IDMS/DC:
For non-reentrant PL/I programs compiled under Release 2.3 or earlier, you must specify OPTIONS (MAIN) in the PL/I PROCEDURE statement for the entry procedure. For reentrant PL/I Release 2.3 or earlier programs, you must specify OPTIONS (MAIN,REENTRANT). For AD/CYCLE (LE-COMPLIANT), PL/I programs, you must specify OPTIONS (REENTRANT,FETCHABLE).
RHDCLENT/RHDCLINT, required in earlier releases, is not needed for DC/UCF at release levels 14.1 and above.
Runtime Options
The IBM Language Environment provides numerous options which control how programs operate at runtime. The default values are designed to be suitable in a batch environment. Therefore, it is necessary to modify some values for applications which are to run in a DC/UCF online system.
As stated in the introduction, the information in this section does not apply to programs which run in a CICS or other region even if they access CA IDMS using DML or SQL commands. It does apply to programs which run a DC/UCF online system which are invoked from another front-end using CA IDMS UCF, such as an CA ADS application which is accessed using UCFCICS from a CICS front-end.
The IBM Language Environment provides a number of ways to specify runtime options. The following methods are supported for CA IDMS/DC online programs:
  1. Modify, assemble, and link the IBM-supplied CEEUOPT module. Link the resulting module with each application program. A sample version of CEEUOPT with values that are appropriate for most online CA IDMS applications can be found in the *.CAGJSRC(CEEUOPT) install library member. Consult the section, "Creating an Application-Specific Runtime Options Module" in IBM's LE Installation and Customization Manual.
  2. Assemble and link a specialized CEEDOPT module.
    This method is not available for z/OS Version 1.10 and higher. Use method 1 or method 4 for non-COBOL applications on z/OS Version 1.10 and higher.
    If this method is chosen, special copies of the IBM modules CEEBINIT and CEEPIPI must be maintained for use with online DC/UCF systems only. Due to maintenance considerations, this method is not recommended for COBOL applications. It is needed for PL/I programs compiled with a non-LE-compliant compiler.
  3. Assemble and link a specialized CEEROPT module.
    This method is not available for z/OS Version 1.9 and lower or for VSE. Use method 1 or method 3 for PL/I programs with those operating systems.
    If this method is chosen, a CEEROPT load module can be created to override desired options. Like CEEUOPT, and unlike CEEDOPT, you only need to specify those options which are to be different from the installation default LE run-time options. The resultant load module must be included in a load library in the CDMSLIB concatenation ahead of the default SCEERUN load library.
    CEEROPT will be loaded in a CA IDMS region only if your CEEPRMxx member specifies CEEROPT(ALL).
    For more information on using this method, see IBM documentation
Except as discussed below, the IBM-supplied default runtime options can be used with any site-specific desired modifications. Note that the MSGFILE parameter is ignored and messages are sent to the CA IDMS log file.
Recommended settings for certain parameters are as shown below. For more details about these parameters, see the
IBM Language Environment for OS/390 Customization
manual.
  • ABTERMENC=(RETCODE) or ABTERMENC=(ABEND)
    This parameter affects the action taken when an LE enclave ends with an unhandled condition of severity 2 or higher. If RETCODE code is specified, the DC task will abend with message DC128004. If ABEND is specified, the DC task will abend with a U
    xxx
    where
    xxx
    corresponds to the hexadecimal value of the user abend code set by LE. For
    Example
    , an LE user abend 4093 would result in a DC task abend with code UFFD.
  • ALL31=(ON)
    This parameter will minimize the amount of below-the-line storage, which will be allocated by LE. This parameter requires that no COBOL programs are compiled with compiler option DATA(24) and that no programs which will utilize the runtime LE are linked AMODE(24).
  • INTERRUPT=(OFF)
    Attention interrupts are handled by the CA IDMS/DC system and not by LE runtime support. Application PL/I programs can test for attention interrupts using the DC-ATTN-INT condition name under LE just as with earlier PL/I runtime environments.
  • POSIX=(OFF)
    POSIX is not supported under DC/UCF.
  • RPTSTG=(OFF) or RPTSTG=(ON)
    Normally OFF should be specified. OFF must be specified for systems prior to Release 14.1.
    The purpose of RPTSTG is to determine the storage utilization for a particular application. The report is produced at the end of a LE process and is written to the CA IDMS log file. For efficiency reasons, the termination phase of LE processing is normally not executed in an online DC environment. If it is necessary to obtain storage information for a particular application, optional bit 196 can be set (see Optional Online COBOL Functionality. Note that this option adversely affects performance. Storage reports are therefore normally produced only in a test or development system.
  • TERMTHDACT=(QUIET) or TERMTHDACT=(TRACE)
    This option controls the extent of LE runtime information which will be supplied when an application terminates. All messages will be written to the DC log file.
  • TRAP=(ON) or TRAP=(OFF)
    If ON is specified, program checks in an LE application will result in IBM LE error-handling being put into effect. PL/I-specific and LE messages will be written to the log. After these messages are written and the LE process ends abnormally, the DC task will abend with message DC128004 and a task snap will be taken.
    If OFF is specified, program checks in an LE application will result in an immediate task snap. This is similar to the result in a PL/I Release 2.3 runtime environment. No LE messages related to the program check will be written. Furthermore, if any PL/I applications are included in the online system, any ON ERROR clauses will not be handled properly.
In addition to the parameters above, we strongly recommend that you use smaller values than the default ones for the various heap (e.g., ANYHEAP, BELOWHEAP, HEAP) and stack (e.g., LIBSTACK, STACK) parameters since these are allocated on a task thread basis. Storage allocation is most efficient if relatively large values are specified as sixteen bytes less than a multiple of 4096. Smaller values than 4096 should be set for some parameters to avoid wasting storage. The following values have been found to be suitable for most DC/UCF systems:
  • ANYHEAP=(2032,8176,ANYWHERE,FREE)
  • BELOWHEAP=(496,496,FREE)
  • HEAP=(2032,4080,ANYWHERE,KEEP,4080,4080)
  • LIBSTACK=(100,2032,FREE)
  • NONONIPTSTACK=(4080,4080,BELOW,KEEP)
  • STACK=(4080,8176,ANY,KEEP)
  • STORAGE=(NONE,NONE,NONE,4080)
  • THREADHEAP=(2032,4080,,ANYWHERE,KEEP)