PURPOSE

CFchg, CFchg32 - convert and change field

SYNOPSIS

#include <stdio.h>
#include "fml.h"
int CFchg(FBFR *fbfr, FLDID fieldid, FLDOCC oc, char *value, FLDLEN len,
  int type)
#include "fml32.h"
int CFchg32(FBFR32 *fbfr, FLDID32 fieldid, FLDOCC32 oc, char *value,
  FLDLEN32 len, int type)

DESCRIPTION

CFchg() acts like Fchg() but first converts the value from the user-specified type to the type of the fieldid for which the field is changed in the fielded buffer. fbfr is a pointer to a fielded buffer. fieldid is a field identifier. oc is the occurrence number of the field. value is a pointer to a new value. len is the length of the value to be changed; it is required only if type is FLD_CARRAY. type is the data type of value.

If a field occurrence is specified that does not exist, then NULL values are added for the missing occurrences until the desired value can be added (e.g., changing field occurrence 4 for a field that does not exist in a buffer will cause 3 NULL values to be added followed by the specified field value).

CFchg32 is used with 32-bit FML.

RETURN VALUES

This function returns -1 on error and sets Ferror to indicate the error condition.

ERRORS

Under the following conditions, CFchg() fails and sets Ferror to:

[FALIGNERR]

"fielded buffer not aligned"
[FNOTFLD]

"buffer not fielded" The buffer is not a fielded buffer or has not been initialized by Finit().
[FMALLOC]

"malloc failed" Allocation of space dynamically using malloc(3) failed when converting from a carray to string.
[FEINVAL]

"invalid argument to function" One of the arguments to the function invoked was invalid, (for example, a NULL value parameter was specified).
[FNOSPACE]

"no space in fielded buffer" A field value is to be added or changed in a field buffer but there is not enough space remaining in the buffer.
[FNOTPRES]

"field not present" A field occurrence is requested but the specified field and/or occurrence was not found in the fielded buffer.
[FBADFLD]

"unknown field number or type" A field identifier is specified which is not valid.
[FTYPERR]

"invalid field type" A field identifier is specified which is not valid.

SEE ALSO

CFadd(3c),
Fintro(3fml),
Fchg(3fml)