1000 DIM Q(10) 1010 PRINT "MINUTES TO RUN SIMULATION="; 1020 INPUT M 1030 PRINT "MAXIMUM ARRIVALS/UNIT TIME="; 1040 INPUT A2 1050 PRINT "MINIMUM SERVICE TIME="; 1060 INPUT S2 1070 PRINT "MAXIMUM SERVICE TIME="; 1080 INPUT S3 1090 PRINT "QUEUE LENGTH="; 1100 INPUT H2 1110 PRINT "INPUT 1 FOR RUNNING OUTPUT, ELSE INPUT 0"; 1120 INPUT P 1130 C = 0 1140 C2 = 0 1150 C3 = 0 1160 C4 = 0 1170 M2 = 0 1180 M3 = 0 1190 S4 = 0 1200 H = H2 1210 T = H2 1220 FOR J2 = 1 TO H2 1230 Q(J2) = -9 1240 NEXT J2 1250 Q(T) = 0 1260 T = T - 1 1270 GOSUB 1610 1280 FOR J = 1 TO M 1290 FOR J2 = 1 TO H2 1300 IF Q(J2) = -9 THEN GOTO 1330 1310 C = C + 1 1320 Q(J2) = Q(J2) + 1 1330 NEXT J2 1340 C2 = C2 + C 1350 IF C <= C3 THEN GOTO 1370 1360 C3 = C 1370 C = 0 1380 IF P = 0 THEN GOTO 1410 1390 PRINT " PICTURE OF QUEUE AFTER ";J; " MINUTES" 1400 GOSUB 1680 1410 IF Q(H) A THEN GOTO 1580 1550 GOSUB 1900 1560 A3 = A3 + 1 1570 GOTO 1540 1580 NEXT J 1590 GOSUB 1730 1600 STOP 1610 S = INT (RND(1)*10) + (S3-9) 1620 IF Q(H) = -9 THEN GOTO 1640 1630 Q(H) = 0 1640 M3 = Q(H) + S 1650 IF P = 0 THEN GOTO 1670 1660 PRINT "REQUIRED SERVICE TIME=";S 1670 RETURN 1680 FOR J2 = 1 TO H2 1690 PRINT Q(J2); 1700 NEXT J2 1710 PRINT "TAIL=";T;"HEAD=";H 1720 RETURN 1730 PRINT C4;" FULLY SERVED CUSTOMERS IN ";J;" MINUTES" 1740 PRINT "MAXIMUM CUSTOMERS QUEUED=";C3 1750 M5 = M2/C4 1760 PRINT "AVERAGE WAIT TIME=";M5 1770 S5 = S4/C4 1780 PRINT "AVERAGE SERVICE TIME=";S5 1790 C5 = C2/J 1800 PRINT "AVERAGE NUMBER OF QUEUED CUSTOMERS=";C5 1810 RETURN 1850 REM 1860 REM I N S E R T I O N R O U T I N E 1870 REM 1880 REM CHECK TAIL AND HEAD POINTER VALUES 1890 REM 1900 IF H = T THEN GOTO 1970 1910 IF H < T THEN GOTO 2030 1920 IF T >= 1 THEN GOTO 2030 1930 IF H = H2 THEN GOTO 2080 1931 REM 1932 REM INSERT ITEM AT Q(H) 1933 REM SINCE QUEUE IS EMPTY 1934 REM 1940 Q(H2)=0 1950 T=H2-1 1960 GOTO 2050 1970 IF T<>0 0 THEN GOTO 2000 1971 REM 1972 REM RESET POINTERS TO HEAD OF QUEUE 1973 REM 1980 H = H2 1990 T = H2 1991 REM 1992 REM CHECK IF Q(T) EMPTY FOR POSSIBLE INSERT 1993 REM 2000 IF Q(T) <> -9 THEN GOTO 2080 2010 H = H2 2020 T = H2 2021 REM 2022 REM NORMAL TAIL INSERTION 2023 REM 2030 Q(T) = 0 2040 T = T - 1 2050 IF P = 0 THEN GOTO 2070 2060 PRINT "ARRIVAL" 2070 RETURN 2080 IF P = 0 THEN GOTO 2100 2090 PRINT "OVERFLOW" 2100 RETURN 2101 REM 2102 REM D E L E T I O N R O U T I NE 2103 REM 2104 REM CHECK POINTER VALUES FOR POSSIBLE DELETE 2105 REM 2110 IF H = T THEN GOTO 2150 2120 IF H > 0 THEN GOTO 2190 2130 H = H2 2140 GOTO 2180 2150 IF H <> 0 THEN GOTO 2180 2160 H = H2 2170 T= H2 2171 REM 2172 REM DELETE FROM Q(H) IF Q(H) HAS AN ITEM 2173 REM ELSE QUEUE IS EMPTY, I. E. UNDERFLOW 2174 REM 2180 IF Q(H) = -9 THEN GOTO 2240 2190 Q(H) = -9 2200 H = H - 1 2201 REM 2202 REM RESET POINTERS FOR NEXT DELETE 2203 REM 2210 IF H <> 0 THEN GOTO 2260 2220 H = H2 2230 RETURN 2240 IF P = 0 THEN GOTO 2260 2250 PRINT "UNDERFLOW" 2260 RETURN 2270 END