Using SORT in ALGOL

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