13 ! ! PROGRAM WRITTEN BY G. COCK - LATEST MODS. 10/1/74 ! YACHTING RESULTS USING OLYMPIC POINTS SCORES SYSTEM ! ! KEYED IN BY TIMOTHY SHANE MCCOY ! AT CENTRAL STATE UNIVERSITY ! ON PDP 11/45 ! VERSION RSTS/E V06C ! 110 DIM P(7) 120 DIM #1,S$(100),N$(100),C$(100),R(7,100),Q(7,100) 130 DIM #2,H$(3),B(1),H(7),S(7),D$(7),T$(7),F(100),D(100),T(2,100) 131 ! ! H$ = TITLES E = B = ENTRIES ! P = OLYMPIC POINTS H = HEAT NO. ! S = NO. STARTERS D$ = DATE ! T$ = START TIME S$ = SAIL NO. ! N$ = SKIPPER C$ = STATE OR COUNTRY ! R = POINTS Q = POSITION ! F = PLACING D = DUMMY ! T = TOTAL AND CORR. POINTS ! 135 OPEN "SAILS.DAT" AS FILE 1 136 OPEN "SAILS1.DAT" AS FILE 2 140 DATA 0.0,3.0,5.7,8.0,10.0,11.7,6.0 150 READ P(1),P(2),P(3),P(4),P(5),P(6),P(7) 155 X$ = "\ \###.# ###.# ###.# ###.# ###.# ###.# ###.# ###.# ###.#" 156 Z$ = "\ \\ \### ### ### ### ### ### ### ###" 220 PRINT "SELECT PROCEDURE NO. -" 225 PRINT "1 - INITIALISATION" 230 PRINT "2 - ADDITIONS" 235 PRINT "3 - RESULTS" 236 PRINT "4 - ADJUSTMENTS" 237 PRINT "5 - REPRINT" 238 PRINT "6 - HANDICAP" 240 INPUT P1 250 ON P1 GOTO 260,290,530,530,1135,2400 260 ! ! INITIALISATION ! 263 FOR N = 1 TO 7 264 FOR M = 1 TO 100 265 R(N,M) = 0 266 Q(N,M) = 0 267 NEXT M 268 NEXT N 270 PRINT "TYPE TITLE - MAX. 42 CHARACTERS, COMMA AFTER 14TH AND 28TH" 280 INPUT H$(1),H$(2),H$(3) 290 PRINT "TYPE NO. ENTRIES - MAX NO. 100" 300 INPUT E 301 B(1) = E 310 PRINT "TYPE ENTRIES - SAIL NO., SKIPPER, STATE OR COUNTRY" 315 PRINT " MAX. 14 CHARACTERS PER ITEM" 320 PRINT " E.G. KA1234,J BROWN,N.S.W." 330 PRINT " KZ5678,W WILLIAMSON,NEW ZEALAND" 340 PRINT "WHEN FINISHED, TYPE END,END,END" 345 L1 = 1 346 IF P1 = 2 THEN L1 = E 350 FOR N = L1 TO 100 360 INPUT S$(N),N$(N),C$(N) 370 IF S$(N) = "END" THEN 390 380 NEXT N 390 PRINT 410 PRINT 420 PRINT "SUMMARY OF INITIALISATION" 430 PRINT "-------------------------" 440 PRINT 450 PRINT "TITLE-";H$(1);H$(2);H$(3) 460 PRINT "NO. ENTRIES- ";E 470 PRINT "LIST NO.","SAIL NO.","SKIPPER","STATE OR COUNTRY" 480 PRINT "--------","--------","-------","----------------" 490 PRINT 491 L1 = 1 492 IF P1 = 1 THEN 500 493 L1 = E 494 FOR N = 1 TO 7 495 IF R(N,1) = 0 AND R(N,2) = 0 THEN 498 496 R(N,E) = E + P(7) 497 Q(N,E) = -1 498 NEXT N 500 FOR N = L1 TO E 510 PRINT N,S$(N),N$(N),C$(N) 520 NEXT N 525 GOTO 4000 530 ! ! RESULTS ! 535 E = B(1) 570 PRINT 580 PRINT 590 PRINT "TYPE RACE N0.,HEAT NO.,N0. STARTERS,START TIME,DATE" 591 PRINT 600 PRINT "E.G. 4,2,57,10.30A.M.,16/1/74" 601 PRINT 610 INPUT R1,H(R1),S(R1),T$(R1),D$(R1) 611 IF P1 = 4 THEN 620 612 ! ! SET POINTS TO -1 TO DETERMINE NON-STARTERS ! 613 FOR N = 1 TO 100 614 R(R1,N) = -1 615 NEXT N 620 PRINT "TYPE FINISHING POSITION AND SAIL NO." 630 PRINT "NOTE- DNF = POSITION 0" 640 PRINT " DNS = - -1" 650 PRINT " DSQ = - -2" 660 PRINT " MP = - -3" 670 PRINT "E.G. 27,KA1234" 680 PRINT " -2,KA4567" 690 PRINT "WHEN FINISHED, TYPE -100,END" 700 PRINT " IF AN ERROR IS TYPED, JUST RETYPE LINE" 710 INPUT P2,Y$ 720 IF P2 = -100 THEN 1070 730 FOR Y1 = 1 TO E 740 IF Y$ = S$(Y1) THEN 780 750 NEXT Y1 760 PRINT "SAIL NO. DOES NOT EXIST - RETYPE LINE" 770 GOTO 710 780 ! ! DETERMINE POINTS FOR PLACING ! 790 Q(R1,Y1) = P2 800 IF P2 = 0 THEN 950 810 IF P2 = -1 THEN 920 820 IF P2 = -2 THEN 980 830 IF P2 = -3 THEN 1020 840 FOR N = 1 TO 6 850 IF P2 = N THEN 900 860 NEXT N 870 ! ! PLACE POINTS ! 880 R(R1,Y1) = P2 + P(7) 890 GOTO 710 900 R(R1,Y1) = P(N) 910 GOTO 710 920 ! ! DNS POINTS ! 930 R(R1,Y1) = E + P(7) 940 GOTO 710 950 ! ! DNF POINTS ! 960 R(R1,Y1) = S(R1) + P(7) 970 GOTO 710 980 ! ! DNF POINTS ! 990 X = S(R1) + P(7) + S(R1)/10 + .99 1000 R(R1,Y1) = INT(X) 1010 GOTO 710 1020 ! ! MP(MATERIALLY PREJUDICED) POINTS ! 1030 PRINT "TYPE ALLOCATED POINTS" 1050 INPUT R(R1,Y1) 1060 GOTO 710 1070 ! ! POINTS FOR NON-STARTERS ! 1080 FOR N = 1 TO E 1090 IF R(R1,N) > -1 THEN 1120 1100 R(R1,N) = E + P(7) 1110 Q(R1,N) = -1 1120 NEXT N 1130 ! ! CALCULATE TOTAL POINTS ! 1131 GOTO 1140 1135 PRINT "TYPE RACE NO." 1136 INPUT R1 1137 E = B(1) 1140 O1 = 1 1141 GOTO 1145 1142 O1 = 2 1145 FOR N = 1 TO E 1150 T(1,N) = 0.0 1160 FOR M = 1 TO R1 1170 IF O1 = 1 THEN T(1,N) = R(R1,N) ELSE T(1,N) = T(1,N) + R(M,N) 1180 NEXT M 1190 ! ! CALCULATE CORRECTED TOTAL POINTS ! 1200 IF O1 = 1 THEN 1280 1210 W1 = R(1,N) 1220 FOR L = 1 TO R1 1230 IF W1 >= R(L,N) THEN 1260 1250 W1 = R(L,N) 1260 NEXT L 1270 T(2,N) = T(1,N) - W1 1280 NEXT N 1290 ! ! SORT POINTS INTO ASCENDING ORDER ! 1300 FOR N = 1 TO E 1320 IF R1 = 1 OR O1 = 1 THEN T(2,N) = T(1,N) 1330 D(N) = T(2,N) 1340 NEXT N 1345 GOSUB 1350 1346 IF O1 = 1 THEN 1142 ELSE 1830 1350 ! ! INITIALISE I1 = 1 IN EVENT ALL POINTS IN ORDER ! 1360 L1 = E - 1 1370 I1 = 1 1380 FOR N = 1 TO L1 1390 N1 = N + 1 1400 IF D(N1) >= D(N) THEN 1480 1420 D1 = D(N1) 1430 D(N1) = D(N) 1440 D(N) = D1 1450 I1 = N 1460 ! ! I1 GIVES LOCATION OF LAST INTERCHANGE ! ALL POINTS BEYOND D(I1) ARE IN ORDER ! 1480 NEXT N 1490 IF I1 = 1 THEN GOTO 1541 1500 ! ! IF I1 = 1 ALL POINTS ARE IN ORDER ! 1510 L1 = I1 - 1 1520 GOTO 1370 1530 ! ! DETERMINE IF ANY POINTS ARE TIED ! PRINT POSITIONAL ORDER OF YACHTS ! 1541 IF P1 = 6 THEN 1680 1560 PRINT 1570 PRINT 1580 PRINT 1590 PRINT 1600 PRINT H$(1);H$(2);H$(3) 1610 PRINT "-"; FOR I = 1 TO 42 1611 PRINT 1620 PRINT 1630 PRINT "POSITIONAL ORDER OF YACHTS AFTER RACE - ";R1 1640 PRINT 1650 PRINT ,,,"STATE OR" 1651 PRINT "PLACE","SAIL NO.","SKIPPER","COUNTRY","CORR. POINTS" 1660 PRINT "-----","--------","-------","-------","------------" 1670 PRINT 1680 I1 = 1 1690 FOR N = I1 TO E 1700 I2 = 0 1710 FOR M = 1 TO E 1720 IF T(2,M) = D(N) THEN 1740 1730 GOTO 1770 1740 F(M) = N 1741 IF P1 = 6 AND N = S(R1) THEN F(M) = Q(R1,M) 1750 I2 = I2 + 1 1751 IF P1 = 6 THEN 1770 1760 PRINT N,S$(M),N$(M),C$(M),T(2,M) 1770 NEXT M 1780 IF I2 > 1 THEN 1810 1790 NEXT N 1800 GOTO 1825 1810 I1 = N + I2 1820 GOTO 1690 1825 RETURN 1830 ! ! PRINT RESULTS IN LIST ORDER ! 1840 PRINT 1860 PRINT 1870 PRINT 1880 PRINT 1890 PRINT H$(1);H$(2);H$(3) 1900 PRINT "-"; FOR I = 1 TO 42 1901 PRINT 1910 PRINT 1920 PRINT "POINTS RESULTS TO RACE - ";R1 1930 PRINT 1940 PRINT "HEAT NO. ";H(R1);" STARTERS";S(R1);" START TIME ";T$(R1);" DATE ";D$(R1) 1950 PRINT 1960 PRINT "SAIL NO."," R1 R2 R3 R4 R5 R6 R7 T T-1" 1970 PRINT "--------"," -- -- -- -- -- -- -- --- ---" 1980 PRINT 1990 ! ! SET POINTS OF 11.7 TO 117 FOR ZONE PRINTING ! 2080 FOR N = 1 TO E 2090 PRINT USING X$,S$(N),R(1,N),R(2,N),R(3,N),R(4,N),R(5,N),R(6,N),R(7,N),T(1,N),T(2,N) 2100 NEXT N 2110 PRINT 2130 PRINT 2140 PRINT 2150 PRINT 2160 PRINT H$(1);H$(2);H$(3) 2170 PRINT "-"; FOR I = 1 TO 42 2171 PRINT 2180 PRINT 2190 PRINT "POSITIONAL RESULTS TO RACE - ";R1 2200 PRINT 2210 PRINT "HEAT NO.";H(R1);" STARTERS ";S(R1);" START TIME ",T$(R1);" DATE ";D$(R1) 2220 PRINT 2230 PRINT "SAIL NO.","SKIPPER"," R1 R2 R3 R4 R5 R6 R7 PL" 2240 PRINT "--------","-------"," -- -- -- -- -- -- -- --" 2250 PRINT 2260 FOR N = 1 TO E 2270 PRINT USING Z$,S$(N),N$(N),Q(1,N),Q(2,N),Q(3,N),Q(4,N),Q(5,N),Q(6,N),Q(7,N),F(N) 2280 NEXT N 2290 GOTO 4000 2400 ! ! HANDICAP CALCULATIONS AND RESULTS ! 2405 E = B(1) 2410 DEF FNA(D1,D2,D3) = D1*60 + D2 + D3/60 2420 PRINT "TYPE RACE NO.,START TIME,ELAPSED TIME" 2430 PRINT "E.G. 2,10,30,00,1,44,37 (N.B. COMMAS SEPERATE HRS,MINS,SECS)" 2440 INPUT R1,T1,T2,T3,T4,T5,T6 2460 PRINT "TYPE SAIL NO.,HANDICAP,FINISH TIME" 2475 PRINT "WHEN FINISHED,TYPE END,,,," 2500 INPUT Y$,H1,T7,T8,T9 2505 IF Y$ = "END" THEN 2910 2510 IF T1 > 6 AND T7 < 6 THEN T7 = T7 + 12 2520 FOR Y1 = 1 TO E 2530 IF Y$ = S$(Y1) THEN 2620 2540 NEXT Y1 2550 PRINT "SAIL NO. DOES NOT EXIST - RETYPE LINE" 2560 GOTO 2500 2620 T(2,Y1) = FNA(T7,T8,T9) - FNA(T4,T5,T6) * H1/100 2660 H2 = ((FNA(T7,T8,T9) - FNA(T1,T2,T3)) - FNA(T4,T5,T6))/FNA(T4,T5,T6) * 100 2780 T(1,Y1) = INT(H2*2+.25)/2 2850 GOTO 2500 2910 FOR N = 1 TO E 2915 IF Q(R1,N) < 1 THEN T(2,N) = 1000 2920 D(N) = T(2,N) 2930 NEXT N 2940 GOSUB 1350 3030 PRINT 3040 PRINT "HANDICAP RESULTS FOR RACE - ";R1 3050 PRINT ,"POS","N.H." 3090 FOR N = 1 TO E 3100 IF F(N) < 1 THEN 3130 3110 PRINT S$(N),F(N),T(1,N) 3120 GOTO 3140 3130 PRINT S$(N),F(N) 3140 NEXT N 4000 CLOSE 1,2 5000 END