// Example Program: T_PRSEDR
// Description:
// This is a test program to demonstrate parsing an exception detail
// report file using the CTI_ParseExceptionDetailReport() API.
//
// This exception detail report file must have been previously
// downloaded with the CTI_DownloadReport() API - see the T_DWNLRPT
// example program for a demonstration of this API.
//
// To parse the exception detail data, generate a new unique ID with
// the CTI_NextUniqueID() API. Then, call the API, passing in your
// unique ID, the fully-qualified filepath for the report file, and the
// error data structure parameters as shown.
//
// CTI_ParseExceptionDetailReport() will return *On if no error was
// encountered, or *Off if an error occurred. If an error occurred,
// you should look at the fields in ErrorDS to retrieve information
// about the error. Additional error information may be found in the
// CTIERR file, or in the record for this query in the CTIEDR file.
//
// Otherwise, you can perform a CHAIN against the CTIEDR physical
// file, and the other CTIEDR* files, and retrieve the parsed fields.
Ctl-Opt ActGrp(*Caller) BndDir('CTIBND') Option(*NoDebugIO);
/COPY QRPGLECPY,CTICB
// This is included for demo output purposes.
Dcl-Pr WriteToJobLog Int(10) Extproc('Qp0zLprintf');
pString Pointer Value Options(*String);
End-Pr;
Dcl-C NewLine x'15';
// This stores the unique ID for this API call
Dcl-S UniqueId Like(CTI_UniqueId_t) Inz;
Dcl-S Filepath Like(CTI_FilePath_t) Inz;
// This holds any error information returned by the API call
Dcl-Ds ErrorDS LikeDS(CTI_ErrorDS_t) Inz(*LikeDS);
// Modify this field to use your merchant ID
Dcl-S MerchantId Like(CTI_MerchantId_t) Inz('ikrengel');
reset ErrorDS;
UniqueId = CTI_NextUniqueId();
// This API will only parse a report in XML format
Filepath = '/ktprod/cti/downloads/exceptiondetail_1099.xml';
if not CTI_ParseExceptionDetailReport( UniqueId : Filepath : ErrorDS );
WriteToJobLog( 'Failure' + NewLine );
WriteToJobLog( 'Source: ' + ErrorDS.Source + NewLine );
WriteToJobLog( %Trim(ErrorDS.MessageId) + ': '
+ ErrorDS.Message + NewLine );
else;
WriteToJobLog( 'Success' + NewLine );
endif;
*INLR = *On;
return;