
STEP 1:
Use the Designer to define your XML
- Support for unlimited repeating structures.
- Support for XML elements, attributes, comments and processing instructions.

STEP 2:
Use the Designer to define SEND or RECEIVE Action Blocks
- SEND Action Blocks import Gen attributes and export XML elements.
- RECEIVE Action Blocks import XML elements and export Gen attributes.
- Using QAT Exchange, you can map between XML elements and Gen attributes.
- Use transformation rules to format data, using the pre-built functions provided by QAT Exchange, such as:
- FormatNumber
- FormatDate
- FormatText
- Concat
- Substring
- Combine multiple functions with complex edit patterns in your rules...
- and much more !

STEP 3:
Generate your Gen Action Block!

Your final result is this.
You can trace it and
store in your encyclopedia.
Just like any regular
Action Block!
Not this!
/*************************
* External Action Block…
* please call the non-gen developer to debug this when it abends !
**************************/
void *
xmlReallocLoc(void *ptr,size_t size, const char * file, int line)
{
MEMHDR *p;
unsigned long number;
if (!xmlMemInitialized) xmlInitMemory();
p = CLIENT_2_HDR(ptr);
number = p->mh_number;
if (p->mh_tag != MEMTAG) {
Mem_Tag_Err(p);
goto error;
}
p->mh_tag = ~MEMTAG;
debugMemSize -= p->mh_size;
if (xmlMemTraceBlockAt == ptr) {
xmlGenericError(xmlGenericErrorContext,"%p : Realloced(%d -> %d) Ok\n",xmlMemTraceBlockAt, p->mh_size, size);
xmlMallocBreakpoint();
}
p->mh_tag = MEMTAG;
p->mh_number = number;
debugMemSize += size;
if (debugMemSize > debugMaxMemSize) debugMaxMemSize = debugMemSize;
#ifdef MEM_LIST
debugmem_list_add(p);
#endif
return(HDR_2_CLIENT(p));
error:
return(NULL);
}