To write functions returning more than one value you can use the following technique.
/* simple program to show a technique using a function which returns */ /* more than one value */ /* */ /* This example uses a variable character for the separator in the */ /* returned value. */ /* */ say "Values returned by the function MyFunc:" parse value myFunc() with separator 2 rc1 (separator) rc2 (separator) rc3 if separator <= "A" then say " The separator for the return codes is: ASCII(" || , C2D( separator ) || ")" else say " The separator for the return codes is: " || , separator say " rc1 = """ || rc1 || """" say " rc2 = """ || rc2 || """" say " rc3 = """ || rc3 || """" exit 0 /* simple function - does nothing than returning three values */ myFunc: PROCEDURE separator = "00"x /* character to separate the values in the */ /* returned string */ /* Note that this can be any value from "00"x */ /* to "FF"x not used in one of the return */ /* codes. The calling procedure need not */ /* know the value before calling this */ /* function! */ /* sample return codes */ rc1 = 4 rc2 = "TestRC" rc3 = 0 RETURN separator || rc1 || separator || rc2 || separator || rc3