Document revision date: 30 March 2001

## POLYCENTER Software Installation Utility Developer's Guide

Previous | Contents | Index

### 3.4.2 PDL Statement Syntax

A PDL statement consists of:

- A keyword phrase that identifies the statement (required)
- Zero or more parameter values (which may be expressions in certain contexts)
- Zero or more options each specified as a keyword phrase and value pair
- A semicolon (;) that terminates the statement (required)

Additional Syntax Rules

- Statements can span multiple lines and whitespace can be used freely to improve readability or show relationship through indentation levels.
- Case is not significant, except within a quoted string.
- A keyword phrase consists of one or more keywords as defined by the PDL statement.
- A comment is a sequence of two consecutive hyphens - - followed by characters up to and including end-of-line.
  When a string containing consecutive hyphens is passed as a parameter or option value, enclose the string in quotes. For example, " `a--b.dat` ". This prevents the hyphens from being parsed as the start of a comment.
- Lexical element separators are used to set off keywords, values, expressions, and so on. They include end-of-line, comment, and the following characters: space, horizontal tab, form feed, and vertical tab (except when they appear within a quoted string).
- Delimiters are required syntax in many situations. They consist of the following characters: semicolon (;), comma (,), left parenthesis ((), right parenthesis ()), left angle bracket (<), and right angle bracket (>).
  When a string contains a delimiter character that is passed as a parameter or option value, enclose the string in quotes. For example, to pass the numeric UIC string [1,1] as an option value, use the quoted string form of "[1,1]" because it contains a comma character.

### 3.4.3 PDL Function Syntax and Expressions

Certain PDL statements have a function form that tests for a condition in the execution environment and returns a Boolean value of true or false. A function is syntactically similar to its corresponding statement except that a function is enclosed in left and right angle brackets (<...>) instead of being terminated by a semicolon (;).

The following statements have corresponding functions:

- hardware device
- hardware processor
- option
- software
- upgrade

The logical name function does not have a corresponding statement form.

Expressions are used in if statements to produce a Boolean value for the if-condition test. An expression is delimited by opening and closing parentheses ((...)). It contains one or more functions and, optionally, one or more of the keywords AND, OR, and NOT, which are used as logical operators.

An expression has one of the following forms, where each term is either another expression or a function:

- (term)
- (term AND term)
- (term OR term)
- (NOT term)

The following example shows an if statement using a compound expression:

    if ( (not <hardware device MUA0:>) and
         (<software ABC VAXVMS TEST version below 2.0>) ) ;
        .
        .
        .
    end if ;

### 3.4.4 PDL Data Types and Values

The PDL has several base data types that you must use when passing parameters to the PDL statements listed in Chapter 7. Table 3-1 describes the PDL base data types and their values. PDL statements may restrict the range of values that can be used as parameters.

Table 3-1 Base Data Types and Values
Data Type | Values
--- | ---
Boolean | The number 0 (false), the number 1 (true), the keywords false, true, no, and yes.
String | A sequence of 0 to 255 ISO Latin-1 characters. In the context of PDF language statements, abc is an unquoted string. "abc" is a quoted string. ""double_quoted_string"" is a quoted string that maintains original quotation marks. You must use the quoted string form if the string contains any PDL delimiters (open/close parenthesis, comma, open/close angle brackets, and semicolons) or lexical element separators (double hyphen, space, horizontal tab, form feed, or vertical tab). For example, "/privilege=(tmpmbx, netmbx)". Table 3-2 lists the additional constraints on PDL strings.
Signed integer | Specifies a positive, negative, or zero integral value in the range of -2147483648 to 2147483647.
Unsigned integer | Specifies a zero or positive integral value in the range of 0 through 4294967295.
Version identifier | See the description in Section 2.3.
Text module name | Specifies a unique name for a text module using the printable ISO Latin-1 characters, excluding horizontal tab, space, exclamation point, and comma. The name can be from 1 to 31 characters.

Table 3-2 describes additional constraints on the string data type.

Table 3-2 String Data Type Constraints
String Type | Values | Examples
--- | --- | ---
Unconstrained | None; any character may appear in any position. |
Access control entry (ACE) | Specifies an ACE for a directory or file. | "(IDENTIFIER=[KM],ACCESS=READ)"
Command | Specifies an operating system command that you want to execute during a specific operation. | @PCSI$DESTINATION:[SYSTEST] PROD$IVP.COM
Device name | Specifies the name of a hardware device. | DUB6:
File name | Specifies a file name (without a device or directory specification). | STARTUP.DAT
Identifier name | Specifies a rights identifier. | DOC
Module name | Specifies the name of a module in a library. | FMSHELP
Processor model name | Specifies the model identification of a particular computer system. | 7
Relative directory specification | Specifies the directory name and, if necessary, the directory path, relative to the root directory specification. | [MY_PRODUCT]
Relative file specification | Specifies the directory path and file name, relative to the root directory path. | [MY_PRODUCT]DRIVER.DAT
Root directory specification | Specifies the directory name and a trailing period (.). If you specify a directory name and omit the period, it is inserted. If necessary, you can add the device name. | [TEST.] SYS$SYSDEVICE:[VMS$COMMON.]

## 3.5 Kit Types and Usage

The POLYCENTER Software Installation utility supports seven kit types that can be grouped into three broad categories:

- Primary kit --- Used to install or upgrade a product. Primary kits can require prerequisite products to be installed before or concurrently. Kit types in this category include:
  - Full (layered product or application software)
  - Operating system
  - Platform (product suite)
- Secondary kit --- Used to modify installed products. Kits types in this category include:
  - Partial (changes the product's version)
  - Patch (maintenance update)
  - Mandatory update
- Transition kit --- Used to register a product that has been installed using VMSINSTAL or some method other than the DCL command PRODUCT INSTALL. The kit type in this category is as follows:
  - Transition

You use the PRODUCT PACKAGE command to package (or build) a product kit. The output of the packaging process is an installable kit (in either sequential copy format or reference format) that contains:

- Product material (usually present) --- The files that make up the product. Usually, the installation of a product kit copies files to the target disk. However, there are exceptions:
  - A transition kit never provides files.
  - A platform kit references other products; it may or may not provide common files for the product suite.
  - Since product material is not a requirement for any type of kit, you may create "skeleton" kits for testing purposes that do not modify the target disk.
- A product description file (required) that drives the installation process --- It defines the managed objects that are provided or created and contains directives for the installation utility. In addition, it can include options for the installer to select, declare software references to other prerequisite products, and invoke command procedures you write to augment the installation process.
- A product text file (optional) that provides text modules for use during the installation process.
- Temporary files such as command procedures (optional) that are used during the installation process but are not left on the user's system.

The full product name (that is, the string producer-base-product) must be unique among all products installed on a system. This implies, for example, that there could be two FORTRAN compilers installed from different companies (such as DEC-AXPVMS-FORTRAN and XYZCORP-AXPVMS-FORTRAN), but there cannot be two patch kits with the same full name that are intended to apply to different products (such as ABC-AXPVMS-ECO1 for ABC-AXPVMS-COBOL and ABC-AXPVMS-ECO1 for ABC-AXPVMS-C).

The following sections describe each type of kit and provide examples of their product description files.

### 3.5.1 The Full Kit Type

A full kit provides layered product application software and is the most common type of kit. The PDF for a full kit must contain a product statement with the keyword full and an end product statement, as shown in the following example:

    product CPQ AXPVMS TEST_A V2.0 full ;
       .
       .
       .
    end product ;

The full kit has the following characteristics:

- It contains all of the material for the product. Therefore, it can be used to install the product for the first time or it can upgrade a previously installed version of the product.
- The product can be removed, configured, or reconfigured.
- Its PDF can contain option and software statements.

Example 3-1 shows a full kit that references another product.

Example 3-1 PDF for a Full Kit That References Another Full Kit

    product DEC AXPVMS FORTRAN V7.1-1 full ; (1)
        if (not <software DEC AXPVMS VMS version minimum V7.1>) ;(2)
            software DEC AXPVMS FORRTL version minimum V7.1 ;
        end if ;
        information STARTUP_TASK phase after ;
        information RELEASE_NOTES phase after ;(3)
        file [SYSHLP]FORTRAN.RELEASE_NOTES release notes ;(4)
        file [SYSHLP]FORTRAN_RELEASE_NOTES.PS ;
        file [SYSHLP]FORTRAN_RELEASE_NOTES.DECW$BOOK ;
        if (<software DEC AXPVMS FORTRAN90>) ;(5)
            error REMFORT90 ;
        end if ;
        option FORTRAN_90 ;(6)
            file [SYSEXE]F90$MAIN.EXE generation 2 ;
            file [SYSMSG]F90$MSG.EXE generation 2 ;
            module [000000]F90CLD.CLD type command generation 2 module F90 ;
            module [000000]F90HELP.HLP type help generation 2 module F90 ;(7)
        end option ;
        option FORTRAN_77 ;
            file [SYSEXE]FORT$MAIN.EXE generation 1 ;
            file [SYSEXE]FORT$FSPLIT.EXE generation 1 ;
            file [SYSMSG]FORT$MSG.EXE generation 1 ;
            file [SYSMSG]FORT$MSG2.EXE generation 1 ;
            module [000000]DEC_FORTCLD.CLD type command
                generation 1 module FORTRAN ;
            module [000000]DEC_FORHELP.HLP type help
                generation 1 module FORTRAN ;
        end option ;
        file [SYSLIB]FORSYSDEF.TLB generation 5 ;
        file [SYS$STARTUP]FORT$STARTUP.COM generation 1 protection private ;(8)
        file [SYSTEST]FORT$IVP.COM generation 1 protection private ;
        execute test "@PCSI$DESTINATION:[SYSTEST]FORT$IVP.COM" ;(9)
    end product ;

1. The product statement identifies this as a complete layered product kit for installation of (or upgrade to) FORTRAN V7.1-1 on an OpenVMS Alpha system.
2. The if...end if group conditionally executes statements within the group based on the evaluation of the if function. In this example, the software statement is executed only if the system is running a version of OpenVMS earlier than V7.1. This software statement creates a software reference to the product FORRTL. If FORTRL V7.1 or later is already installed, the software dependency is satisfied; otherwise, FORRTL is automatically installed concurrently with FORTRAN.
3. This information statement causes a message to be displayed after the product has been installed. Text is obtained from the module RELEASE_NOTES in the PTF:

           1 RELEASE_NOTES
           =prompt Type HELP FORTRAN Release_notes for release notes location

4. This file statement copies file FORTRAN.RELEASE_NOTES to SYS$SYSDEVICE:[VMS$COMMON.][SYSHLP] (the same as SYS$COMMON:[SYSHLP]) unless the user specifies a different destination. The keyword phrase release notes tags this file in the kit so that the PRODUCT EXTRACT RELEASE_NOTES command can be used to extract this file from the kit.
5. This if statement determines whether or not the product FORTRAN90 is installed. If it is installed, text from the module REMFORT90 in the PTF is displayed and the user is asked if he wants to terminate the operation:

           1 REMFORT90
           =prompt PRODUCT REMOVE FORTRAN90 before installing Compaq Fortran
           The obsolete DEC Fortran 90 product must be removed before Compaq Fortran
           is installed.  To do this, use the command:

              PRODUCT REMOVE FORTRAN90

   Note that if the keyword abort had been used on the error statement, the operation would terminate unconditionally. abort was not used because the abort keyword was introduced in OpenVMS V7.1 and this kit can be installed on earlier versions of OpenVMS.
6. This option...end option group conditionally provides files and library modules associated with the Fortran 90 compiler. The user is asked a question from text module FORTRAN_90 in the PTF:

           1 FORTRAN_90
           =prompt Compaq Fortran 90 compiler
           This option selects the Compaq Fortran 90 compiler.

   By default, the option statement displays only text from the prompt line. However, if the user specifies the /HELP qualifier on the PRODUCT INSTALL command, then both prompt and extended help text is displayed (two lines in this case).
7. The module statement installs the help text module F90 from the file F90HELP.HLP in the default help library [SYSHLP]HELPLIB.HLB. The file F90HELP.HLP is not left on the system because a file statement is not used.
8. The keyword phrase protection private on this file statement sets the file protection to (S:RWED, O:RWED, G, W), giving general users no access.
9. The execute test statement executes the functional test for the product (the installation verification procedure) after the product has been installed. If the test fails, the user is informed but the product is not removed. The user can use the PRODUCT REMOVE command to delete the product.

Example 3_2 shows the full kit referenced by Example 3-1.

Example 3-2 PDF for a Full Kit

    product DEC AXPVMS FORRTL V7.1-427 full ;(1)
        if (<software DEC AXPVMS VMS version minimum V7.0>) ;(2)
            file [SYSLIB]FOR$DEC$FORRTL.EXE
                source [SYSLIB]FOR$DEC$FORRTL-V70.EXE ;
            file [SYSLIB]FOR$DEC$FORRTL.OBJ
                source [SYSLIB]FOR$DEC$FORRTL-V70.OBJ ;
        else ;
            file [SYSLIB]FOR$DEC$FORRTL.EXE
                source [SYSLIB]FOR$DEC$FORRTL-V61.EXE ;
            file [SYSLIB]FOR$DEC$FORRTL.OBJ
                source [SYSLIB]FOR$DEC$FORRTL-V61.OBJ ;
        end if ;
        if (<software DEC AXPVMS VMS version below V7.1>) ;
            file [SYSLIB]FOR$NXTAFTR.OBJ ;
        end if ;
        file [SYSUPD]FOR$INSTALL_FORRTL.COM ;
        file [SYSTEST]FOR$RTL_IVP.COM ;
        file [SYSTEST]FOR$RTL_IVP.OBJ ;
        file [SYSHLP]FORRTL.RELEASE_NOTES release notes ;
        information RELEASE_NOTES phase after ;
        information POST_INSTALL phase after ;
        execute install "@PCSI$DESTINATION:[SYSUPD]FOR$INSTALL_FORRTL INSTALL"
                remove  "@PCSI$DESTINATION:[SYSUPD]FOR$INSTALL_FORRTL REMOVE";(3)
        execute test "@PCSI$DESTINATION:[SYSTEST]FOR$RTL_IVP" ;
    end product ;

1. The product statement identifies this as a complete layered product kit for installation of (or upgrade to) FORRTL V7.1-427 on an OpenVMS Alpha system.
2. The if...else...end if group conditionally executes statements within the group based on the evaluation of the if function. In this example, two files named [SYSLIB]FOR$DEC$FORRTL.EXE and [SYSLIB]FOR$DEC$FORRTL.OBJ are always provided. However, the contents of these files vary depending on the version of the VMS product that is installed. Notice the use of the source clause on the file statements to select the desired file from the kit to copy to the target disk.
3. The execute install...remove statement executes the command procedure PCSI$DESTINATION:[SYSUPD]FOR$INSTALL_FORRTL.COM during installation or upgrade of the product, and also during removal of the product. Instead of providing two command procedures, one is used and a parameter is passed to it to indicate the operation.

### 3.5.2 The Operating System Kit Type

The operating system kit provides operating system software such as OpenVMS. The PDF for an operating system kit must contain a product statement with the keyword operating system and an end product statement as shown in the following example:

    product DEC AXPVMS VMS V7.2 operating system ;
       .
       .
       .
    end product ;

The operating system kit has the following characteristics:

- It contains all of the material for the product. Therefore, it can be used to install the product for the first time or it can upgrade a previously installed version of the product.
- The product cannot be removed unless the PRODUCT REMOVE command contains the /REMOTE qualifier to remove the operating system on a disk that is not the running system.
- The product can be configured or reconfigured.
- Its PDF can contain option and software statements.
- There can be only one product of type operating system installed on a system disk.
- Except for the kit type designation, the structure of an operating system kit is the same as a full kit; all PDL statements that are allowed in a full kit can be used in an operating system kit.

Example 3-3 shows an operating system kit.

Example 3-3 PDF for an Operating System Kit

    product DEC AXPVMS VMS V7.1 operating system ;(1)
        upgrade version minimum V6.1 version below A7.2;(2)
       .
       .
       .
        directory [SYSEXE] ;(3)
        directory [SYSFONT] ;
        directory [SYSFONT.DECW] ;
        directory [SYSFONT.DECW.100DPI] ;
       .
       .
       .
        file [SYSEXE]COPY.EXE generation 40069227 ; (4)
        file [SYSEXE]CREATE.EXE generation 40069227 ;
        file [SYSEXE]CREATEFDL.EXE generation 40069227 ;
        file [SYSEXE]DCL.EXE generation 40069227 ;
       .
       .
       .
        file [SYSMGR]SYLOGIN.TEMPLATE generation 40069227 ;
        file [SYSMGR]SYLOGIN.COM generation 40069227 (5)
            source [SYSMGR]SYLOGIN.TEMPLATE write ;
       .
       .
       .
        option ACCOUNTING ;
            file [SYSEXE]ACC.EXE generation 40069227 ;
        end option ;
        option UTILITIES ; (6)
            option MAIL ;
                file [SYSEXE]MAIL.COM generation 40069227 ;
                file [SYSEXE]MAIL.EXE generation 40069227 ;
                file [SYSEXE]MAIL_OLD.EXE generation 40069227 ;
                file [SYSEXE]MAILEDIT.COM generation 40069227 ;
                file [SYSEXE]MAIL_SERVER.EXE generation 40069227 ;
                file [SYSHLP]MAILHELP.HLB generation 40069227 ;
            end option ;
       .
       .
       .
            option DUMP ;
                file [SYSEXE]DUMP.EXE generation 40069227 ;
            end option ;
            option HELP_LIBRARY ;
                scope global ;
                  file [SYSHLP]HELPLIB.HLB generation 40069227 release merge ;(7)
                end scope ;
            end option ;
        end option ;
       .
       .
       .
        option REMOVE_OBSOLETE ;
            remove ; (8)
                file [SYSLIB]LIBOTS.OLB ;
                file [SYSLIB]EDTSHR_TV.EXE ;
            end remove ;
        end option ;
    end product ;

Previous | Next | Contents | Index

| privacy and legal statement |
5952PRO_003.HTML