* This is just an example to show how to translate an EDI X12 130 Student Educational Record (Transcript)
        * in Foxpro with Framework EDI component
    
        clear
    
        * CREATES EDIDOC OBJECT
        oEdiDoc = createobject("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.
        oSchemas = oEdiDoc.GetSchemas
        oSchemas.EnableStandardReference = .F.
 
        * THIS OPTIONS STOPS FREDI FROM KEEPING ALL THE SEGMENTS IN MEMORY
        oEdiDoc.CursorType = 1
 
        * LOADS THE SEF FILE
        oEdiDoc.LoadSchema("130_4010.SEF", 0)
 
        * LOADS THE EDI FILE
        oEdiDoc.LoadEdi("130.x12")
 
        * GETS THE FIRST DATA SEGMENT
        oSegment = oEdiDoc.FirstDataSegment
 
        * LOOP THAT WILL TRAVERSE THRU EDI FILE FROM TOP TO BOTTOM
        do while !isnull(oSegment)
 
            * 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
 
            do case
            case nArea = 0
                do case
                case sLoopID == ""
                    do case
                    case sSegmentID = "ISA"
                        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
                        sValue = oSegment.DataElementValue(5)     && Interchange ID Qualifier
                        sValue = 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
                        sValue = oSegment.DataElementValue(12)     && Interchange Control Version Number
                        ? 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
 
                    case sSegmentID = "GS"
                        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
                        ? 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
                    endcase && sSegmentID
                endcase && sLoopID
 
            case nArea = 1
                do case
                case sLoopID == ""
                    do case
                    case sSegmentID = "ST"
                        sValue = oSegment.DataElementValue(1)     && Transaction Set Identifier Code
                        ? oSegment.DataElement(2).Description + " = " + oSegment.DataElementValue(2)     && Transaction Set Control Number
 
                    case sSegmentID = "BGN"
                        sValue = oSegment.DataElementValue(1)     && Transaction Set Purpose Code
                        ? oSegment.DataElement(2).Description + " = " + oSegment.DataElementValue(2)     && Reference Identification
                        sValue = oSegment.DataElementValue(3)     && Date
                        sValue = oSegment.DataElementValue(4)     && Time
                        sValue = oSegment.DataElementValue(5)     && Time Code
 
                    case sSegmentID = "ERP"
                        sValue = oSegment.DataElementValue(1)     && Transaction Type Code
                        sValue = oSegment.DataElementValue(2)     && Status Reason Code
 
                    case sSegmentID = "REF"
                        sValue = oSegment.DataElementValue(1)     && Reference Identification Qualifier
                        ? oSegment.DataElement(2).Description + " = " + oSegment.DataElementValue(2)     && Reference Identification
                    endcase && sSegmentID
 
                case sLoopID == "N1"
                    * If loop has more that one instance, then you should check for the qualifier that differentiates the loop instances here e.g.
                    If sSegmentID = "N1" then  
                        sN1LoopQlfr = oSegment.DataElementValue(1)   && In most cases the loop qualifier is the first element of the first segment in the loop, but not necessarily
                    EndIf
                    do case
                    case sN1LoopQlfr = "AS"    && Post Secondary Education Sender
                        do case
                        case sSegmentID = "N1"
                            sValue = oSegment.DataElementValue(1)     && Entity Identifier Code
                            ? oSegment.DataElement(2).Description + " Sender = " + oSegment.DataElementValue(2)     && Name
     
                        case sSegmentID = "N3"
                            ? oSegment.DataElement(1).Description + " Sender = " + oSegment.DataElementValue(1)     && Address Information
     
                        case sSegmentID = "N4"
                            ? oSegment.DataElement(1).Description + " Sender = " + oSegment.DataElementValue(1)     && City Name
                        endcase && sSegmentID
                
                    case sN1LoopQlfr = "AT"    && Post Secondary Education Receiver
                        do case
                        case sSegmentID = "N1"
                            sValue = oSegment.DataElementValue(1)     && Entity Identifier Code
                            ? oSegment.DataElement(2).Description + " Receiver = " + oSegment.DataElementValue(2)     && Name
     
                        case sSegmentID = "N3"
                            ? oSegment.DataElement(1).Description + " Receiver = " + oSegment.DataElementValue(1)     && Address Information
     
                        case sSegmentID = "N4"
                            ? oSegment.DataElement(1).Description + " Receiver = " + oSegment.DataElementValue(1)     && City Name
                        endcase && sSegmentID
                
                    endcase  && sN1LoopQlfr
            
 
                case sLoopID == "IN1"
                    do case
                    case sSegmentID = "IN1"
                        sValue = oSegment.DataElementValue(1)     && Entity Type Qualifier
                        sValue = oSegment.DataElementValue(2)     && Name Type Code
 
                    case sSegmentID = "IN2"
                        sValue = oSegment.DataElementValue(1)     && Name Component Qualifier
                        sValue = oSegment.DataElementValue(2)     && Name
                    endcase && sSegmentID
 
                case sLoopID == "SST"
                    do case
                    case sSegmentID = "SST"
                        sValue = oSegment.DataElementValue(1)     && Status Reason Code
                        sValue = oSegment.DataElementValue(2)     && Date Time Period Format Qualifier
                        ? oSegment.DataElement(3).Description + " = " + oSegment.DataElementValue(3)     && Date Time Period
 
                    case sSegmentID = "N1"
                        sValue = oSegment.DataElementValue(1)     && Entity Identifier Code
                        ? oSegment.DataElement(2).Description + " = " + oSegment.DataElementValue(2)     && Name
 
                    case sSegmentID = "N4"
                        ? oSegment.DataElement(1).Description + " = " + oSegment.DataElementValue(1)     && City Name
                        ? oSegment.DataElement(2).Description + " = " + oSegment.DataElementValue(2)     && State or Province Code
                    endcase && sSegmentID
 
                case sLoopID == "ATV"
                    do case
                    case sSegmentID = "ATV"
                        sValue = oSegment.DataElementValue(1)     && Code List Qualifier Code
                        sValue = oSegment.DataElementValue(2)     && Industry Code
                        ? oSegment.DataElement(3).Description + " = " + oSegment.DataElementValue(3)     && Entity Title
 
                    case sSegmentID = "DTP"
                        sValue = oSegment.DataElementValue(1)     && Date/Time Qualifier
                        sValue = oSegment.DataElementValue(2)     && Date Time Period Format Qualifier
                        ? oSegment.DataElement(3).Description + " = " + oSegment.DataElementValue(3)     && Date Time Period
                    endcase && sSegmentID
 
                case sLoopID == "TST"
                    do case
                    case sSegmentID = "TST"
                        sValue = oSegment.DataElementValue(1)     && Educational Test or Requirement Code
                        ? oSegment.DataElement(2).Description + " = " + oSegment.DataElementValue(2)     && Name
                        sValue = oSegment.DataElementValue(3)     && Date Time Period Format Qualifier
                        sValue = oSegment.DataElementValue(4)     && Date Time Period
                        sValue = oSegment.DataElementValue(5)     && Reference Identification
                        sValue = oSegment.DataElementValue(6)     && Reference Identification
                        sValue = oSegment.DataElementValue(7)     && Level of Individual, Test, or Course Code
                    endcase && sSegmentID
 
                case sLoopID == "TST;SBT"
                    do case
                    case sSegmentID = "SBT"
                        sValue = oSegment.DataElementValue(1)     && Subtest Code
 
                    case sSegmentID = "SRE"
                        sValue = oSegment.DataElementValue(1)     && Test Score Qualifier Code
                        ? oSegment.DataElement(2).Description + " = " + oSegment.DataElementValue(2)     && Description
                    endcase && sSegmentID
                endcase && sLoopID
 
            case nArea = 2
                do case
                case sLoopID == "LX"
                    do case
                    case sSegmentID = "LX"
                        sValue = oSegment.DataElementValue(1)     && Assigned Number
 
                    case sSegmentID = "HS"
                        sValue = oSegment.DataElementValue(1)     && Health Screening Type Code
                        sValue = oSegment.DataElementValue(2)     && Date Time Period Format Qualifier
                        sValue = oSegment.DataElementValue(3)     && Date Time Period
                        sValue = oSegment.DataElementValue(4)     && Status Reason Code
 
                    case sSegmentID = "IMM"
                        sValue = oSegment.DataElementValue(1)     && Immunization Type Code
                        sValue = oSegment.DataElementValue(2)     && Date Time Period Format Qualifier
                        sValue = oSegment.DataElementValue(3)     && Date Time Period
                        sValue = oSegment.DataElementValue(4)     && Immunization Status Code
                    endcase && sSegmentID
 
                case sLoopID == "LX;SES"
                    do case
                    case sSegmentID = "SES"
                        sValue = oSegment.DataElementValue(1)     && Date Time Period
                        sValue = oSegment.DataElementValue(2)     && Count
                        sValue = oSegment.DataElementValue(3)     && Date Time Period
                        sValue = oSegment.DataElementValue(4)     && Session Code
                        ? oSegment.DataElement(5).Description + " = " + oSegment.DataElementValue(5)     && Name
                        sValue = oSegment.DataElementValue(6)     && Date Time Period Format Qualifier
                        sValue = oSegment.DataElementValue(7)     && Date Time Period
                        sValue = oSegment.DataElementValue(8)     && Date Time Period Format Qualifier
                        sValue = oSegment.DataElementValue(9)     && Date Time Period
                        sValue = oSegment.DataElementValue(10)     && Level of Individual, Test, or Course Code
                        sValue = oSegment.DataElementValue(11)     && Identification Code Qualifier
                        sValue = oSegment.DataElementValue(12)     && Identification Code
                        sValue = oSegment.DataElementValue(13)     && Name
                        sValue = oSegment.DataElementValue(14)     && Status Reason Code
                    endcase && sSegmentID
 
                case sLoopID == "LX;SES;CRS"
                    do case
                    case sSegmentID = "CRS"
                        sValue = oSegment.DataElementValue(1)     && Basis for Academic Credit Code
                        sValue = oSegment.DataElementValue(2)     && Academic Credit Type Code
                        sValue = oSegment.DataElementValue(3)     && Quantity
                        sValue = oSegment.DataElementValue(4)     && Quantity
                        sValue = oSegment.DataElementValue(5)     && Academic Grade Qualifier
                        ? oSegment.DataElement(6).Description + " = " + oSegment.DataElementValue(6)     && Academic Grade
                        sValue = oSegment.DataElementValue(7)     && Yes/No Condition or Response Code
                        sValue = oSegment.DataElementValue(8)     && Academic Grade or Course Level Code
                        sValue = oSegment.DataElementValue(9)     && Course Repeat or No Count Indicator Code
                        sValue = oSegment.DataElementValue(10)     && Identification Code Qualifier
                        sValue = oSegment.DataElementValue(11)     && Identification Code
                        sValue = oSegment.DataElementValue(12)     && Quantity
                        sValue = oSegment.DataElementValue(13)     && Level of Individual, Test, or Course Code
                        ? oSegment.DataElement(14).Description + " = " + oSegment.DataElementValue(14)     && Name
                        sValue = oSegment.DataElementValue(15)     && Reference Identification
                        sValue = oSegment.DataElementValue(16)     && Name
                    endcase && sSegmentID
                endcase && sLoopID
            endcase && nArea
 
            * GETS THE NEXT DATA SEGMENT
            oSegment = oSegment.Next
 
       enddo
    

    Click here to download a trial version of the Framework EDI