Navigation: Language Reference > 13 - Built-in Functions >====== SORT (sort queue entries) ====== | |
SORT( queue, | [+]key,…,[-]key] | ) | ||
name | ||||
function |
SORT | Reorders entries in a QUEUE. |
queue | The label of a QUEUE structure, or the label of a passed QUEUE parameter. |
+ - | The leading plus or minus sign specifies the key will be sorted in ascending or descending sequence. |
key | The label of a field declared within the QUEUE structure. If the QUEUE has a PRE attribute, the key must include the prefix. This may not be a reference variable. |
name | A string constant, variable, or expression containing the NAME attribute of QUEUE fields, separated by commas, and optional leading + or - signs for each attribute. This parameter is case sensitive and may not contain any reference variables. |
function | The label of the function containing two parameters of a *GROUP or named GROUP passed by address, and having a SIGNED return value. Both parameters must use the same parameter type, and cannot be omitted. The RAW, C and PASCAL attributes are not permitted in the prototype declaration. See Additional Queue Considerations. |
SORT reorders the entries in a QUEUE. QUEUE entries with identical key values maintain their relative position.
SORT(queue,key) | Reorders the QUEUE in the sequence specified by the key. Multiple key parameters may be used (up to 16), separated by commas, with optional leading plus or minus signs to indicate ascending or descending sequence. |
SORT(queue,name) | Reorders the QUEUE in the sequence specified by the name string. The name string must contain the NAME attributes of the fields, separated by commas, with leading plus or minus signs to indicate ascending or descending sequence. |
Errors Posted:
08 | Insufficient Memory |
75 | Invalid Field Type Descriptor |
Example:
Location QUEUE,PRE(Loc)
Name STRING(20),NAME('FirstField')
City STRING(10),NAME('SecondField')
State STRING(2)
Zip DECIMAL(5,0)
END
CODE
SORT(Location,Loc:State,Loc:City,Loc:Zip) !Sort by zip in city in state
SORT(Location,+Loc:State,-Loc:Zip) !Sort descending by zip in state
SORT(Location,'FirstField,-SecondField') !Sort descending by city in name
!Example of using SORT with a FUNCTION as a parameter PROGRAM MAP CaseInsensitive(*GROUP A, *GROUP B),SIGNED end Q QUEUE Val STRING(5) END Window WINDOW('Test Sort'),AT(,,116,224),FONT('MS SansSerif',8,,FONT:regular),IMM,SYSTEM,GRAY,AUTO BUTTON('Sort Case Sensitive'),AT(8,3,95,14),USE(?SortCase),LEFT,DEFAULT BUTTON('Sort Case INSensitive'),AT(8,20,95,14),USE(?SortNoCase),LEFT LIST,AT(6,37,101,179),USE(?List1),FORMAT('7L(2)|M~Val~@s5@'),FROM(Q) END CODE Q.Val = 'aaaaa'; Add(Q) Q.Val = 'AAAAA'; Add(Q) Q.Val = 'ddddd'; Add(Q) Q.Val = 'DDDDD'; Add(Q) Q.Val = 'EEEEE'; Add(Q) Q.Val = 'eeeee'; Add(Q) Q.Val = 'qqqqq'; Add(Q) Q.Val = 'QQQQQ'; Add(Q) Q.Val = 'zzzzz'; Add(Q) Q.Val = 'ZZZZZ'; Add(Q) Q.Val = 'ggggg'; Add(Q) Q.Val = 'GGGGG'; Add(Q) OPEN(Window) ACCEPT CASE ACCEPTED() OF ?SortCase ; SORT(Q, Q.Val) OF ?SortNoCase ; SORT(Q, CaseInsensitive) END END CaseInsensitive PROCEDURE(*GROUP A, *GROUP B)!,SIGNED CODE IF UPPER(A) = UPPER(B) RETURN 0 ELSIF UPPER(A) > UPPER(B) RETURN 1 ELSE RETURN -1 END See Also:**