RXS_Catch()

This subprocedure can be used to catch an error thrown by RXS_Throw() or via other methods. The error information is retrieved into a RXS_CatchThrowErrorDS_t data structure.

Typical usage involves this subprocedure being called inside the ON-ERROR section of a MONITOR group.

Subprocedure Prototype

#
     D RXS_Catch...
     D                 PR                  Extproc('RXS_Catch')
     D                                     Likeds(RXS_CatchThrowErrorDS_t)

Returns RXS_CatchThrowErrorDS_t data structure containing the error information that was previously thrown.

Example Code

#
**FREE
// This example demonstrates calling RXS_Catch() within an ON-ERROR block
//  to catch an error message.

Ctl-Opt ActGrp(*New) BndDir('RXSBND');

/COPY QRPGLECPY,RXSCB

Dcl-Ds ErrorDS LikeDS(RXS_CatchThrowErrorDS_t);

Dcl-S NumA Int(10);
Dcl-S NumB Int(10);
Dcl-S Result Int(10);

monitor;
  // To ensure we trigger an error, we're going to divide by 0.
  NumA = 5;
  NumB = 0;
  Result = NumA / NumB;
on-error;
  // Note that you don't have to use RXS_ResetDS to initialize ErrorDS before
  //  using it - this is one of the few RXS data structures where
  //  this is safe and correct.
  ErrorDS = RXS_Catch();

  // At this point ErrorDS should contain the error information for an
  //  MCH1211 "divide by zero" error.
endmon;

return;

Data Structures

#

     D RXS_CatchThrowErrorDS_t...
     D                 DS                  Qualified Template Inz

     D   MessageId                    7A

The message ID that was received.

     D   MessageFile                 20A

The message file used to store the message ID.

     D   MessageData               1024A   Varying

The message data to be merged with the text of the message ID.

     D   DataStructureType...
     D                                5I 0 Inz(RXS_DS_TYPE_CATCHTHROWERROR)

Internal use only

     D   MessageType                  5I 0

The type of message that was sent.

Valid Values:

  • RXS_MESSAGE_TYPE_DIAG
  • RXS_MESSAGE_TYPE_COMP
  • RXS_MESSAGE_TYPE_INFO
  • RXS_MESSAGE_TYPE_INQ
  • RXS_MESSAGE_TYPE_RQS
  • RXS_MESSAGE_TYPE_NOTIFY
  • RXS_MESSAGE_TYPE_ESCAPE
  • RXS_MESSAGE_TYPE_STATUS

     D   MessageText               4096A   Varying

The full message text that combines the value of the message ID's text and the merged message data.

     D   ThrowToCaller...
     D                                 N   Inz(RXS_NO)

Not used. Used by RXS_Throw() only.

Valid Values:

  • RXS_YES
  • RXS_NO

Default Value: RXS_NO