10 ! ERIC JOHNSON'S PROGRAM TO SORT A LIST OF ITEMS
12 ? TAB(-1,0) : ? TAB(10,10);
15 STRSIZ 65
17 INPUT LINE "WOULD YOU LIKE THE INSTRUCTIONS? ", A$
18 IF UCS(A$[1,1]) = "Y" THEN GOSUB INSTRUCTIONS:
19
20
30 MENU:
40 ? TAB(-1,0)
50 ? TAB(10);"WOULD YOU LIKE TO:"
60 ? TAB(13);"1. ENTER A LIST OF ITEMS"
70 ? TAB(13);"2. READ THE SORTED LIST"
80 ? TAB(13);"3. PRINT OUT THE LIST ON THE PRINTER"
90 ? TAB(13);"4. QUIT"
100 ? TAB(20,10);
110 INPUT "ENTER YOUR CHOICE: ",A
120 ON A GOTO ENTER, READ, PRINT, QUIT
130 ? "PLEASE ENTER A NUMBER BETWEEN 1 AND 4. WHEN YOU THINK YOU"
140 INPUT LINE "KNOW WHAT THAT MEANS, HIT RETURN. ", A$
150 GOTO MENU
160
200 ENTER:
205 ? TAB(-1,0)
210 INPUT "WHAT IS THE NAME OF THE FILE YOU WANT THIS LIST ON? ", FILE$
220 IF LEN(FILE$) > 6 THEN GOTO BAD'START
230 LOOKUP FILE$, X
235 A$ = ""
240 IF X > 0 THEN INPUT "THAT FILE ALREADY EXISTS, DO YOU WANT TO KILL IT? "A$
250 IF A$[1,1] = "Y" THEN GOTO OPEN'FILE
260 IF X < 0 THEN ? "SORRY, THAT NAME IS ALREADY TAKEN FOR ANOTHER FILE"
270 IF X < 0 THEN INPUT LINE "HIT RETURN TO CONTINUE ", A$
280 IF X < 0 THEN GOTO ENTER
290 GOTO OPEN'FILE
295
300 BAD'START:
310 ? "SIX LETTERS OR LESS, PLEASE "
320 INPUT LINE "HIT RETURN TO CONTINUE ", A$
330 GOTO ENTER
340
350 OPEN'FILE:
360 OPEN #1, FILE$, OUTPUT
365 USED'ENTER=1
370
380 SET'LENGTH:
390 ? TAB(-1,0)
400 ? TAB(5,1); "YOU MAY ENTER UP TO 78 LETTERS ON A LINE. WHAT IS THE"
410 INPUT "LONGEST LINE YOU WILL WANT TO ENTER? ", LENGTH
420 IF LENGTH > 78 THEN ? "I'LL SAY IT ONCE MORE, THIS TIME IN ENGLISH"
425 IF LENGTH <= 78 THEN GOTO ENTER'INFO
430 FOR N = 1 TO 2000 : NEXT N
440 GOTO SET'LENGTH
450
460 ENTER'INFO:
470 ? TAB(-1,0)
480 ? TAB(10,1); "YOU MAY NOW ENTER YOUR LIST, ONE LINE AT A TIME."
490 ? "WHEN YOU ARE DONE, ENTER 'ZZZZ' AS THE LAST LINE"
500
510 INFO'LOOP:
520 INPUT LINE ">",INFO$
530 IF LEN(INFO$) > LENGTH THEN ? SPACE(50);"TOO LONG!";
532 IF LEN(INFO$) > LENGTH THEN FOR N = 1 TO 1000 : NEXT N
535 IF LEN(INFO$) > LENGTH THEN ? TAB(0);SPACE(50);"TOO LONG!"
540 PRINT #1, INFO$
550 IF UCS(INFO$) = "ZZZZ" THEN GOTO END'LOOP
560 GOTO INFO'LOOP
570
580 END'LOOP:
590 CLOSE #1
600
610 SORT:
620 OPEN #1,FILE$,INPUT
630 OPEN #2, FILE$+".SRT", OUTPUT
640 XCALL BASORT,1,2,LENGTH,LENGTH,1,0,0,0,0,0,0,0
650 CLOSE #1
660 CLOSE #2
670 ?"PROGRM ENTERED......."
675 FOR V=1 TO 2000 : NEXT V
680 GOTO MENU
690
1000 READ:
1010 IF USED'ENTER<>1 THEN GOTO ENTER'NAME
1020 ?"DO YOU WANT TO READ ";FILE$;"?"
1030 INPUT READIT$
1040 IF READIT$[1,1]="Y" THEN GOTO READING
1090 ENTER'NAME:
1100 INPUT "WHICH FILE DO YOU WANT TO READ?",FILE$
1110 LOOKUP FILE$,X
1120 IF X > 0 THEN GOTO READING
1130 ? "THAT FILE DOESN'T EXIST " : GOTO ENTER'NAME
1140 READING:
1150 OPEN #2, FILE$+".SRT", INPUT
1160 LOOP:
1170 INPUT LINE #2,INFO$
1180 ?INFO$
1190 IF INFO$ = "ZZZZ" THEN GOTO END'READ
1200 GOTO LOOP
1210 END'READ:
1220 CLOSE #2
1225 ? : ? "END OF FILE"
1230 INPUT LINE "HIT RETURN WHEN READY......", A$
1240 GOTO MENU
2000 PRINT:
2010 IF USED'ENTER<>1 THEN GOTO FILE'NAME
2020 ?"DO YOU WANT TO PRINT ";FILE$;"?"
2030 INPUT PRINTIT$
2040 IF PRINTIT$[1,1] = "Y" THEN GOTO PRINTING
2090 FILE'NAME:
2100 INPUT "WHAT FILE DO YOU WANT TO PRINT? ", FILE$
2110 LOOKUP FILE$, X
2120 IF X > 0 THEN GOTO PRINTING
2130 ?"THAT FILE DOESN'T EXSIST" : GOTO FILE'NAME
2140 PRINTING:
2150 XCALL SPOOL, FILE$+".SRT"
2250 GOTO MENU
3000 QUIT:
5000 ! IT'S DONE!!!!!!
5020 END
5030
6000 INSTRUCTIONS:
6010 ? TAB(-1,0);
6020 ? "This program allows you to enter a list of items (each item"
6030 ? "may be up to one line long). It then alphabetizes the list"
6040 ? "and allows you to look at that list on the screen or print"
6050 ? "out the list. Be sure to enter 'ZZZZ' as the last item so"
6060 ? "that the program will know where to stop."
6070 ? TAB(20,10); : INPUT "hit RETURN to continue >",a$
6100 RETURN