* This is just an example program to show how to generate an EDI X12 130 Student Educational Record
        * in FoxPro with Framework EDI component

        clear
        * CREATES EDI DOCUMENT 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 GENERATE THE EDI FILE.
        oSchemas = oEdiDoc.GetSchemas
        oSchemas.EnableStandardReference = .F.
     
        * ENABLES FORWARD WRITE, AND INCREASES BUFFER I/O TO IMPROVE PERFORMANCE
        oEdiDoc.CursorType = 2
        oEdiDoc.Property(1002) = 200 
     
        * SET TERMINATORS
        oEdiDoc.SegmentTerminator = "~{13:10}"
        oEdiDoc.ElementTerminator = "*"
        oEdiDoc.CompositeTerminator = "!"
     
        * LOADS SEF FILE
        oSchema = oEdiDoc.LoadSchema("130_4010.SEF", 0)
     
        * CREATES THE ISA SEGMENT
        oInterchange = oEdiDoc.CreateInterchange("X","004010")
        oSegment = oInterchange.GetDataSegmentHeader
        oSegment.DataElementValue(1) = "00"     && Authorization Information Qualifier
        oSegment.DataElementValue(2) = "          "     && Authorization Information
        oSegment.DataElementValue(3) = "00"     && Security Information Qualifier
        oSegment.DataElementValue(4) = "          "     && Security Information
        oSegment.DataElementValue(5) = "ZZ"     && Interchange ID Qualifier
        oSegment.DataElementValue(6) = "SENDER ID      "     && Interchange Sender ID
        oSegment.DataElementValue(7) = "ZZ"     && Interchange ID Qualifier
        oSegment.DataElementValue(8) = "RECEIVER ID    "     && Interchange Receiver ID
        oSegment.DataElementValue(9) = "061206"     && Interchange Date
        oSegment.DataElementValue(10) = "0101"     && Interchange Time
        oSegment.DataElementValue(11) = "U"     && Interchange Control Standards Identifier
        oSegment.DataElementValue(12) = "00401"     && Interchange Control Version Number
        oSegment.DataElementValue(13) = "000000001"     && Interchange Control Number
        oSegment.DataElementValue(14) = "0"     && Acknowledgment Requested
        oSegment.DataElementValue(15) = "T"     && Usage Indicator
        oSegment.DataElementValue(16) = "!"     && Component Element Separator
     
        * CREATES THE GS SEGMENT
        oGroup = oInterchange.CreateGroup("004010")
        oSegment = oGroup.GetDataSegmentHeader
        oSegment.DataElementValue(1) = "ED"     && Functional Identifier Code
        oSegment.DataElementValue(2) = "APP SENDER"     && Application Sender's Code
        oSegment.DataElementValue(3) = "APP RECEIVER"     && Application Receiver's Code
        oSegment.DataElementValue(4) = "01010101"     && Date
        oSegment.DataElementValue(5) = "01010101"     && Time
        oSegment.DataElementValue(6) = "1"     && Group Control Number
        oSegment.DataElementValue(7) = "X"     && Responsible Agency Code
        oSegment.DataElementValue(8) = "004010"     && Version / Release / Industry Identifier Code
     
        * CREATES THE ST SEGMENT
        oTransactionset = oGroup.CreateTransactionSet("130")
        oSegment = oTransactionset.GetDataSegmentHeader
        oSegment.DataElementValue(1) = "130"     && Transaction Set Identifier Code
        oSegment.DataElementValue(2) = "0001"     && Transaction Set Control Number
     
        * BGN - BEGINNING SEGMENT
        oSegment = oTransactionset.CreateDataSegment("BGN")
        oSegment.DataElementValue(1) = "00"     && Transaction Set Purpose Code
        oSegment.DataElementValue(2) = "1234567"     && Reference Identification
        oSegment.DataElementValue(3) = "20050503"     && Date
        oSegment.DataElementValue(4) = "103020"     && Time
        oSegment.DataElementValue(5) = "ET"     && Time Code
     
        * ERP - EDUCATIONAL RECORD PURPOSE
        oSegment = oTransactionset.CreateDataSegment("ERP")
        oSegment.DataElementValue(1) = "PS"     && Transaction Type Code
        oSegment.DataElementValue(2) = "INF"     && Status Reason Code
     
        * REF - REFERENCE IDENTIFICATION
        oSegment = oTransactionset.CreateDataSegment("REF")
        oSegment.DataElementValue(1) = "SY"     && Reference Identification Qualifier
        oSegment.DataElementValue(2) = "12345679"     && Reference Identification
     
        * N1 - NAME
        * create N1 segment in N1 loop
        oSegment = oTransactionset.CreateDataSegment("N1\N1")
        oSegment.DataElementValue(1) = "AS"     && Entity Identifier Code
        oSegment.DataElementValue(2) = "UNIVERSITY SENDER"     && Name
     
        * N3 - ADDRESS INFORMATION
        * create N3 segment in N1 loop
        oSegment = oTransactionset.CreateDataSegment("N1\N3")
        oSegment.DataElementValue(1) = "123 SENDER AVENUE"     && Address Information
     
        * N4 - GEOGRAPHIC LOCATION
        * create N4 segment in N1 loop
        oSegment = oTransactionset.CreateDataSegment("N1\N4")
        oSegment.DataElementValue(1) = "LOS ANGELES"     && City Name
     
        * N1 - NAME
        * create N1 segment in the second instance of the N1 loop
        oSegment = oTransactionset.CreateDataSegment("N1(2)\N1") && Having the loop instance counter (2) is not necessary i the syntax when cursor type is set to forwardwrite
        oSegment.DataElementValue(1) = "AT"     && Entity Identifier Code
        oSegment.DataElementValue(2) = "COLLEGE RECEIVER"     && Name
     
        * N3 - ADDRESS INFORMATION
        * create N3 segment in the second instance of the N1 loop
        oSegment = oTransactionset.CreateDataSegment("N1(2)\N3")
        oSegment.DataElementValue(1) = "456 RECEIVER ST"     && Address Information
     
        * N4 - GEOGRAPHIC LOCATION
        * create N4 segment in the second instance of the N1 loop
        oSegment = oTransactionset.CreateDataSegment("N1(2)\N4")
        oSegment.DataElementValue(1) = "NEW YORK"     && City Name
     
        * IN1 - INDIVIDUAL IDENTIFICATION
        oSegment = oTransactionset.CreateDataSegment("IN1\IN1")
        oSegment.DataElementValue(1) = "1"     && Entity Type Qualifier
        oSegment.DataElementValue(2) = "04"     && Name Type Code
     
        * IN2 - INDIVIDUAL NAME STRUCTURE COMPONENTS
        * create first instance of IN2 segment in IN1 loop
        oSegment = oTransactionset.CreateDataSegment("IN1\IN2")
        oSegment.DataElementValue(1) = "05"     && Name Component Qualifier
        oSegment.DataElementValue(2) = "SMITH"     && Name
     
        * IN2 - INDIVIDUAL NAME STRUCTURE COMPONENTS
        * create second instance of IN2 segment in IN1 loop
        oSegment = oTransactionset.CreateDataSegment("IN1\IN2(2)")
        oSegment.DataElementValue(1) = "02"     && Name Component Qualifier
        oSegment.DataElementValue(2) = "MARY"     && Name
     
        * IN2 - INDIVIDUAL NAME STRUCTURE COMPONENTS
        oSegment = oTransactionset.CreateDataSegment("IN1\IN2(3)")
        oSegment.DataElementValue(1) = "15"     && Name Component Qualifier
        oSegment.DataElementValue(2) = "J"     && Name
     
        * SST - STUDENT ACADEMIC STATUS
        oSegment = oTransactionset.CreateDataSegment("SST\SST")
        oSegment.DataElementValue(1) = "B18"     && Status Reason Code
        oSegment.DataElementValue(2) = "D8"     && Date Time Period Format Qualifier
        oSegment.DataElementValue(3) = "19871215"     && Date Time Period
     
        * N1 - NAME
        oSegment = oTransactionset.CreateDataSegment("SST\N1")
        oSegment.DataElementValue(1) = "HS"     && Entity Identifier Code
        oSegment.DataElementValue(2) = "ST MARY'S HIGH SCHOOL"     && Name
     
        * N4 - GEOGRAPHIC LOCATION
        oSegment = oTransactionset.CreateDataSegment("SST\N4")
        oSegment.DataElementValue(1) = "CARSON"     && City Name
        oSegment.DataElementValue(2) = "CA"     && State or Province Code

        for nAtvLoop = 1 to 3  && number of activities
            * ATV - STUDENT ACTIVITIES AND AWARDS
            oSegment = oTransactionset.CreateDataSegment("ATV\ATV")
            oSegment.DataElementValue(3) = "ATHLETE OF THE YEAR 1985"     && Entity Title
         
            * DTP - DATE OR TIME OR PERIOD
            oSegment = oTransactionset.CreateDataSegment("ATV\DTP")
            oSegment.DataElementValue(1) = "103"     && Date/Time Qualifier
            oSegment.DataElementValue(2) = "D8"     && Date Time Period Format Qualifier
            oSegment.DataElementValue(3) = "19871130"     && Date Time Period
        next

        for nTstLoop = 1 to 3  && number of tests
            * TST - TEST SCORE RECORD
            oSegment = oTransactionset.CreateDataSegment("TST\TST")
            oSegment.DataElementValue(1) = "CPE"     && Educational Test or Requirement Code
            oSegment.DataElementValue(2) = "CERTIFIED PRIMARY EDU"     && Name
            oSegment.DataElementValue(3) = "D8"     && Date Time Period Format Qualifier
            oSegment.DataElementValue(4) = "19791128"     && Date Time Period
            oSegment.DataElementValue(7) = "07"     && Level of Individual, Test, or Course Code
         
            * SBT - SUBTEST
            oSegment = oTransactionset.CreateDataSegment("TST\SBT\SBT")
            oSegment.DataElementValue(1) = "TOTAL"     && Subtest Code
         
            * SRE - TEST SCORES
            oSegment = oTransactionset.CreateDataSegment("TST\SBT\SRE")
            oSegment.DataElementValue(1) = "3"     && Test Score Qualifier Code
            oSegment.DataElementValue(2) = "ABA"     && Description
        next
    
        * LX - ASSIGNED NUMBER
        oSegment = oTransactionset.CreateDataSegment("LX\LX")
        oSegment.DataElementValue(1) = "123456"     && Assigned Number
     
        * HS - HEALTH SCREENING
        oSegment = oTransactionset.CreateDataSegment("LX\HS")
        oSegment.DataElementValue(1) = "IDIDID"     && Health Screening Type Code
        oSegment.DataElementValue(2) = "CC"     && Date Time Period Format Qualifier
        oSegment.DataElementValue(3) = "A1B2C3D4E5"     && Date Time Period
        oSegment.DataElementValue(4) = "001"     && Status Reason Code
     
        * IMM - IMMUNIZATION STATUS CODE
        oSegment = oTransactionset.CreateDataSegment("LX\IMM")
        oSegment.DataElementValue(1) = "FLU"     && Immunization Type Code
        oSegment.DataElementValue(2) = "D8"     && Date Time Period Format Qualifier
        oSegment.DataElementValue(3) = "19871128"     && Date Time Period
        oSegment.DataElementValue(4) = "1"     && Immunization Status Code
     
        * IMM - IMMUNIZATION STATUS CODE
        oSegment = oTransactionset.CreateDataSegment("LX\IMM(2)")
        oSegment.DataElementValue(1) = "TETANU"     && Immunization Type Code
        oSegment.DataElementValue(2) = "D8"     && Date Time Period Format Qualifier
        oSegment.DataElementValue(3) = "19700219"     && Date Time Period
        oSegment.DataElementValue(4) = "1"     && Immunization Status Code
     
        * IMM - IMMUNIZATION STATUS CODE
        oSegment = oTransactionset.CreateDataSegment("LX\IMM(3)")
        oSegment.DataElementValue(1) = "MUMPS"     && Immunization Type Code
        oSegment.DataElementValue(2) = "D8"     && Date Time Period Format Qualifier
        oSegment.DataElementValue(3) = "19750504"     && Date Time Period
        oSegment.DataElementValue(4) = "1"     && Immunization Status Code
     
        for nSesLoop = 1 to 2  && numer of sessions
            * SES - ACADEMIC SESSION HEADER
            oSegment = oTransactionset.CreateDataSegment("LX\SES\SES")
            oSegment.DataElementValue(1) = "20010407"     && Date Time Period
            oSegment.DataElementValue(4) = "4"     && Session Code
            oSegment.DataElementValue(5) = "SPRING QUARTER 2001"     && Name
            oSegment.DataElementValue(6) = "D8"     && Date Time Period Format Qualifier
            oSegment.DataElementValue(7) = "20010407"     && Date Time Period
            oSegment.DataElementValue(8) = "D8"     && Date Time Period Format Qualifier
            oSegment.DataElementValue(9) = "20010630"     && Date Time Period
            oSegment.DataElementValue(10) = "21"     && Level of Individual, Test, or Course Code
            oSegment.DataElementValue(14) = "B35"     && Status Reason Code
        
            for nCrsLoop = 1 to 2  && number of courses in a session
                * CRS - COURSE RECORD
                oSegment = oTransactionset.CreateDataSegment("LX\SES\CRS\CRS")
                oSegment.DataElementValue(1) = "R"     && Basis for Academic Credit Code
                oSegment.DataElementValue(2) = "U"     && Academic Credit Type Code
                oSegment.DataElementValue(5) = "GRD"     && Academic Grade Qualifier
                oSegment.DataElementValue(6) = "AB"     && Academic Grade
                oSegment.DataElementValue(8) = "U"     && Academic Grade or Course Level Code
                oSegment.DataElementValue(12) = "12"     && Quantity
                oSegment.DataElementValue(14) = "BEGIN MATH"     && Name
                oSegment.DataElementValue(15) = "MAT101"     && Reference Identification
                oSegment.DataElementValue(16) = "MATH"     && Name
            next
        next
     
        * TRAILING SEGMENTS ARE AUTOMATICALLY CREATED WHEN FREDI COMMITS (SAVES)
        * THE EDI DOCUMENT OBJECT INTO AN EDI FILE.
        oEdiDoc.Save("130Outbound.x12",0)
     
        ? "Done"
    

    Click here to download a trial version of the Framework EDI