Fjoin, Fjoin32 - join source into destination buffer
#include <stdio.h> #include "fml.h" int Fjoin(FBFR *dest, FBFR *src) #include "fml32.h" int Fjoin32(FBFR32 *dest, FBFR32 *src)
Fjoin() is used to join two fielded buffers based on matching fieldid/occurrence. dest and src are pointers to the destination and source fielded buffers respectively. For fields that match on fieldid/occurrence, the field value is updated in the destination buffer with the value in the source buffer. Fields in the destination buffer that have no corresponding fieldid/occurrence in the source buffer are deleted.
This function may fail due to lack of space if the new values are larger than the old; in this case, the destination buffer will have been modified. However, if this happens, the destination buffer may be re-allocated using Frealloc(3fml) and the Fjoin() function repeated. Even if the destination buffer has been partially updated, repeating the function will give the correct results.
Fjoin32 is used with 32-bit FML.
This function returns -1 on error and sets Ferror to indicate the error condition.
Under the following conditions, Fjoin() fails and sets Ferror to:
In the following example: FBFR *src, *dest; ... if(Fjoin(dest,src) < 0) F_error("pgm_name"); if dest has fields A, B, and two occurrences of C, and src has fields A, C, and D, the resultant dest will have source field value A and source field value C.
Fintro(3fml),
Fconcat(3fml),
Fojoin(3fml),
Fproj(3fml),
Fprojcpy(3fml),
Frealloc(3fml)