10 ! DIRSRT - DIRECTORY FILE SORT 12 ! KATHLEEN ADAM \\ XAVIER U. \\ OCTOBER, 1975 14 ! THIS PROGRAM SORTS THE DIRECTORY FILE OF ANY ACCOUNT. 16 ! TO OBTAIN A FILE OF THE DIRECTORY TO BE SORTED, TYPE 18 ! DIR 'NAME'<(ACCOUNT NUMBER) OR DIR 'NAME'<(ACCOUNT NUMBER)/S 20 ! [DIRSRT MAY EXCEED MAXIMUM MEMORY IF THERE ARE MORE THAN 270 FILES 22 ! IN THE DIRECTORY.] 24 ! [THIS PROGRAM IS ACCESSED BY CATUPD AND IS, THEREFORE, PART OF 26 ! THE INDEX PROGRAM PACKAGE.] 28 ! MODIFIED BY K. ADAM - JUNE, 1978 - TO RUN ON VER 6B AND VER 6C 30 ! (SORT ALSO MODIFIED) 32 ! 150 DIM B%(30%), A$(1000%) 1000 ON ERROR GOTO 6000 1010 INPUT"NAME OF DIRECTORY FILE TO BE SORTED (INCL.EXT)";D$ 1020 IF INSTR(1%,D$,".")=0% THEN D$=D$+".DIR" 1030 OPEN D$ FOR INPUT AS FILE 1% 1040 ! CREATION OF UNIQUE FILE NAME FOR TEMPORARY FILE 1050 MAT B%=ZER\ B$=SYS(CHR$(6%)+CHR$(9%)+CHR$(0%))\CHANGE B$ TO B%\ J$=CVT$$(RIGHT(NUM$(100%+B%(1%)/2%),3%),2%) 1060 J$="SRT"+J$+".S"+J$ 1070 OPEN J$ FOR OUTPUT AS FILE 2% 1080 ! READ DIRECTORY FILE 1090 INPUT LINE #1%, X$ \ C%=INSTR(1%,X$,"SY:") \ IF C%<>0% THEN 1135 1100 INPUT LINE #1%, A$(1%) \ C1%=INSTR(1%,A$(1%),"SY:") \ IF C1%<>1% THEN X1$=MID (A$(1%),C1%,12%) ELSE 1130 1110 A$(1%)=LEFT (A$(1%), C1%-1%) 1120 I%=2% \ GOTO 1140 1130 X1$=A$(1%) 1135 I%=1% 1140 INPUT LINE #1%, A$(I%) 1150 IF LEFT (A$(I%),8%)="Total of" THEN 1190 1160 IF INSTR(1%,A$(I%),".")=0% THEN A$(I%-1%)=A$(I%-1%)+A$(I%) \ I%=I%-1% 1170 I%=I%+1% 1180 GOTO 1140 1190 X2$=A$(I%) 1200 S%=I%-2% 1210 ! SUPER SORT 1220 S1%=S% 1230 S1%=S1%/2% \ IF S1%=0% THEN 1300 1240 K%=S%-S1% 1250 J%=1% 1260 I%=J% 1270 L%=I%+S1% \ IF A$(I%)<=A$(L%) THEN 1290 ELSE T$=A$(I%) \ A$(I%)=A$(L%) \ A$(L%)=T$ 1280 I%=I%-S1% \ IF I%>=1% THEN 1270 1290 J%=J%+1% \ IF J%>K% THEN 1230 ELSE 1260 1300 ! PRINT SORTED DIRECTORY TO OUTPUT FILE 1310 PRINT #2%, CVT$$(X$,4%) 1320 IF C%<>0% THEN D%=1% \ GOTO 1350 1330 IF C1%=1% THEN PRINT #2%, CVT$$(X1$,4%) \ D%=1% \ GOTO 1350 1340 PRINT #2%, CVT$$(A$(1%),4%); SPACE$(1%); CVT$$(X1$,4%) \ D%=2% 1350 FOR I%=D% TO S% 1360 PRINT #2%, A$(I%); 1370 NEXT I% 1380 PRINT #2%,CHR$(13%) 1390 PRINT #2%,X2$ 1400 CLOSE 1%,2% 1410 ! FINISH-UP 1420 KILL D$ 1430 NAME J$ AS D$ 1440 IF A1$="%%%%%%%" GOTO 31040 1450 PRINT "WOULD YOU LIKE THE SORTED FILE SENT TO THE PRINTER AND THEN" \INPUT "DELETED"; Z9$ 1460 IF LEFT (Z9$,1%)="Y" THEN 1470 ELSE 32767 1470 PRINT " MAKE SURE THE PRINTER IS TURNED ON. (BOTH THE ON/OFF 1480 PRINT "AND SELECT BUTTONS!!!!) 1490 F$=SYS (CHR$(8%)+"$QUE"+CHR$(13%)+CVT%$(32767%)+"Q"+"/SK="+D$+"/DE"+"/NH"+CHR$(13%)) 1500 CHAIN "$QUE" 31000 6000 ! ERROR ROUTINE 6010 CLOSE 1%,2% \ ON ERROR GOTO 0 31000 ! ENTRY FROM CATUPD 31010 A1$="%%%%%%%" 31020 D$=SYS(CHR$(7%)) ! DECODE CORE COMMON 31030 GOTO 1040 31040 J1$=SYS(CHR$(8%)+D$) ! CODE CORE COMMON 31050 CHAIN "(10,0)CATUPD" 31000 32767 END