75 lines
1.6 KiB
Plaintext
75 lines
1.6 KiB
Plaintext
== Why is this an issue?
|
|
|
|
When a ``++FILE STATUS++`` is declared on a file, it should be tested immediately after IO operations.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,cobol]
|
|
----
|
|
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. foo.
|
|
|
|
ENVIRONMENT DIVISION.
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
SELECT TEST-FILE
|
|
ASSIGN TO 'foobar.txt'
|
|
ORGANIZATION IS SEQUENTIAL
|
|
FILE STATUS WS-TEST-FILE-STATUS.
|
|
|
|
DATA DIVISION.
|
|
FILE SECTION.
|
|
FD TEST-FILE
|
|
LABEL RECORDS ARE STANDARD.
|
|
01 TEST-RECORD.
|
|
05 USERNAME PIC XX.
|
|
|
|
WORKING-STORAGE SECTION.
|
|
01 WS-TEST-FILE-STATUS PIC X(42).
|
|
|
|
PROCEDURE DIVISION.
|
|
|
|
* Non-Compliant, TEST-FILE has a FILE STATUS variable which must be used
|
|
OPEN INPUT TEST-FILE.
|
|
|
|
END PROGRAM foo.
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,cobol]
|
|
----
|
|
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. foo.
|
|
|
|
ENVIRONMENT DIVISION.
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
SELECT TEST-FILE
|
|
ASSIGN TO 'foobar.txt'
|
|
ORGANIZATION IS SEQUENTIAL
|
|
FILE STATUS WS-TEST-FILE-STATUS.
|
|
|
|
DATA DIVISION.
|
|
FILE SECTION.
|
|
FD TEST-FILE
|
|
LABEL RECORDS ARE STANDARD.
|
|
01 TEST-RECORD.
|
|
05 USERNAME PIC XX.
|
|
|
|
WORKING-STORAGE SECTION.
|
|
01 WS-TEST-FILE-STATUS PIC X(42).
|
|
|
|
PROCEDURE DIVISION.
|
|
|
|
* Compliant, errors of the IO operation are propery handled
|
|
OPEN INPUT TEST-FILE.
|
|
IF WS-TEST-FILE-STATUS <> "00" THEN
|
|
DISPLAY "Error while opening foobar.txt as input.".
|
|
|
|
END PROGRAM foo.
|
|
----
|
|
|