COBOL handling a divide-by-zero condition

The program in the following example registers a user-written condition handler, calls the DIVZERO subroutine, and unregisters the condition handler on return from the subroutine.
CBL LIB,QUOTE,NODYNAM,NOOPT
      *Module/File Name: IGZTDIVZ
      ******************************************************
      *                                                    *
      *  EXCOND               .-> DIVZERO                  *
      *  - register handler   |   - force a divide-by-zero *
      *  - call DIVZERO     --'                            *
      *  ==> "resume point"                                *
      *  - unregister handler                              *
      *                       USRHDLR                      *
      *                       - if divide-by-zero, then:   *
      *                         - move resume cursor       *
      *                         - resume at "resume point" *
      *                                                    *
      ******************************************************

       IDENTIFICATION DIVISION.
       PROGRAM-ID.    EXCOND.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       77  DIVISOR         PIC S9(9) BINARY.
      **
      **  Declarations for condition handling
      **
       77  TOKEN           PIC X(4).
       77  PGMPTR          USAGE IS PROCEDURE-POINTER.
       01  FC.
           02  Condition-Token-Value.
           COPY  CEEIGZCT.
               03  Case-1-Condition-ID.
                   04  Severity        PIC S9(4) BINARY.
                   04  Msg-No          PIC S9(4) BINARY.
               03  Case-2-Condition-ID
                           REDEFINES Case-1-Condition-ID.
                   04  Class-Code      PIC S9(4) BINARY.
                   04  Cause-Code      PIC S9(4) BINARY.
               03  Case-Sev-Ctl    PIC X.
               03  Facility-ID     PIC XXX.
           02  I-S-Info        PIC S9(9) BINARY.
       PROCEDURE DIVISION.
       PARA-CND01A.
      ************************************************
      ** Register a user-written condition handler. **
      ************************************************
           SET PGMPTR TO ENTRY "USRHDLR".
           MOVE ZERO TO TOKEN.
           CALL "CEEHDLR" USING PGMPTR TOKEN FC.
           IF CEE000 of FC  THEN
               DISPLAY "EXCOND: REGISTERED USRHDLR."
           ELSE
               DISPLAY "CEEHDLR failed with msg "
                   Msg-No of FC UPON CONSOLE
               STOP RUN
           END-IF.
      **************************************************************
      ** Call DIVZERO to force a divide-by-zero and drive USRHDLR **
      **************************************************************
           MOVE 00 TO DIVISOR.
           CALL "DIVZERO" USING DIVISOR.
           DISPLAY "EXCOND: RESUMED AFTER DIVZERO.".
      ***************************************************
      ** Unregister the user-written condition handler.**
      ***************************************************
           CALL "CEEHDLU" USING PGMPTR FC.
           IF CEE000 of FC  THEN
               DISPLAY "EXCOND: UNREGISTERED USRHDLR."
           ELSE
               DISPLAY "CEEHDLU failed with msg "
                   Msg-No of FC UPON CONSOLE
               STOP RUN
           END-IF.

           GOBACK.
       END PROGRAM EXCOND.

Figure 1 shows the subroutine DIVZERO that generates the divide-by-zero condition.

Figure 1. DIVZERO program (COBOL)
CBL LIB,QUOTE,NODYNAM,NOOPT
      *Module/File Name: IGZTDIVS
       IDENTIFICATION DIVISION.
       PROGRAM-ID. DIVZERO.

       DATA DIVISION.
       LINKAGE SECTION.
       01  ARG     PIC S9(9) BINARY.

       PROCEDURE DIVISION USING ARG.
           DISPLAY "  DIVZERO: STARTING.".
           COMPUTE ARG = 1 / ARG.
           DISPLAY "  DIVZERO: RETURNING TO ITS CALLER.".

           GOBACK.
       END PROGRAM DIVZERO.