Listing of file='FCST124A' on disk='vmedia/701-2663.wvd.zip'
# Sector 156, program filename = 'FCST124A'
0010 REM FCST124A, RELEASE 1-0, (05/24/79), THIS PROGRAM IS A COPYRIGHT PRODUC
T OF WANG LABORATORIES., UNAUTHORIZED REPRODUCTION OR USE IS PROHIBITED,
SIMULATOR DATA ENTRY II
4000 DIM K$(1)2,K4$9,K1$(44)5,B7$(1)8,F8$1,B8$14
: GOTO 5380
4020 IF Q6$<>HEX(1F)THEN RETURN
: PRINT AT(1,0,80);HEX(07);"THE PROGRAM WILL BE TERMINATED"
: GOSUB '31
4045 DEFFN'101(Q$(1),Q$(2),Q3,Q4,Q6$,Q9)
: PRINT AT(1,0,80);"ENTER ";Q6$
: GOSUB '100(Q$(1),Q$(2),Q3,Q4," ",0)
: GOSUB 4020
: RETURN
4080 CONVERT K8TO Q$(2),(##)
: GOSUB '100("0",Q$(2),2,0,"ENTER ITEM NUMBER IN ERROR (0=END)",1)
: GOSUB 4020
: RETURN
4110 GOSUB '101("0","999999",6,1,"DESEASONALIZED DEMAND",D)
: D=Q9
4120 PRINT AT(5,0,64);"1. DESEASONALIZED DEMAND =";D
: RETURN
4140 GOSUB '101("0","999999",6,1,"SAFETY FACTOR",D0)
: D0=Q9
4150 PRINT AT(6,0,64);"2. SAFETY FACTOR =";D0
: RETURN
4170 GOSUB '101("0","999999.9",6,1,"MEAN ABSOLUTE DEVIATION",G2)
: G2=Q9
4180 PRINT AT(7,0,64);"3. MEAN ABSOLUTE DEVIATION =";G2
: RETURN
4200 GOSUB '101("-999999.9","999999.9",6,1,"MEAN SIGNED DEVIATION",G1)
: G1=Q9
4210 PRINT AT(8,0,64);"4. MEAN SIGNED DEVIATION =";G1
: RETURN
4230 GOSUB '101("-999999.9","999999.9",6,1,"VARIABLE TREND",G)
: G=Q9
4240 PRINT AT(9,0,64);"5. VARIABLE TREND =";G
: RETURN
4260 GOSUB '101("-99.9","99.9",2,1,"TREND PERCENT",D1*100)
: D1=.01*Q9
4270 PRINT AT(10,0,64);"6. TREND PERCENT =";100*D1;"%"
: RETURN
4290 CONVERT PTO Q$(2),(##)
: GOSUB '101("-2",Q$(2),2,0,"LAST PERIOD PROCESSED",C0)
: C0=Q9
4305 PRINT AT(11,0,64);"7. LAST PERIOD PROCESSED =";C0
: RETURN
4325 DEFFN'36(F8$)
: B7$(1)=HEX(8040201008040201)
: INIT(F8$)STR(Q6$,1,8)
: AND (B7$(1),Q6$)
: Q6$=HEX(3180314031203110310831043102310130002020)
: $TRAN(B7$(1),Q6$)R
: RETURN
4365 DEFFN'37(B8$,F8$)
: PRINT AT(1,0,80);"ENTER INITIAL ";B8$;" HISTORY"
: GOSUB '36(F8$)
: Q6$=B7$(1)
: GOSUB '100(" ","2",8,0," ",3)
: GOSUB 4020
: B7$(1)=Q6$
: INIT(FE)Q6$
: AND (Q6$,B7$(1))
: IF STR(Q6$,1,8)="00000000"THEN 4425
: PRINT AT(3,0,80);HEX(07);"RE-ENTER"
: GOTO 4365
4425 MAT REDIM B7$(8)1
: Q9=1
: O6=0
: FOR K=8TO 1STEP -1
: IF B7$(K)="1"THEN O6=O6+Q9
: Q9=Q9*2
: NEXT K
: BIN(F8$)=O6
: MAT REDIM B7$(1)8
: RETURN
4485 GOSUB '37("DEMAND FILTER",A1$)
: A1$=F8$
4495 GOSUB '36(A1$)
: PRINT AT(12,0,0);"8. DEMAND FILTER HISTORY = ";B7$(1)
: RETURN
4520 GOSUB '37("VARIABLE TREND",A0$)
: A0$=F8$
4530 GOSUB '36(A0$)
: PRINT AT(13,0,0);"9. VARIABLE TREND HISTORY = ";B7$(1)
: RETURN
4555 GOSUB '101("0","999999",6,0,"ON HAND",B0)
: B0=Q9
4565 PRINT AT(14,0,64);"10. ON HAND =";B0
: RETURN
4585 GOSUB '101("0","999999",6,0,"ON ORDER",B1)
: B1=Q9
4595 PRINT AT(15,0,0);"11. ON ORDER =";B1;TAB(63);HEX(0D)
: RETURN
4615 Q6$=K5$
: GOSUB '100(" "," ",30,0,"ENTER TITLE",3)
: K5$=Q6$
: GOSUB 4020
4635 PRINT AT(5,0,64);"1. SIMULATION TITLE = ";K5$
: RETURN
4655 IF M6$="D"THEN Q$(1)="0"
: ELSE Q$(1)="1"
: GOSUB '101(Q$(1),"44",2,0,"NUMBER OF PERIODS OF DATA",K3)
: K3=Q9
4670 PRINT AT(6,0,64)
: IF M6$="R"THEN K3=K3+1-SGN(K3)
: PRINT "2. NUMBER OF PERIODS OF DATA =";K3
: RETURN
4700 PRINT AT(1,0,80);"ENTER START DATE OF SIMULATION (PP/";
: IF P$="D"THEN Q6$="DD/YY)"
: ELSE Q6$="W/D/YY)"
: PRINT Q6$
: IF P$="D"THEN L9=7
: ELSE L9=8
: Q6$=K1$
: GOSUB '100(" "," ",L9+1,0," ",3)
: K1$=Q6$
: GOSUB 4020
: IF NUM(Q6$)=0THEN 4930
: IF POS(Q6$="/")-1<>NUM(Q6$)THEN 4930
: CONVERT STR(Q6$,1,NUM(Q6$))TO L6
: IF L6<1THEN 4930
: IF P<L6THEN 4930
4770 STR(Q6$,1)=STR(Q6$,POS(Q6$="/")+1)
: IF NUM(Q6$)=0THEN 4930
: IF POS(Q6$="/")-1<>NUM(Q6$)THEN 4930
: CONVERT STR(Q6$,1,NUM(Q6$))TO L7
: IF P$="D"THEN 4835
: STR(Q6$,1)=STR(Q6$,POS(Q6$="/")+1)
: IF NUM(Q6$)=0THEN 4930
: IF POS(Q6$="/")-1<>NUM(Q6$)THEN 4930
: CONVERT STR(Q6$,1,NUM(Q6$))TO L8
: IF L8<1THEN 4930
: IF 7<L8THEN 4930
: L7=(L7-1)*7+L8
4835 IF L7<1THEN 4930
: IF P(L6)<L7THEN 4930
: STR(Q6$,1)=STR(Q6$,POS(Q6$="/")+1)
: IF NUM(Q6$)<>80THEN 4930
: CONVERT Q6$TO L8
: IF (99-L8)*L8<0THEN 4930
: K1$=" / ///"
: CONVERT L6TO STR(K1$,1,2),(##)
: IF P$="D"THEN 4905
: CONVERT INT((L7+6)/7)TO STR(K1$,4,1),(#)
: CONVERT L7-(INT((L7+6)/7)-1)*7TO STR(K1$,6,1),(#)
: GOTO 4910
4905 CONVERT L7TO STR(K1$,4,2),(##)
4910 CONVERT L8TO STR(K1$,L9),(##)
4915 PRINT AT(7,0,64);"3. STARTING DATE OF SIMULATION = ";K1$
: RETURN
4930 PRINT AT(3,0,80);HEX(07);"IMPROPER DATE FORMAT"
: GOTO 4700
4950 IF K4$="YES"THEN K4$="NO"
: ELSE K4$="YES"
4955 PRINT AT(8,0,64);"4. MACHINE GENERATION OF SALES DATA = ";K4$
: RETURN
4975 CONVERT C3TO Q$(2),(###)
: GOSUB '101("1",Q$(2),3,0,"MEAN LEAD TIME",K1)
: K1=Q9
4990 PRINT AT(9,0,64);"5. MEAN LEAD TIME =";K1;"DAYS"
: RETURN
5010 CONVERT K1TO Q$(2),(###)
: GOSUB '101("0",Q$(2),2,1,"LEAD TIME DEVIATION",K2)
: K2=Q9
5025 PRINT AT(10,0,64);"6. LEAD TIME DEVIATION =";K2;"DAYS"
: RETURN
5045 IF K2$(1)="Y"THEN K2$(1)="N"
: ELSE K2$(1)="Y"
5050 PRINT AT(11,0,64);"7. OUTPUT TYPE = ";
: IF K2$(1)="N"THEN PRINT "HARDCOPY"
: ELSE PRINT "CRT"
: RETURN
5075 GOSUB '101("0","39",2,0,"NUMBER OF PROJECTION PERIODS",K9)
: K9=Q9
5085 PRINT AT(9,0,64);"5. NUMBER OF PROJECTION PERIODS =";K9
: RETURN
5105 CONVERT K9$TO Q9
: Q6$=K9$
: GOSUB '100("0100","1399",4,0,"ENTER START OF PROJECTION (PPYY)",-1)
: GOSUB 4020
: CONVERT Q9TO K9$,(####)
: CONVERT STR(K9$,1,2)TO Q9
: IF INT((Q9-1)/P)=0THEN 5150
: PRINT AT(3,0,64);HEX(07);"IMPROPER DATE FORMAT"
: GOTO 5105
5150 PRINT AT(10,0,64);"6. STARTING PERIOD OF PROJECTION (PPYY) = ";K9$
: RETURN
5170 GOSUB '101("0","9999999",7,0,"TARGET SALES (0=NO TARGET)",I9)
: I9=Q9
5180 PRINT AT(11,0,64);"7. TARGET SALES = ";I9
: RETURN
5200 Q6$=C0$
: GOSUB '100(" "," ",20,0,"ENTER SCALE",3)
: GOSUB 4020
: C0$=Q6$
5220 PRINT AT(12,0,64);"8. SCALE = ";C0$
: RETURN
5240 Q6$=K2$(2)
: GOSUB '100("0","3",1,0,"ENTER GRAPH TYPE (0=NONE 1=SEASONAL 2=DESEASONALI
ZED 3=BOTH 1 + 2)",3)
: GOSUB 4020
: K2$(2)=Q6$
5260 PRINT AT(13,0,64);"9. GRAPH TYPE = ";
: IF K2$(2)="0"THEN PRINT "NONE"
: IF K2$(2)="1"THEN PRINT "SEASONAL"
: IF K2$(2)="2"THEN PRINT "DESEASONALIZED"
: IF K2$(2)="3"THEN PRINT "BOTH SEASONAL AND DESEASONALIZED"
: RETURN
5300 PRINT AT(1,0,80);"ENTER SALES DATA FOR ";K1$(K)
: Q9=K(K)
: GOSUB '100("0","999999",6,0," ",0)
: GOSUB 4020
: K(K)=Q9
5325 K0=INT((K-1)/11)
: PRINT AT(K-K0*11+4,K0*16,16);K1$(K);K(K);
: RETURN
5380 SELECT CO 005(64),PRINT 005(64)
: IF S0$<>" "THEN SELECT @PARTS0$
: PRINT AT(1,0,);HEX(0A0A0A);TAB(17);"* * * INITIAL VALUES * * *"
: K8=11
: IF M6$="R"THEN 5420
: K8=9
5420 FOR K=1TO K8
: ON KGOSUB 4120,4150,4180,4210,4240,4270,4305,4495,4530,4565,4595
: NEXT K
5435 GOSUB 4080
: IF Q9=0THEN 5465
: ON Q9GOSUB 4110,4140,4170,4200,4230,4260,4290,4485,4520,4555,4585
: GOTO 5435
5465 PRINT AT(1,0,);HEX(0A0A0A);TAB(12);"* * * SIMULATION PARAMETERS * * *
"
: K4$="NO"
: IF K2$="SIMULATOR"THEN 5530
: IF A6$()<>" "THEN 5530
: K4$="YES"
: K1=-INT(-C3*.88)
: K8=0
5505 K8=K8+1
: IF K1>=B1(1,K8)THEN 5505
: K2=INT(K1*B1(2,K8)+.5)
5530 IF M6$="D"THEN 5585
: K8=7
: FOR K=1TO K8
: ON KGOSUB 4635,4670,4915,4955,4990,5025,5050
: NEXT K
5555 GOSUB 4080
: IF Q9=0THEN 5755
: ON Q9GOSUB 4615,4655,4700,4950,4975,5010,5045
: GOTO 5555
5585 K8=9
: FOR K=1TO K8
: ON KGOSUB 4635,4670,4915,4955,5085,5150,5180,5220,5260
: NEXT K
5605 GOSUB 4080
: IF Q9=0THEN 5635
: ON Q9GOSUB 4615,4655,4700,4950,5075,5105,5170,5200,5240
: GOTO 5605
5635 IF K9=0THEN 5755
: IF K3=0THEN 6065
: CONVERT STR(K1$,1,2)TO K
: L7=7
: IF P$="D"THEN 5670
: L7=8
5670 CONVERT STR(K1$,L7,2)TO L6
: L8=L6*P+K
: CONVERT STR(K9$,1,2)TO K
: CONVERT STR(K9$,3,2)TO L6
: L9=L6*P+K-L8
: IF L9>=0THEN 5710
: PRINT AT(3,0,80);HEX(07);"PROJECTION START DATE MAY NOT PRECEDE DATA STAR
T DATE"
: GOTO 5605
5710 IF L9<=K3THEN 5725
: PRINT AT(3,0,80);HEX(07);"PROJECTION START DATE MAY NOT FOLLOW LAST DATA
PERIOD"
: GOTO 5605
5725 IF L9+K9<=60THEN 5755
: PRINT AT(3,0,80);HEX(07);"SALES HISTORY PLUS PROJECTION PERIOD TOO GREAT
FOR GRAPHING"
: GOTO 5605
5755 CONVERT STR(K1$,LEN(K1$)-1,2)TO O7
: CONVERT O7TO K$(1),(##)
: CONVERT STR(K1$,1,2)TO O6
: O6=O6-1
: FOR K=1TO 44
: O6=O6+1
: IF O6<=PTHEN 5805
: O6=1
: O7=O7+1
: CONVERT O7TO K$(1),(##)
5805 STR(K1$(K),1)=P$(O6)
: STR(K1$(K),4)=K$(1)
: NEXT K
: IF K4$="NO"THEN 5925
: A6=0
: CONVERT STR(K1$,1,2)TO O6
: FOR K=1TO K3
: O7=.5-RND(07)
: O7=1.25*O7*(.14822401/(.29670819-O7*O7)+.0014532591/(.2505217-07*07)+2.04
89)
: K(K)=INT((D+O7*D0)*B(O6)+.5)
: IF K(K)<0THEN K(K)=0
: O6=O6+1
: IF O6<=PTHEN 5880
: O6=1
5880 IF K(K)<1E6THEN 5895
: A6=1
: K=K3
5895 NEXT K
: IF A6=0THEN 5935
: PRINT AT(3,0,80);HEX(07);"EXCESSIVE SALES WERE GENERATED - REDUCE DEMAND
OR SAFETY FACTOR"
: GOSUB '254
: GOTO 5380
5925 IF A6$()<>" "THEN 5935
: IF K2$<>"SIMULATOR"THEN 5970
5935 PRINT AT(1,0,);HEX(0A0A0A);TAB(18);"* * * SALES DATA * * *"
: FOR K=1TO K3
: GOSUB 5325
: PRINT HEX(01)
: NEXT K
: GOTO 5995
5970 PRINT AT(1,0,);HEX(0A0A0A);TAB(18);"* * * SALES DATA * * *"
5975 FOR K=1TO K3
: GOSUB 5300
: NEXT K
5995 Q6$="0"
: GOSUB '100(" "," ",5,0,"ENTER NAME OF PERIOD TO CORRECT (1=ALL 0=END)",
3)
: GOSUB 4020
: IF Q6$="0"THEN 6065
: IF Q6$="1"THEN 5975
: MAT SEARCHK1$()<1,K3*5>,=Q6$TO K$()STEP 5
: IF K$(1)<>HEX(0000)THEN 6040
: PRINT AT(3,0,80);HEX(07);"RE-ENTER"
: GOTO 5995
6040 K=(VAL(STR(K$(1),2,1))+4)/5
: GOSUB 5300
: GOTO 5995
6065 $PACK(F=HEX(610461046104510451045303500260046004A001A001))A6$()FROMD,D0,G
2,G1,G,D1,C0,B0,B1,A1$,A0$
: PRINT AT(1,0,)
: IF M6$="R"AND K2$(1)="Y"THEN 6105
: GOSUB '93(" ")
: IF I0$=" "THEN LOAD TM5$
6105 IF M6$="R"THEN Q6$="FCST126A"
: ELSE Q6$="FCST128A"
: LOAD TQ6$3940,8999BEG 4000
9998 DEFFN'29"Q$=";HEX(22);"FCST124A";HEX(22);":SCRATCH TQ$:SAVET$()Q$";HEX(0D
)