Example in OPM 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:     OPM 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:    QUSRMVEP - Remove Exit Program
     F*                QUSDRGPT - Deregister Exit Point
     F*
     F***************************************************************
     F***************************************************************
     F*
     FQPRINT  O   F     132            PRINTER                        UC
     I*
     I* Error Code parameter include.  As this sample program
     I* uses /COPY to include the error code structure, only the first
     I* 16 bytes of the error code structure are available.  If the
     I* application program needs to access the variable length
     I* exception data for the error, the developer should physically
     I* copy the QSYSINC include and modify the copied include to
     I* define additional storage for the exception data.
     I*
     I/COPY QSYSINC/QRPGSRC,QUSEC
     I*
     I*
     I* Miscellaneous data
     I*
     I            DS
     I                                    B   1   40PGMNBR
     I I            'EXAMPLE_EXIT_POINT  '    5  24 EPNTNM
     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                     Z-ADD16        QUSBNB
     C*
     C* Call the API to remove the exit program.
     C*
     C                     CALL 'QUSRMVEP'
     C                     PARM           EPNTNM
     C                     PARM 'EXMP0100'FORMAT  8
     C                     PARM 1         PGMNBR
     C                     PARM           QUSBN
     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           QUSBNC    IFGT 0
     C                     OPEN QPRINT
     C                     EXCPTERRPGM
     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                     CALL 'QUSDRGPT'
     C                     PARM           EPNTNM
     C                     PARM 'EXMP0100'FORMAT
     C                     PARM           QUSBN
     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           QUSBNC    IFGT 0
     C                     OPEN QPRINT
     C                     EXCPTERREPT
     C                     EXSR DONE
     C                     ENDIF
     C                     EXSR DONE
     C*
     C* End of MAINLINE
     C*
     C*
     C* Return to programs caller
     C           DONE      BEGSR
     C                     SETON                     LR
     C                     RETRN
     C                     ENDSR
     O*
     OQPRINT  E  106           ERREPT
     O                                      'Attempt to deregister '
     O                                      'exit point failed: '
     O                         QUSBND
     OQPRINT  E  106           ERRPGM
     O                                      'Attempt to remove exit '
     O                                      'program failed: '
     O                         QUSBND