Vous êtes sur la page 1sur 4

1

VSAM STATUS CODES

FILE-STATUS clause –
• Identifies one field that VSAM will use to provide information
about each input/output operations for the file
• Standard field that the system updates each time you
execute an I/O statement for the file

VARIOUS STATUS CODES


00 - SUCCESSFUL COMPLETION
10 - END OF FILE REACHED
21 - SEQ. ERROR
22 - DUP KEY
23 - REC. NOT FOUND
24 - NO MORE SPACE

• The value that VSAM places in the file status area is called the
return code
• After the I/O statement has been executed, the procedure
should examine this field to determine if an error occurs. (if it’s
not zero, it’s wrong)
• File status field must be defined in WORKING-STORAGE as a 2
byte alphanumeric item
• Note: this status code is returned by the system.

File status codes and recommended program action.


00 - USED ON ALL ASPECTS OF VSAM FILES
- ACTION WAS SUCCESSFUL
- CONTINUE PROCESSING

02 - USED ON READ, WRITE, AND REWRITE.


- VALID DUPLICATE (ALT INDEX).
- CONTINUE PROCESSING

10 - USED ON READ.
- END OF FILE REACHED
- PERFORM NORMAL “AT END” PROCESS

21 - USED ON WRITE
- RECORD IS OUT OF SEQUENCE (SEQUENTIAL ACCESS ONLY)
- PRINT ERROR MSG AND KEEP PROCESSING.

22 - USED ON WRITE
2

- DUPLICATE KEY
- PRINT ERROR MSG AND KEEP PROCESSING.

23 - USED ON READ, DELETE, AND START


- RECORD NOT FOUND
- PRINT ERROR MSG. AND KEEP ON
IF NOT FOUND, ATTEMPT TO ADD THE RECORD (PROVIDED THAT IT
HAS A VALID UPDATE CODE = “A”)

24 - USED ON WRITE
- NO MORE SPACE ON FILE.
- CONTINUE PROCESSING

These that follow are rare occasions.


30 - UNCORRECTABLE I/O ERROR
- USED ON ALL ACTIONS.
TERMINATE JOB

90 - USED ON ALL ACTIONS.


UNUSABLE FILE (EMPTY FILE OPENED AS INPUT OR I/O)

91 - USED ON OPEN
- PASSWORD FAILURE (USED ONLY ON PROTECTED FILE
PROCESSING)
TERMINATE THE JOB

92 - USED ON ALL ACTIONS


- FILE EITHER ALREADY OPEN OR NOT OPENED.
TERMINATE THE JOB

93 - USED ON ALL ACTIONS


NOT ENOUGH STORAGE ROOM FOR THE VSAM TASK
- TERMINATE JOB

95 - USED ON OPEN FILES


CONFLICTING FILE ATTRIBUTE (TRYING TO OPEN A FILE THAT
WASN’T PROPERLY DEFINED AS A VSAM FILE)
TERMINATE JOB

- USED IN OPEN
- NO DD STATEMENT (MUST HAVE FILE SPECIFIED IN THE JOB
STREAM)
TERMINATE JOB
3

97 - USED ON OPEN
- FILE NOT CLOSED BY PREVIOUS JOB
- THIS WOULD NOT HAVE HAPPENED IF PROGRAMMER
WOULD HAVE CHECKED THE FILE STATUS AT CLOSE OF
FILE ON LAST MONTH’S PROCESSING. )
HOWEVER, VSAM DOES AUTOMATICALLY ISSUE A CLOSE
STATEMENT PRIOR TO OPENING A FILE SO IT IS POSSIBLE TO
CONTINUE PROCESSING AFTER THIS MESSAGE. BUT DON’T GET
USED TO IT.
- TERMINATE THE JOB.

TWO WAYS TO END A PROCESS:


NORMALLY END
ABNORMALLY END (ABEND)

Not all VSAM errors causes program to ABEND.

Not all VSAM errors cause error messages to be displayed.


Primary reason for not using the “invalid key” clause.
Use the “if file-status-code” clause instead
Many warning errors go unnoticed if action is input/output operation,
check the status code with the IF statement process
Input/output actions that can be performed on VSAM files.
1. OPEN 2. CLOSE
3. READ 4. WRITE
5. REWRITE 6. DELETE
7. START

The operators, programmers, and users may not look at the program
closely - program to end normally but with errors. This may
not be good.
Real world
sometimes run jobs that call other jobs
These jobs may be depending on a previous job running perfectly
A normal stop run with errors this time may cause the domino effect
COBOL has no real solutions for handling this
Many shops create their own little way of handling this problem
The assembler language has 2 ways of inducing an (abend).

These two ways are handled differently on the DOS-based storage


system and the mainframe-based (MVS).
our concern is with MVS.

ABEND100 has the following code.


4

START 0
SAVE (14,12)
ABEND 100
END

ABEND200 has the following code.


START 0
SAVE (14,12)
ABEND 200,DUMP
END

ABEND100 - CAUSES AN ABEND AND SETS THE USER RETURN CODE


TO 100.
ABEND200 - CAUSES AN ABEND AND SETS THE USED RETURN CODE
TO 200
ABEND200 ALSO PRINT A STORAGE DUMP - MUST DEFINE THE
“SYSUDUMP” STMT. IN YOUR JCL

Example - after opening a file for processing, code the following:

IF MAST-ERROR-CODE NOT = “00”


DISPLAY “OPEN ERROR ON FILE.”
PERFORM TERMINATE-UPD-PROG.

TERMINATE-UPD-PROG.
DISPLAY ‘FILE STATUS IS: ‘, MAST-ERROR-CODE.
DISPLAY ‘ PROGRAM HAS TERMINATED.’.
CALL ‘ABEND200’.

DISPLAY allows you to keep an audit trail without using the


printer.

Vous aimerez peut-être aussi