Compaq COBOL AAQ2G1FTK User Manual

Page 480

Advertising
background image

Using Compaq COBOL in the Alpha Common Language Environment
13.5 Establishing and Removing User Condition Handlers (OpenVMS)

Example 13–1 (Cont.) User-Written Condition Handler

WORKING-STORAGE SECTION.
01

SS_HAND

PIC S9(9) COMP.

01

SS$_SSFAIL

PIC S9(9) COMP

VALUE EXTERNAL SS$_SSFAIL.

01

SS$_RESIGNAL

PIC S9(9) COMP

VALUE EXTERNAL SS$_RESIGNAL.

01

MSGLEN

PIC S9(4) COMP.

01

MSGID

PIC S9(9) COMP.

01

ERRMSG

PIC X(80).

01

STAT

PIC S9(9) COMP.

LINKAGE SECTION.
01

SIGNAL_ARRAY.
03

SIGNAL_ARGS

PIC 9(9) COMP.

03

SIGNAL

OCCURS 4 TO 10 TIMES
DEPENDING ON SIGNAL_ARGS.

05 SIGNAL_VALUE PIC S9(9) COMP.

01

MECHANISM_ARRAY.
03

MECH_ARGS

OCCURS 5 TIMES.

05 MECH

PIC 9(9) COMP.

PROCEDURE DIVISION USING SIGNAL_ARRAY MECHANISM_ARRAY

GIVING SS_HAND.

BEGIN.
*
*

Initialize the return result

*

MOVE SS$_RESIGNAL TO SS_HAND.

IF SIGNAL_VALUE(1) NOT EQUAL SS$_SSFAIL
THEN

MOVE SS$_RESIGNAL TO SS_HAND

ELSE

*
*

Disable system service failure mode

*

CALL "SYS$SETSFM" USING BY VALUE 0

MOVE SIGNAL(2) TO MSGID
CALL "SYS$GETMSG" USING BY VALUE MSGID

BY REFERENCE MSGLEN
BY DESCRIPTOR ERRMSG
BY VALUE 0 0

GIVING STAT

IF STAT IS FAILURE
THEN

CALL "LIB$STOP" USING BY VALUE STAT

END-IF

DISPLAY "System service call failed with error:"
DISPLAY ERRMSG(1:MSGLEN)

*
*

This is where the handler would perform

*

corrective measures

*

.

*

.

*

.

*

MOVE SS$_CONTINUE TO SS_HAND

*

END-IF.
EXIT PROGRAM.

END PROGRAM SSHAND.

13–18 Using Compaq COBOL in the Alpha Common Language Environment

Advertising