* 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