Kit Name: ALPRMS01_071 Kits superseded by this kit: None Kit Description: Version(s) of OpenVMS to which this kit may be applied: OpenVMS Alpha V7.1 In order to receive the full fixes listed in this kit the following remedial kits also need to be installed: None Files patched or replaced: o [SYS$LDR]RMS.EXE (new image) Problems addressed in ALPRMS01_071 kit o Fix for NULL KEY option for PACKED DECIMAL key type. This problem is restricted to an indexed file that has a secondary key type of PACKED DECIMAL and the NULL KEY option set. In performing adds or updates to the indexed file, the application may ACCVIO. The process may either: o Terminate (SYSGEN parameter BUGCHECKFATAL not enabled) with an access violation (ACCVIO); or o Crash the system (BUGCHECKFATAL enabled) with a SSRVEXCEPT (unexpected system service exception) ACCVIO error. NOTE: Until this remedial kit can be installed, this problem can be prevented from reoccurring by converting the file with a revised FDL in which the null key option for the packed decimal secondary key has been changed to "no." o Solution for COB-F-BUG_CHECK error when rereading a sequential file. This problem is restricted to DEC COBOL on OpenVMS Alpha V7.1. Page 2 While a DEC COBOL application may fail with a COBOL internal consistency error (COB-F-BUG_CHECK) for other reasons, a DEC COBOL application that worked on an earlier OpenVMS version and is failing on Alpha V7.1 with a COB-F-BUG_CHECK is likely to be remedied by this remedial kit if ALL of the following conditions are met: o The DEC COBOL application fails with the COB-F-BUG_CHECK error when it is reading data records in a sequential file. o The sequential file is opened allowing no write sharing. o The sequential file has a maximum record size greater than zero. A fixed-length record format always has a maximum record size greater than zero. A zero maximum record size is typically associated with a variable or stream record format. o All the data records in the sequential file are read up to the end-of-file by the DEC COBOL application. o And the DEC COBOL application reads all the data records in the same sequential file more than once. The DEC COBOL application is either run multiple times within a short time period on the same system or within the application itself. All the data records in the same sequential file are read up to the end-of-file more than once. If the data records are only read once, then even if all the other conditions are met, the problem will not occur. o Presumption: The OpenVMS virtual I/O cache (VIOC) is enabled (and since it is enabled by default, it will be unless someone has explicitly disabled it). A change in behavior between RMS and the VIOC cache was added as a performance enhancement for RMS in Alpha V7.1 (see Section 5.18 of the OpenVMS V7.1 Release Notes). VIOC now lets RMS know if it is able to satisfy one of RMS's read requests from blocks already in its cache. This allows RMS to avoid stalling, which reduces overhead and improves performance. Some RMS operations that always stalled previously may now never stall. In the case of an unshared sequential file (with maximum record size > 0), DEC COBOL does not use RMS record I/O ($GETs) to read the records in the file. DEC COBOL uses asynchronous block I/O ($READs) and intermediate buffers of its own to do its own record processing. After reading all the data records in an unshared file, a number of the blocks may be cached by VIOC, including data blocks beyond the logical end-of-file. In coding the error checking for the asynchronous block I/Os, DEC COBOL presumed Page 3 that an end-of-file (EOF) status would always be returned as a completion status after a wait and never as an immediate status for the asynchronous block I/O read. With the V7.1 RMS/VIOC enhancement, if the file is reread while the blocks are still cached, it is possible for an EOF status to be appropriately returned by RMS as an immediate status. In the case of an unexpected immediate error status, DEC COBOL returns the COB-F-BUG_CHECK. In other words, DEC COBOL is returning the COB-F-BUG_CHECK for an EOF status -- when in fact the read is beyond the logical end-of-file. The RMS/VIOC enhancement is a compatible extension of the definition of the RMS services; a block I/O read ($READ) may (as has always been true) complete with a status of RMS$_EOF. However, to expedite delivery of a solution for any DEC COBOL users who may be impacted, RMS has restored the old status behavior that DEC COBOL presumed. Namely, in the case of an asynchronous block I/O read that completes synchronously and the transfer is beyond the logical end-of-file, RMS$_PENDING will be returned as the immediate status and RMS$_EOF as the completion status. Kit Installation Rating: The following kit installation rating, based upon current CLD information, is provided to serve as a guide as to which customers should apply this remedial kit. (Reference attached Disclaimer of Warranty and Limitation of Liability Statement) INSTALLATION RATING: 1 : To be installed by all customers. Installation Instructions: Install this kit with the VMSINSTAL utility by logging into the SYSTEM account, and typing the following at the DCL prompt: @SYS$UPDATE:VMSINSTAL ALPRMS01_071 [location of the saveset] The saveset location may be a tape drive, or a disk directory that contains the kit saveset. System should be rebooted after successful installation of the kit. If you have other nodes in your VMScluster, they should also be rebooted in order to make use of the new image(s). Copyright (c) Digital Equipment Corporation, 1997 All Rights Reserved. Unpublished rights reserved under the copyright laws of the United States. Page 4 The software contained on this media is proprietary to and embodies the confidential technology of Digital Equipment Corporation. Possession, use, or dissemination of the software and media is authorized only pursuant to a valid written license from Digital Equipment Corporation. DISCLAIMER OF WARRANTY AND LIMITATION OF LIABILITY THIS PATCH IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED TO THE EXTENT PERMITTED BY APPLICABLE LAW. IN NO EVENT WILL DIGITAL BE LIABLE FOR ANY LOST REVENUE OR PROFIT, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, WITH RESPECT TO ANY PATCH MADE AVAILABLE HERE OR TO THE USE OF SUCH PATCH.