Kednos PL/I for OpenVMS VAX

Kednos PL/I for OpenVMS VAX

Release Notes for Version 3.8

This manual provides release information on Kednos PL/I Version 3.8 for OpenVMS VAX, a software language.

Revision/Update Information: This is a new manual.

Operating System and Version: OpenVMS VAX Version 5.5
and higher

Software Version: Kednos PL/I V3.8 for OpenVMS VAX

Published by: Kednos Corporation, Pebble Beach, CA, www.Kednos.com


October 2003

Kednos Corporation, makes no representations that the use of its products in the manner described in this publication will not infringe on existing or future patent rights, nor do the descriptions contained in this publication imply the granting of licenses to make, use, or sell equipment or software in accordance with the description.

Possession, use, or copying of the software described in this publication is authorized only pursuant to a valid written license from Kednos Corporation iauthorized only pursuant to a valid written license from Kednos Corporation or an anthorized sublicensor.

No responsibility is assumed for the use or reliability of software on equipment that is not listed as supported in the Product Description.

Copyright Kednos Corporation, 1980, 1983, 1985, 1987, 1992, 1993, 1995, 1996, 2003. All rights reserved.

Copyright ©2003

The following are trademarks of Hewlett Packard Company: Alpha, AXP, DEC, DECnet, DECtalk, DECUS, Digital, IVP, MicroVAX, OpenVMS, RMS, RMS--11, RX50, TK50, VAX, VAX Ada, VAX BASIC, VAX BLISS, VMScluster, CDD Repository, VAX COBOL, VAX DATATRIEVE, VAX DIBOL, VAX DOCUMENT, VAX FORTRAN, VAXinfo, VAX MACRO, VAX Pascal, VAX SCAN, VAXset, VAXTPU, and the DIGITAL logo.


Preface

This document contains release information on Kednos PL/I Version 3.8 for OpenVMS VAX Systems. Release information is necessary for gaining the best results from Kednos PL/I Version 3.8 on the OpenVMS VAX operating system. Kednos recommends that all users read this information. Kednos also recommends that all users review the section of this manual entitled "Known Errors and Restrictions" before submitting an SPR.

1 Overview of Changes Made in V3.8 and Runtime Library V5.7 (October 24, 2003)

Kednos PL/I V3.8 and Runtime Library V5.7 contain the following enhancements and fixes:

2 Overview of Changes Made in V3.7 (January 12, 2003)

VAX PL/I V3.7 contains the following enhancements and fixes:

3 Overview of Changes Made in V3.7 and Runtime Library V5.6 (December 14, 2002)

VAX PL/I V3.7 and Runtime Library V5.6 contain the following enhancements and fixes:

4 Overview of Changes Made in V3.5 (April 21, 1992)

VAX PL/I V3.5 contains the following enhancements and fixes:

4.1 LMF SUPPORT

VAX PL/I V3.5 contains support of the License Management Facility (LMF). When VAX PL/I V3.5 is invoked, it checks to see whether it is licensed on the machine. If a valid license exists, the compilation continues. If a valid license does not exist, an error message is printed and the compilation is aborted. For example,


   $ PLI TEST 
   %LICENSE-F-NOAUTH, VAX PLI use is not authorized on this node 
   -LICENSE-F-NOLICENSE, no license is active for this software product 
   -LICENSE-I-SYSMGR, please see your system manager 
 
Please refer to the VAX/VMS License Management Facility manual for more information.

4.2 BUG FIXES

The following list summarizes the major bugs that have been fixed between PL/I V3.3 and PL/I V3.5.

4.2.1 Compiler

4.2.1.1 SCA Support -

4.2.1.2 Debug Support -

4.2.1.3 Procedure Inlining Optimization -

4.2.1.4 Miscellaneous -

4.2.2 PL/I Run-Time Library

Since PLIRTL is normally distributed with the VMS operating system, the fixes below are listed by VMS version.

4.2.2.1 VMS V5.0 -

  1. The proper output is now produced by the Bn format of the PUT EDIT statement for bit strings longer than 128 bits and for fixed binary expressions with a non-zero scale factor.
  2. The VIRMEMDEAL error will no longer be incorrectly raised when all the following conditions are true: a file with fixed length records is being closed, the file was read using the SET option of the READ statement, and an ENVIRONMENT option was specified on the CLOSE statement.
  3. The ONCODE function will no longer ACCVIO when called from inside an ON-unit that was entered due to a hardware error such as overflow.
  4. The INDEX function has been fixed so that the proper result is returned when searching for a pattern that is longer than 32 bits. Previously, the wrong result was sometimes returned for certain complex cases.

4.2.2.2 VMS V5.1 -

  1. Certain G and H floating values were improperly truncated when they were converted to either a fixed decimal or pictured datatype. Improved conversion routines are now used to minimize the truncation errors. Even if the /G_FLOAT qualifier is not specified and there are no floating point variables large enough to require H float, the V3.n compiler can generate code that uses H floating data when intermediate calculations require the extra precision.

4.2.2.3 VMS V5.2 -

  1. The COL and DCOL key types are now supported as datatypes for keys in indexed files. This allows PL/I programs to read indexed files containing keys with user-defined collating sequences. You can use the National Character Set utility to create these collating sequences.
  2. When converting from PICTURE to a FIXED or FLOAT datatype, the pictured value is first converted to an intermediate FIXED DECIMAL value with the same precision and scale as the PICTURE variable. This intermediate value is then converted to the desired FIXED or FLOAT datatype. Previously the picture value was converted to a FIXED DECIMAL (31,0) intermediate value, which resulted in the loss of all fractional digits.
  3. It is now possible to specify a boolean value with the record-locking options of the READ statement. The format for the options is NOLOCK(boolean), LOCK_ON_READ(boolean), LOCK_ON_WRITE(boolean), MANUAL_UNLOCKING(boolean), NONEXISTENT_ RECORD(boolean), READ_REGARDLESS(boolean), and WAIT_FOR_RECORD(boolean), where boolean is a BIT(1) expression. Either a constant or a run-time variable expression is acceptable. The record-locking option is either enabled or disabled for the duration of the READ statement. For example:


                        DECLARE BOOL BIT(1) ALIGNED; 
                        READ FILE(F) INTO(BUFF) 
                            OPTIONS(NOLOCK(BOOL), LOCK_ON_READ(^BOOL)); 
     
    

  4. The correct status RMS$_BUSY is now returned when you attempt to start a new I/O operation while another operation is in progress. Previously, the RMS status from an earlier I/O operation was returned rather than RMS$_BUSY.
  5. When a file is implicitly opened in response to an I/O request, the RTL now uses the declared file attributes rather than the default file attributes. This helps avoid conflicts between declared and default attributes. For example, the following READ statement now implicitly opens the file REL1 with the UPDATE attribute rather than the default attribute INPUT.


                        DCL REL1 FILE KEYED DIRECT UPDATE; 
                        READ FILE(REL1) INTO(INREC) KEY(PART0); 
     
    

  6. The ENCODE built-in function has been fixed to return the string "0" when the first parameter to ENCODE is 0. Previously the null string was returned.

4.2.2.4 VMS V5.5 -

  1. The VAX PL/I RTL now clears the active bit before signaling an area full condition. This allows an on-unit written to handle an AREA condition to copy the full area to a new area and free the full area.
  2. The condition ONFILE was modified to return the file handle for record operations.
  3. The maximum record size was changed from 16383 to 31998, which is maximum allowed by RMS.
  4. VAX FORTRAN procedures can now call VAX PL/I with the correct results.
  5. The error signaled when a PL/I internal FAB or RAB condition occurs is now set up correctly.
  6. Previously an operation subsequent to a read statement with the option manual unlocking would release the lock on a record. This no longer occurs. Now to unlock the record you must call free or release the record.

4.3 NEW FEATURES

4.3.1 Inline Expansion Of Procedure Calls

VAX PL/I V3.3 (and later releases) provides inline expansion for procedure calls, an optimization that reduces execution time by replacing the call with the actions that procedure performs. This eliminates the overhead of the call and return instructions. A procedure call can be expanded inline if the source code for the procedure is present in the compilation unit being compiled. For example, if procedure A calls procedure B, then the call to B could potentially be expanded inline if: A and B are located in the same file, B is included using the %INCLUDE statement, or the two files containing A and B are compiled together by using a plus list, e.g. PLI A+B.

4.3.2 Support For The VAXset Program Design Facility

VAX PL/I V3.4 introduces support for the Program Design Facility (PDF). Used with LSE and SCA, this new capability provides an integrated software development environment that includes the low-level design phase of the software development life cycle. During the design phase, VAX PL/I can be your Program Design Language (PDL). In the VMS environment, you create detailed designs as follows:

4.3.3 DECwindows FileView Compile Verb Support

VAX PL/I V3.4 provides an enhancement to the DECwindows FileView "Compile" verb in which compile command options can be selected using a window interface instead of the usual DCL qualifiers. The compiler defaults are used as the initial configuration; new configurations with different settings of options can be given names, saved, and used for later compilations. The new interface is used automatically when you use the FileView "Compile" verb to compile a source file that has a file type of ".PLI". More information is available by using the Help menu in the "Compile a VAX PL/I Program" dialog box. The DECwindows Compiler Interface (DWCI) for VAX PL/I is entirely separate from the compiler image and is contained in the following files:


        SYS$COMMON:[VUE$LIBRARY.USER]PLI$DWCI.EXE 
        SYS$COMMON:[VUE$LIBRARY.USER]PLI$DWCI.UID 
        SYS$COMMON:[SYSHLP]PLI$DWCI.HLB 
 

4.3.4 PL/I V3.5 TYPE

The TYPE attribute is a superset of the LIKE attribute. The TYPE attribute applies to DECLARE, PROCEDURE, and ENTRY statements. When used in a DECLARE statement, it allows the variable being declared (or typed variable) to inherit the attributes of a previously declared variable (type definition). Similarly, when the TYPE attribute is used in the RETURNS option of a PROCEDURE or ENTRY statement, the attributes of the return value will be the same as the attributes of the type definition. The type definition must be explicitly declared before it can be used in a DECLARE, PROCEDURE, OR ENTRY statement.

Please refer to the PL/I documentation for more information on the type attribute.

4.3.5 PL/I V3.5 OTHERWISE

The OTHERWISE Option applies to the GOTO (or GO TO) statement. This statement has the following syntax:


               ({[GOTO] [GO TO]} label-reference [OTHERWISE]) 
 
The OTHERWISE option can be present only when the label-reference is a subscripted label with a variable subscript. If present in any other case, it will be reported as an error. If the OTHERWISE clause is used the label subscript cannot be a multi-term expression. If the variable subscript is out of range and the OTHERWISE option is not present, the statement following the GOTO (or GO TO) will be executed next. If the variable subscript is out of range and the OTHERWISE option is not specified, the subscript is reported out of range at run-time and the process will be terminated. In addition to the above syntax a default label for the label array has been added. If used the default label must be the last label in the GOTO case. The syntax of the default label is:


                                 label (*): 
 
The following is a code example of this case.


                   goto case (k) 
           case(1): 
                   . 
                   . 
                   . 
                   goto end_case 
           case(3): 
                   . 
                   . 
                   . 
                   goto end_case 
           case(*):                /* default case */ 
                   . 
                   . 
                   . 
                   goto end_case 
           end_case: 
 
Please refer to the PL/I documentation for more information on OTHERWISE.


Next Contents