Private Sub btnTranslate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTranslate.Click

        'This is just an example program to demonstrate how to translate an EDI X12 214 file using Framework EDI component in VB.NET

        Dim oEdiDoc As ediDocument
        Dim oSchema As ediSchema
        Dim oSchemas As ediSchemas
        Dim oSegment As ediDataSegment
        Dim sSegmentID As String
        Dim sLoopID As String
        Dim nArea As Integer
        Dim sValue As String
        Dim sLoopQlfr As String

        Dim sPath As String
        Dim sEdiFile As String
        Dim sSefFile As String

        btnTranslate.Enabled = False

        sPath = AppDomain.CurrentDomain.BaseDirectory
        sEdiFile = "214.X12"
        sSefFile = "214_004010.SEF"

        'CREATES EDI DOCUMENT OBJECT
        ediDocument.Set(oEdiDoc, New ediDocument)

        'THIS MAKES CERTAIN THAT FREDI ONLY USES THE SEF FILE PROVIDED, AND THAT IT DOES 
        'NOT USE ITS BUILT-IN STANDARD REFERENCE TABLE TO TRANSLATE THE EDI FILE.
        ediSchemas.Set(oSchemas, oEdiDoc.GetSchemas)
        oSchemas.EnableStandardReference = False

        'THIS OPTIONS STOPS FREDI FROM KEEPING ALL THE SEGMENTS IN MEMORY
        oEdiDoc.CursorType = DocumentCursorTypeConstants.Cursor_ForwardOnly

        'LOADS THE SEF FILE
        ediSchema.Set(oSchema, oEdiDoc.ImportSchema(sPath & sSefFile, 0))

        'LOADS THE EDI FILE
        oEdiDoc.LoadEdi(sPath & sEdiFile)

        'GETS THE FIRST DATA SEGMENT
        ediDataSegment.Set(oSegment, oEdiDoc.FirstDataSegment)

        'LOOP THAT WILL TRAVERSE THRU EDI FILE FROM TOP TO BOTTOM
        Do While Not oSegment Is Nothing

            'DATA SEGMENTS WILL BE IDENTIFIED BY THEIR ID, THE LOOP SECTION AND AREA
            '(OR TABLE) NUMBER THAT THEY ARE IN.
            sSegmentID = oSegment.ID
            sLoopID = oSegment.LoopSection
            nArea = oSegment.Area

            If nArea = 0 Then
                If sLoopID = "" Then
                    If sSegmentID = "ISA" Then
                        sValue = oSegment.DataElementValue(1)     'Authorization Information Qualifier
                        sValue = oSegment.DataElementValue(2)     'Authorization Information
                        sValue = oSegment.DataElementValue(3)     'Security Information Qualifier
                        sValue = oSegment.DataElementValue(4)     'Security Information
                        ListBox1.Items.Add(oSegment.DataElement(5).Description & " = " & oSegment.DataElementValue(5))     'Interchange ID Qualifier
                        ListBox1.Items.Add(oSegment.DataElement(6).Description & " = " & oSegment.DataElementValue(6))     'Interchange Sender ID
                        sValue = oSegment.DataElementValue(7)     'Interchange ID Qualifier
                        sValue = oSegment.DataElementValue(8)     'Interchange Receiver ID
                        ListBox1.Items.Add(oSegment.DataElement(9).Description & " = " & oSegment.DataElementValue(9))     'Interchange Date
                        sValue = oSegment.DataElementValue(10)     'Interchange Time
                        sValue = oSegment.DataElementValue(11)     'Interchange Control Standards Identifier
                        sValue = oSegment.DataElementValue(12)     'Interchange Control Version Number
                        ListBox1.Items.Add(oSegment.DataElement(13).Description & " = " & oSegment.DataElementValue(13))     'Interchange Control Number
                        sValue = oSegment.DataElementValue(14)     'Acknowledgment Requested
                        sValue = oSegment.DataElementValue(15)     'Usage Indicator
                        sValue = oSegment.DataElementValue(16)     'Component Element Separator

                    ElseIf sSegmentID = "GS" Then
                        sValue = oSegment.DataElementValue(1)     'Functional Identifier Code
                        sValue = oSegment.DataElementValue(2)     'Application Sender's Code
                        sValue = oSegment.DataElementValue(3)     'Application Receiver's Code
                        sValue = oSegment.DataElementValue(4)     'Date
                        sValue = oSegment.DataElementValue(5)     'Time
                        ListBox1.Items.Add(oSegment.DataElement(6).Description & " = " & oSegment.DataElementValue(6))     'Group Control Number
                        sValue = oSegment.DataElementValue(7)     'Responsible Agency Code
                        sValue = oSegment.DataElementValue(8)     'Version / Release / Industry Identifier Code
                    End If   'sSegmentID
                End If   'sLoopID

            ElseIf nArea = 1 Then
                If sLoopID = "" Then
                    If sSegmentID = "ST" Then
                        sValue = oSegment.DataElementValue(1)     'Transaction Set Identifier Code
                        ListBox1.Items.Add(oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2))     'Transaction Set Control Number

                    ElseIf sSegmentID = "B10" Then
                        ListBox1.Items.Add(oSegment.DataElement(1).Description & " = " & oSegment.DataElementValue(1))     'Reference Identification
                        ListBox1.Items.Add(oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2))     'Shipment Identification Number
                        sValue = oSegment.DataElementValue(3)     'Standard Carrier Alpha Code
                    End If   'Segment ID

                ElseIf sLoopID = "N1" Then
                    'If loop has more that one instance, then you should check for the qualifier that differentiates the loop instances here
                    If sSegmentID = "N1" Then
                        sLoopQlfr = oSegment.DataElementValue(1)   'In most cases the loop qualifier is the first element of the first segment in the loop, but not necessarily
                    End If
                    If sLoopQlfr = "SF" Then

                        If sSegmentID = "N1" Then
                            sValue = oSegment.DataElementValue(1)     'Entity Identifier Code
                            ListBox1.Items.Add("Ship-From Name = " & oSegment.DataElementValue(2))    'Name

                        ElseIf sSegmentID = "N2" Then
                            sValue = oSegment.DataElementValue(1)     'Name

                        ElseIf sSegmentID = "N3" Then
                            ListBox1.Items.Add("Ship-From Address = " & oSegment.DataElementValue(1))     'Address Information

                        ElseIf sSegmentID = "N4" Then
                            ListBox1.Items.Add("Ship-From City = " & oSegment.DataElementValue(1))     'City Name
                            ListBox1.Items.Add("Ship-From State = " & oSegment.DataElementValue(2))     'State or Province Code
                            ListBox1.Items.Add("Ship-From Zip = " & oSegment.DataElementValue(3))     'Postal Code
                        End If   'Segment ID

                    ElseIf sLoopQlfr = "ST" Then

                        If sSegmentID = "N1" Then
                            sValue = oSegment.DataElementValue(1)     'Entity Identifier Code
                            ListBox1.Items.Add("Ship-To Name = " & oSegment.DataElementValue(2))    'Name

                        ElseIf sSegmentID = "N2" Then
                            sValue = oSegment.DataElementValue(1)     'Name

                        ElseIf sSegmentID = "N3" Then
                            ListBox1.Items.Add("Ship-To Address = " & oSegment.DataElementValue(1))     'Address Information

                        ElseIf sSegmentID = "N4" Then
                            ListBox1.Items.Add("Ship-To City = " & oSegment.DataElementValue(1))     'City Name
                            ListBox1.Items.Add("Ship-To State = " & oSegment.DataElementValue(2))     'State or Province Code
                            ListBox1.Items.Add("Ship-To Zip = " & oSegment.DataElementValue(3))     'Postal Code
                        End If   'Segment ID

                    End If


                ElseIf sLoopID = "LX" Then
                    If sSegmentID = "LX" Then
                        ListBox1.Items.Add(oSegment.DataElement(1).Description & " = " & oSegment.DataElementValue(1))     'Assigned Number

                    ElseIf sSegmentID = "L11" Then
                        ListBox1.Items.Add(oSegment.DataElement(1).Description & " = " & oSegment.DataElementValue(1))
                        ListBox1.Items.Add(oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2))
                    End If   'Segment ID

                ElseIf sLoopID = "LX;AT7" Then
                    If sSegmentID = "AT7" Then
                        sValue = oSegment.DataElementValue(1)     'Shipment Status Code
                        ListBox1.Items.Add(oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2))     'Shipment Status or Appointment Reason Code
                        sValue = oSegment.DataElementValue(3)     'Shipment Appointment Status Code
                        sValue = oSegment.DataElementValue(4)     'Shipment Status or Appointment Reason Code
                        sValue = oSegment.DataElementValue(5)     'Date
                        sValue = oSegment.DataElementValue(6)     'Time
                        sValue = oSegment.DataElementValue(7)     'Time Code

                    ElseIf sSegmentID = "MS1" Then
                        ListBox1.Items.Add(oSegment.DataElement(1).Description & " = " & oSegment.DataElementValue(1))     'City Name
                        ListBox1.Items.Add(oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2))     'State or Province Code

                    ElseIf sSegmentID = "MS2" Then
                        sValue = oSegment.DataElementValue(1)     'Standard Carrier Alpha Code
                        ListBox1.Items.Add(oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2))     'Equipment Number
                        sValue = oSegment.DataElementValue(3)     'Equipment Description Code
                    End If   'Segment ID

                ElseIf sLoopID = "LX;SPO" Then
                    If sSegmentID = "SPO" Then
                        ListBox1.Items.Add(oSegment.DataElement(1).Description & " = " & oSegment.DataElementValue(1))     'Purchase Order Number
                        ListBox1.Items.Add(oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2))     'Reference Identification
                        sValue = oSegment.DataElementValue(3)     'Unit or Basis for Measurement Code
                        ListBox1.Items.Add(oSegment.DataElement(4).Description & " = " & oSegment.DataElementValue(4))     'Quantity
                        sValue = oSegment.DataElementValue(5)     'Weight Unit Code
                        sValue = oSegment.DataElementValue(6)     'Weight
                    End If  'sSegmentID
                End If  'sLoopID
            End If  'nArea

            'GETS THE NEXT DATA SEGMENT
            ediDataSegment.Set(oSegment, oSegment.Next)

        Loop

        'DESTROY OBJECTS
        oSchema.Dispose()
        oSchemas.Dispose()
        oEdiDoc.Dispose()

        MessageBox.Show("Done")

    End Sub
    

    Click here to download a trial version of the Framework EDI