procedure TForm1.Button1Click(Sender: TObject);
begin

   //This is just an example program to demonstrate how to acknowledge and create a CONTRL acknowledgment
   //file in Delphi using Framework EDI component

   sPath := Trim(GetCurrentDir) + '\';'
   
   // CREATES OEDIDOC OBJECT
   oEdidoc := coedidocument.Create;
 
   // SETS TERMINATORS
   oEdiDoc.SegmentTerminator := '''{13:10}';
   oEdiDoc.ElementTerminator := '+';
   oEdiDoc.CompositeTerminator := ':';
   oEdiDoc.ReleaseIndicator := '?';

   //By default, FREDI uses the  universal coordinated time (UTC), however you can change it to local time
   oEdiDoc.Option[5] := 1;

   //Stops FREDI from using the internal standard reference
   oSchemas := oEdiDoc.GetSchemas as IediSchemas;
   oSchemas.EnableStandardReference := False;

   // YOU MUST LOAD BOTH THE CONTRL SEF FILE (FOR FREDI TO CREATE AN EDI CONTRL FILE), 
   // AS WELL AS THE SEF FILE THAT WILL BE USED TO VALIDATE THE EDI FILE.
   // PLEASE NOTE THAT YOU MUST LOAD THE CORRECT VERSION OF THE CONTRL SEF FILE.
   oEdiDoc.LoadSchema(sPath + 'CONTRL.SEF', 0);
   oEdiDoc.LoadSchema(sPath + 'INVOIC_S93A.SEF', 0);
 
   // THIS OPTIONS STOPS FREDI FROM LOADING ALL OF THE SEGMENTS IN THE EDI FILE INTO MEMORY. 
   oEdiDoc.CursorType := 1;
 
   // CREATES THE ACKNOWLEDGMENT OBJECT
   oAck := oEdiDoc.GetAcknowledgment as IediAcknowledgment;
 
   // ENABLES THE CREATION OF THE FUNCTIONAL ACKNOWLEDGMENT WHEN FREDI LOADS AN EDI FILE.
   oAck.EnableFunctionalAcknowledgment := True;
 
   // LOADS THE EDI FILE.  NOTE THAT WHEN THE CURSOR TYPE FORWARD IS ENABLED, ONLY THE FIRST 
   // DATA SEGMENT IS LOADED; OTHERWISE THE WHOLE EDI FILE GETS LOADED INTO MEMORY
   oEdiDoc.LoadEdi('INVOIC.TXT');
 
   // IF THE CURSOR TYPE FORWARD IS ENABLED, YOU MUST TRAVERSE THRU THE WHOLE EDI FILE 
   // SO THAT IT ALLOWS FREDI TO LOAD EACH SEGMENT AND ANALYZE THEM. (FREDI DOES NOT KEEP
   // THE SEGMENTS IN MEMORY, BUT DISCARDS THEM ONCE THEY HAVE BEEN READ)
   oSegment := oEdiDoc.FirstDataSegment as IediDataSegment;
   While oSegment <> Nil do begin
       oSegment := oSegment.Next as IediDataSegment;
   end;
 
   // ONCE THE WHOLE EDI FILE HAS BEEN READ, CAN YOU THEN MANAGE AND MANIPULATE DATA
   // OF THE ACK OBJECT THAT FREDI CREATED AUTOMATICALLY.
 
   // GETS THE FIRST DATA SEGMENT OF THE ACK OBJECT
   // oSegment := oAck.GetFirstContrlDataSegment as IediDataSegment;
 
   // oSegment := oSegment.GetDataSegmentByPos('\UNB\UNH\UNC')  as IediDataSegment;
   // if oSegment.DataElementValue[3] = "7" then begin 
   // end;
 
   // WRITES THE ACKNOWLEDGMENT INTO A FILE.
   oAck.Save(sPath + 'INVOIC_CONTRL.TXT');

   ShowMessage('Done. Output = ' + sPath + 'INVOIC_CONTRL.TXT');


end;