Example of Sorted Fixed Fields or Records

The following example shows the use of the extractSort method to sort fixed-length fields or records.

fileTest();
vars
    sa         : SortActorArray;
    sortActor1 : SortActor;
    sortActor2 : SortActor;
    inputFile  : File;
    outputFile : File;
begin
    create sa transient;
    create sortActor1 transient;
    create sortActor2 transient;
    create inputFile transient;
    create outputFile transient;
    inputFile.recordSize     := 84;            // Fixed-length records
    inputFile.endOfField     := "";            // No field terminator
                                               // The first actor
    sortActor1.sortType := SortActor.SortType_String; // Invoke alphanumeric
    sortActor1.length        := 8;             // sort of length 8
    sortActor1.startPosition := 10;            // Start at position 10
    sortActor1.fieldNo       := 1;             // First field
    sortActor1.ascending     := true;          // Ascending sort order
    sortActor1.random        := false;         // Not random order
                                               // The second actor
    sortActor2.sortType := SortActor.SortType_String; // Invoke alphanumeric
    sortActor2.length        := 8;             // sort of length 8
    sortActor2.startPosition := 1;             // Start at position 1
    sortActor2.fieldNo       := 2;             // Second field
    sortActor2.ascending     := false;         // Descending sort order
    sa.add(sortActor1);
    sa.add(sortActor2);
    inputFile.fileName       := "c:\test\temp.sor";
    outputFile.fileName      := "c:\test\temp.std";
    outputFile.allowReplace  := true;    // Replace output file if necessary
    inputFile.extractSort(sa, outputFile);     // Sort the file now
epilog
    delete inputFile;
    delete outputFile;
    delete sa;
    delete sortActor1;
    delete sortActor2;
end;