90 DATA Williams,"The Green Tree",1990,Phillips,"Concord & Computers",1989,Davidson,"How To Become Very Rich",1992,Phillips,"Concord & Computers II",1991
100 DATA Phillips,"Building Your Own Plane",1991,Peters,"Insects And You",2000,Williams,"Grass",1992,Smith,"The Green Tree",1988
110 REM **** Variable Initialization
120 PRINT CHR$(4)"PR#3"
130 NB = 7:MAXFIELDS = 3: DIM I%(NB,MAXFIELDS),BOOK$(NB,MAXFIELDS)
140 REM **** Reading the data
150 FOR I = 1 TO NB: READ BOOK$(I,1),BOOK$(I,2),BOOK$(I,3): NEXT
160 GOTO 330: REM Start of program
170 REM **** Display subroutine
180 FOR I = 1 TO NB
190 BOOK = I%(I,IN)
200 FOR J = 1 TO MAXFIELDS: PRINT BOOK$(BOOK,J); TAB( J *25);: NEXT : PRINT : NEXT
210 PRINT : RETURN
220 REM **** Insertion Sort. Initialize and sort indexes:
230 FOR IN = 1 TO MAXFIELDS: FOR I = 1 TO NB:I%(I,IN) = I: NEXT : FOR I = 1 TO 5:S1 = INT( RND(1) *NB +1):S2 = INT( RND(1) *NB +1):TMP = I%(S1,IN):I%(S1,IN) = I%(S2,IN):I%(S2,IN) = TMP: NEXT : NEXT : RETURN
240 REM **** Sorting Routine
250 FOR MOVE = 2 TO NB:T% = I%(MOVE,IN)
260 FOR UP = MOVE -1 TO 1 STEP -1
270 IF BOOK$(T%,FIELD) > = BOOK$(I%(UP,IN),FIELD) THEN 300
280 I%(UP +1,IN) = I%(UP,IN)
290 NEXT UP
300 I%(UP +1,IN) = T%
310 NEXT MOVE: RETURN
320 REM **** Program Start
330 GOSUB 230: REM Initialize indexes (only need to do once)
340 TEXT : HOME : PRINT "FIELD.SORT, By James T. Parr. Copyright (c) 1990": PRINT "MindCraft Publ. Corp.": PRINT : POKE 34,3:IN = 1:FIELD = 1: GOSUB 180
350 PRINT "Sort by which field (1-3, Esc to quit, Press Return to scramble): ";
360 GET CH$: PRINT CH$;: IF CH$ = CHR$(27) THEN TEXT : HOME : END
370 IF CH$ = CHR$(13) THEN GOTO 330
380 FIELD = VAL(CH$): IF FIELD <1 OR FIELD >MAXFIELDS THEN PRINT CHR$(8);: GOTO 360