Fojoin(), Fojoin32() - outer join source into destination buffer
Fojoin(FBFR *dest, FBFR *src)
Fojoin32(FBFR32 *dest, FBFR32 *src)
Fojoin() is similar to Fjoin(), but it keeps fields from the destination buffer, dest, that have no corresponding fieldid/occurrence in the source buffer, src. Fields that exist in the source buffer that have no corresponding fieldid/occurrence in the destination buffer are not added to the destination buffer. If joining buffers results in the removal of a FLD_PTR field, the memory area referenced by the pointer is not modified or freed.
As with Fjoin(), this function can fail for lack of space; it can be re-issued to complete the operation after more space is allocated.
Fojoin32() is used with 32-bit FML.
A thread in a multithreaded application may issue a call to Fojoin() or Fojoin32() while running in any context state, including TPINVALIDCONTEXT.
This function returns -1 on error and sets Ferror to indicate the error condition.
Under the following conditions, Fojoin() fails and sets Ferror to:
Either the source buffer or the destination buffer does not begin on the proper boundary.
Either the source buffer or the destination buffer is not a fielded buffer or has not been initialized by Finit().
A field value is to be added or changed in a field buffer but there is not enough space remaining in the buffer.
In the following example,
if dest has fields A, B, and two occurrences of C, and src has fields A, C, and D, the resultant dest will contain the source field value A, the destination field value B,the source field value C, and the second destination field value C.
Introduction to FML Functions, Fconcat, Fconcat32(3fml), Fjoin, Fjoin32(3fml), Fproj, Fproj32(3fml)
Copyright © 2000 BEA Systems, Inc. All rights reserved.