private void button1_Click(object sender, System.EventArgs e) { //This is just an example program to demonstrate how to acknowledge and create a CONTRL file in C# //using the Framework EDI hybrid component ediDocument oEdiDoc = null; ediAcknowledgment oAck = null; ediSchemas oSchemas = null; ediDataSegment oSegment = null; string sPath = AppDomain.CurrentDomain.BaseDirectory; string sEdiFile = "INVOIC.TXT"; string sAckFile = "INVOIC_CONTRL.TXT"; string sSefFileAck = "CONTRL.SEF"; string sSefFileInvoic = "INVOIC_S93A.SEF"; Cursor = Cursors.WaitCursor ; //CREATES EDIDOC OBJECT ediDocument.Set(ref oEdiDoc, new ediDocument()); //If EDIFACT EDI file does not have a UNA segment, the terminators below will be used //GETS TERMINATORS oEdiDoc.SegmentTerminator = "'"; oEdiDoc.ElementTerminator = "+"; oEdiDoc.CompositeTerminator = ":"; oEdiDoc.ReleaseIndicator = "?"; //THIS MAKES CERTAIN THAT FREDI ONLY USES THE SEF FILE PROVIDED, AND THAT IT DOES //NOT USE ITS BUILT-IN STANDARD REFERENCE TABLE TO VALIDATE THE EDI FILE. //THE VERSION OF THE EDI FILE MUST ALSO MATCH THE VERSION THAT THE SEF FILE SUPPORTS //OTHERWISE IT WILL STOP THE PROGRAM ediSchemas.Set(ref oSchemas,(ediSchemas) oEdiDoc.GetSchemas()); //oSchemas = (ediSchemas) oEdiDoc.GetSchemas(); oSchemas.EnableStandardReference = false; //oSchemas.set_Option(SchemasOptionIDConstants.OptSchemas_VersionRestrict,1); //BECAUSE THE STANDARD REFERENCE HAS BEED DISABLED. 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 + sSefFileAck, 0); oEdiDoc.LoadSchema(sPath + sSefFileInvoic, 0); //THIS OPTIONS STOPS FREDI FROM LOADING ALL OF THE SEGMENTS IN THE EDI FILE INTO MEMORY. oEdiDoc.CursorType = DocumentCursorTypeConstants.Cursor_ForwardOnly; //CREATES THE ACKNOWLEDGMENT OBJECT oAck = (ediAcknowledgment) oEdiDoc.GetAcknowledgment(); //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(sPath + sEdiFile); //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) ediDataSegment.Set(ref oSegment, (ediDataSegment) oEdiDoc.FirstDataSegment); //oSegment = (ediDataSegment) oEdiDoc.FirstDataSegment; while ( oSegment != null ) { ediDataSegment.Set(ref oSegment, (ediDataSegment) oSegment.Next()); //oSegment = (ediDataSegment) oSegment.Next(); } //WRITES THE ACKNOWLEDGMENT INTO A FILE. oAck.Save(sPath + sAckFile); Cursor = Cursors.Default; MessageBox.Show("Done. Output = " + sPath + sAckFile); } }