Attribute VB_Name = "ModFileManagement" Option Explicit Public Sub LoadFile() Call Unload(FrmBBAnalysis) Dim N As Long Dim HeaderLocation2D(1, 1) Dim HeaderRoad(1, 1) LocationFileFullName = FileFullName If FileType = "location" Then Dim initialXYarray(2000, 3) 'Open location file and populate initialXYarray with location coordinates 'and a continuous (no breaks) time for each location Open LocationFileFullName For Input As #1 N = 0 Do While Not EOF(1) If N = 0 Then ' for header row Input #1, HeaderLocation2D(0, 0) 'Input #1, headerlocation2d(0, 1) N = N + 1 Else Input #1, initialXYarray(N - 1, 0) Input #1, initialXYarray(N - 1, 1) Input #1, initialXYarray(N - 1, 2) N = N + 1 End If Loop Close N = N - 1 ReDim XYArray(N, 3) As Double 'LocationFileFullName = FileFullName Dim row As Integer For row = 0 To N - 1 XYArray(row, 0) = (initialXYarray(row, 0)) XYArray(row, 1) = (initialXYarray(row, 1)) XYArray(row, 2) = (initialXYarray(row, 2)) Next row NumOfLocs = N Call SortXYArray MsgBox "Number of locations = " & N Call Unload(FrmOpenFileBB) FrmBBAnalysis.Show Else If FileType = "Road" Then RoadFileFullName = FileFullName Dim InitialRoadArray(20000, 2) As Single Open RoadFileFullName For Input As #2 N = 0 Do While Not EOF(2) If N = 0 Then ' for header row Input #2, HeaderRoad(0, 0) N = N + 1 Else Input #2, InitialRoadArray(N - 1, 0) Input #2, InitialRoadArray(N - 1, 1) N = N + 1 End If Loop Close N = N - 1 ReDim RoadArray(N, 2) As Single 'LocationFileFullName = FileFullName For row = 0 To N - 1 RoadArray(row, 0) = (InitialRoadArray(row, 0)) RoadArray(row, 1) = (InitialRoadArray(row, 1)) Next row NumOfRoadVerts = N MsgBox "Road file loaded" Call Unload(FrmOpenFileBB) FrmBBAnalysis.Show End If End If End Sub Public Sub SortXYArray() Dim N As Long Dim L As Long Dim IR As Long Dim RRA As Double Dim RRB As Double Dim RRC As Double Dim I As Long Dim j As Long Dim WorkArray() As Double ReDim WorkArray(NumOfLocs + 1, 3) As Double For N = 1 To NumOfLocs WorkArray(N, 0) = XYArray(N - 1, 0) WorkArray(N, 1) = XYArray(N - 1, 1) WorkArray(N, 2) = XYArray(N - 1, 2) Next N = NumOfLocs L = Int(N / 2) + 1 IR = N Do If L > 1 Then L = L - 1 RRA = WorkArray(L, 2) RRB = WorkArray(L, 0) RRC = WorkArray(L, 1) Else RRA = WorkArray(IR, 2) RRB = WorkArray(IR, 0) RRC = WorkArray(IR, 1) WorkArray(IR, 2) = WorkArray(1, 2) WorkArray(IR, 1) = WorkArray(1, 1) WorkArray(IR, 0) = WorkArray(1, 0) IR = IR - 1 If IR = 0 Then WorkArray(1, 2) = RRA WorkArray(1, 0) = RRB WorkArray(1, 1) = RRC ReDim SortedXYArray(NumOfLocs, 3) As Double For N = 0 To NumOfLocs - 1 SortedXYArray(N, 2) = WorkArray(N + 1, 2) SortedXYArray(N, 1) = WorkArray(N + 1, 1) SortedXYArray(N, 0) = WorkArray(N + 1, 0) Next 'MsgBox "done" Exit Sub End If End If I = L j = L + L While j <= IR If j < IR Then If WorkArray(j, 2) < WorkArray(j + 1, 2) Then j = j + 1 If RRA < WorkArray(j, 2) Then WorkArray(I, 2) = WorkArray(j, 2) WorkArray(I, 1) = WorkArray(j, 1) WorkArray(I, 0) = WorkArray(j, 0) I = j j = j + j Else j = IR + 1 End If Wend WorkArray(I, 2) = RRA WorkArray(I, 0) = RRB WorkArray(I, 1) = RRC Loop End Sub