| Appendix C |
|
Appendix C
|
Programming Productivity Tools
|
|
C.1
|
Debugging Tools for Compaq COBOL Programs
|
|
C.2
|
Ladebug Debugger (Tru64 UNIX)
|
|
C.3
|
OpenVMS Debugger (OpenVMS)
|
|
C.3.1
|
Notes on Compaq COBOL Support
|
|
C.3.2
|
Notes on Debugging Optimized Programs (Alpha)
|
|
C.3.3
|
Sample Debugging Session (Alpha)
|
|
C.3.3.1
|
Separately Compiled Programs
|
|
C.4
|
Language-Sensitive Editor (LSE) and the Source Code Analyzer (SCA) (OpenVMS)
|
|
C.4.1
|
Notes on Compaq COBOL Support
|
|
C.4.2
|
Preparing an SCA Library
|
|
C.4.3
|
Starting and Terminating an LSE or an SCA Session
|
|
C.4.4
|
Compiling from Within LSE
|
|
C.5
|
Using Oracle CDD/Repository (OpenVMS)
|
|
C.5.1
|
Creating Record and Field Definitions
|
|
C.5.2
|
Accessing Oracle CDD/Repository Definitions from Compaq COBOL Programs
|
|
C.5.3
|
Recording Dependencies
|
|
C.5.4
|
Data Types
|
|
C.5.5
|
For More Information
|
| Appendix D |
|
Appendix D
|
Porting to Compaq COBOL from Other Compilers (Alpha)
|
|
D.1
|
Porting Assistance
|
|
D.2
|
Flagged Foreign Extensions
|
|
D.3
|
Implemented Extensions
|
| Index |
Index |
| Examples |
| 1-1 |
Accessing Environment Variables and Command-Line Arguments |
| 1-2 |
Main Program and Subprograms |
| 1-3 |
Command Procedure to Compile and Link Subprograms as Shareable Images (OpenVMS Alpha) |
| 1-4 |
Command Procedure to Compile, Link, and Install Subprograms as Shareable Images (OpenVMS VAX) |
| 1-5 |
Transfer Vectors (OpenVMS VAX) |
| 1-6 |
Accessing Logicals and Command-Line Arguments (Alpha) |
| 1-7 |
Using RMS Special Registers to Detect Errors (OpenVMS) |
| 1-8 |
Using RMS-CURRENT Special Registers to Detect Errors (OpenVMS) |
| 2-1 |
Success/Failure Test |
| 3-1 |
Item Concatenation Using Two MOVE Statements |
| 3-2 |
Sample Record Description Using the MOVE CORRESPONDING Statement |
| 4-1 |
One-Dimensional Table |
| 4-2 |
Multiple Data Items in a One-Dimensional Table |
| 4-3 |
Defining a Table with an Index and an Ascending Search Key |
| 4-4 |
Defining a Two-Dimensional Table |
| 4-5 |
Defining a Three-Dimensional Table |
| 4-6 |
Defining a Variable-Length Table |
| 4-7 |
Sample Record Description Defining a Table |
| 4-8 |
Record Description Containing a COMP SYNC Item |
| 4-9 |
Adding an Item Without Changing the Table Size |
| 4-10 |
How Adding 3 Bytes Adds 4 Bytes to the Element Length |
| 4-11 |
Initializing Tables with the VALUE Clause |
| 4-12 |
Initializing a Table with the OCCURS Clause |
| 4-13 |
Initializing Mixed Usage Items |
| 4-14 |
Initializing Alphanumeric Items |
| 4-15 |
Using a Literal Subscript to Access a Table |
| 4-16 |
Subscripting a Multidimensional Table |
| 4-17 |
Subscripting with Index Name Items |
| 4-18 |
Sample Table |
| 4-19 |
A Serial Search |
| 4-20 |
Using SEARCH and Varying an Index Other than the First Index |
| 4-21 |
Using SEARCH and Varying an Index Data Item |
| 4-22 |
Using SEARCH and Varying an Index not Associated with the Target Table |
| 4-23 |
Doing a Serial Search Without Using the VARYING Phrase |
| 4-24 |
A Multiple-Key, Binary Search |
| 5-1 |
Using the STRING Statement and Literals |
| 5-2 |
Sample Overflow Condition |
| 6-1 |
Sample Record Description |
| 6-2 |
Determining Fixed-Length Record Size |
| 6-3 |
Determining Fixed-Length Record Size for Files with Multiple Record Descriptions |
| 6-4 |
Creating Variable-Length Records with the DEPENDING ON Phrase |
| 6-5 |
Creating Variable-Length Records with the RECORD VARYING Phrase |
| 6-6 |
Creating Variable-Length Records and Using the OCCURS Clause with the DEPENDING ON Phrase |
| 6-7 |
Defining Fixed-Length Records with Multiple Record Descriptions |
| 6-8 |
Defining a Disk File |
| 6-9 |
Defining a Magnetic Tape File (OpenVMS) |
| 6-10 |
Defining a Magnetic Tape File (Tru64 UNIX) |
| 6-11 |
Using Environment Variables (Tru64 UNIX) or Logical Names (OpenVMS) for File Specification |
| 6-12 |
Using Environment Variables |
| 6-13 |
Specifying Sequential File Organization and Sequential Access Mode for a Sequential File |
| 6-14 |
Specifying Relative File Organization and Random Access Mode for a Relative File |
| 6-15 |
Specifying Indexed File Organization and Dynamic Access Mode for an Indexed File |
| 6-16 |
Specifying Line Sequential File Organization with Sequential Access Mode (Alpha) |
| 6-17 |
SELECT Statements for Sequential Files with Sequential Access Mode |
| 6-18 |
SELECT Statements for Relative Files with Sequential and Dynamic Access Modes |
| 6-19 |
SELECT Statements for Indexed Files with Dynamic and Default Sequential Access Modes |
| 6-20 |
SELECT Statements for Line Sequential Files with Sequential Access Modes (Alpha) |
| 6-21 |
OPEN and CLOSE Statements |
| 6-22 |
Creating a Sequential File |
| 6-23 |
Creating a Line Sequential File (Alpha) |
| 6-24 |
Creating a Relative File in Sequential Access Mode |
| 6-25 |
Creating a Relative File in Random Access Mode |
| 6-26 |
Creating and Populating an Indexed File |
| 6-27 |
Using Segmented Keys |
| 6-28 |
Reading a Sequential File |
| 6-29 |
Reading a Relative File Sequentially |
| 6-30 |
Reading a Relative File Randomly |
| 6-31 |
Reading a Relative File Dynamically |
| 6-32 |
Reading an Indexed File Sequentially |
| 6-33 |
Reading an Indexed File Randomly |
| 6-34 |
Reading an Indexed File Dynamically |
| 6-35 |
Reading an Indexed File Dynamically, with READ PRIOR (Alpha) |
| 6-36 |
Another Example of READ PRIOR (Alpha) |
| 6-37 |
Rewriting a Sequential File |
| 6-38 |
Extending a Sequential File or Line Sequential File (Alpha) |
| 6-39 |
Rewriting Relative Records in Sequential Access Mode |
| 6-40 |
Rewriting Relative Records in Random Access Mode |
| 6-41 |
Deleting Relative Records in Sequential Access Mode |
| 6-42 |
Deleting Relative Records in Random Access Mode |
| 6-43 |
Updating an Indexed File Sequentially |
| 6-44 |
Updating an Indexed File Randomly |
| 7-1 |
Handling the AT END Condition |
| 7-2 |
Handling the Invalid Key Condition |
| 7-3 |
Defining a File Status for a File |
| 7-4 |
Using the File Status Value in an Exception Handling Routine |
| 7-5 |
Referencing RMS-STS, RMS-STV, RMS-CURRENT-STS, and RMS-CURRENT-STV Codes (OpenVMS) |
| 7-6 |
The Declaratives Skeleton |
| 7-7 |
A Declarative USE Procedure Skeleton |
| 7-8 |
Five Types of Declarative USE Procedures |
| 8-1 |
X/Open Standard Lock Modes and Opening Files (Alpha) |
| 8-2 |
Program Segment for File Status Values |
| 8-3 |
Program Segment for RMS-STS Values (OpenVMS) |
| 8-4 |
X/Open Standard Record Locking (Alpha) |
| 8-5 |
Automatic Record Locking (Compaq Standard) |
| 8-6 |
Sample Program Using Manual Record Locking (Compaq Standard) |
| 8-7 |
Program Segment for Record-Locking Exceptions |
| 9-1 |
INPUT and OUTPUT PROCEDURE Phrases |
| 9-2 |
USING Phrase Replaces INPUT PROCEDURE Phrase |
| 9-3 |
Overriding the COLLATING SEQUENCE IS Phrase |
| 9-4 |
Using Two Sort Files |
| 9-5 |
The Declarative USE AFTER STANDARD ERROR PROCEDURE |
| 9-6 |
Using the MERGE Statement |
| 9-7 |
Sorting a File with the USING and GIVING Phrases |
| 9-8 |
Using the USING and OUTPUT PROCEDURE Phrases |
| 9-9 |
Using the INPUT PROCEDURE and OUTPUT PROCEDURE Phrases |
| 9-10 |
Using the COLLATING SEQUENCE IS Phrase |
| 9-11 |
Creating a New Sort Key |
| 9-12 |
Merging Files |
| 10-1 |
Components of a Report |
| 10-2 |
Checking for the Page-Overflow Condition |
| 10-3 |
Page Advancing and Line Skipping |
| 10-4 |
Checking for End-of-Page on a 28-Line Logical Page |
| 10-5 |
Programming a 20-Line Logical Page Defined by the LINAGE Clause with Automatic Page Overflow |
| 10-6 |
Sample Program EX1006 |
| 10-7 |
Sample Program EX1007 |
| 10-8 |
Sample Program EX1008 |
| 10-9 |
Sample Program EX1009 |
| 10-10 |
Sample Program EX1010 |
| 10-11 |
Printing Labels Four-Up |
| 10-12 |
Printing Labels Four-Up in Sort Order |
| 11-1 |
Erasing a Screen |
| 11-2 |
Cursor Positioning |
| 11-3 |
Using PLUS for Cursor Positioning |
| 11-4 |
Using Character Attributes |
| 11-5 |
Using the CONVERSION Phrase |
| 11-6 |
Using the ON EXCEPTION Phrase |
| 11-7 |
Using the SIZE and PROTECTED Phrases |
| 11-8 |
Using the NO ECHO Phrase |
| 11-9 |
Using the DEFAULT Phrase |
| 11-10 |
Using the CONTROL KEY IN Phrase |
| 11-11 |
EDITING Phrase Sample Code |
| 11-12 |
Designing a Video Form for a Daily Calendar (Alpha) |
| 12-1 |
Run Unit with Three Separately Compiled Programs |
| 12-2 |
Run Unit with a Main Program and Two Contained Programs |
| 12-3 |
Run Unit with Three Separately Compiled Programs, One with Two Contained Programs |
| 12-4 |
Execution Sequence of Nested CALL Statements |
| 12-5 |
Sequence of Messages Displayed |
| 12-6 |
CALL Literal Versus CALL Data Name |
| 12-7 |
Using the COMMON Clause |
| 12-8 |
Calling a COBOL Program from C (Alpha) |
| 12-9 |
C Include File cobfunc.h (Alpha) |
| 12-10 |
COBOL Called Program "CALLEDFROMC" (Alpha) |
| 12-11 |
C Program Using cobcall, cobfunc, and cobcancel (Alpha) |
| 12-12 |
COBOL Called Program "PROGCOB" (Alpha) |
| 12-13 |
Calling a Fortran Program from a COBOL Program |
| 12-14 |
Fortran Subroutine SQROOT |
| 12-15 |
Calling a BASIC Program from a COBOL Program |
| 12-16 |
BASIC Program "APP" and Output Data |
| 12-17 |
C Routine to Be Called from a COBOL Program |
| 12-18 |
Calling a C Program from a COBOL Program |
| 13-1 |
User-Written Condition Handler |
| 13-2 |
Random Number Generator (OpenVMS) |
| 13-3 |
Using the SYS$SETDDIR System Service (OpenVMS) |
| 13-4 |
Using$ASCTIM (OpenVMS) |
| 13-5 |
Sample Run of CALLTIME (OpenVMS) |
| 13-6 |
Using LIB$K_* and LIB$_* Symbols (OpenVMS) |
| 16-1 |
Using*DC SET ALIGNMENT Directives |
| 16-2 |
Using /ALIGNMENT with SYNCHRONIZED |
| 16-3 |
Comparing /NOALIGN, /ALIGN and /ALIGN =PADDING (Alpha) |
| 16-4 |
Data Map for /NOALIGNMENT (Alpha) |
| 16-5 |
Data Map for /ALIGNMENT, -align (Alpha) |
| 16-6 |
Data Map for /ALIGNMENT =PADDING, -align pad (Alpha) |
| B-1 |
Signed and Unsigned Differences |
| B-2 |
Illegal Return Value Coding |
| C-1 |
Source Code Used in the Sample Debug Sessions |