FUNCTION pairedBubbleSort RETURNS CHARACTER
(INPUT pcArray AS CHARACTER):
DEFINE VARIABLE cTempArray AS CHARACTER NO-UNDO EXTENT 2.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE j AS INTEGER NO-UNDO.
DEFINE VARIABLE iEntries AS INTEGER NO-UNDO.
pcArray = TRIM(pcArray).
pcArray = REPLACE(pcArray,CHR(32),CHR(0)).
iEntries = NUM-ENTRIES(pcArray).
IF iEntries MOD 2 <> 0 THEN
RETURN pcArray.
DO i = iEntries TO 1 BY -2:
DO j = 1 TO i - 2 BY 2:
IF ENTRY(j + 1, pcArray) > ENTRY(j + 3, pcArray) THEN
DO:
cTempArray[1] = ENTRY(j, pcArray).
cTempArray[2] = ENTRY(j + 1, pcArray).
ENTRY(j , pcArray) = ENTRY(j + 2, pcArray).
ENTRY(j + 1, pcArray) = ENTRY(j + 3, pcArray).
ENTRY(j + 2, pcArray) = cTempArray[1].
ENTRY(j + 3, pcArray) = cTempArray[2].
END.
END.
END.
RETURN pcArray.
END FUNCTION.