Special DL/I situations for IMS DB programming

Special cases during application programming for IMS DB include usage of the GUR call, program scheduling against HALDBs, mixed language programming, using the extended addressing capabilities of z/OS®, and setting COBOL compiler options for preloaded programs.

GUR call

The get unique record (GUR) DL/I call is a special case because it always accesses the IMS catalog database. When the catalog is enabled, IMS dynamically attaches the catalog PCB on behalf of your application program. Your application program can use the GUR call to get catalog data in the form of a single XML instance document for a particular catalog record. You can also issue other DL/I read calls to process the catalog database in the same way as any other database. The GUR call is provided to reduce the number of processing steps required to retrieve a complete catalog record for a DBD or PSB.

Restriction: The use of SSA command codes is not allowed.

Application program scheduling against HALDBs

Application programs are scheduled against HALDBs the same way they are against non-HALDBs. Scheduling is based on the availability status of the HALDB master and is not affected by individual partition access and status.

The application programmer needs to be aware of changes to the handling of unavailable data for HALDBs. The feedback on data availability at PSB schedule time shows the availability of the HALDB master, not of the partitions. However, the error settings for data unavailability of a partition at the first reference to the partition during the processing of a DL/I call are the same as those of a non-HALDB, namely status code BA or pseudo ABENDU3303.

For example, if you issue the IMS /DBR command to half of the partitions to take them offline, the remaining partitions are available to the programs.

When an application program accesses a partition, that partition is considered to be in use by the application for the duration of that instance of the application. DBDUMP, DBRECOVERY, and START commands can operate against a partition currently not in use. The command is not processed for any partition that is being accessed by a BMP. A DFS0565I message is issued for partitions that are in use by a BMP. An exception to this rule is a partition where the accessing BMP issued a CHKP call and has not issued any subsequent DL/I calls. If an application attempts to access data from a stopped partition, a pseudo abend ABENDU3303 results or the application receives a BA status code. If the partition is started with the STA DB command before the application attempts to access data in that partition again, the DL/I call is processed successfully.

Mixed-language programming

When an application program uses the Language Environment® language-independent interface, CEETDLI, IMS does not need to know the language of the calling program.

When the application program calls IMS in a language-dependent interface, IMS determines the language of the calling program according to the entry name that is specified in the CALL statement. That is, IMS assumes that the program is:

  • Assembler language when the application program uses CALL ASMTDLI
  • C language when the application program uses rc=CTDLI
  • COBOL when the application program uses CALL CBLTDLI
  • Pascal when the application program uses CALL PASTDLI
  • PL/I when the application program uses CALL PLITDLI

For example, if a PL/I program calls an assembler language subroutine and the assembler language subroutine makes DL/I calls by using CALL ASMTDLI, the assembler language subroutine should use the assembler language calling convention, not the PL/I convention.

In this situation, where the I/O area uses the LLZZ format, LL is a halfword, not the fullword that is used for PL/I.

Extended addressing capabilities of z/OS

The two modes in z/OS with extended addressing capabilities are: the addressing mode (AMODE) and the residency mode (RMODE). IMS places no constraints on the RMODE and AMODE of an application program. The program can reside in the extended virtual storage area. The parameters that are referenced in the call can also be in the extended virtual storage area.

COBOL compiler options for preloaded programs

If you compile your COBOL program with the VS COBOL II compiler and preload it, you must use the COBOL compiler options RES and RENT.