Example in OPM RPG: Removing exit programs and deregistering exit points

This OPM RPG program removes an exit program from an exit point. After the successful completion of the removal, the program deregisters the exit point from the registration facility.

Note: By using the code examples, you agree to the terms of the Code license and disclaimer 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