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 |