Kednos PL/I for OpenVMS Systems User Manual
 *HyperReader
  Next     Previous     Contents     Examples     Figures     Tables     Index     Close     Help  
CONTENTS

  Title Page

  Copyright Page

  Preface

  1      Overview

  2      Developing PL/I Programs at the DCL Command Level
    2.1 DCL Commands for Program Development
    2.2 Creating a PL/I Program
      2.2.1      Using EDT
      2.2.2      Using LSE
      2.2.3      Using DECTPU
        2.2.3.1      The EVE Interface
        2.2.3.2      The EDT Keypad Emulator Interface
    2.3 Compiling a PL/I Program
      2.3.1      PLI Command
      2.3.2      PLI Command Qualifiers
      2.3.3      PL/I Preprocessor
        2.3.3.1      Preprocessor Compilation Control
        2.3.3.2      Preprocessor Procedures
      2.3.4      Compiler Error Messages
      2.3.5      Kednos PL/I for OpenVMS VAX Compiler Listing
      2.3.6      Kednos PL/I for OpenVMS Alpha Compiler Listing
    2.4 Linking a PL/I Program
      2.4.1      LINK Command
      2.4.2      LINK Command Qualifiers
      2.4.3      Linker Input Files
      2.4.4      Linker Output Files
      2.4.5      Object Module Libraries
      2.4.6      Linker Error Messages
    2.5 Running a PL/I Program

  3      Using the OpenVMS Debugger
    3.1 Overview
    3.2 Features of the Debugger
    3.3 Getting Started with the Debugger
      3.3.1      Compiling and Linking a Program to Prepare for Debugging
      3.3.2      Starting and Terminating a Debugging Session
      3.3.3      Issuing Debugger Commands
      3.3.4      Viewing Your Source Code
        3.3.4.1      Noscreen Mode
        3.3.4.2      Screen Mode
      3.3.5      Controlling and Monitoring Program Execution
        3.3.5.1      Starting and Resuming Program Execution
        3.3.5.2      Determining the Current Value of the Program Counter
        3.3.5.3      Suspending Program Execution
        3.3.5.4      Tracing Program Execution
        3.3.5.5      Monitoring Changes in Variables
      3.3.6      Examining and Manipulating Data
        3.3.6.1      Displaying the Values of Variables
        3.3.6.2      Changing the Values of Variables
        3.3.6.3      Evaluating Expressions
        3.3.6.4      Notes on Debugger Support for PL/I
      3.3.7      Controlling Symbol References
        3.3.7.1      Module Setting
        3.3.7.2      Resolving Multiply Defined Symbols
    3.4 Sample Debugging Session
    3.5 Debugger Command Summary
      3.5.1      Starting and Terminating a Debugging Session
      3.5.2      Controlling and Monitoring Program Execution
      3.5.3      Examining and Manipulating Data
      3.5.4      Controlling Type Selection and Symbolization
      3.5.5      Controlling Symbol Lookup
      3.5.6      Displaying Source Code
      3.5.7      Using Screen Mode
      3.5.8      Editing Source Code
      3.5.9      Defining Symbols
      3.5.10     Using Keypad Mode
      3.5.11     Using Command Procedures and Log Files
      3.5.12     Using Control Structures
      3.5.13     Additional Commands

  4      The File System
    4.1 File Control
    4.2 Using the OpenVMS File System for I/O
      4.2.1      PL/I Files and OpenVMS File Specifications
      4.2.2      Using the TITLE Option
      4.2.3      Using Logical Names
      4.2.4      Using the DEFAULT_FILE_NAME Option
      4.2.5      Expanding File Specifications
    4.3 Error Handling
      4.3.1      Values Returned by PL/I Built-In Functions for Error Handling
      4.3.2      Writing an Error Handler
      4.3.3      Default Error Handling for the File System

  5      Stream Input/Output

  6      Record Input/Output
    6.1 File Organizations
    6.2 Access Modes
      6.2.1      Sequential Access
      6.2.2      Random Access
      6.2.3      Random and Sequential Access
      6.2.4      Block Input/Output
      6.2.5      Access by Record Identification
    6.3 Record Formats
      6.3.1      Fixed-Length Records
      6.3.2      Variable-Length Records
      6.3.3      Variable-Length Records with a Fixed-Length Control Area
    6.4 Carriage Control
    6.5 Sequential Files
      6.5.1      Creating a Sequential File
      6.5.2      Using Magnetic Tape Files
      6.5.3      Allocated and Spooled Devices
    6.6 Relative Files
      6.6.1      Relative File Organization
      6.6.2      Creating a Relative File
      6.6.3      Using Relative Files
      6.6.4      Error Handling
    6.7 Indexed Sequential Files
      6.7.1      Indexed File Organization
      6.7.2      Defining and Creating an Indexed Sequential File
        6.7.2.1      Using EDIT/FDL
        6.7.2.2      Using a PL/I Program
      6.7.3      Defining Keys
      6.7.4      Using Indexed Sequential Files

  7      Options of the ENVIRONMENT Attribute
    7.1 Specifying and Using ENVIRONMENT Options
      7.1.1      Arguments for ENVIRONMENT Options
        7.1.1.1      Expressions
        7.1.1.2      Variable References
        7.1.1.3      Boolean Values
      7.1.2      Interpretation of ENVIRONMENT Options for Existing Files
      7.1.3      Determining ENVIRONMENT Options
      7.1.4      Device Independence of ENVIRONMENT Options
      7.1.5      Conflicting and Invalid ENVIRONMENT Options
    7.2 Summary of ENVIRONMENT Options
      7.2.1      APPEND Option
      7.2.2      BACKUP_DATE Option
      7.2.3      BATCH Option
      7.2.4      BLOCK_BOUNDARY_FORMAT Option
      7.2.5      BLOCK_IO Option
      7.2.6      BLOCK_SIZE Option
      7.2.7      BUCKET_SIZE Option
      7.2.8      CARRIAGE_RETURN_FORMAT Option
      7.2.9      CONTIGUOUS Option
      7.2.10     CONTIGUOUS_BEST_TRY Option
      7.2.11     CREATION_DATE Option
      7.2.12     CURRENT_POSITION Option
      7.2.13     DEFAULT_FILE_NAME Option
      7.2.14     DEFERRED_WRITE Option
      7.2.15     DELETE Option
      7.2.16     EXPIRATION_DATE Option
      7.2.17     EXTENSION_SIZE Option
      7.2.18     FILE_ID Option
      7.2.19     FILE_ID_TO Option
      7.2.20     FILE_SIZE Option
      7.2.21     FIXED_CONTROL_SIZE Option
      7.2.22     FIXED_CONTROL_SIZE_TO Option
      7.2.23     FIXED_LENGTH_RECORDS Option
      7.2.24     GROUP_PROTECTION Option
      7.2.25     IGNORE_LINE_MARKS Option
      7.2.26     INDEX_NUMBER Option
      7.2.27     INDEXED Option
      7.2.28     INITIAL_FILL Option
      7.2.29     MAXIMUM_RECORD_NUMBER Option
      7.2.30     MAXIMUM_RECORD_SIZE Option
      7.2.31     MULTIBLOCK_COUNT Option
      7.2.32     MULTIBUFFER_COUNT Option
      7.2.33     NO_SHARE Option
      7.2.34     OWNER_GROUP Option
      7.2.35     OWNER_ID Option
      7.2.36     OWNER_MEMBER Option
      7.2.37     OWNER_PROTECTION Option
      7.2.38     PRINTER_FORMAT Option
      7.2.39     READ_AHEAD Option
      7.2.40     READ_CHECK Option
      7.2.41     RECORD_ID_ACCESS Option
      7.2.42     RETRIEVAL_POINTERS Option
      7.2.43     REVISION_DATE Option
      7.2.44     REWIND_ON_CLOSE Option
      7.2.45     REWIND_ON_OPEN Option
      7.2.46     SCALARVARYING Option
      7.2.47     SHARED_READ Option
      7.2.48     SHARED_WRITE Option
      7.2.49     SPOOL Option
      7.2.50     SUPERSEDE Option
      7.2.51     SYSTEM_PROTECTION Option
      7.2.52     TEMPORARY Option
      7.2.53     TRUNCATE Option
      7.2.54     USER_OPEN Option
      7.2.55     WORLD_PROTECTION Option
      7.2.56     WRITE_BEHIND Option
      7.2.57     WRITE_CHECK Option
    7.3 ENVIRONMENT Options for File Protection and File Sharing
      7.3.1      File Protection
        7.3.1.1      Defining a File's Ownership
        7.3.1.2      Defining a File's Protection
      7.3.2      File Sharing
        7.3.2.1      Specifying File Sharing
        7.3.2.2      File Locking
        7.3.2.3      Record Locking
        7.3.2.4      Examples of File Sharing
    7.4 ENVIRONMENT Options for I/O Optimization

  8      Input/Output Statement Options
    8.1 Option Format
    8.2 Summary of Input/Output Statement Options
      8.2.1      CANCEL_CONTROL_O Option
      8.2.2      FAST_DELETE Option
      8.2.3      FIXED_CONTROL_FROM Option
      8.2.4      FIXED_CONTROL_TO Option
      8.2.5      INDEX_NUMBER Option
      8.2.6      LOCK_ON_READ Option
      8.2.7      LOCK_ON_WRITE Option
      8.2.8      MANUAL_UNLOCKING Option
      8.2.9      MATCH_NEXT Option
      8.2.10     MATCH_NEXT_EQUAL Option
      8.2.11     NO_ECHO Option
      8.2.12     NO_FILTER Option
      8.2.13     NOLOCK Option
      8.2.14     NONEXISTENT_RECORD Option
      8.2.15     PROMPT Option
      8.2.16     PURGE_TYPE_AHEAD Option
      8.2.17     READ_REGARDLESS Option
      8.2.18     RECORD_ID Option
      8.2.19     RECORD_ID_TO Option
      8.2.20     TIMEOUT_PERIOD Option
      8.2.21     WAIT_FOR_RECORD Option

  9      File-Handling Built-In Subroutines
    9.1 DISPLAY Built-In Subroutine
    9.2 EXTEND Built-In Subroutine
    9.3 FLUSH Built-In Subroutine
    9.4 FREE Built-In Subroutine
    9.5 NEXT_VOLUME Built-In Subroutine
    9.6 RELEASE Built-In Subroutine
    9.7 REWIND Built-In Subroutine
    9.8 SPACEBLOCK Built-In Subroutine

  10     Error Handling
    10.1 RESIGNAL Built-In Subroutine
    10.2 ON-Unit Actions
      10.2.1     Handling the Condition
      10.2.2     Resignaling the Condition
      10.2.3     Unwinding the Call Stack
      10.2.4     Stopping the Program
    10.3 Relationship of OpenVMS Condition Handlers to PL/I ON-Units
    10.4 Search Path for ON-Units
      10.4.1     Default Handling for Main Procedures
      10.4.2     Default Handling for Non-Main Procedures
      10.4.3     Multiple Conditions
    10.5 Scope of ON-Units
    10.6 ON-Unit Examples
    10.7 Condition-Handling Built-In Functions
      10.7.1     ONARGSLIST Built-In Function
      10.7.2     ONCODE Built-In Function
      10.7.3     ONFILE Built-In Function
      10.7.4     ONKEY Built-In Function

  11     Using PL/I in the Common Language Environment
    11.1 OpenVMS Calling Standard
      11.1.1     Register and Stack Usage
      11.1.2     Return of the Function Value
      11.1.3     The Argument List
    11.2 Parameter-Passing Mechanisms
      11.2.1     Passing Parameters by Reference
        11.2.1.1     Using the ANY Attribute
        11.2.1.2     Dummy Arguments for Arguments Passed by Reference
        11.2.1.3     Using Pointer Values for Arguments Passed by Reference
        11.2.1.4     Passing Arrays to a FORTRAN Routine by Reference
      11.2.2     Passing Parameters by Descriptor
        11.2.2.1     Passing Character Strings
        11.2.2.2     Passing Varying Character Strings
        11.2.2.3     Using ANY CHARACTER( * )
        11.2.2.4     Using ANY DESCRIPTOR
        11.2.2.5     Passing an Actual Descriptor
      11.2.3     Passing Parameters by Value
        11.2.3.1     Dummy Arguments for Arguments Passed by Value
      11.2.4     Special Parameter Attributes
        11.2.4.1     LIST Attribute
        11.2.4.2     OPTIONAL Attribute
        11.2.4.3     TRUNCATE Attribute
      11.2.5     Summary of Rules for Passing Parameters
    11.3 OpenVMS Run-Time Library Routines
    11.4 OpenVMS System Service Routines
    11.5 OpenVMS Utility Routines
      11.5.1     OpenVMS SORT/MERGE Routines
    11.6 Calling Routines
      11.6.1     Determining the Type of Call
      11.6.2     Declaring an External Routine and Its Arguments
      11.6.3     Calling the External Routine
      11.6.4     Calling System Routines
        11.6.4.1     Declaring System Routines
        11.6.4.2     System Routine Arguments
        11.6.4.3     Symbol Definitions
    11.7 Condition Values
      11.7.1     Testing for Specific Condition Values
      11.7.2     Setting and Displaying Fields Within a Status Value
    11.8 Examples of Calling System Routines
      11.8.1     Logical Name Translation
      11.8.2     Mailbox Services
        11.8.2.1     Creating the Mailbox
        11.8.2.2     Deleting the Mailbox
      11.8.3     Timer and Time Conversion Routines
        11.8.3.1     Obtaining a Time Value in System Format
        11.8.3.2     Setting the Timer
      11.8.4     A Ctrl/c-Handling Routine
        11.8.4.1     Establishing a Ctrl/c-Handling Routine
        11.8.4.2     Ctrl/c Routine
        11.8.4.3     Testing the Ctrl/c Routine
      11.8.5     Obtaining Job/Process Information
      11.8.6     Using SORT Routines

  12     Global Symbols
    12.1 Using Global Symbols in PL/I Procedures
      12.1.1     The GLOBALDEF Attribute
      12.1.2     The GLOBALREF Attribute
      12.1.3     Defining Global Symbols in PL/I
      12.1.4     Using MACRO Global Symbols with Multiple Definitions
    12.2 The READONLY and VALUE Attributes
      12.2.1     The READONLY Attribute
      12.2.2     The VALUE Attribute
    12.3 Obtaining Definitions for System Global Symbols

  13     Mailboxes
    13.1 Using Mailboxes
      13.1.1     System Information
      13.1.2     Applications
      13.1.3     Effects of the OPEN Statement
      13.1.4     Effects of the CLOSE Statement
    13.2 Mailbox Input/Output
      13.2.1     Synchronous Input/Output
      13.2.2     Asynchronous Input/Output

  14     Accessing Files on a Network
    14.1 Remote File Access
    14.2 Task-to-Task Communication

  15     Storage Allocation
    15.1 Program Sections
      15.1.1     Attributes of Program Sections
      15.1.2     Program Sections Created by PL/I
      15.1.3     Sharing Program Sections with FORTRAN Procedures
    15.2 Addressability

  A PL/I Messages
    A.1 Compiler Messages
    A.2 Run-Time Messages
    A.3 %DICTIONARY Error Messages

  B Correspondence of PL/I and RMS

  C Optional Programming Productivity Tools
    C.1 Using LSE with PL/I
      C.1.1      Entering Source Code Using Tokens and Placeholders
      C.1.2      Compiling Source Code
      C.1.3      Examples
      C.1.4      DO Statement
      C.1.5      IF Statement
      C.1.6      Assignment Statement
      C.1.7      DECLARE Statement
      C.1.8      SUBSTR Expression
      C.1.9      %PROCEDURE Statement
    C.2 Using SCA (Kednos PL/I for OpenVMS VAX only)
      C.2.1      Multimodular Development
      C.2.2      Setting Up an SCA Environment
        C.2.2.1      Creating an SCA Library
        C.2.2.2      Generating the Data Analysis Files
        C.2.2.3      Loading Data Analysis Files into a Local Library
        C.2.2.4      Selecting an SCA Library
      C.2.3      Using SCA for Cross-Referencing

  D Rules for Conversion of Data
    D.1 Assignments to Arithmetic Variables
      D.1.1     Arithmetic to Arithmetic Conversions
      D.1.2     Pictured to Arithmetic Conversions
      D.1.3     Bit-String to Arithmetic Conversions
      D.1.4     Character String to Arithmetic Conversions
    D.2 Assignments to Bit-String Variables
      D.2.1     Arithmetic and Pictured to Bit-String Conversions
      D.2.2     Character-String to Bit-String Conversions
    D.3 Assignments to Character-String Variables
      D.3.1     Arithmetic to Character-String Conversions
        D.3.1.1      Conversion from Fixed-Point Binary or Decimal
        D.3.1.2      Conversion from Floating-Point Binary or Decimal
      D.3.2     Pictured to Character-String Conversions
      D.3.3     Bit-String to Character-String Conversions
    D.4 Assignments to Pictured Variables
    D.5 Conversions Between Offsets and Pointers

  E The Common Data Dictionary
    E.1 PL/I and CDDL Data Types
    E.2 Creating CDD Structure Declarations
    E.3 Using the CDD

  Next     Previous     Contents     Examples     Figures     Tables     Index     Close     Help     ~Off