DIGITAL Software Product Description ___________________________________________________________________ PRODUCT NAME: PL/I for OpenVMS Systems SPD 25.30.24 This Software Product Description describes the following two prod- ucts: VAX PL/I Version 3.5 DEC PL/I Version 4.2 for OpenVMS AXP Systems The general description section describes features common to both prod- ucts Within the context of the general description both products will be referred to as DEC PL/I. The differences in product functionality are indicated in separate sections that follow. DESCRIPTION VAX PL/I and DEC PL/I for OpenVMS AXP are products of UniPrise Sys- tems, Inc. and licensed under Digital Equipment Corporation's Stan- dard Terms and Conditions. DEC PL/I is an extended implementation of the ANSI X3.74 1981, Amer- ican National Standard PL/I General Purpose Subset. DEC PL/I exten- sions include compatibility features with industry standard implemen- tations and ANSI full language features as well as OpenVMS system-specific features. DEC PL/I consists of a shareable compiler, a HELP facility, and a system interface library which includes declarations for sys- tem routines. The DEC PL/I compiler runs under the OpenVMS Operating System and generates optimized, position-independent machine code. DEC PL/I is a comprehensive and powerful programming language that sup- ports scientific computation, commercial data handling and data or- ganization, and extensive string manipulation. The block-structuring February 1998 provided by the PL/I language helps to reduce the costs of program de- velopment and support. DEC PL/I allows access to Oracle CDD. A compile-time preprocessor fa- cility allows language extension and conditional compilation. All Open- VMS System Services, the Common Run-Time Library, and system utili- ties are available through the PL/I CALL statement. A library of pre- defined ENTRY declarations provided with DEC PL/I minimizes the cod- ing required to use OpenVMS system services, the Common Run-Time Li- brary, and many system utilities. Features o Support for CDD/Repository, allowing DEC PL/I programmers to ex- tract a designated CDD/Repository record description node and rep- resent the record as a PL/I structure declaration. CDD/Repository structure declarations may be optionally included in the compiler listing. o Support for the following data types: Binary integer (FIXED BINARY), floating point (FLOAT BINARY, FLOAT, DECIMAL), decimal (FIXED DEC- IMAL), fixed or varying length character strings (CHARACTER [VARY- ING]), fixed length bit strings (BIT), edited numeric data in char- acter format (PICTURE), address manipulation (AREA, OFFSET, and POINTER), entry point (ENTRY), label with an optional subscript (LABEL), and condition (CONDITION). o An assignment operator that operates on equivalent structures or arrays of data as well as scalar variables. A scalar can be assigned to an entire array. o Support for all OpenVMS RMS file organizations (sequential, rel- ative, and indexed), and access methods (sequential, direct, and, keyed). A set of ENVIRONMENT options provides access to a large sub- set of RMS features. The OPTIONS option on READ provides extended control of record locking. o Five storage classes: - AUTOMATIC: Variables are allocated upon block entry. 2 - STATIC: Variables are allocated at compile time. Static data can be EXTERNAL or globally shared. The GLOBALDEF attribute provides program section (PSECT) control of data. - DEFINED: Variables are overlaid upon existing variables. - BASED: Variable allocation is dynamically controlled by the pro- grammer. - CONTROLLED: Variables are allocated and freed dynamically as gen- erations. Only the most recent generation is available to the programmer. o INITIAL values may be specified for AUTOMATIC, BASED, CONTROLLED, and STATIC variables. o A REFER option is available for the creation of dynamically self- defining based structures. This option may be specified for any or all bounds and extents for structure members which are arrays, bit strings, character strings, or areas. o ALLOCATE statement with the SET and IN options for explicit dynamic storage allocation. - FREE space previously allocated by the ALLOCATE statement - POINTER and OFFSET data types for address manipulation of scalar and aggregate data - AREA as an address base for variables of OFFSET type with lan- guage supported allocation and deallocation o LIKE attribute to allow the members of a structure to be declared in terms of an already-declared structure. o UNION attribute to declare overlaid minor structures. o TYPE attribute to allow scalars, arrays, or members of a structure to be declared in terms of already declared scalars, arrays, and structures. o A powerful set of structured program control statements. - DO statement with TO, BY, WHILE, UNTIL, and REPEAT options 3 - LEAVE statement to transfer control out of one or more levels of containing DO-groups - SELECT-WHEN-OTHERWISE group allowing CASE-like selection of a statement or statement group - IF...THEN...ELSE conditional statement - CALL statement and function reference (RETURN) - GOTO statement for transfer of control - OTHERWISE option applies to the GOTO statement o Condition Handling - ON statement to establish ON-units (for AREA, CONDITION, CON- VERSION, ENDFILE, ENDPAGE, KEY, UNDEFINEDFILE, FIXEDOVERFLOW, OVERFLOW, UNDERFLOW(1), ZERODIVIDE, STORAGE, STRINGRANGE, SUB- SCRIPTRANGE, ERROR, FINISH, ANYCONDITION, and VAXCONDITION con- ditions). - REVERT statement to cancel ON-units. - RESIGNAL statement that allows conditions to be passed to other ON-units. o Input/Output Control - OPEN and CLOSE file control statements. - READ, WRITE, DELETE, and REWRITE record-oriented I/O statements. - GET and PUT stream-oriented I/O statements (with FILE, STRING, EDIT, LIST, PAGE, and SKIP options). - ENVIRONMENT and OPTIONS clauses provide access to RMS features including a USEROPEN feature and extended record locking con- trol. o Program Structuring Statements - PROCEDURE blocks: Internal (nested) and EXTERNAL - BEGIN...END blocks, allowing local variable declaration - DO groups that provide compound statement capabilities 4 - ENTRY statement that allows a routine to have multiple entry points o Preprocessor Statements - %REPLACE statement for compile-time replacement of arithmetic, bit-, or character-string constants - %INCLUDE statement for compile-time source copying, with full library support for INCLUDE modules and default and user-specified system libraries - %DICTIONARY for CDD record extraction - %DECLARE, %ACTIVATE, %DEACTIVATE statements for declaration and control of compile-time variables - %DO...%END, %IF...%THEN...%ELSE, and %GOTO statements for com- pilation control - %PROCEDURE to define compile-time procedures - %INFORM, %WARN, %ERROR, %FATAL statements for user-generated di- agnostics - %[NO]LIST[_ALL], %[NO]LIST_DICTIONARY, %[NO] LIST_INCLUDE, %[NO]LIST_ MACHINE, and %[NO] LIST_SOURCE statements for selective list- ing control - %PAGE, %TITLE, %SBTTL statements for listing format control o Preprocessor Expressions and Built-in Functions o Built-In Functions - A full set of arithmetic functions: ABS, ADD, CEIL, DIVIDE, FLOOR, MAX, MIN, MOD, MULTIPLY, ROUND, SIGN, SUBTRACT, TRUNC - A full set of mathematical (transcendental) functions: ACOS, ASIN, ATAN, ATAND, ATANH, COS, COSD, COSH, EXP, LOG, LOG10, LOG2, SIN, SIND, SINH, SQRT, TAN, TAND, TANH - String functions: BOOL, COLLATE, COPY, EVERY, HIGH, INDEX, LENGTH, LOW, MAXLENGTH, REVERSE, SEARCH, SOME, STRING, SUBSTR, TRANS- LATE, TRIM, LTRIM, RTRIM, VERIFY 5 - Conversion functions: BINARY, BIT, BYTE, CHARACTER, DECIMAL, DE- CODE, ENCODE, FIXED, FLOAT, RANK, UNSPEC, INT, POSINT - Condition-handling functions: ONARGSLIST, ONCHAR, ONCODE, ON- FILE, ONKEY, ONSOURCE - Array-handling functions: DIMENSION, HBOUND, LBOUND, PROD, SUM, ADDREL - Storage functions: ADDR, ALLOCATION, EMPTY, NULL, OFFSET, POINTER, SIZE, BYTESIZE - Timekeeping functions: DATE, DATETIME, TIME - File Control functions: LINENO, PAGENO - Pseudovariables (functions allowed on left-hand side of an as- signment): INT, ONCHAR, ONSOURCE, PAGENO, POSINT, STRING, SUB- STR, UNSPEC - Calling mechanism support functions: DESCRIPTOR, REFERENCE, VALUE, ACTUALCOUNT, PRESENT - Picture Variable Validation function: VALID o Built-in Subroutines are provided for: - File-handling: DISPLAY, EXTEND, FLUSH, FREE, NEXT_VOLUME, RE- LEASE, REWIND, SPACEBLOCK - Condition-handling: RESIGNAL Other DEC PL/I language capabilities include: o Expressions in format lists o Replication factors for string constants o Preprocessor statements in any context Compiler Options Compile-time command qualifiers provide a variety of options: 6 o /[NO]ANALYSIS_DATA: Causes Source Code Analyzer component infor- mation to be generated.(1) o /[NO]ALIGN: to allow for natural data alignment for RISC machine data types. o /[NO]CHECK: Produce extra code to check array and string references. Options: Bounds. o /[NO]CROSS_REFERENCE: Produce an alphabetical symbol cross-reference. o /DATA: Specifies integer size and status of alignment.(2) o /[NO]DEBUG: Causes DEBUG information to be included with the ob- ject code. Options inline, traceback, symbols. o /[NO]DIAGNOSTICS: Causes Language-Sensitive Editor component in- formation to be generated.(1) o /[NO]FIXED BINARY: Sets the default size of fixed binary. Options: 31, 15. o /FLOAT: Specifies the default representation of floating-point vari- ables.(2) o /[NO]G_FLOAT: Specifies the default floating point representation. o /GRANULARITY: Specifies the smallest unit of data that can be cached in a register.(2) o /[NO]LIST: Controls the production of a listing file. o /SHOW: Selects specific listing. Options: source, CDD definitions, include files, map, statistics, trace, header, terminal, and ex- pansion. o /[NO]ERROR_LIMIT: Controls the compiler diagnostic message limit. o /VARIANT: Permits specification of compilation variants. o /[NO]MACHINE_CODE: Causes machine code to be listed with the source. o /[NO]OBJECT: Controls the production of the object file. 7 o /[NO]OPTIMIZE: Controls optimizations performed by the compiler. Options: common_subexpressions, disjoint, inline, invariant, lo- cals_ in_registers, peephole, result_incorporation. o /[NO]WARNINGS: Controls the printing of compiler warning messages. Options: noinformationals, nowarnings. o /LIBRARY: Indicates the associated file is a library of source text modules specified by %INCLUDE statements. o /[NO]DESIGN: Controls the generation of design information for the Program Design Facility. Options: comments, placeholders.(1) At the end of each compilation in which messages are generated, the DEC PL/I compiler will display the number of informational, warning, and error messages. NOTES: 1. VAX PL/I only 2. DEC PL/I for OpenVMS AXP only Optimizations DEC PL/I generates efficient object code. Optimizations include: o Value propagation o Subexpression elimination o Allocation of local variables to registers o Removal of invariant computations from loops o Simplification of Boolean expressions o Extensive special case code generation o Pattern replacement in generated code o Inline expansion of procedure calls Industry PL/I Compatibility 8 DEC PL/I provides many of those PL/I features often used by mainframe PL/I programmers. Conversion effort depends upon the individual pro- gram and the set of PL/I features used by the programmer. Well-structured programs that do not rely on system-specific or implementation-specific features convert with a minimum of effort (from no changes to a few percent of the lines in the program). Programs that use implementation- specific features such as ENVIRONMENT and OPTIONS can require a larger conversion effort. Digital does not provide any special programs or other conversion aids. The user is responsible for determining the extent of any conversion effort and for providing appropriate conversion tools to convert pro- grams and data. o Unusual conversion requirements may be necessary if programs use the machine-dependent representation of data. The VAX and AXP ar- chitecture organizes bytes within an integer differently than most other vendors' hardware. This can lead to different results when UNSPEC or DEFINED operations are used to convert between BIT and FIXED BINARY data. Run-Time Library Redistribution The DEC PL/I kit may include updated Run-Time Library shareable im- ages. Digital grants the user a nonexclusive royalty-free worldwide right to reproduce and distribute the executable version of the Run- Time Library designated as PLIRTL.EXE (VAX) and DPLI$RTLSHR.EXE (Al- pha) (the "RTL's") provided that the user: o distribute the RTLs only in conjunction with and as a part of the user's software application product which is designed to operate in the OpenVMS environment; o does not use the name, logo, or trademarks of Digital or UniPrise Systems, Inc. to market the user's software application product; o includes UniPrise Systems, Inc.'s copyright notice for DEC PL/I on the user's product disk label and/or on the title page of the doc- umentation for software application product; and 9 o agrees to indemnify, hold harmless, and defend Digital and UniPrise Systems Inc. from and against any claims or lawsuits, including at- torney's fees, that arise or result from the use or distribution of the software application product. Except as expressly provided herein, Digital or UniPrise Systems Inc. grants no implied or ex- press license under any of its patents, copyrights, trade secrets, trademarks, or any license or other proprietary interest and rights. VAX PL/I Special Features As a native-mode VAX language, VAX PL/I is integrated into the VAX com- mon language environment. This integration provides VAX PL/I users with support for the VAX Interlanguage Calling Standard, access to the VAX Symbolic Debugger (including support for source-line debugging), and callable interfaces to VAX utilities and optional products (such as SORT, DEC DATATRIEVE, and Oracle CODASYL DBMS). VAX PL/I also interfaces to the DEC Language-Sensitive Editor/Source Code Analyzer. Source programs can be written and compiled using the Language-Sensitive Editor component which has built-in intelligence about the source format of PL/I programs. Language elements that support the VAX extended range and extended pre- cision floating point architectural features are as follows: o 64-bit G_floating point data type, with an 11-bit exponent and 53- bit mantissa, which provides a range of 0.56*10**-308 to 0.09*10**308 and a precision of 15 decimal digits. o 128-bit H_floating data type, with a 15-bit exponent and a 113-bit mantissa, which provides a range of 0.84*10**-4932 to 0.59*10**4932 and a precision of 33 decimal digits. VAX PL/I provides support for low-level program design, including the processing of pseudo code and the extraction of design information from comments. DEC PL/I for OpenVMS AXP Systems Special Features 10 As a native-node language, DEC PL/I for OpenVMS AXP Systems is inte- grated into the OpenVMS common language environment. This integration provides DEC PL/I users with support for Interlanguage Calling Stan- dard, access to the OpenVMS Debugger (including support for source- line debugging), and callable interfaces to utilities and optional products (such as SORT, DEC DATATRIEVE, and Oracle CODASYL DBMS). DEC PL/I also interfaces to the DEC Language-Sensitive Editor. Source programs can be written and compiled using the Language-Sensitive Ed- itor component which has built-in intelligence about source format of PL/I programs. Language elements that support the extended range and extended pre- cision floating point architectural features: o 64-bit G_floating point data type, with an 11-bit exponent and 53- bit matissa, which provides a range of 0.56*10**-308 to 0.09*10**308 and a precision of 15 decimal digits. HARDWARE REQUIREMENTS Processors Supported by VAX PL/I VAX PL/I will run on any processor currently supported by OpenVMS with the exception of those processors specifically listed under Proces- sors Not Supported. Processors Not Supported by VAX PL/I: MicroVAX I, VAXstation I, VAXstation 8000, VAX-11/725, VAX-11/782 Processor Restrictions A TK50 Tape Drive is required for standalone MicroVAX 2000 and VAXs- tation 2000 systems. Processors Supported by DEC PL/I for OpenVMS AXP Systems: DEC PL/I for OpenVMS AXP will run on any processor currently supported by OpenVMS unless specifically noted. 11 Disk Space Requirements (Block Cluster Size = 1) ___________________________________________________________________ task__________VAX_____________Alpha________________________________ Installation: 8,500 blocks 30,000 blocks (5.4MB) (15.4MB) Permanent: 6,500 blocks 27,500 blocks ______________(3.3MB)_________(14.0MB)_____________________________ Processor Restrictions These counts refer to the disk space required on the system disk. The sizes are approximate; actual sizes may vary depending on the user's system environment, configuration, and software options. Memory Requirements for DECwindows Support The minimum supported memory for this application running in a stan- dalone DECwindows environment with both the client and server execut- ing on that same system is 12MB. The performance and memory usage of DECwindows applications are par- ticularly sensitive to system configuration. Less memory may be re- quired on the client system (the system where the software is installed and executed) if the server (the component that displays the appli- cation) resides on another system. More memory may be required on a system with several applications running, or where it may be desir- able to improve the performance of an application. CLUSTER ENVIRONMENT This layered product is fully supported when installed on any valid and licensed VAXcluster* configuration without restrictions. The HARD- WARE REQUIREMENTS section of this product's Software Product Descrip- tion details any special hardware required by this product. 12 * V5.x VAXcluster configurations are fully described in the VAXclus- ter Software Product Description (SPD 29.78.xx) and include CI, Eth- ernet, and Mixed Interconnect configurations. SOFTWARE REQUIREMENTS For VAX Systems: For All Systems Using Terminals (No DECwindows Interface): o OpenVMS VAX Operating System Version 5.2 - Version 6.1 For All Workstations Running VWS: o OpenVMS VAX Operating System Version 5.2 - Version 6.1 o OpenVMS VAX Workstation Software Version 4.4 - Version 4.5 For All Workstations Running DECwindows: o OpenVMS VAX Operating System (and necessary components of OpenVMS DECwindows) Version 5.2 - Version 6.1 For Alpha Systems: For All Systems Using Terminal (No DECwindows Interface): o OpenVMS Alpha Operating System Version 6.2 - Version 7.1 For All Workstations Running DECwindows: o OpenVMS Alpha Operating System (and necessary components of Open- VMS DECwindows) Version 6.2 - Version 7.1 OpenVMS DECwindows is part of the OpenVMS Operating System but must be installed separately. Installation of OpenVMS DECwindows gives you the option to install any or all of the following three components: o OpenVMS DECwindows Compute Server (Base kit; includes runtime sup- port) 13 o OpenVMS DECwindows Device Support o OpenVMS DECwindows Programming Support For stand-alone execution, the following DECwindows components must be installed on the machine: o OpenVMS DECwindows Compute Server o OpenVMS DECwindows Device Support o OpenVMS DECwindows Programming Support For remote execution, the following DECwindows components must be in- stalled on the machine: Server Machine o OpenVMS DECwindows Compute Server o OpenVMS DECwindows Device Support Client Machine o OpenVMS DECwindows Compute Server o OpenVMS DECwindows Programming Support OpenVMS VAX Tailoring The following OpenVMS classes are required for full functionality of this layered product: o OpenVMS Required Saveset o Programming Support o Utilities 14 OPTIONAL SOFTWARE For VAX Systems: o DEC Language-Sensitive Editor/Source Code Analyzer Version 3.1 Ver- sion 4.0 o VAX Performance and Coverage Analyzer Version 3.0 - Version 4.0 o CDD/Repository[*] Version 4.2 - Version 5.3 For Alpha Systems: o DEC Language-Sensitive Editor component of the DEC Language-Sensitive Editor/Source Code Analyzer Version 4.1 for OpenVMS Alpha Systems o DEC Performance and Coverage Analyzer (PCA) Version 4.1 for Open- VMS Alpha Systems GROWTH CONSIDERATIONS The minimum hardware/software requirements for any future version of this product may be different from the requirements for the current version. MEDIA DISTRIBUTION For VAX PL/I: 9-track 1600 BPI Magtape, TK50 Streaming Tape This product is also available as part of the OpenVMS Consolidated Soft- ware Distribution on CD-ROM. For DEC PL/I for OpenVMS Alpha Systems: Media and Documentation for this product are available on Digital CD-ROM Software Library for OpenVMS Alpha. Documentation in hardcopy format can be ordered separately. ____________________ The reference to CDD/Repository refers to all CDD products: VAX CDD, VAX CDD/Plus, and CDD Repository. 15 ORDERING INFORMATION VAX PL/I Software License: Unlimited System Use: QL-114A*-** Software Media/Documentation: QA-114A*-** Software Documentation (Hard Copy): QA-114AA-GZ Software Product Services: QT-114A*-** DEC PL/I for OpenVMS Alpha Systems Software Licenses: Personal Use: QL-0HZAA-2B Unlimited System Use: QL-0HZ*-** Software Media/Documentation (CD-ROM):QA-03XAA-H8 Software Documentation (Hard Copy):QA-0HZAA-GZ Software Product Services: QT-0HZ*-** * Denotes variant fields. For additional information on available li- censes, services, and media, refer to the appropriate price book. The above information is valid at the time of release. Please contact your local Digital office for the most up-to-date information. SOFTWARE LICENSING This software is furnished under the licensing provisions of Digital Equipment Corporation's Standard Terms and Conditions. For more in- formation about Digital's licensing terms and policies, contact tact your local Digital office. License Terms for Printing On-Line Documentation Electronic Software documentation accompanying the Software may be printed as reasonably necessary to exersize your license to use the Software. License Management Facility Support This layered product supports the OpenVMS License Management Facil- ity. 16 License units for this product are allocated on an Unlimited System Use and Personal Use basis. Each Personal Use license allows one identified individual to use the layered product. For more information on the License Management Facility, refer to the appropriate Operating System Software Product Description (SPD) or doc- umentation. SOFTWARE PRODUCT SERVICES A variety of service options are available from Digital. For more in- formation, contact your local Digital office. SOFTWARE WARRANTY Warranty for this software product is provided by Digital with the pur- chase of a license for the product. This means that DIGITAL will rem- edy any nonconformance when it is reported to DIGITAL by the customer during the warranty period. The warranty period is one year. It begins when the software is in- stalled or thirty days after delivery to the end user, whichever oc- curs first and expires one year later. All warranty related support for this software will end one year after release of the subsequent version. Warranty is provided in the country of purchase. DIGITAL will provide a service location which will accept reporting (in a format prescribed by DIGITAL) of a nonconformance problem caused when using the licensed software under normal conditions as defined by the SPD. DIGITAL will remedy a nonconformance problem in the current unaltered release of the licensed software by issuing corrections information such as: cor- rection documentation, corrected code, or notice of availability of corrected code; or a restriction or bypass. The customer will have re- sponsible for the preparation and submission of the problem report to the service location. 17 WARRANTY EXCLUSION DIGITAL DOES NOT WARRANT THAT THE SOFTWARE LICENSED TO CUSTOMER SHALL BE ERROR FREE, THAT THE SOFTWARE SHALL OPERATE WITH ANY HARDWARE AND SOFTWARE OTHER THAN AS SPECIFIED IN THIS SPD, THAT THE SOFTWARE SHALL SATISFY CUSTOMER'S OWN SPECIFIC REQUIREMENTS, OR THAT COPIES OF THE SOFTWARE OTHER THAN THOSE PROVIDED OR AUTHORIZED BY DIGITAL SHALL CON- FORM TO THIS SPD. DIGITAL MAKES NO WARRANTIES WITH RESPECT TO THE FITNESS AND OPERABIL- ITY OF MODIFICATIONS NOT MADE BY DIGITAL. IF THE SOFTWARE FAILS TO FUNCTION FOR REASONS STATED ABOVE, THE CUS- TOMER WARRANTY WILL BE INVALIDATED AND ALL SERVICE CALLS WILL BE BIL- LABLE AT THE PREVAILING PER CALL RATES. This Software Warranty Addendum is effective for licensed software prod- ucts ordered in the United States after October 1988 and supersedes all prior versions. The above information is valid at time of release. Please contact your local Digital office for the most up-to-date information. [R] Oracle is a registered trademark of Oracle Corporation. [TM] Oracle CODASYL DBMS is a trademark of Oracle Corporation. [TM] The DIGITAL Logo, DATATRIEVE, DEC, DECwindows, Digital, Open- VMS, and VAX are trademarks of Digital Equipment Corporation. ©Digital Equipment Corporation 1998. All rights reserved. 18