Chapter 13 |
13
|
Introduction to Command Procedures
|
13.1
|
Basic Information for Writing Command Procedures
|
13.1.1
|
Default File Type
|
13.1.2
|
Writing Commands
|
13.1.3
|
Writing Command Lines
|
13.2
|
Using Labels in Command Lines
|
13.2.1
|
Labels in Local Symbol Tables
|
13.2.2
|
Duplicate Labels
|
13.3
|
Using Comments in Command Procedures
|
13.4
|
How to Write Command Procedures
|
13.5
|
Steps for Writing Command Procedures
|
13.5.1
|
Step 1: Design the Command Procedure
|
13.5.2
|
Step 2: Assign Variables and Test Conditionals
|
13.5.2.1
|
Using the INQUIRE Command
|
13.5.2.2
|
Preserving Literal Characters
|
13.5.2.3
|
Testing Conditionals Using IF and THEN
|
13.5.2.4
|
Writing Program Stubs
|
13.5.3
|
Step 3: Add Loops
|
13.5.4
|
Step 4: End the Command Procedure
|
13.5.4.1
|
Using the EXIT Command
|
13.5.4.2
|
Using the STOP Command
|
13.5.5
|
Step 5: Test and Debug the Program Logic
|
13.5.5.1
|
Debugging Command Procedures
|
13.5.5.2
|
Enabling Verification During Execution
|
13.5.6
|
Step 6: Add Cleanup Tasks
|
13.5.6.1
|
Closing Files
|
13.5.6.2
|
Deleting Temporary or Extraneous Files
|
13.5.6.3
|
Commonly Changed Process Characteristics
|
13.5.6.4
|
Ensuring Cleanup Operations Are Performed
|
13.5.7
|
Step 7: Complete the Command Procedure
|
13.6
|
Executing Command Procedures
|
13.6.1
|
Executing Command Procedures from Within Other Command Procedures
|
13.6.2
|
Executing Command Procedures on Remote Nodes
|
13.6.2.1
|
Security Note
|
13.6.3
|
Executing Command Procedures with DCL Qualifiers or Parameters
|
13.6.3.1
|
Restrictions
|
13.6.4
|
Executing Command Procedures Interactively
|
13.6.5
|
Executing Command Procedures as Batch Jobs
|
13.6.5.1
|
Remote Batch Jobs
|
13.6.5.2
|
Restarting Batch Jobs
|
13.6.6
|
Executing Command Procedures on Disk and Tape Volumes
|
13.6.6.1
|
Executing on Private Disks
|
13.6.6.2
|
Executing on Tape Volumes
|
13.7
|
Exiting and Interrupting Command Procedures
|
13.7.1
|
Methods of Exiting
|
13.7.2
|
Exit-Handling Routines
|
13.8
|
Handling Errors
|
13.8.1
|
Default Error Actions
|
13.9
|
Other Methods of Error Handling
|
13.9.1
|
ON Command
|
13.10
|
Using the SET NOON Command
|
13.11
|
Handling Ctrl/Y Interruptions
|
13.11.1
|
Stopping Command Procedures
|
13.11.2
|
Stopping Privileged Images
|
13.12
|
Setting Ctrl/Y Action Routines
|
13.12.1
|
Using the ON Command
|
13.12.2
|
Effects of Entering Ctrl/Y
|
13.13
|
Disabling and Enabling Ctrl/Y Interruptions
|
13.13.1
|
Using SET NOCONTROL=Y
|
13.13.2
|
Using SET CONTROL=Y
|
13.14
|
Detecting Errors in Command Procedures Using Condition Codes
|
13.14.1
|
Displaying Condition Codes ($STATUS)
|
13.14.2
|
Condition Codes with the EXIT Command
|
13.14.3
|
Determining Severity Levels
|
13.14.4
|
Testing for Successful Completion
|
13.15
|
Using Commands That Do Not Set $STATUS
|
13.16
|
Login Command Procedures
|
13.16.1
|
Systemwide Login Command Procedures
|
13.16.2
|
Personal Login Command Procedures
|
13.16.3
|
Login Command Procedures in Captive Accounts
|
13.17
|
Extended File Specifications and Parsing Styles
|
13.18
|
Using Extended File Names in DCL Command Parameters
|
13.18.1
|
Command Procedure File Specification
|
13.18.2
|
Case Preservation and $FILE
|
13.18.3
|
Ampersand Versus Apostrophe Substitution
|
Chapter 14 |
14
|
Advanced Programming with DCL
|
14.1
|
Performing Command Procedure Input
|
14.1.1
|
Restrictions to Including Data in Command Procedures
|
14.1.2
|
Other Methods of Inputting Data
|
14.2
|
Using Parameters to Pass Data
|
14.2.1
|
Specifying Parameters as Integers
|
14.2.2
|
Specifying Parameters as Character Strings
|
14.2.3
|
Specifying Parameters as Symbols
|
14.2.4
|
Specifying Parameters as Null Values
|
14.3
|
Using Parameters to Pass Data to Batch Jobs
|
14.4
|
Using Parameters to Pass Data to Nested Command Procedures
|
14.5
|
Prompting for Data
|
14.6
|
Using the SYS$INPUT Logical Name to Obtain Data
|
14.6.1
|
Redefining SYS$INPUT as Your Terminal
|
14.6.2
|
Defining SYS$INPUT as a Separate File
|
14.7
|
Performing Command Procedure Output
|
14.7.1
|
Displaying Data
|
14.7.2
|
Redirecting Output from Commands and Images
|
14.7.3
|
Returning Data from Command Procedures
|
14.7.4
|
Redirecting Error Messages
|
14.7.4.1
|
Redefining SYS$ERROR
|
14.7.4.2
|
Suppressing System Error Messages
|
14.8
|
Reading and Writing Files (File I/O)
|
14.9
|
Using the OPEN Command
|
14.10
|
Writing to Files
|
14.10.1
|
Creating Files with Unique File Names
|
14.11
|
Using the WRITE Command
|
14.11.1
|
Specifying Data
|
14.11.2
|
Using the /SYMBOL Qualifier
|
14.11.3
|
Using the /UPDATE Qualifier
|
14.12
|
Using the READ Command
|
14.12.1
|
Using the /END_OF_FILE Qualifier
|
14.12.2
|
Using the /INDEX and /KEY Qualifiers
|
14.12.3
|
Using the /DELETE Qualifier
|
14.13
|
Using the Close Command
|
14.14
|
Modifying Files
|
14.14.1
|
Updating Records
|
14.14.2
|
Creating New Output Files
|
14.14.3
|
Appending Records to Files
|
14.15
|
Handling File I/O Errors
|
14.15.1
|
Default Error Actions
|
14.16
|
Techniques for Controlling Execution Flow
|
14.16.1
|
Using the IF Command
|
14.16.2
|
Using the THEN Command
|
14.16.3
|
Using the ELSE Command
|
14.16.4
|
Using Command Blocks
|
14.16.5
|
Using the GOTO Command
|
14.16.5.1
|
Avoiding Reexecution
|
14.16.6
|
Using the GOSUB and RETURN Commands
|
14.17
|
Creating New Command Levels
|
14.17.1
|
Using the CALL Command
|
14.17.1.1
|
CALL Command Defaults
|
14.17.1.2
|
Beginning and Ending Subroutines
|
14.18
|
Writing Case Statements
|
14.18.1
|
Listing the Labels
|
14.18.2
|
Writing the Case Statement
|
14.18.3
|
Writing the Command Blocks
|
14.19
|
Writing Loops
|
14.20
|
Using the PIPE Command
|
14.20.1
|
Using the PIPE Command for Conditional Command Execution
|
14.20.2
|
Using the PIPE Command for Pipeline Execution
|
14.20.3
|
Using the PIPE Command for Subshell Execution
|
14.20.4
|
Using the PIPE Command for Background Execution
|
14.20.5
|
Using the PIPE Command for Input/Output Redirection
|
14.20.6
|
Interrupting a PIPE Command
|
14.20.7
|
Improving Subprocess Performance
|