In ALGOL, the SORT intrinsic is invoked by the SORT statement. The input option procedure or file, output option procedure or file, number of tapes, compare procedure, and record length are required parameters in the ALGOL syntax. The sort keys and sorting criteria are determined solely by the compare procedure.
Memory size and disk or pack size are optional parameters. If restart specifications are used, they appear outside the parameter list, in brackets. For a complete description of the ALGOL SORT statement syntax, refer to the ALGOL Programming Reference Manual, Volume 1: Basic Implementation.
ALGOL SORT Example
BEGIN COMMENT THIS IS AN EXAMPLE OF A SIMPLE, ASCENDING SORT. THE PROGRAM SORTS A FILE WITH NAMES IN THE FIRST 12 COLUMNS AND WRITES THE SORTED FILE TO A PRINTER FILE. IF COLUMN 13 CONTAINS AN ASTERISK ("*"), THE RECORD IS DISCARDED AND IS NOT SORTED. THIS PROGRAM USES A PROCEDURE AS THE INPUT OPTION AND A FILE AS THE OUTPUT OPTION. (FOR SIMPLICITY, ANY EXCEPTION OCCURRING ON THE INPUT FILE IS ASSUMED TO BE END-OF-FILE.); FILE INFILE(KIND=DISK,DEPENDENTSPECS), OUTFILE(KIND=PRINTER, MAXRECSIZE=72); DEFINE SKIPCODE = "*"#, SKIPFIELD = POINTER(R[2],8)#; BOOLEAN PROCEDURE INPROC(R); ARRAY R[0]; BEGIN BOOLEAN RESULT; DO RESULT:= READ(INFILE,12,R[*]) UNTIL RESULT OR SKIPFIELD NEQ SKIPCODE; INPROC:= RESULT; END INPROC; BOOLEAN PROCEDURE COMPARE(R1,R2); ARRAY R1, R2 [0]; BEGIN COMPARE:= POINTER(R1,8) LSS POINTER(R2,8) FOR 12; END COMPARE; SORT(OUTFILE,INPROC,0,COMPARE,12); END.
ALGOL Example Files
Input File to be Sorted
GLENN JACK EARL ROLLIE STEVE DAVE JOEL HARRY HANSEL * SHERRY RICHARD DICK BILL GRETEL * DON JIM CAROLYN
Sorted Output File
BILL CAROLYN DAVE DICK DON EARL GLENN HARRY JACK JIM JOEL RICHARD ROLLIE SHERRY STEVE