Release Notes for hp OpenVMS Structure Definition Language V2.3 Copyright © Hewlett-Packard GmbH 2006. Confidential computer software. Valid license from HP and/or its subsidiaries required for possession, use, or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor's standard commercial license. Neither HP nor any of its subsidiaries shall be liable for technical or editorial errors or omissions contained herein. The information in this document is provided "as is" without warranty of any kind and is subject to change without notice. The warranties for HP products are set forth in the express limited warranty statements accompanying such products. Nothing herein should be construed as constituting an additional warranty. This document contains information about the HP OpenVMS Structure Definition Language (SDL) including new features, differences between this version and previous versions, corrections included, and other topics. This file is of interest to both SDL users and SDL backend developers. ii _______________________________________________________ Contents _______________________________________________________ CHAPTER 1 OVERVIEW 1-1 _______________________________________________________ CHAPTER 2 INSTALLATION 2-1 _______________________________________________________ CHAPTER 3 PROBLEMS CORRECTED SINCE RELEASE 2.0 3-1 _______________________________________________________ CHAPTER 4 NEW FEATURES 4-1 _______________________________________________________ CHAPTER 5 COMPATIBILITY 5-1 _______________________________________________________ CHAPTER 6 PLATFORM ISSUES 6-1 _______________________________________________________ CHAPTER 7 REPORTING PROBLEMS 7-1 iii _______________________________________________________ 1 Overview HP OpenVMS Structure Definition Language (SDL) now supports OpenVMS/VAX V6.2 or higher, OpenVMS V7.2-3 or higher, and OpenVMS/I64 V8.2 or higher. 1-1 _______________________________________________________ 2 Installation This software is provided in a PCSI kit, with simple one-line installation and little interactive dialogue. 2-1 _______________________________________________________ 3 Problems Corrected Since Release 2.0 SDL signaled an exception when the name of the language was abbreviated (SDL/LANGUAGE=C instead of /LANGUAGE=CC). Empty masks were generated for bitfields that crossed quadword boundaries. In code generated by the BLISS and BLISSF backends, the KEYWORDMACRO name missed the first character. An empty line between the copyright notice and the SDL header has been removed. In code generated by the MACRO backend, the name of .PSECTs did not contain the module name prefix. SDL did ACCVIO when it couldn't read required .SDI files. A TAG consisting of one or more spaces will now be converted to an empty string (length 0), as it was before version 2.0. 3-1 _______________________________________________________ 4 New Features 1 A backend for the Digital Command Language has been added to the kit. It can be used to create command files that contain status codes (e.g. "$ SS$_NORMAL == 1"). The command to create such a command file is $ SDL/LANGUAGE=DCL 2 A FORTV3 backend is now included in the kit. 3 A change has been made to the CC backend in version 2.3. When declaring aggregates using the typedef keyword and the /VMS_DEVELOPMENT qualifier, all aggregates references from within the typedef'd aggregate are assumed to also be typedef'd: aggregate S structure typedef; A anA; B aB; end S; where A and B are aggregates. This will now result in typedef struct _s { A anA; B aB; } S; when compiled with /VMS_DEVELOPMENT, no matter whether A and B have been declared with the typedef keyword or not. The reason for this is that now structures declared without typedef but compiled with /C_DEVELOPMENT can be used by using #define __NEW_STARLET 1. 4-1 _______________________________________________________ 5 Compatibility Due to the lack of a PLI compiler on OpenVMS/I64, the PLI modules of the SDL product have been ported to C/C++. The change in the implementation language leads to a compatibility problem when mixing a pre-2.0 backend with a new frontend or vice versa: SDL passes a pointer to a listing file from the frontend to the backend (the lisfile member of the SDL$_SHR_DATA structure). Since the PLI implementation used the PLI run time library to access this file, and the C/C++ implementation uses the C run time library, when calling an old backend from the new frontend or vice versa, the backend can't write to the listing file. To help avoiding compatibility problems, the SDL backend interface has been extended and now includes a new routine, SDL$GET_VERSION, which should return the version of SDL (language and other features) which the backend can understand. If a backend does not implement this routine or if the version returned by this backend is below the required one, SDL will emit a warning: "%SDL-W-REVCHECK, Front-end / back-end version mismatch. Check installation." Backend writers are therefore encouraged to contact the maintainer of SDL (see Reporting Problems) for information on writing backends for the new implementation of SDL. The Structure Definition Language itself has been extended in version 2.3. The IFLANGUAGE statement now can include an ELSE clause: 5-1 Compatibility IFLANGUAGE CC; LITERAL; int SDL$WRITELIST(struct dsc$descriptor *buffer, SDL$_SHR_DATA *sdl_shr_data); #define sdl$writelist SDL$WRITELIST END_LITERAL; ELSE; ENTRY SDL$WRITELIST parameter ( CHARACTER DESCRIPTOR NAMED buffer, sdl$_shr_data NAMED sdl_shr_data TYPENAME sld$_shr_data); END_IFLANGUAGE cc; For backend writers: While the THEN part of the IFLANGUAGE statement can still be accessed via the NOD$A_CHILD pointer of the node representing the IFLANGUAGE statement (the one with NOD$B_TYPE == NOD$K_CONDNODE), the ELSE part can be accessed via the NOD$A_TYPEINFO pointer (which is NULL, if there is no ELSE part). 5-2 _______________________________________________________ 6 Platform Issues Beginning with version 2.2, SDL supports the OpenVMS/I64 platform. Previously, the /VAX and /ALPHA qualifiers have been used to differentiate between the OpenVMS/VAX and OpenVMS/ALPHA platforms. There is no /I64 or /IA64 qualifier. On Alpha and IA64 systems, /ALPHA is now the default. On VAX systems, /VAX is the default. Previously, SDL or SDL/VAX called backend images named SDL'language name'.EXE, whereas SDL/ALPHA called backend images named ALPHA_SDL'language name'.EXE. The new implementation calls backend images named SDL$'language name'.EXE, no matter whether the /ALPHA qualifier is present or not. SDL/ALPHA assumes that hardware data types (the *_HW and HARDWARE_*) are 64 bit wide, SDL/VAX assumes that those data types are 32 bit wide. SDL/ALPHA generates __int64 or INTEGER64 or similar data types for the QUADWORD data type in most languages, SDL/VAX generates int[2] or structures. SDL/ALPHA/LANGUAGE=CC generates __member_ alignment and __nomember_alignment pragmas whereas SDL/VAX/LANGUAGE=CC does not. 6-1 _______________________________________________________ 7 Reporting Problems Problems should be reported via email to walter.braeu@hp.com. 7-1