Accessing Segments in Messages
After you receive a segmented message, use the GetSegment method of the Message class to access message segment data.
After you access a message segment, use the Message class GetRowset or GetXmlDoc methods to work with the contents of the segment.
WARNING:
You can access only one segment in a message at a time. When you access a message segment, PeopleSoft Integration Broker removes the previously accessed message segment from memory.
When you access a message segment, set the existing rowset to null to eliminate storing multiple rowsets in the data cache.
The following example shows using the GetSegment method to access a message segment in the message QE_FLIGHTDATA.
For &i = 1 To &MSG.SegmentCount
&rs = Null; //Null the rowset to remove it from memory
&MSG.GetSegment(&i);
&rs = &MSG.GetRowset();
&REC = &rs(1).QE_FLIGHTDATA;
&FLIGHTDATA = CreateRecord(Record.QE_FLIGHTDATA);
&REC.CopyFieldsTo(&FLIGHTDATA);
/* Parse out Message Data */
&acnumber_value = &FLIGHTDATA.QE_ACNUMBER.Value;
&msi_sensor_value = &FLIGHTDATA.QE_MSI_SENSOR.Value;
&ofp_value = &FLIGHTDATA.QE_OFP.Value;
&actype_value = &FLIGHTDATA.QE_ACTYPE.Value;
&callsign_value = &FLIGHTDATA.QE_CALLSIGN.Value;
&squadron_value = &FLIGHTDATA.QE_SQUADRON.Value;
&comm1_value = &FLIGHTDATA.QE_COMM1.Value;
&comm2_value = &FLIGHTDATA.QE_COMM2.Value;
&ecm_value = &FLIGHTDATA.QE_ECM.Value;
&outstring = "Send Async Flight test";
/* Construct Output String */
&outstring = &outstring | &acnumber_value | &CRLF |
&msi_sensor_value | &CRLF | &ofp_value | &CRLF | &actype_value |
&CRLF | &callsign_value | &CRLF | &squadron_value | &CRLF |
&comm1_value | &CRLF | &comm2_value | &CRLF | &ecm_value;
/* Log Output String into page record */
&FLIGHTDATA.GetField(Field.DESCRLONG).Value = &outstring;
SQLExec("DELETE FROM PS_QE_FLIGHTDATA");
&FLIGHTDATA.Insert();
End-For;