image of READY prompt

Wang2200.org

Listing of file='INVT010A' on disk='vmedia/701-2616C.wvd.zip'

# Sector 93, program filename = 'INVT010A'
0010 REM INVT010A, RELEASE 2.2, (09/11/80) THIS PROGRAM IS A COPYRIGHT PRODUCT
      OF WANG LABORATORIES INC. UNAUTHORIZED REPRODUCTION OR USE IS PROHIBITED
0020 REM ---------------------------------------------------------------------
     -
0030 REM SYSTEM & MODULE   =  GBS/MVP INVENTORY SYSTEM, PRINT/DISPLAY INVENTOR
     Y
0040 REM PROGRAM FUNCTION  =  DISPLAY AND/OR PRINT THE INVENTORY MASTER FILE
0050 REM DATE WRITTEN      =  03/08/79 MK
0060 REM LAST REVISION     =  09/11/80 TM
0065 REM THIS PROGRAM WAS UPGRADED TO 2.2 BY ERRATA 1159
0070 REM ---------------------------------------------------------------------
     -
0170     DIM A6$1,B6$1,C6$1,D6$8,D9$25
0172     DIM K$1,K1$Q0,K2$Q0,K3$32
0174     DIM K(6),K1(6)
0198     GOTO 4000
3990 REM
3996 REM **************************************
3997 REM ! INVENTORY MASTER FILE INQUIRY/LIST !
3998 REM **************************************
3999 REM
4000     SELECT @PART S0$
4010 REM %PROGRAM CONSTANTS
4020     K2$=ALL(FF)
4030     A6$,Q$=" "
4040     B6$="Y"
4050     K,P1=0
4060     L=L0
4070     MAT K=ZER
4080     MAT K1=ZER
4090 REM %ACQUIRE REPORT OPTIONS
4100     GOSUB '100("N,Y","NnYyY ",1,1,"PRINT REPORT  (Y OR N)",2)
4110     IF Q6$=HEX(1F) THEN GOSUB '31
4120     A6$=Q6$
   : REM SAVE 'PRINT' SWITCH
4130     IF A6$="Y" THEN 4160
4140     $CLOSE
   : REM RELEASE PRINTER
4150     GOTO 4240
4160     GOSUB '93(" ")
   : REM IS PRINTER AVAILABLE?
4170     IF I0$=" "THEN A6$="N"
   : REM DID WE GET THE PRINTER?
4180 REM %SCREEN DISPLAY?
4190     GOSUB '100("N,Y","NnYyY ",1,1,"SCREEN DISPLAY (Y OR N)",2)
4200     IF Q6$=HEX(1F) THEN GOSUB '31
4210     B6$=Q6$
   : REM SAVE 'DISPLAY' SWITCH
4220     IF B6$="N" AND A6$="N" THEN 5400
   : REM NO PRINT, NO DISPLAY?
4230 REM %CHOOSE REPORT TYPE
4240     PRINT AT(5,0,);TAB(16);"A = Full report"
4250     PRINT TAB(16);"B = Price list"
4260     PRINT TAB(16);"C = Sales analysis"
4270     GOSUB '100("A,B,C","AaBbCc",1,1,"ENTER REPORT TYPE",2)
4280     IF Q6$=HEX(1F) THEN GOSUB '31
4290     C6$=Q6$
4292     Q6$="FULL REPORT   PRICE LIST    SALES ANALYSIS"
4294     K3$=STR(Q6$,Q9*14-13,14)
4300     PRINT AT(5,0,)
4310 REM %CHOOSE INQUIRY TYPE
4320     GOSUB '100("A,R,I","AaIiRr",1,1,"ENTER INQUIRY TYPE  (A=ALL, R=RANGE,
      I=INDIVIDUAL)",2)
4330     IF Q6$=HEX(1F) THEN GOSUB '31
4340     K$=Q6$
4350     Q6$="ALL       RANGE     INDIVIDUAL"
4360     K3$=K3$&", "&STR(Q6$,Q9*10-9,10)
4370     K3$=K3$&" OPTION"
   : REM INITIALIZE OPTION CAPTION
4380     ON Q9GOTO ,4540,4450
   : REM BRANCH BASED ON INQUIRY TYPE
4390 REM %ALL OPTION
4400     GOSUB '235(1,0)
   : REM ALL OPTION => FIND FIRST
4410     GOSUB '91
4420     ON J0+1 GOTO 4690,,,,,,,4000
4430     GOTO 5460
4440 REM %INDIVIDUAL OPTION
4450     GOSUB '34(HEX(08))
   : REM ACQUIRE PRODUCT ID
4460     IF Q6$="END"THEN 5270
4470     K1$,K2$=Q6$
4480     GOSUB '232(1,0,K1$)
   : REM INDIVIDUAL OPTION => FIND OLD
4490     GOSUB '91
   : REM KFAM ERROR PROCESSING
4500     ON J0+1 GOTO 4690,,,4450,,,,4450
4510     GOTO 5460
4520 REM %RANGE OPTION
4530     PRINT AT(3,0,80);"Starting ID must be lower than Ending ID.";HEX(07)
4540     K,P1=0
4550     MAT K=ZER
4560     GOSUB '34("STARTING")
   : REM ACQUIRE STARTING PRODUCT ID
4570     IF Q6$="END"THEN 5270
4580     L=L0
4590     K1$=Q6$
4600     GOSUB '34("ENDING")
   : REM ACQUIRE ENDING PRODUCT ID
4610     K2$=HEX(FF)
4620     IF Q6$<>"END"THEN K2$=Q6$
4630     IF K1$>K2$ THEN 4530
   : REM STARTING ID > ENDING ID ?
4640     GOSUB '232(1,0,K1$)
   : REM RANGE OPTION => STARTING POSITION
4650     J$(3)=" "
4660     GOSUB '91
4670     ON J0 GOTO ,,5020,,,,4000
4680     IF J0>0 THEN 5460
4690     GOSUB '52(2)
   : REM READ PRODUCT RECORD
4700     IF F1$>K2$THEN 4970
   : REM INVALID RANGE VALUES RANGE CHECK
4710 REM %CONVERT DATES
4720     K=K+1
   : REM INCREMENT NO. OF RECORDS - RANGE
4730     GOSUB '123(H0)
   : REM CONVERT DATE (TO GREGORIAN)
4740     D6$=U9$
4750     IF MAX(H1())>0 THEN $PACK(D=HEX(002F))D9$FROMH1()
   : ELSE D9$=" "
4760 REM ACCUMULATE TOTALS
4770     IF C6$<>"C"THEN 4920
4780     K(1)=K(1)+H
4790     K(2)=K(2)+H1
4800     K(3)=K(3)+F3
4810     K(4)=K(4)+H+H2
4820     K(5)=K(5)+H1+H4
4830     K(6)=K(6)+F3+H3
4840     K1(1)=K1(1)+H
4850     K1(2)=K1(2)+H1
4860     K1(3)=K1(3)+F3
4870     K1(4)=K1(4)+H+H2
4880     K1(5)=K1(5)+H1+H4
4890     K1(6)=K1(6)+F3+H3
4900     GOSUB '39(H1,F3,H1+H4,F3+H3)
4910 REM %DISPLAY/PRINT
4920     PRINT AT(5,0,)
4930     IF B6$="Y"THEN ON VAL(C6$)-64 GOSUB 6560,6330,7030
   : ELSE PRINT "Processing product ID ";STR(F1$)
4940     IF A6$="Y"THEN GOSUB '90
4950     IF A6$="Y"THEN ON VAL(C6$)-64 GOSUB 7490,7290,8030
4960     SELECT PRINT 005(80)
4970     IF K$="I"THEN 4450
   : REM GET ANOTHER INDIVIDUAL RECORD?
4980     IF F1$>=K2$THEN 5100
   : REM END OF RANGE?
4990     IF B6$="Y"THEN GOSUB '254
   : REM PAUSE AFTER EACH SCREEN
5000     IF Q6$=HEX(1F)THEN GOSUB '31
5010 REM %PROCESS NEXT RECORD
5020     IF J0=7 THEN GOSUB '92
5030     GOSUB '237(1,0)
   : REM ALL/RANGE OPTIONS => FIND NEXT
5040     IF Q$="E" THEN 5100
5050     IF Q$=" " THEN 4690
5060     GOSUB '91
5070     IF J0=7THEN 5020
5080     GOTO 5460
   : REM FATAL KFAM ERROR
5090 REM %PRINT TOTALS
5100     IF A6$="N"AND K$="R"THEN 4540
   : REM ANOTHER RANGE?
5110     IF A6$="N"OR K$<>"R"THEN 5270
   : REM PRINT RANGE TOTALS?
5120     L=L+2
5130     GOSUB '90
5140     IF C6$<>"C"THEN 5220
5150     L=L+2
5160     GOSUB '90
5170     PRINT HEX(0A)
5180     F1$=" "
5190     F2$="RANGE TOTAL"
5200     GOSUB '39(K(2),K(3),K(5),K(6))
5210     GOSUB '38(K(1),K(2),K(3),K(4),K(5),K(6))
5220     PRINT HEX(0A)
5230     IF K>0 THEN PRINT "NO. OF RECORDS PROCESSED = ";K
5240     SELECT PRINT 005(80)
5250     GOTO 4540
5260 REM %FINAL TOTALS
5270     IF A6$="N" THEN 5400
5280     SELECT PRINT <I0$>(132)
5290     IF C6$<>"C"THEN 5380
5300     L=L+3
5310     GOSUB '90
5320     PRINT HEX(0A)
5330     F1$=" "
5340     F2$="FINAL TOTAL"
5350     GOSUB '39(K1(2),K1(3),K1(5),K1(6))
5360     GOSUB '38(K1(1),K1(2),K1(3),K1(4),K1(5),K1(6))
5370     PRINT HEX(0A)
5380     PRINT HEX(0C)
5390 REM %RESTART/MENU
5400     SELECT PRINT 005(80)
5410     PRINT AT(1,0,)
5420     GOSUB '100("M,R","MmRr",1,1,"ENTER R TO RESTART, M FOR MENU",2)
5430     IF Q6$="R"THEN 4000
5440     J0=0
5450 REM %END OF PROGRAM
5460     DEFFN'31
5470     IF J0>0 THEN GOSUB '254
5480     LOAD TM$
6000 REM %^SUBROUTINES
6010 REM %PAGE EJECT
6020     DEFFN'90
6030     Q6$=" "
6040     KEYIN Q6$,6050,6050
   : REM OPERATOR INTERRUPT CHECK
6050     IF Q6$="P" THEN GOSUB '254
6060     IF Q6$=HEX(1F) THEN GOSUB '31
6070     SELECT PRINT <I0$>(132)
6080     Q9=0
6090     IF C6$="A" THEN Q9=6
6100     IF L<L0-Q9THEN RETURN
   : REM LINE COUNT CHECK
6110     P1=P1+1
6120     PRINT HEX(0C0A0E);TAB(3);N2$
   : REM COMPANY NAME
6130     PRINT K3$;TAB(55);"INVENTORY MASTER FILE";TAB(110);Q1$;TAB(122);"PAGE
      ";P1
6140     PRINT HEX(0A)
6150     L=4
6160     RETURN
6170 REM %ACQUIRE PRODUCT ID
6180     DEFFN'34(Q7$)
6190     IF B6$="N" THEN PRINT AT(5,0,80)
6200     PRINT AT(1,0,80);"ENTER ";Q7$;" PRODUCT ID (OR END)"
6210     GOSUB '100(" ",HEX(7F),Q0,0," ",2)
6220     IF Q6$=HEX(1F) THEN GOSUB '31
6230     IF Q6$="end" THEN Q6$="END"
6240     IF Q6$="END"THEN RETURN
6250     GOSUB '96(2)
   : REM CONSTRUCT PRODUCT ID
6260     RETURN
6270    %###,###.##-
6280    %##,###,###-
6290    %######.##-
6300    %####.##-
6310    %####.####
6320 REM %SCREEN DISPLAY => PRICE LIST
6330     Q6=2
   : REM START POSITION - COLUMN 1 LABELS
6340     Q7=25
   : REM START POSITION - COLUMN 1 DATA
6350     Q8=41
   : REM START POSITION - COLUMN 2 LABELS
6360     Q9=62
   : REM START POSITION - COLUMN 2 DATA
6370     PRINT TAB(Q6);"PRODUCT ID";TAB(Q7-2);F1$
6380     PRINT TAB(Q6);"DESCRIPTION";TAB(Q7-2);F2$
6390     PRINT HEX(0A)
6400     PRINT TAB(Q6);"UNIT OF MEASURE";TAB(Q7+8);F3$;TAB(Q8);"ON HAND";TAB(Q
     9);
6410     PRINTUSING 6280,E
6420     PRINT TAB(Q6);"LAST ACTIVITY";TAB(Q7+2);D6$;TAB(Q8);"AVERAGE COST";TA
     B(Q9);
6430     PRINTUSING 6270,F
6440     PRINT TAB(Q6);"PRICE 1";TAB(Q7);
6450     PRINTUSING 6270,H(1);
6460     PRINT TAB(Q8);"LAST COST";TAB(Q9);
6470     PRINTUSING 6270,F1
6480     PRINT TAB(Q6);"PRICE 2";TAB(Q7);
6490     PRINTUSING 6270,H(2);
6500     PRINT TAB(Q8);"TOTAL COST";TAB(Q9);
6510     PRINTUSING 6270,ROUND((F*E,2)
6520     PRINT TAB(Q6);"PRICE 3";TAB(Q7);
6530     PRINTUSING 6270,H(3)
6532     PRINT TAB(Q6);"PRICE 4";TAB(Q7);
6534     PRINTUSING 6270,H(4)
6536     PRINT TAB(Q6);"PRICE 5";TAB(Q7);
6538     PRINTUSING 6270,H(5)
6540     RETURN
6550 REM %SCREEN DISPLAY => FULL PRINT
6560     Q6=2
   : REM START POSITION - COLUMN 1 LABELS
6570     Q7=25
   : REM START POSITION - COLUMN 1 DATA
6580     Q8=41
   : REM START POSITION - COLUMN 2 LABELS
6590     Q9=62
   : REM START POSITION - COLUMN 2 DATA
6600     PRINT TAB(Q6);"PRODUCT ID";TAB(Q7-2);F1$
6610     PRINT TAB(Q6);"DESCRIPTION";TAB(Q7-2);F2$
6620     PRINT TAB(Q6);"ALTERNATE ID";TAB(Q7-2);G3$
6630     IF D9$>" " THEN PRINT TAB(Q6);"PRICE BREAKS";TAB(Q7-2);D9$
6640     PRINT TAB(Q6);"LOC CODE";TAB(Q7-2);I5$;TAB(Q8);"WEIGHT";TAB(Q9+3);
6650     PRINTUSING 6310,H5
6660     PRINT TAB(Q6);"PREFIX";TAB(Q7-2);F$;TAB(Q8);"AVERAGE COST";TAB(Q9);
6670     PRINTUSING 6270,F
6680     PRINT TAB(Q6);"UNIT OF MEASURE";TAB(Q7+8);F3$;TAB(Q8);"LAST COST";TAB
     (Q9);
6690     PRINTUSING 6270,F1
6700     PRINT TAB(Q6);"LAST ACTIVITY";TAB(Q7+2);D6$;TAB(Q8);"PRICE 1";TAB(Q9)
     ;
6710     PRINTUSING 6270,H(1)
6720     PRINT TAB(Q6);"VENDOR ID";TAB(Q7+5);G2$;TAB(Q8);"PRICE 2";TAB(Q9);
6730     PRINTUSING 6270,H(2)
6740     PRINT TAB(Q6);"ON HAND";TAB(Q7);
6750     PRINTUSING 6280,E;
6760     PRINT TAB(Q8);"PRICE 3";TAB(Q9);
6770     PRINTUSING 6270,H(3)
6780     PRINT TAB(Q6);"PACK SIZE";TAB(Q7);
6790     PRINTUSING 6280,B4;
6800     PRINT TAB(Q8);"PRICE 4";TAB(Q9);
6810     PRINTUSING 6270,H(4)
6820     PRINT TAB(Q6);"ITEM MINIMUM ORDER";TAB(Q7);
6830     PRINTUSING 6280,B5;
6840     PRINT TAB(Q8);"PRICE 5";TAB(Q9);
6850     PRINTUSING 6270,H(5)
6860     PRINT TAB(Q6);"MINIMUM";TAB(Q7);
6870     PRINTUSING 6280,E4;
6880     PRINT TAB(Q8);"QUANTITY ALLOCATED";TAB(Q9);
6890     PRINTUSING 6280,E3
6900     PRINT TAB(Q6);"MAXIMUM";TAB(Q7);
6910     PRINTUSING 6280,E5;
6920     PRINT TAB(Q8);"QUANTITY BACKORDERED";TAB(Q9);
6930     PRINTUSING 6280,E2
6940     PRINT TAB(Q6);"COUNTING CYCLE";TAB(Q7+9);H5$;
6950     PRINT TAB(Q8);"QUANTITY ON ORDER";TAB(Q9);
6960     PRINTUSING 6280,E1
6970     PRINT TAB(Q6);"ON HAND - PHYSICAL";TAB(Q7);
6980     PRINTUSING 6280,F5;
6990     PRINT TAB(Q8);"PHYSICAL COUNT";TAB(Q9);
7000     PRINTUSING 6280,E0
7010     RETURN
7020 REM %SCREEN DISPLAY => SALES ANALYSIS
7030     Q6=2
   : REM START POSITION - COLUMN 1 LABELS
7040     Q7=16
   : REM START POSITION - ID,DESCRIPTION
7050     Q8=24
   : REM START POSITION - CURRENT MONTH
7060     Q9=43
   : REM START POSITION - YEAR-TO-DATE
7070     PRINT TAB(Q6);"PRODUCT ID";TAB(Q7);F1$
7080     PRINT TAB(Q6);"DESCRIPTION";TAB(Q7);F2$
7090     PRINT HEX(0A)
7100     PRINT TAB(Q8-3);"CURRENT MONTH";TAB(Q9-2);"YEAR TO DATE"
7110     PRINT "  UNITS SOLD";TAB(Q8);
7120     PRINTUSING 6280,H;
7130     PRINT TAB(Q9);
7140     PRINTUSING 6280,H2+H
7150     PRINT "  COST OF UNITS SOLD";TAB(Q8);
7160     PRINTUSING 6270,F3;
7170     PRINT TAB(Q9);
7180     PRINTUSING 6270,F3+H3
7190     PRINT "  SALES";TAB(Q8);
7200     PRINTUSING 6270,H1;
7210     PRINT TAB(Q9);
7220     PRINTUSING 6270,H4+H1
7230     PRINT "  MARGIN";TAB(Q8+3);
7240     PRINTUSING 6300,A6;
7250     PRINT TAB(Q9+3);
7260     PRINTUSING 6300,A7
7270     RETURN
7280 REM %HARDCOPY REPORT => PRICE LIST
7290     Q2=10
   : REM WIDTH OF COLUMN LISTING PRICES, COSTS
7300     Q3=0
   : REM STARTING POSITION - PRODUCT ID
7310     Q4=Q0+2
   : REM STARTING POSITION - DESCRIPTION
7320     Q5=39
   : REM STARTING POSITION - UNIT OF MEASURE
7330     Q6=45
   : REM STARTING POSITION - PRICE BREAKS
7340     Q8=72
   : REM USED WITH COLUMN WIDTH FOR POSITION OF PRICES, COSTS
7350     IF L<>4THEN 7400
7360     PRINT TAB(Q3);"PRODUCT ID";TAB(Q4);"DESCRIPTION";TAB(Q5);"U/M";TAB(Q6
     );"QUANTITY PRICE BREAKS";TAB(Q8+2);"PRICE 1";TAB(Q8+Q2+2);"PRICE 2";TAB(
     Q8+2*Q2+2);"PRICE 3";TAB(Q8+3*Q2+2);"PRICE 4";TAB(Q8+4*Q2+2);"PRICE 5"
7370     PRINT HEX(0A)
7380     L=L+2
7390 REM DETAIL LINE
7400     PRINT TAB(Q3);F1$;TAB(Q4);STR(F2$,,MIN(36-Q0,LEN(F2$)));TAB(Q5);F3$;T
     AB(Q6);D9$;TAB(Q8);
7410     FOR J=1 TO 5
7420        PRINT TAB(Q8+(J-1)*Q2);
7430        PRINTUSING 6290,H(J);
7440     NEXT J
7450     PRINT
7460     L=L+1
7470     RETURN
7480 REM %HARDCOPY REPORT => FULL PRINT
7490     Q2=0
   : REM START POSITION - COLUMN 1 LABEL
7500     Q3=14
   : REM START POSITION - COLUMN 1 DATA
7510     Q4=41
   : REM START POSITION - COLUMN 2 LABEL
7520     Q5=58
   : REM START POSITION - COLUMN 2 DATA
7530     Q6=75
   : REM START POSITION - COLUMN 3 LABEL
7540     Q7=90
   : REM START POSITION - COLUMN 3 DATA
7550     Q8=107
   : REM START POSITION - COLUMN 4 LABEL
7560     Q9=120
   : REM START POSITION - COLUMN 4 DATA
7570 REM LINE 1
7580     PRINT TAB(Q2);"PRODUCT ID";TAB(Q3);STR(F1$,,MIN(Q4-Q3-2,LEN(F1$)));TA
     B(Q4);"ON HAND";TAB(Q5);
7590     IF E<>0THEN PRINTUSING 6280,E;
7600     PRINT TAB(Q6);"MINIMUM";TAB(Q7);
7610     IF E4<>0THEN PRINTUSING 6280,E4;
7620     PRINT TAB(Q8);"PRICE 1";TAB(Q9);
7630     PRINTUSING 6270,H(1)
7640 REM LINE 2
7650     PRINT TAB(Q2);"DESCRIPTION";TAB(Q3);F2$;TAB(Q4);"BACKORDER";TAB(Q5);
7660     IF E2<>0THEN PRINTUSING 6280,E2;
7670     PRINT TAB(Q6);"MAXIMUM";TAB(Q7);
7680     IF E5<>0THEN PRINTUSING 6280,E5;
7690     PRINT TAB(Q8);"PRICE 2";TAB(Q9);
7700     PRINTUSING 6270,H(2)
7710 REM LINE 3
7720     PRINT TAB(Q2);"PRICE BREAKS";TAB(Q3);D9$;TAB(Q4);"ON ORDER";TAB(Q5);
7730     IF E1<>0THEN PRINTUSING 6280,E1;
7740     PRINT TAB(Q6);"PACK SIZE";TAB(Q7);
7750     IF B4<>0THEN PRINTUSING 6280,B4;
7760     PRINT TAB(Q8);"PRICE 3";TAB(Q9);
7770     PRINTUSING 6270,H(3)
7780 REM LINE 4
7790     PRINT TAB(Q2);"PREFIX/ALT ID";TAB(Q3);F$;TAB(Q3+12);G3$;TAB(Q4);"QTY
     ALLOCATED";TAB(Q5);
7800     IF E3<>0THEN PRINTUSING 6280,E3;
7810     PRINT TAB(Q6);"ITEM MIN ORDER";TAB(Q7);
7820     IF B5<>0 THEN PRINTUSING 6280,B5;
7830     PRINT TAB(Q8);"LAST ACTIVITY";TAB(Q9+2);D6$
7840 REM LINE 5
7850     PRINT TAB(Q2);"U/M";TAB(Q3);F3$;TAB(Q3+8);"WEIGHT";TAB(Q3+15);
7860     IF H5<>0THEN PRINTUSING 6310,H5;
7870     PRINT TAB(Q4);"PHYSICAL COUNT";TAB(Q5);
7880     IF E0<>0 THEN PRINTUSING 6280,E0;
7890     PRINT TAB(Q6);"LAST COST";TAB(Q7);
7900     IF F1<>0 THEN PRINTUSING 6270,F1;
7910     PRINT TAB(Q8);"LOCATION CODE";TAB(Q9+4);I5$
7920 REM LINE 6
7930     PRINT TAB(Q2);"VENDOR ID";TAB(Q3);G2$;
7940     PRINT TAB(Q4);"PHYSICAL ON HAND";TAB(Q5);
7950     IF F5<>0 THEN PRINTUSING 6280,F5;
7960     PRINT TAB(Q6);"AVERAGE COST";TAB(Q7);
7970     IF F<>0 THEN PRINTUSING 6270,F;
7980     PRINT TAB(Q8);"COUNTING CYCLE";TAB(Q9+4);H5$
7990     PRINT HEX(0A)
8000     L=L+7
8010     RETURN
8020 REM %HARDCOPY REPORT => SALES ANALYSIS
8030     GOSUB '38(H,H1,F3,H+H2,H1+H4,F3+H3)
8040     RETURN
8050     DEFFN'38(K1,K2,K3,K4,K5,K6)
8060     Q2=44
   : REM WIDTH OF CURRENT MONTH COLUMN
8070     Q4=0
   : REM STARTING POSITION - PRODUCT ID
8080     Q5=2+Q0
   : REM STARTING POSITION - DESCRIPTION
8090     Q6=40
   : REM STARTING POSITION - UNITS
8100     Q7=52
   : REM STARTING POSITION - SALES
8110     Q8=64
   : REM STARTING POSITION - COST
8120     Q9=75
   : REM STARTING POSITION - PROFIT MARGIN
8130     IF L<>4 THEN 8200
8140     Q6$=ALL("-")
8150     PRINT TAB(40);STR(Q6$,,13);" CURRENT MONTH ";STR(Q6$,,14);TAB(84);STR
     (Q6$,,14);" YEAR TO DATE ";STR(Q6$,,14)
8160     PRINT TAB(Q4);"PRODUCT ID";TAB(Q5);"DESCRIPTION";TAB(Q6+5);"UNITS";TA
     B(Q7+5);"SALES";TAB(Q8+6);"COST";TAB(Q9+1);"MARGIN";TAB(Q6+Q2+5);"UNITS";
     TAB(Q7+Q2+5);"SALES";TAB(Q8+Q2+6);"COST";TAB(Q9+Q2+1);"MARGIN"
8170     PRINT HEX(0A)
8180     L=L+3
8190 REM DETAIL LINE
8200     PRINT TAB(Q4);F1$;TAB(Q5);STR(F2$,,MIN(36-Q0,LEN(F2$)));TAB(Q6);
8210 REM CURRENT MONTH
8220     IF K1<>0 THEN PRINTUSING 6280,K1;
8230     PRINT TAB(Q7);
8240     IF K2<>0THEN PRINTUSING 6270,K2;
8250     PRINT TAB(Q8);
8260     IF K3<>0THEN PRINTUSING 6270,K3;
8270     PRINT TAB(Q9);
8280     IF A6<>0 THEN PRINTUSING 6300,A6;
8290 REM YEAR TO DATE
8300     PRINT TAB(Q6+Q2);
8310     IF K4<>0 THEN PRINTUSING 6280,K4;
8320     PRINT TAB(Q7+Q2);
8330     IF K5<>0 THEN PRINTUSING 6270,K5;
8340     PRINT TAB(Q8+Q2);
8350     IF K6<>0THEN PRINTUSING 6270,K6;
8360     PRINT TAB(Q9+Q2);
8370     IF A7<>0 THEN PRINTUSING 6300,A7;
8380     PRINT
8390     L=L+1
8400     RETURN
8410 REM %COMPUTE MARGINS
8420     DEFFN'39(K2,K3,K5,K6)
8430     A6,A7=0
8440     IF K3<>0THEN A6=ROUND((K2/K3*100-100,2)
8450     IF K6<>0THEN A7=ROUND((K5/K6*100-100,2)
8460     RETURN
9000 REM %^VARIABLES
9010 REM      A6 = CURR. MO. MARGIN
9020 REM    A6$1 = SWITCH FOR HARDCOPY REPORT (Y/N)
9030 REM      A7 = Y-T-D MARGIN
9040 REM    B6$1 = SWITCH FOR SCREEN DISPLAY (Y/N)
9050 REM    C6$1 = REPORT TYPE (A,B,C)
9060 REM   D6$25 = QUANTITY PRICE BREAKS
9070 REM    K(1) = CURR. MO. UNITS => RANGE TOTAL
9080 REM    K(2) = CURR. MO. SALES => RANGE TOTAL
9090 REM    K(3) = CURR. MO. COST  => RANGE TOTAL
9100 REM    K(4) = Y-T-D UNITS => RANGE TOTAL
9110 REM    K(5) = Y-T-D SALES => RANGE TOTAL
9120 REM    K(6) = Y-T-D COST  => RANGE TOTAL
9130 REM   K1(1) = CURR. MO. UNITS => TOTAL
9140 REM   K1(2) = CURR. MO. SALES => TOTAL
9150 REM   K1(3) = CURR. MO. COST  => TOTAL
9160 REM   K1(4) = Y-T-D UNITS => TOTAL
9170 REM   K1(5) = Y-T-D SALES => TOTAL
9180 REM   K1(6) = Y-T-D COST  => TOTAL
9190 REM      K0 = NO. OF RECORDS PROCESSED => FINAL
9200 REM       K = NO. OF RECORDS PROCESSED => RANGE
9210 REM      K1 = CURR. MO. UNITS => WORK
9220 REM      K2 = CURR. MO. SALES => WORK
9230 REM      K2 = CURR. MO. COST  => WORK
9240 REM      K4 = Y-T-D UNITS => WORK
9250 REM      K5 = Y-T-D SALES => WORK
9260 REM      K6 = Y-T-D COST  => WORK
9270 REM     K$1 = INQUIRY TYPE (A,R,I)
9280 REM   K1$Q0 = STARTING PRODUCT ID (RANGE OPTION)
9290 REM   K2$Q0 = ENDING PRODUCT ID (RANGE OPTION)
9300 REM   K3$17 = REPORT FIELD FOR INQUIRY TYPE
9310 REM $
9998 DEFFN'29"Q$=";HEX(22);"INVT010A";HEX(22);":SCRATCH TQ$:SAVET$()Q$";HEX(0D
     )
9999 DEFFN'30"DIM Z$57:IF STR(I0$,,1)=HEX(20)THENI0$=HEX(323135):Z$=";HEX(22);
     "GBS/MVP - Print/display the inventory master file.";HEX(22);":SELECT#15<
     I0$>:$OPEN#15:SELECTLIST<I0$>(132): LIST Z$:LIST Z$#:LIST Z$V:LIST Z$':$C
     LOSE#15:SELECTLIST005(80)";HEX(0D)