class FDStruct
{//Use <CTRL-l> and sel "Data", "List" or "Check Box"
//to generate the formats.
F64 num1 format "$DA-TRM,A=\"Float1:%12.8f\"$\n";
F64 num2 format "$DA-TRM,A=\"Float2:%12e\"$\n";
I64 num3 format "$DA-TRM,A=\"Int1:0x%016X\"$\n";
I64 num4 format "$DA-TRM,A=\"Int2:%12d\"$\n";
I64 type format "$LS,D=\"ST_PERSON_TYPE\"$\n";
U8 name[32] format "$DA-P,A=\"Name:%s\"$\n";
U8 *address1 format "$DA+M,A=\"Address:%s\"$\n"; //+M is unlimited len U8 *.
U8 *address2 format "$DA+M,A=\"Address:%s\"$\n"; //+M is unlimited len U8 *.
CDate datetime format "$DA-TRM,A=\"Date:%8D\"$\n";
Bool check format "$CB,\"Check\"$\n";
};

U0 FormDemo()
{
FDStruct fds;
DefineLstLoad("ST_PERSON_TYPE","Child\0Teen\0Adult\0");
fds.num1=12.3e-4; //Set defaults
fds.num2=4.5e3;
fds.num3=0x1234;
fds.num4=-567;
fds.type=1;
StrCpy(&fds.name,"John");
fds.address1=StrNew("1234 Pine St.");
fds.address2=NULL; //Init to NULL if empty.
fds.datetime=Now;
fds.check=TRUE;
if (DocForm(&fds)) {
"#1\t=%e\n",fds.num1;
"#2\t=%e\n",fds.num2;
"#3\t=%d\n",fds.num3;
"#4\t=%d\n",fds.num4;
"Type\t=%s\n",DefineSub(fds.type,"ST_PERSON_TYPE");
"Name\t=%s\n",fds.name;
"Address1=%s\n",fds.address1;
"Address2=%s\n",fds.address2;
"Date\t=%D\n",fds.datetime;
"Check\t=%d\n",fds.check;
} else
"Cancel\n";

"\n\nClassRep Example\n";
ClassRep(&fds);
Free(fds.address1);
Free(fds.address2);
//See also ClassRepD().
}

FormDemo;