Compaq COBOL AAQ2G1FTK User Manual
Page 84

Developing Compaq COBOL Programs
1.4 Program Run Messages
If, during execution, the program increments A-COUNTER by a value other
than 1 (2 or 1.5, for example), A-COUNTER may never equal 10, causing a
loop in ABC-ROUTINE. You can prevent this type of error by changing the
statement to something like this:
* This is a test for inequality
PERFORM ABC-ROUTINE UNTIL A-COUNTER > 9
•
Testing two floating point numbers (for example, COMP-1 and COMP-2 fields)
for equality. The calculations of your program might never produce exact
numerical equality between two floating point values.
•
Two negative test conditions combined with an OR. The object of the following
statement is to execute GO TO 200-PRINT-REPORT when TEST-FIELD
contains other than an A or B. However, the GO TO always executes because
no matter what TEST-FIELD contains, one of the conditions is always true.
IF TEST-FIELD NOT = "A" OR NOT = "B"
GO TO 200-PRINT-REPORT.
.
.
.
The following statement does not contain the logic error:
IF TEST-FIELD NOT = "A" AND NOT = "B"
GO TO 200-PRINT-REPORT.
.
.
.
1.4.3 Run-Time Input/Output Errors
An input/output error is a condition that causes an I/O statement to fail. These
I/O errors are detected at run time by the I/O system. Each time an I/O operation
occurs, the I/O system generates a two-character file status value. One way to
determine the nature of an I/O error is to check a file’s I/O status by using file
status data items. (See the Compaq COBOL Reference Manual for a list of file
status values.) See Chapter 7, Handling Input/Output Exception Conditions for
additional information about I/O exception condition handling.
Checking a file’s I/O status within a Declarative USE procedure or in an INVALID
KEY imperative condition can help you determine the nature of an I/O error. For
example:
FD
INDEXED-MASTER
ACCESS MODE IS DYNAMIC
FILE STATUS IS MASTER-STATUS
RECORD KEY IN IND-KEY.
.
.
.
WORKING-STORAGE SECTION.
01
MASTER-STATUS
PIC XX
VALUE SPACES.
.
.
.
PROCEDURE DIVISION.
.
.
.
1–54 Developing Compaq COBOL Programs