1 ! ******************** WESPUT *************************** ! ** DATA INPUT PROGRAM FOR WESS MODEL ARRAY "WESDAT" ** 5 ! ** FROM LOUISVILLE EXPERIMENT SIMULATION SYSTEM ** 6 ! ** TRANSLATED 20-DEC-74 WABASH COLLEGE ** ! ** BY JAMES A. WARDEN ** ! ******************************************************* 10 PRINT"WESS MODEL CREATION PROGRAM * ";DATE$(0%);" * ";TIME$(0%) 12 GO TO 30 20 ! "CHAIN" ENTRANCE 22 O$=SYS(CHR$(7%)) : O%=INSTR(1%,O$,"!") : IF O%=0% THEN 30 24 O1$=MID(O$,O%+1%,4%) : O$=LEFT(O$,O%-1%) : S$=SYS(CHR$(8%)+O$) 26 GO TO 35 30 INPUT"MODEL FILE";O$ 35 OPEN O$ AS FILE 1% 40 DIM #1%,X%(48),A9(1),A1$(5)=128,A2$(24,4)=128,D2(24,12),X2(24,384) 50 ! \-----ID RECORD ------/ \-----24 MODEL RECORDS-----------/ 60 OPEN "WESPUT.TMP" AS FILE 2% 70 DIM #2%,A3$(9)=128,Q(3,128),X(384),D(1,12),V(24),R(10), S(10),T(10),U(10),W(27),Y(10),Z(10),N(10),K(1),L(1) 110 DEF FNC(V1)=INT(V1/Q9) 120 DEF FND(V2)=V2-FNC(V2)*Q9 130 Q9=128 : Q8=3 ! Q MATRIX DIM; SIZE OF X = PRODUCT 210 E0=A9(1) : A$=A1$(1) : B$=A1$(2) : H$=A1$(3) 215 IF O1$="2220" THEN 2220 217 N(I%)=0. FOR I%=0% TO 10% 220 FOR I%=1% TO E0-1 222 IF X%(I%)=-1% THEN E0=I% : GO TO 260 224 NEXT I% : IF E0<24 THEN 260 230 PRINT"** WESS ** IS FULL. NO MORE MODELS MAY BE ADDED UNTIL" 240 PRINT"SOME ARE DELETED." : CLOSE 1%,2% : GO TO 9999 260 PRINT"MODEL #";E0 270 J$=H$ : A3$(1)=H$ 280 PRINT "DO YOU INTEND TO WRITE YOUR OWN MODEL PROGRAM(Y/N)"; 290 INPUT Z$ : IF ASCII(Z$)=78% THEN N(10)=999 : E$,J$,A3$(1%)="WESS0 " : GO TO 450 310 PRINT "THE NEXT MODEL NAME IS ";H$;" DO YOU INTEND TO USE IT"; 320 INPUT"(Y/N)";Y$ : IF Y$="Y" THEN N(10)=N(10)+9000 : GO TO 450 350 INPUT"THEN GIVE YOUR PROGRAM NAME, UP TO 6 CHRS";E$ 360 E$=LEFT(E$+SPACE$(6%),6%) 410 J$=E$ : A3$(1)=E$ 450 PRINT"GIVE NUMBER OF VARIABLES WHICH ARE PARAMETERS (<10)"; 460 INPUT N(1) 470 IF N(1)>=10 THEN 450 480 PRINT "GIVE THE NUMBER OF DESCRETE VARIABLES (<10)"; 490 INPUT N(2) 500 IF N(2)>=10 THEN 480 510 INPUT"GIVE NUMBER OF CONTINUOUS VARIABLES (<10)";N(3) : IF N(3)>10 THEN 510 540 INPUT"GIVE NUMBER OF UNKNOWN VARIABLES (<10)";N(5) : IF N(5)>=10 THEN 540 570 N(6)=0 580 IF N(5)=0 THEN 620 590 INPUT"GIVE NUMBER OF SECONDARY VARIABLES (<10)";N(6) : IF N(6)>=10 THEN 590 620 INPUT"GIVE NUMBER OF DEPENDENT VARIABLES (<10)";N(7) : IF N(7)>0 THEN 670 650 PRINT"THERE MUST BE AT LEAST ONE DEPENDENT VARIABLE" : GO TO 620 670 MAT Q=ZER 680 MAT D=ZER 690 A$,B$,C$="" 720 M=N(1)+N(2)+N(3)+N(5)+N(6)+N(7) 730 IF M>24 THEN 1390 740 M5,M6,M9=2 : M1,M2,M3,M4,N(0),N(8),N(9),J1=0. 850 FOR I=1 TO 6 860 X(5)=0 870 GO TO 1000 880 GOSUB 1300 : GO TO 1060 900 GOSUB 1410 : GO TO 1060 920 GOSUB 1460 : GO TO 1060 940 GOSUB 1510 : GO TO 1060 960 GOSUB 1560 : GO TO 1060 980 GOSUB 1610 : GO TO 1060 1000 ON I GO TO 880,900,920,940,960,980 1060 IF M5>=2 THEN 1150 1070 IF X(5)>0 THEN 1280 1080 FOR J=M1 TO M2 1090 J1=J1+1 1100 PRINT "NAME OF VARIABLE"J1;"="; 1110 INPUT A0$ : A$=LEFT(A$,(J-1)*8)+LEFT(A0$+SPACE$(8%),8%)+ RIGHT(A$,J*8+1) 1120 E$=E$+LEFT(A0$+SPACE$(8%),8%) 1130 J2=LEN(E$)+1 1140 NEXT J 1150 IF M6>=2 THEN 1220 1160 FOR J=M3 TO M4 1170 J1=J1+1 1180 PRINT "NAME OF VARIABLE";J1;"="; 1190 J2=(J-1)*8+1 1200 INPUT B0$ : B$=LEFT(B$,J2-1)+LEFT(B0$+SPACE$(8%),8%)+ RIGHT(B$,J*8+1) 1210 NEXT J 1220 IF M9>=2 THEN 1280 1230 FOR J=N(8) TO N(9) 1240 J1=J1+1 1250 PRINT "NAME OF VARIABLE";J1;"="; 1260 INPUT C0$ : C$=LEFT(C$,(J-1)*8)+LEFT(C0$+SPACE$(8%),8%)+ RIGHT(C$,J*8+1) 1270 NEXT J 1280 NEXT I 1290 GO TO 1930 1300 M5,M2,M4,N(9)=0. 1340 IF N(1)=0 THEN 1660 1350 PRINT "GIVE THE NAMES OF THE";N(1);"PARAMETER VARIABLES" 1360 N(0)=N(1) 1370 GOSUB 1680 1380 RETURN 1390 PRINT"TOO MANY VARIABLES (<24). TRY AGAIN" 1400 GO TO 450 1410 IF N(2)=0 THEN 1660 1420 PRINT "GIVE THE NAMES OF THE";N(2)"DISCRETE VARIABLES" 1430 N(0)=N(0)+N(2) 1440 GOSUB 1680 1450 RETURN 1460 IF N(3)=0 THEN 1660 1470 PRINT "GIVE THE NAMES OF THE";N(3);"CONTINUOUS VARIABLES" 1480 N(0)=N(0)+N(3) 1490 GOSUB 1680 1500 RETURN 1510 IF N(5)=0 THEN 1660 1520 PRINT "GIVE THE NAMES OF THE";N(5);"X VARIABLES" 1530 N(0)=N(0)+N(5) 1540 GOSUB 1680 1550 RETURN 1560 IF N(6)=0 THEN 1660 1570 PRINT "GIVE THE NAMES OF THE";N(6);"SECONDARY VARIABLES" 1580 N(0)=N(0)+N(6) 1590 GOSUB 1680 1600 RETURN 1610 IF N(7)=0 THEN 1660 1620 PRINT "GIVE THE NAMES OF THE";N(7);"DEPENDENT VARIABLES" 1630 N(0)=N(0)+N(7) 1640 GOSUB 1680 1650 RETURN 1660 X(5)=1 1670 RETURN 1680 REM SUBROUTINE TO SET UP TO READ VARIABLE NAMES. 1690 IF M5>0 THEN 1770 1700 M1=M2+1 1710 M2=N(0) 1720 IF M2<=9 THEN 1920 1730 M2=9 1740 M5=1 1750 M6=0 1760 GOTO 1790 1770 IF M6>0 THEN 1860 1780 M5=2 1790 M3=M4+1 1800 M4=N(0)-9 1810 IF M4<=9 THEN 1920 1820 M4=9 1830 M6=1 1840 M9=0 1850 GO TO 1880 1860 IF M9>0 THEN 1920 1870 M6=2 1880 N(8)=N(9)+1 1890 N(9)=N(0)-18 1900 IF N(9)<=5 THEN 1920 1910 GO TO 1390 1920 RETURN 1930 PRINT "NOW GIVE EXPERIMENT NAME FOR TITLE" 1940 INPUT D$ 1950 INPUT"DO YOU WANT TO SEE THE VARIABLES STRING (Y/N)";E$ : IF ASCII(E$)=78% THEN 2030 1980 PRINT A$;B$ : INPUT"IS IT OK (Y/N)";E$ : IF ASCII(E$)=78% THEN 740 2030 A2$(E0,1%)=A$ : A2$(E0,2%)=B$ 2050 M0=LEN(A$)+LEN(B$) 2060 INPUT"DO YOU WANT TO SEE THE TITLE (Y/N)";E$ : IF ASCII(E$)=78% THEN 2130 2090 PRINT C$;D$ : INPUT"IS IT OK (Y/N)";E$ : IF ASCII(E$)=78% THEN 740 2130 A2$(E0,3%)=C$ : A2$(E0,4%)=D$ 2140 M0=M0+LEN(C$)+LEN(D$) 2150 M0=INT(M0/4+.9) 2160 Q(1,8)=N(0)-N(6) 2170 PRINT "ARE DEPENDENT VARIABLE VALUES TO BE ENTERED BY USER"; 2180 INPUT" (Y/N)";E$ : IF ASCII(E$)=89% THEN 2220 2210 Q(1,8)=N(0)-N(6)-N(7) 2220 PRINT"GIVE THE";N(0);"DEFAULT VALUES (ONE PER LINE)" 2230 INPUT X(I%) FOR I%=1% TO N(0) 2240 N(4)=0 2250 P4=N(1)+N(2)+N(3)+N(5)+N(6) 2260 FOR I=1 TO N(0) 2270 Q(1,I+8)=X(I) 2280 IF X(I)<>0 THEN 2350 2290 IF I<=N(1)+N(2) THEN 2350 2300 IF I>P4 THEN 2350 2310 IF I<=N(1)+N(2)+N(3) THEN 2330 2320 IF I<=P4-N(5)-N(6) THEN 2350 2330 N(4)=N(4)+1 2340 P(N(4))=I 2350 NEXT I 2360 N(4)=0 2370 Q(1%,I%)=N(I%) FOR I%=1% TO 7% 2440 PRINT "GIVE THE LOWER THEN UPPER LIMITS FOR ALL VARIABLES-" 2450 PRINT "VARI LOWER,VARI UPPER,VAR2 LOWER,..." 2460 INPUT X(I%) FOR I%=1% TO 2*N(0) 2470 FOR I=1 TO 2*N(0) STEP 2 2480 IF 0>=X(I) THEN 2510 2490 PRINT "ZERO MUST BE WITHIN LIMITS. TRY AGAIN." 2500 GO TO 2440 2510 IF 0>X(I+1) THEN 2490 2520 NEXT I 2530 X9=N(1)+N(2)+N(3)+N(5) 2540 N(9)=X9-N(5)+1 2550 J1,K=0 : L=1 2580 I=8+N(0) 2590 FOR J=1 TO 2*N(0) STEP 2 2600 J1=J1+1 : IF J1X9 THEN 2650 2630 X(J)=0 : X(J+1)=99 2650 W(J1)=X(J+1)-X(J)+1 2660 IF X(J)=0 THEN 2680 2670 IF X(J+1)<>0 THEN 2720 2680 W(J1)=W(J1)-1 2690 IF J1X9 THEN 2720 2710 W(J1)=1 2720 I=I+1 2730 IF I>Q9 THEN I=1 : L=L+1 2760 K=K+2 2770 Q(L,I)=X(K-1) 2780 I=I+1 2790 IF I>Q9 THEN I=1 : L=L+1 2820 Q(L,I)=X(K) 2830 NEXT J 2840 K=I 4000 K(1)=K : L(1)=L : Z(0)=M3 : CLOSE 1%,2% 4010 PRINT : PRINT"." 4015 S$=SYS(CHR$(8%)+O$) 4020 CHAIN "WESPT1" 10 9999 END