Example in ILE RPG: Remove exit program and deregister exit point

This program removes an exit program and deregisters an exit point from the registration facility.

Note: Read the Code license and disclaimer information for important legal information.
     F***************************************************************
     F***************************************************************
     F*
     F*  Program:      Remove an Exit Program
     F*                Deregister an Exit Point
     F*
     F*  Language:     ILE RPG
     F*
     F*  Description:  This program removes an exit program and
     F*                deregisters an exit point from the registration
     F*                facility.
     F*
     F*  APIs Used:    QusRemoveExitProgram   - Remove Exit Program
     F*                QusDeregisterExitPoint - Deregister Exit Point
     F*
     F***************************************************************
     F***************************************************************
     F*
     FQPRINT    O    F  132        PRINTER OFLIND(*INOF) USROPN
     D*
     D* Error Code parameter include.  As this sample program
     D* uses /COPY to include the error code structure, only the first
     D* 16 bytes of the error code structure are available.  If the
     D* application program needs to access the variable length
     D* exception data for the error, the developer should physically
     D* copy the QSYSINC include and modify the copied include to
     D* define additional storage for the exception data.
     D*
     D/COPY QSYSINC/QRPGLESRC,QUSEC
     D*
     D*****************************************************************
     D*Prototype for calling Deregister Exit Point API.
     D*****************************************************************
     D QUSDEP          C                   'QusDeregisterExitPoint'
     D*****************************************************************
     D*Prototype for calling Remove Exit Program API.
     D*****************************************************************
     D QUSREPGM        C                   'QusRemoveExitProgram'
     D*
     D* Miscellaneous data
     D*
     DPGM_NBR                         9B 0
     DEPNTNAME         S             20    INZ('EXAMPLE_EXIT_POINT')
     C*
     C* Beginning of mainline
     C*
     C* Remove an exit program from the exit point and then deregister
     C* the exit point.  It is not necessary to remove exit programs
     C* from an exit point before deregistering the exit point.  It is
     C* done here only for illustrative purposes.
     C*
     C* Initialize the error code parameter.  To signal exceptions to
     C* this program by the API, you need to set the bytes provided
     C* field of the error code to zero.  Because this program has
     C* exceptions sent back through the error code parameter, it sets
     C* the bytes provided field to the number of bytes it gives the
     C* API for the parameter.
     C*
     C                   EVAL      QUSBPRV = %SIZE(QUSEC)
     C*
     C* Call the API to remove the exit program.
     C*
     C                   CALLB     QUSREPGM
     C                   PARM                    EPNTNAME
     C                   PARM      'EXMP0100'    FORMAT            8
     C                   PARM      1             PGM_NBR
     C                   PARM                    QUSEC
     C*
     C* If an exception occurs, the API returns the exception in the
     C* error code parameter.  The bytes available field is set to
     C* zero if no exception occurs and greater than zero if an
     C* exception does occur.
     C*
     C                   IF        QUSBAVL > 0
     C                   OPEN      QPRINT
     C                   EXCEPT    ERRAEPGM
     C                   EXSR      DONE
     C                   ENDIF
     C*
     C* If the call to remove the exit program is successful,
     C* deregister the exit point.
     C*
     C* Call the API to deregister the exit point.
     C*
     C                   CALLB     QUSDEP
     C                   PARM                    EPNTNAME
     C                   PARM      'EXMP0100'    FORMAT
     C                   PARM                    QUSEC
     C*
     C* If an exception occurs, the API returns the exception in the
     C* error code parameter.  The bytes available field is set to
     C* zero if no exception occurs and greater than zero if an
     C* exception does occur.
     C*
     C                   IF        QUSBAVL > 0
     C                   OPEN      QPRINT
     C                   EXCEPT    ERRAEPNT
     C                   EXSR      DONE
     C                   ENDIF
     C                   EXSR      DONE
     C*
     C* End of MAINLINE
     C*
     C*
     C* Return to programs caller
     C     DONE          BEGSR
     C                   EVAL      *INLR = '1'
     C                   RETURN
     C                   ENDSR
     O*
     OQPRINT    E            ERRAEPNT       1  6
     O                                              'Attempt to deregister -
     O                                              exit point failed: '
     O                       QUSEI
     OQPRINT    E            ERRAEPGM       1  6
     O                                              'Attempt to remove exit -
     O                                              program failed: '
     O                       QUSEI