'This is an example program that shows how to translate an EDI X12 204 using the Framework EDI component in VB6
    
    Dim oEdiDoc As Fredi.ediDocument
    Dim oSchema As Fredi.ediSchema
    Dim oSchemas As Fredi.ediSchemas
    Dim oSegment As Fredi.ediDataSegment
    Dim sSegmentID As String
    Dim sLoopID As String
    Dim nArea As Integer
    Dim sValue As String
    Dim sQlfr As String
    Dim sLoopN1Qlfr As String
    
    Command1.Enabled = False
     
    'CREATES EDI DOCUMENT OBJECT
    Set oEdiDoc = New Fredi.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.
    Set oSchemas = oEdiDoc.GetSchemas
    oSchemas.EnableStandardReference = False
     
    'THIS OPTIONS STOPS FREDI FROM KEEPING ALL THE SEGMENTS IN MEMORY
    oEdiDoc.CursorType = Cursor_ForwardOnly
     
    'LOADS THE SEF FILE
    Set oSchema = oEdiDoc.LoadSchema("204_4010.SEF", 0)
     
    'LOADS THE EDI FILE
    oEdiDoc.LoadEdi "204.x12"
     
    'GETS THE FIRST DATA SEGMENT IN THE EDI FILE
    Set oSegment = oEdiDoc.FirstDataSegment
     
    'LOOP THAT WILL TRAVERSE THRU EDI FILE FROM FIRST SEGMENT TO LAST SEGMENT
    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
                   'ONCE SEGMENT HAS BEEN IDENTIFIED, ITS DATA ELEMENTS ARE READ
                   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
                   List1.AddItem oSegment.DataElement(5).Description & " = " & oSegment.DataElementValue(5)     'Interchange ID Qualifier
                   List1.AddItem oSegment.DataElement(6).Description & " = " & oSegment.DataElementValue(6)     'Interchange Sender ID
                   sValue = oSegment.DataElementValue(7)     'Interchange ID Qualifier
                   sValue = oSegment.DataElementValue(8)     'Interchange Receiver ID
                   sValue = oSegment.DataElementValue(9)     'Interchange Date
                   sValue = oSegment.DataElementValue(10)     'Interchange Time
                   sValue = oSegment.DataElementValue(11)     'Interchange Control Standards Identifier
                   List1.AddItem oSegment.DataElement(12).Description & " = " & oSegment.DataElementValue(12)      'Interchange Control Version Number
                   List1.AddItem 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
                   List1.AddItem 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
                   List1.AddItem oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2)     'Transaction Set Control Number
     
               ElseIf sSegmentID = "B2" Then
                   sValue = oSegment.DataElementValue(1)     'Tariff Service Code
                   sValue = oSegment.DataElementValue(2)     'Standard Carrier Alpha Code
                   sValue = oSegment.DataElementValue(3)     'Standard Point Location Code
                   List1.AddItem oSegment.DataElement(4).Description & " = " & oSegment.DataElementValue(4)     'Shipment Identification Number
                   sValue = oSegment.DataElementValue(5)     'Weight Unit Code
                   sValue = oSegment.DataElementValue(6)     'Shipment Method of Payment
                   sValue = oSegment.DataElementValue(7)     'Shipment Qualifier
     
               ElseIf sSegmentID = "B2A" Then
                   sValue = oSegment.DataElementValue(1)     'Transaction Set Purpose Code
                   sValue = oSegment.DataElementValue(2)     'Application Type
     
               ElseIf sSegmentID = "L11" Then
                   'MULTIPLE INSTANCES OF SEGMENTS CAN BE FURTHER IDENTIFIED FROM EACH OTHER
                   'BY READING THEIR QUALIFIER
                   sQlfr = oSegment.DataElementValue(2)     'Reference Identification Qualifier
                   
                   If sQlfr = "CO" Then 'Customer Order Number
                        List1.AddItem "Customer Order NUmber = " & oSegment.DataElementValue(1)
                        
                   ElseIf sQlfr = "14" Then 'Master Account Number
                        List1.AddItem "Master Account Number = " & oSegment.DataElementValue(1)
                   End If
                   
               End If   'Segment ID
     
            ElseIf sLoopID = "N7" Then
               If sSegmentID = "N7" Then
                   sValue = oSegment.DataElementValue(1)     'Equipment Initial
                   List1.AddItem oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2)     'Equipment Number
               End If   'sSegmentID
            End If   'sLoopID
     
        ElseIf nArea = 2 Then
            If sLoopID = "S5" Then
               If sSegmentID = "S5" Then
                   sValue = oSegment.DataElementValue(1)     'Stop Sequence Number
                   sValue = oSegment.DataElementValue(2)     'Stop Reason Code
                   sValue = oSegment.DataElementValue(3)     'Weight
                   sValue = oSegment.DataElementValue(4)     'Weight Unit Code
                   sValue = oSegment.DataElementValue(5)     'Number of Units Shipped
                   sValue = oSegment.DataElementValue(6)     'Unit or Basis for Measurement Code
     
               ElseIf sSegmentID = "L11" Then
                   sQlfr = oSegment.DataElementValue(2)      'Reference Identification Qualifier
                   If sQlfr = "RU" Then
                       List1.AddItem "Route Number = " & oSegment.DataElementValue(1)     'Reference Identification
                   End If
     
               ElseIf sSegmentID = "G62" Then
                   sValue = oSegment.DataElementValue(1)     'Date Qualifier
                   sValue = oSegment.DataElementValue(2)     'Date
               End If   'Segment ID
     
            ElseIf sLoopID = "S5;N1" Then
            'If loop has more that one instance, then you should check for the qualifier that differentiates the loop instances.
                If sSegmentID = "N1" Then
                   sLoopN1Qlfr = oSegment.DataElementValue(1)   'In most cases the loop entity identifier is the first element of the first segment in the loop, but not necessarily
                End If
                If sLoopN1Qlfr = "SF" Then  'Ship From
                      If sSegmentID = "N1" Then
                          sValue = oSegment.DataElementValue(1)     'Entity Identifier Code
                          List1.AddItem "Ship From Name = " & oSegment.DataElementValue(2)     'Name
                          sValue = oSegment.DataElementValue(3)     'Identification Code Qualifier
                          sValue = oSegment.DataElementValue(4)     'Identification Code
            
                      ElseIf sSegmentID = "N3" Then
                          List1.AddItem "Ship From Address = " & oSegment.DataElementValue(1)     'Address Information
                          sValue = oSegment.DataElementValue(2)     'Address Information
            
                      ElseIf sSegmentID = "N4" Then
                          sValue = oSegment.DataElementValue(1)     'City Name
                          sValue = oSegment.DataElementValue(2)     'State or Province Code
                          sValue = oSegment.DataElementValue(3)     'Postal Code
            
                      ElseIf sSegmentID = "G61" Then
                          sQlfr = oSegment.DataElementValue(1)     'Contact Function Code
                          If sQlfr = "IC" Then
                                List1.AddItem "Ship From Contact = " & oSegment.DataElementValue(2)     'Name
                          End If
                      End If   'Segment ID
                
                ElseIf sLoopN1Qlfr = "CN" Then  'Consignee
                      If sSegmentID = "N1" Then
                          sValue = oSegment.DataElementValue(1)     'Entity Identifier Code
                          List1.AddItem "Consignee Name = " & oSegment.DataElementValue(2)     'Name
                          sValue = oSegment.DataElementValue(3)     'Identification Code Qualifier
                          sValue = oSegment.DataElementValue(4)     'Identification Code
            
                      ElseIf sSegmentID = "N3" Then
                          List1.AddItem "Consignee Address = " & oSegment.DataElementValue(1)     'Address Information
                          sValue = oSegment.DataElementValue(2)     'Address Information
            
                      ElseIf sSegmentID = "N4" Then
                          sValue = oSegment.DataElementValue(1)     'City Name
                          sValue = oSegment.DataElementValue(2)     'State or Province Code
                          sValue = oSegment.DataElementValue(3)     'Postal Code
            
                      ElseIf sSegmentID = "G61" Then
                          sQlfr = oSegment.DataElementValue(1)     'Contact Function Code
                          If sQlfr = "IC" Then
                                List1.AddItem "Consignee Contact = " & oSegment.DataElementValue(2)     'Name
                          End If
                      End If   'Segment ID
                
                End If
                     
            ElseIf sLoopID = "S5;OID" Then
               If sSegmentID = "OID" Then
                   List1.AddItem oSegment.DataElement(1).Description & " = " & oSegment.DataElementValue(1)     'Reference Identification
                   List1.AddItem oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2)     'Purchase Order Number
                   sValue = oSegment.DataElementValue(3)     'Reference Identification
                   sValue = oSegment.DataElementValue(4)     'Unit or Basis for Measurement Code
                   sValue = oSegment.DataElementValue(5)     'Quantity
                   sValue = oSegment.DataElementValue(6)     'Weight Unit Code
                   sValue = oSegment.DataElementValue(7)     'Weight
     
               ElseIf sSegmentID = "LAD" Then
                   List1.AddItem oSegment.DataElement(1).Description & " = " & oSegment.DataElementValue(1)     'Packaging Form Code
                   List1.AddItem oSegment.DataElement(2).Description & " = " & oSegment.DataElementValue(2)     'Lading Quantity
                   sValue = oSegment.DataElementValue(3)     'Weight Unit Code
                   sValue = oSegment.DataElementValue(4)     'Unit Weight
                   sValue = oSegment.DataElementValue(5)     'Weight Unit Code
                   sValue = oSegment.DataElementValue(6)     'Weight
                   sValue = oSegment.DataElementValue(7)     'Product/Service ID Qualifier
                   List1.AddItem oSegment.DataElement(8).Description & " = " & oSegment.DataElementValue(8)     'Product/Service ID
                   sValue = oSegment.DataElementValue(9)     'Product/Service ID Qualifier
                   sValue = oSegment.DataElementValue(10)     'Product/Service ID
                   sValue = oSegment.DataElementValue(11)     'Product/Service ID Qualifier
                   sValue = oSegment.DataElementValue(12)     'Product/Service ID
                   List1.AddItem oSegment.DataElement(13).Description & " = " & oSegment.DataElementValue(13)     'Lading Description
               End If   'sSegmentID
            End If   'sLoopID
     
        ElseIf nArea = 3 Then
            If sLoopID = "" Then
               If sSegmentID = "L3" Then
                   sValue = oSegment.DataElementValue(1)     'Weight
                   sValue = oSegment.DataElementValue(2)     'Weight Qualifier
                   sValue = oSegment.DataElementValue(3)     'Freight Rate
                   sValue = oSegment.DataElementValue(4)     'Rate/Value Qualifier
                   sValue = oSegment.DataElementValue(5)     'Charge
                   sValue = oSegment.DataElementValue(6)     'Advances
                   sValue = oSegment.DataElementValue(7)     'Prepaid Amount
                   sValue = oSegment.DataElementValue(8)     'Special Charge or Allowance Code
                   sValue = oSegment.DataElementValue(9)     'Volume
                   sValue = oSegment.DataElementValue(10)     'Volume Unit Qualifier
                   sValue = oSegment.DataElementValue(11)     'Lading Quantity
               End If  'sSegmentID
            End If  'sLoopID
        End If  'nArea
     
        'GETS THE NEXT DATA SEGMENT
        Set oSegment = oSegment.Next
     
    Loop
     
    'DESTROY OBJECTS
    Set oEdiDoc = Nothing
    Set oSchema = Nothing
    Set oSchemas = Nothing
    Set oSegment = Nothing

    MsgBox "Done"

    Click here to download a trial version of the Framework EDI