5 IFFL=0THENFL=1:LOAD"DP] SSORT",8,1 6 IFFL=1THENFL=2:LOAD"DP] DOS5.1",8,1 7 IFFL=2THENFL=3::SYS52224 8 REM SSORT BY DAVID PETERSON, DOS5.1 (C) BY COMMODORE 10 REM DATAFILE 3.6 (C)1986 BY MIKE KONSHAK 12 POKE53280,0:POKE53281,0:PRINT"[158]":GOSUB16:GOSUB600:GOTO68 16 D$="":MR$=D$:DR$=D$:S=0:B1$=D$:PW=0:CW=0:B$=CHR$(32):FL=0:L$="":E=0 18 NC=0:NL=0:PG=0:F1=0:F2=0:F3=0:L$=D$:RL=0:SB$=D$:CR$=CHR$(13):HN$=D$:ID$=D$ 20 A$=D$:C$=D$:T%=0:I$=D$:CK=0:I=0:J=0:K=0:L=0:M=0:N=0:RW=5:SF=0:Z=0:E$="EOF" 22 EN=0:EM$=D$:ET=0:ES=0:A1$=D$:A2$=D$:A3$=D$:S1$=D$:TS%=0:MEM=29500:RETURN 24 DIM F$(F+1),L%(F+1):RETURN 26 DIM REC$(R+1,F+1),K%(R+1),S(6):RETURN 28 : 30 GETA$:IFA$=""THEN30 32 RETURN 34 : 36 IFCK<>0THENGOSUB394:IFA$<>"N"THEN68 37 CLR:GOTO40 38 PRINT"[147]  INITIALIZE (CREATE) A RECORD FILE ":RETURN 40 GOSUB38:GOSUB16:INPUT"HOW MANY FIELDS IN EACH RECORD[158]? 0 [157][157][157][157]";F 41 IFF=0THEN68 42 GOSUB24 43 FORI=1TOF 44 GOSUB38:PRINT"[153]FIELD #";I:PRINT"[153]TITLE[158] ? >[145]":PRINTTAB(8)F$(I) 46 PRINT"[153]LENGTH[158]? 0[145]":PRINTTAB(7)L%(I)"" 47 PRINT"";TAB(6);:INPUTF$(I):IFF$(I)=""THENF$(I)=">" 48 PRINTTAB(6);:INPUTL$:IFL$="0"THEN68 49 IFVAL(L$)>(78-LEN(F$(I)))ORVAL(L$)=0THENGOSUB602:PRINT"[145][145]":GOTO48 50 L%(I)=VAL(L$):NEXTI:RL=0 51 : 52 FORJ=0TOF:RL=RL+L%(J):NEXTJ:RL=RL+3*(F+1)+5:R=INT((MEM-12*(F+1)-2100)/RL) 54 PRINT"[153] YOUR SELECTIONS ALLOW [158]"R"[153]RECORDS." 56 PRINT" A[146][153]CCEPT C[146][153]HANGE FIELD DATA OR R[153][146]EJECT?[158]" 57 GOSUB30:IFA$="R"THEN37 58 IFA$="C"THEN43 59 IFA$="A"THENGOSUB26:CK=1:GOTO61 60 GOSUB602:GOTO57 61 FORI=1TOF:IFLEN(F$(I))>S1THENS1=LEN(F$(I)) 62 NEXTI:GOTO68 64 : 68 PRINT"[147][158]  DATAFILE 3.6 (C)1986 BY MIKE KONSHAK " 70 PRINTTAB(3)"C[153][146]REATE NEW FILE Q[153][146]UIT PROGRAM 72 [153][163]3)"APRINTWAITDD RECORD TO CURRENT FILE 74 PRINTTAB(3)"M[153][146]ODIFY RECORD IN CURRENT FILE 76 [153][163]3)"DPRINTWAITELETE RECORD IN CURRENT FILE 78 PRINTTAB(3)"V[153][146]IEW OR EDIT FILE [158]"NF$"[146][153] 80 [153][163]3)"SPRINTWAITORT RECORDS BY FIELD 82 PRINTTAB(3)"P[153][146]RINT RECORDS USING [158]DFPRINT[153]/[158]DFCALC 84 [153][163]3)"RPRINTWAITEAD (LOAD) OLD FILE FROM DISK 86 PRINTTAB(3)"W[153][146]RITE (SAVE) CURRENT FILE TO DISK 88 [153][163]3)"@PRINTWAIT DISK DRIVE COMMANDS $WAIT 4WAITPRINT DIRECTORY" 90 [153]"SYS  PRESS THE APPROPRIATE KEY " 92 [153]"PRINT THERE ARESYS";X;"PRINTRECORDS IN MEMORYSYS" 94 [139]R[177]0[167][153]"PRINT SPACE FORSYS";R[171]X;"PRINTMORE RECORDSONSYS" 96 [141]30:[139]A$[178]"A"[167][141]350:[139]FL[178]0[167]124 98 [139]A$[178]"M"[167][141]354:[139]FL[178]0[167]244 100 [139]A$[178]"D"[167][141]354:[139]FL[178]0[167]272 102 [139]A$[178]"C"[167]36 104 [139]A$[178]"R"[167]170 106 [139]A$[178]"P"[167]358 108 [139]A$[178]"V"[167][141]354:[139]FL[178]0[167]192 110 [139]A$[178]"W"[167][141]350:[139]FL[178]0[167]144 112 [139]A$[178]"S"[167][141]354:[139]FL[178]0[167]304 114 [139]A$[178]"Q"[167]342 116 [139]A$[178]"@"[167]462 117 [139]A$[178]"$"[176]A$[178]"4"[167][141]422:[137]68 118 [139]FL[179][177]0[167]FL[178]0:[137]68 120 [141]602:[137]96 122 : 124 [129]I[178]X[170]1[164]R:[153]"LOADPRINT PRESS THE RETURNWAITPRINT KEY AFTER EACH ENTRY" 126 [153]" PRESS RETURNPRINTWAIT WITHOUT ANY ENTRY TO STOPSYS" 128 [153]" RECORD NUMBER ";I;"" 130 [129]N[178]1[164]F 132 [153]F$(N)[166]S1[171][195](F$(N)))" >CMDCMDCMD";:[133]REC$(I,N) 133 [139]REC$(I,N)[178]""[167]REC$(I,N)[178]">" 134 [139][195](REC$(I,N))[177]L%(N)[167][141]140:[137]132 135 [139]REC$(I,N)[178]"="[167]REC$(I,N)[178]REC$(I[171]1,N) 136 [139]REC$(I,1)[178]">"[167] X[178]I[171]1:CK[178]1:[137]68 138 [130]N:K%(I)[178]I:[130]I:X[178]R:CK[178]1:[137]68 140 [153]" DEFCANNOT EXCEED"[196](L%(N))" CHARACTERSWAITSYS":[141]602:[142] 142 : 144 [153]"LOADPRINTENTER NAME OF CURRENT FILE TO BE SAVED" 146 [153]"(12 CHARACTERS MAX). ANY EXISTING FILE" 148 [153]"WITH THE SAME NAME WILL BE SCRATCHED.SYS" 150 [153]" ";NF$:[133]"ON";NF$:[139]NF$[178]""[167]68 152 [159]15,8,15:[152]15,"S0:DF] "[170][200](NF$,8)[170]".BAK":[141]414:[139]ET[178]8[167]68 154 [152]15,"R0:DF] "[170][200](NF$,8)[170]".BAK=DF] "[170]NF$:[141]414:[139]ET[178]8[167]68 156 [159]5,8,5,"0:DF] "[170]NF$[170]",S,W":[141]414:[139]ET[178]8[167]68 158 [152]5,R;CR$;F;CR$;X:[129]N[178]1[164]F:[152]5,F$(N);CR$;L%(N):[130]N 159 [141]414:[139]ET[178]8[167]68 160 [129]I[178]1[164]X:[153]"PRINT SAVING RECORD #SYS"I"ONON" 162 [129]N[178]1[164]F:[152]5,REC$(K%(I),N):[130]N:[130]I:[153]:[141]414:[139]ET[178]8[167]68 166 [160]5:[160]15:CK[178]0:[137]68 168 : 170 [139]CK[179][177]0[167][141]394:[139]A$[179][177]"N"[167]68 171 [153]"LOADPRINT AVAILABLE FILES ON DISK ARE:SYS":@"$0:DF]*" 172 [156]:[141]16:[153]"PRINT ENTER NAME OF FILE TO BE LOADEDSYS":[133]NF$ 173 [139]NF$[178]""[167]68 174 [159]15,8,15:[159]5,8,5,"0:DF] "[170]NF$[170]",S,R":[141]414:[139]ET[178]8[167]68 175 [139]EN[178]62[167][141]416:[137]68 176 [132]5,R,F,X:[141]414:[139]ET[178]8[167]68 177 [141]24:[141]26:[129]N[178]1[164]F:[132]5,F$(N),L$:L%(N)[178][197](L$) 178 [130]N:[141]414:[139]ET[178]8[167]68 179 [129]I[178]1[164]X:K%(I)[178]I:[153]"PRINTLOADING RECORD #SYS"I"ONON" 180 [129]N[178]1[164]F:[132]5,REC$(I,N):[130]N 182 [130]I:[153]:[141]414:[139]ET[178]8[167]68 184 S[178]ST:[139]S[179][177]0[167]188 188 [160]5:[160]15:[137]61 190 : 192 I[178]1 194 [139]I[178]0[167]I[178]X 196 [139]I[177]X[167]I[178]1 198 [153]"LOAD RECORD NUMBER:"[196](I)" FILE:"NF$"" 200 [129]N[178]1[164]F:[153]"PRINT"F$(N)[166]S1[171][195](F$(N)))" SYS"REC$(K%(I),N):[130]N 202 [153]" NPRINTWAITEXT LPRINTWAITAST JPRINTWAITUMP FPRINTWAITIND" 203 [153]" MPRINTWAITODIFY DPRINTWAITELETE PPRINTWAITRINT EPRINTWAITXITSYS" 204 [141]30:[139]A$[178]"N"[167]I[178]I[170]1:[137]194 206 [139]A$[178]"L"[167]I[178]I[171]1:[137]194 207 [139]A$[178]"M"[167][141]256:[137]198 208 [139]A$[178]"J"[167]216 209 [139]A$[178]"D"[167][141]284:[137]198 210 [139]A$[178]"F"[167]218 212 [139]A$[178]"E"[167]68 213 [139]A$[178]"P"[167][159]4,4:[152]4,"RECORD#"I"IN FILE: "NF$:[152]4:[137]215 214 [141]602:[137]204 215 [129]N[178]1[164]F:[152]4,REC$(K%(I),N):[130]N:[152]4:[152]4:[160]4:[137]204 216 [133]"PRINT JUMP TO RECORD NUMBERSYS";I:[137]194 218 [153]"LOAD FIND RECORDS WITH COMMON ITEMS " 220 [129]N[178]1[164]F:[153]" ";N;"PRINTWAIT ";F$(N):[130]N 222 [133]"PRINT WHICH FIELD IS TO BE SEARCHEDSYS? 0 CMDCMDCMDCMD";SF:[139]SF[178]0[167]68 224 [139]SF[179]1[176]SF[177]F[167][153]"ONONON":[137]222 226 [153]"PRINT ENTER COMMON ITEMWAIT ":[153]" (THE ENTIRE STRING IS NOT REQUIRED)SYS" 228 [153]"";F$(SF);"WAIT ";:[133]T$:[139]T$[178]D$[167]68 230 J[178]I:[129]I[178]1[164]X:[153]"PRINT SEARCHING RECORDSSYS"I"ONON" 232 [139]T$[178][200](REC$(K%(I),SF),[195](T$))[167]236 234 [137]241 236 J[178]I:[153]"LOAD RECORD #";I;"" 237 [129]N[178]1[164]F:[153]"PRINT"F$(N)[166]S1[171][195](F$(N)))" SYS"REC$(K%(I),N):[130]N 238 [153]" NPRINTWAITEXT MPRINTWAITODIFY DPRINTWAITELETE EWAITPRINTXITSYS":[141]30:[139]A$[178]"E"[167]198 239 [139]A$[178]"M"[167][141]256:[137]236 240 [139]A$[178]"D"[167][141]284:[137]236 241 [130]I:I[178]J:[137]198 242 : 244 [153]"LOADPRINT MODIFY WHICH RECORD? ENTER #WAITPRINT OR APRINTWAITLLSYS" 245 [133]MR$:[139]MR$[178]D$[167]68 246 [139]MR$[178]"A"[167]MR$[178]D$:[137]254 248 I[178][197](MR$):MR$[178]D$ 250 [139]I[177]X[167][141]348:[137]244 252 [141]256:[137]68 254 [129]I[178]1[164]X:[141]256:[153]" NWAITPRINTEXT OR EPRINTWAITXITSYS":[141]30:[139]A$[178]"E"[167]68 255 [130]I:[137]68 256 [153]"LOADPRINT TO MODIFY RECORD #SYS";I;"PRINT, MAKE CHANGES" 258 [153]" AS EACH FIELD IS DISPLAYED, THEN RETURNWAITSYS":[129]N[178]1[164]F 260 [153]"PRINT"F$(N)" SYS":[153]" ";REC$(K%(I),N) 261 [139][195](REC$(K%(I),N))[177]36[167][153]"ON"; 262 [153]"ON ";:[133]REC$(K%(I),N) 264 [139][195](REC$(K%(I),N))[177]L%(N)[167][141]140:[137]260 265 [139]REC$(K%(I),N)[178]"="[167]REC$(K%(I),N)[178]REC$(K%(I[171]1),N) 266 [139]REC$(K%(I),N)[178]""[167]REC$(K%(I),N)[178]">" 267 [139][200](REC$(K%(I),N),1)[178]">"[167]REC$(K%(I),N)[178]">" 268 [130]N:CK[178]1:[142] 270 : 272 [153]"LOADPRINT DELETE WHICH RECORD? ENTER #PRINTWAIT OR APRINTWAITLLSYS" 274 [133]DR$:[139]DR$[178]D$[167]68 276 [139]DR$[178]"A"[167]DR$[178]D$:[137]282 278 I[178][197](DR$):DR$[178]D$:[139]I[177]X[167][141]348:[137]274 280 [141]284:[137]68 282 [129]I[178]1[164]X:[141]284:[153]" NWAITPRINTEXT OR EWAITPRINTXITSYS":[141]30:[139]A$[178]"E"[167]68 283 [130]I:[137]68 284 [153]"LOADPRINT TO DELETE RECORD NUMBERSYS";I;"PRINT, PRESS" 286 [153]" SHIFTWAIT DWAITPRINT, PRESS SPACE BARWAITPRINT TO ADVANCESYS" 288 [129]N[178]1[164]F:[153]"PRINT"F$(N)[166]S1[171][195](F$(N)))" SYS"REC$(K%(I),N):[130]N 290 [141]30:[139]A$[178]"STR$"[167]294 292 CK[178]1:[142] 294 [153]"DELETING RECORD";I:[153]"RECORDS MAY NOW BE OUT OF ORDER" 296 [129]N[178]1[164]F:REC$(K%(I),N)[178]REC$(X,N):REC$(X,N)[178]"":[130]N 298 [129]J[178]1[164]X:[139]K%(J)[178]X[167]K%(J)[178]K%(X):K%(X)[178]0:X[178]X[171]1:[137]292 300 [130]J 302 : 304 [153]"LOAD  SORT RECORDS IN ASCENDING ORDER " 306 [129] N[178]1[164]F:[153]" ";N;"WAIT ";F$(N):[130]N 308 [129]N[178]0[164]5:S(N)[178]0:[130]N 310 N[178]0:[153]"PRINT ENTER 0WAITPRINT TO EXIT FIELD SELECTION" 312 N[178]N[170]1:[139]N[178]6[167]320 314 [153]"PRINT # "N"PRINTWAITFIELD TO BE SORTEDSYS? 0 CMDCMDCMDCMD";:[133]S(N):[139]S(1)[178]0[167]68 316 [139](S(N)[177]F)[176](S(N)[179]0)[167][153]"ONON":[137]314 318 [139]S(N)[179][177]0[167]312 320 [153]" SORTING..." 322 L[178]R[170]1:[158]51526,L,X,F,S(1),S(2),S(3),S(4),S(5),S(0),REC$(1,S(1)) 324 [129]I[178]1[164]X:K%(I)[178]I:[130] 326 CK[178]1:[137]68 333 : 334 [153]"LOAD DEFYOU HAVE NOT SAVED YOUR CHANGES!SYS" 336 [153]"PRINT DO YOU REALLY WANT TO QUIT? DEFYPRINTWAIT OR NWAITSYS 338 GOSUB30:IFA$="Y" THEN344 340 GOTO68 342 IFCK<>0THEN334 344 PRINT"[147]DATAFILE TERMINATED":END 346 : 348 PRINT" [150]NO SUCH RECORD EXISTS[158]":RETURN 350 IFR>0THENRETURN 352 PRINT" [150] NO RECORDS OR FILES IN MEMORY [158][146]" 353 FORI=1TO500:NEXTI:FL=1:RETURN 354 IFX>0THENRETURN 355 GOSUB352:RETURN 356 : 358 IFCK<>0THENGOSUB394:IFA$<>"N"THEN68 360 PRINT"[147]  TRANSFER TO PRINTING PROGRAMS " 362 PRINT"[153]PUT [158]DATAFILE[153] DISK IN DRIVE, TRANSFER TO:" 364 PRINTTAB(6)"P[146][158] DFPRINT [153]REPORTS-LABELS-LISTS" 366 PRINTTAB(6)"C[146][158] DFCALC [153]CALCULATED REPORTS" 368 PRINTTAB(6)"E[146][153]XIT TO MAIN MENU[158] 370 [153]"  PRESS THE APPROPRIATE KEY " 372 [141]30:[139]A$[178]"E"[167]68 374 [139]A$[178]"C"[167][153]"LOADSTOPLOAD"[199](34)"DFCALC"[199](34)",8":[137]380 376 [139]A$[178]"P"[167][153]"LOADSTOPLOAD"[199](34)"DFPRINT"[199](34)",8":[137]380 378 [141]602:[137]372 380 [153]:[153]:[153]:[153]:[153]"RUNSYS" 382 [151]631,19:[151]632,13:[151]633,13:[151]634,13:[151]635,13:[151]636,13 384 [151]198,6:[162]:[128] 392 : 394 [153]"LOAD DEFTHIS WILL DESTROY THE FILE IN MEMORY!SYS" 396 [153]"PRINT SAVE THE FILE FIRST? YPRINTWAIT OR DEFNSYSWAIT":[141]30:[142] 400 : 402 [153]"LOADDEF THIS WILL ERASE THE DISK!SYS" 403 [153]"PRINT ARE YOU SURE? DEFYWAITPRINT OR NWAITSYS 404 GOSUB30:IFA$="N"THEN68 406 IFA$<>"Y"THEN68 407 PRINT"[153] PRESS RETURN[146][153] WITHOUT AN ENTRY TO EXIT[158]" 408 INPUT" DISK NAME,ID[146]";HN$,ID$:IFHN$=D$THEN68 410 OPEN15,8,15:PRINT#15,"NEW0:"+HN$+","+ID$:GOSUB414:IFET=8THEN462 411 CLOSE15:GOTO462 412 : 414 INPUT#15,EN,EM$,ET,ES:IF(EN<20)OR(EN=62)THENET=0:RETURN 416 PRINT" [150]DISK ERROR[146]"EN"[157], "EM$","ET"[157],"ES"[158]":ET=8 418 PRINT"[153] PRESS ANY KEY[146][153] TO RETURN TO MENU[158]":GOSUB30:CLOSE5:CLOSE15:RETURN 420 : 422 PRINT"[147]":@"$":PRINTTAB(25)"PRESS ANY KEY[146][153]":GOSUB30:RETURN 460 : 462 PRINT"[147][158]  DISK COMMANDS MENU " 464 PRINTTAB(11)"$[153][146] DISK DIRECTORY 466 [153][163]11)"FPRINTWAITORMAT A BLANK DISK 468 PRINTTAB(11)"S[153][146]CRATCH A SEQ FILE 470 [153][163]11)"RPRINTWAITENAME A SEQ FILE 471 PRINTTAB(11)"V[153][146]ALIDATE A DISK 472 [153][163]11)"EPRINTWAITXIT TO MAIN MENUSYS 474 PRINT"  PRESS THE APPROPRIATE KEY " 476 GOSUB30:MR$=D$:DR$=D$:IFA$="$"ORA$="4"THENGOSUB422:GOTO462 478 IFA$="F"THEN402 480 IFA$="S"THENGOSUB498:GOTO488 482 IFA$="E"THEN68 483 IFA$="V"THENGOTO500 484 IFA$="R"THENGOSUB498:GOTO493 486 GOSUB602:GOTO476 488 INPUT" [153]SCRATCH FILE NAME [158][146]";DR$:IFDR$=D$THEN462 490 OPEN15,8,15:OPEN5,8,5,"0:"+DR$+",S,R":GOSUB414:IFET=8THEN462 492 CLOSE5:PRINT#15,"S0:"+DR$:CLOSE15:GOTO462 493 INPUT" [153]RENAME OLD FILE [158][146]";DR$:IFDR$=D$THEN462 494 INPUT" [153] TO NEW FILE [146][158]";MR$:IFMR$=D$THEN462 495 OPEN15,8,15:OPEN5,8,5,"0:"+DR$+",S,R":GOSUB414:IFET=8THEN462 496 CLOSE5:PRINT#15,"R0:"+MR$+"="+DR$:OPEN5,8,5:GOSUB414:IFET=8THEN462 497 CLOSE5:CLOSE15:GOTO462 498 PRINT"[147][153] ENTER FILE NAMES EXACTLY AS SHOWN" 499 PRINT" ON THE DIRECTORY, EX:[158] DF] MAIL LIST[158]":@"$0:*=S":RETURN 500 PRINT"[147]":@"$":PRINT"[153]VALIDATE THIS DISK? Y[146][153]ES OR N[146][153]O":GOSUB30 502 IFA$<>"Y"THEN462 504 @"V0":GOTO462 506 : 600 FORE=0TO24:POKE54272+E,0:NEXT:POKE54296,15:RETURN 602 POKE54277,58:POKE54278,16:POKE54273,35:POKE54272,134 604 POKE54276,33:FORE=1TO100:NEXT:POKE54276,16:RETURN