1 ! ******************* WESPT2 ********************* ! ** OVERLAY #2 OF WESPUT ** 5 ! ** FROM LOUISVILLE EXP SIMULATION SYSTEM ** 6 ! ** TRANSLATED 20-DEC-74 WABASH COLLEGE ** ! ** BY JAMES A. WARDEN ** !*************************************************** 10 ! WESPT1 CHAINS HERE... 20 O$=SYS(CHR$(7%)) 30 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 140 M=N(1)+N(2)+N(3)+N(5)+N(6)+N(7) 210 E0=A9(1) : A$=A1$(1) : B$=A1$(2) : H$=A1$(3) 212 FOR U%=1% TO E0 : IF X%(U%)=-1% THEN E0=U% : GO TO 220 214 NEXT U% 220 K=K(1) : L=L(1) : M3=Z(0) 4000 GO TO 4700 ! ============= INDEX SUBROUTINE =================== 4600 LET K=K+1 4610 IF K<=Q9 THEN 4640 4620 LET L=L+1 4630 LET K=1 4640 RETURN 4650 LET K1=K1+1 4660 IF K1<=Q9 THEN 4690 4670 LET L1=L1+1 4680 LET K1=1 4690 RETURN 4700 ! ========================================================== BEGINNING OF SECTION TO GET DATA FOR WESS0 MODEL. CONCEIVED & PROGRAMMED BY ARTHUR O. CROMER VERSION OF MAY 29, 1974 4730 LET V9=N(1)+N(2)+N(3)+N(5)+N(6) 4740 MAT S=ZER(N(7)) 4750 LET D(1,7)=L+FNC(K) 4760 LET D(1,8)=FND(K) 4770 FOR I=1 TO N(7) 4780 PRINT "HOW MANY VARIABLES IN FUNCTION";I; 4790 INPUT S(I) 4800 IF S(I)<=V9 THEN 4830 4810 PRINT "THERE AREN'T THAT MANY. TRY AGAIN" 4820 GO TO 4780 4830 LET P4=S(I) 4840 LET P5=V9 4850 LET P3=1 4860 PRINT "INDICATE WHICH";S(I);"OF THE";V9;"VARIABLES WILL"; 4870 PRINT "HAVE AN EFFECT BY A 1 (FOR YES),";" AND USE 0 FOR THE REST" 4880 LET T1=0 4890 MAT T=ZER 4900 FOR J=1 TO P5 4910 PRINT "VARIABLE";J; 4920 INPUT T2 4930 IF T2=0 THEN 4970 4940 IF T2=1 THEN 4970 4950 PRINT "0 OR 1, ONLY, PLEASE" 4960 GO TO 4910 4970 GOSUB 4600 4980 LET Q(L,K)=T2 4990 IF T2=0 THEN 5050 5000 LET T1=T1+1 5010 IF T1<=P4 THEN 5040 5020 PRINT "THAT MAKES ONE TOO MANY. LET'S START OVER." 5030 GO TO 4860 5040 LET T(T1)=J 5050 NEXT J 5060 IF T1=P4 THEN 5100 5070 PRINT "TOTAL CODES DON'T MATCH";P4;". TRY AGAIN" 5080 IF P3=1 THEN 4860 5090 IF P3=2 THEN 6030 5100 M3=P4 5110 LET W1=2^P4-1 5120 LET M4=0 5130 MAT U=ZER(M3) 5140 FOR J=1 TO M3 5150 ! SET UP SIMULATED LOOPS 5160 ! Y=LOWER BOUND, Z=UPPER BOUND, U=INDEX. 5170 FOR J1=1 TO J 5180 LET U(J1)=J1 5190 NEXT J1 5200 ! ACTIVE PART OF OUTER SIMULATED LOOPS. 5210 PRINT USING "WEIGHT FOR TERM: ###",T(U(1)); 5230 FOR J1=2 TO J 5240 PRINT USING " X ###",T(U(J1)); 5260 NEXT J1 5270 PRINT "="; 5280 INPUT Q1 5290 GOSUB 4600 5300 LET Q(L,K)=Q1 5310 IF Q1=0 THEN 5600 5320 IF Q1=9999 THEN 5740 5330 IF Q1<>-9999 THEN 5390 5340 PRINT "ACTUAL WEIGHT"; 5350 INPUT Q1 5360 GOSUB 4600 5370 LET Q(L,K)=Q1 5380 GO TO 5600 5390 ! NOW GET EFFECTS 5400 LET M4=M4+1 5410 LET M5=1 5420 LET H4=0 5430 IF P3=1 THEN 5450 5440 H4=1 5450 FOR J1=1 TO J 5460 LET M5=M5*W(T(U(J1)))+H4 5470 NEXT J1 5480 IF P3=1 THEN 5500 5490 IF P3=2 THEN 5520 5500 PRINT "GIVE THE";M5;"EFFECTS FOR THE";J;"-WAY TABLE FOR THIS TERM." 5510 GO TO 5530 5520 PRINT "GIVE THE";M5;"COSTS FOR THE";J;",-WAY TABLE FOR THIS TERM" 5530 IF J=1 THEN 5550 5540 PRINT "VARY THE LEVELS OF THE FIRST VARIABLE MOST RAPIDLY, ETC." 5550 INPUT X(I%) FOR I%=1% TO M5 5560 FOR J1=1 TO M5 5570 GOSUB 4600 5580 LET Q(L,K)=X(J1) 5590 NEXT J1 5600 ! THIS IS THE WORKING PART OF THE SIMULATED LOOPS. 5610 LET Q2=J 5620 U(Q2)=U(Q2)+1 5630 IF U(Q2)<=M3 THEN 5200 5640 LET Q2=Q2-1 5650 IF Q2=0 THEN 5730 5660 LET U(Q2)=U(Q2)+1 5670 IF U(Q2)>M3 THEN 5640 5680 FOR J1=Q2+1 TO J 5690 U(J1)=U(J1-1)+1 5700 IF U(J1)>M3 THEN 5640 5710 NEXT J1 5720 GO TO 5200 5730 NEXT J 5740 ! END OF OUTER SIMULATED NESTED LOOPS. 5750 PRINT"VALUE OF CONSTANT TERM"; 5760 GOSUB 4600 5770 INPUT Q(L,K) 5780 IF P3=1 THEN 5800 5790 IF P3=2 THEN 6090 5800 PRINT "WHAT PERCENT OF THE RESULT DO YOU WANT ADDED AS A RANDOM"; 5810 PRINT " ERROR TERM"; 5820 GOSUB 4600 5830 INPUT Q(L,K) 5840 PRINT "GIVE LOWER AND UPPER CUT-OFFS ON RESULT" 5850 GOSUB 4600 5860 INPUT Q(L,K),J 5870 GOSUB 4600 5880 LET Q(L,K)=J 5890 NEXT I 5892 PRINT"HOW MANY DIGITS SHOULD BE PRINTED AFTER THE DECIMAL POINT"; 5894 GOSUB 4600 : INPUT Q(L,K) 5900 ! NOW HANDLE COSTS. 5910 LET D(1,9)=L+FNC(K) 5920 LET D(1,10)=FND(K) 5930 PRINT "NOW WE WILL DESCRIBE THE COSTS IN THE SAME WAY,"; 5940 PRINT"EXCEPT THAT" : PRINT"THERE IS EXACTLY ONE FUNCTION." 5950 PRINT "HOW MANY VARIABLES WILL HAVE COSTS"; 5960 INPUT P1 5970 IF P1<=M THEN 6000 5980 PRINT "THERE AREN'T THAT MANY. TRY AGAIN" 5990 GO TO 5950 6000 GOSUB 4600 6010 LET Q(L,K)=P1 6020 IF P1=0 THEN 7000 6030 PRINT "INDICATE WHICH";P1;"OF THE";M;"VARIABLES WILL"; 6040 PRINT " HAVE A COST BY A 1 CODE,";" AND CODE THE REST AS 0" 6050 LET P4=P1 6060 LET P5=M 6070 LET P3=2 6080 GO TO 4880 6090 GOSUB 4600 6100 LET Q(L,K)=1 6110 IF N(7)<>1 THEN 6160 6120 PRINT "IS THE MODEL TO SUPPLY STATISTICS TO WESS (Y/N)"; 6130 INPUT Z$ 6140 IF Z$<>"Y" THEN 6160 6150 LET Q(L,K)=0 6160 GO TO 7000 6170 GO TO 9999 7000 K(1)=K : L(1)=L : S$=SYS(CHR$(7%)) 7010 S$=SYS(CHR$(8%)+S$+"!3870") 7015 CLOSE 1%,2% 7017 PRINT"." : PRINT 7020 CHAIN"WESPT1"10 9999 END