10  COM D$[45],R
20  COM A$[15]
30  H=0
40  REM  PROTOTYPE OF CUST. FILE FOR INVOICE SYSTEM....1/28/82...REA
45  REM  ARCUST
120  FILES *,*
130  DIM A$[72],B$[72],C$[72],D$[72],E$[72],F$[72],G$[72],H$[72],I$[72]
140  DIM J$[72],K$[72],L$[72],M$[72],N$[72],O$[72],P$[72],Q$[72],R$[72]
150  DIM S$[72],T$[72],U$[72],V$[72],W$[72],X$[72],Y$[72],Z$[72]
160  DIM A1$[72],M1$[72]
220  REM- *** MASTER CONTROL FOR CUSTOMER RECORD MAINTAINCE ***
230  PRINT "CUSTOMER RECORD FILE MAINTAINCE"
235  PRINT "================================"
236  PRINT LIN(2);"MENU"
237  PRINT "----"
240  PRINT 
250  PRINT "#1 : ADD CUSTOMER"
260  PRINT "#2 : DELETE CUSTOMER"
270  PRINT "#3 : LIST CUSTOMERS"
280  PRINT "#4 : SEARCH CUSTOMER"
290  PRINT "#5 : CHANGE RECORD"
300  PRINT "/=menu"
310  PRINT "/E=back-jump"
320  IF H=1 THEN 420
410  H=1
420  PRINT 
430  PRINT "COMMAND ";
440  INPUT X
450  GOTO X OF 470,1090,1560,2450,3900
460  GOTO 240
470  REM- *** ROUTINE TO ADD CUSTOMERS ***
480  IF  END #1 THEN 1070
490  READ #1,1;N
500  IF  END #1 THEN 1050
510  READ #1,N+2
520  PRINT "Customer # : ";
530  INPUT A$
540  IF A$="/" THEN 250
550  IF A$="/E" THEN 430
560  PRINT "Company Name : ";
570  INPUT B$
580  IF B$="/E" THEN 520
590  PRINT "Billing Address : "
600  LINPUT C$
610  IF C$="/E" THEN 560
620  PRINT "City, St. : ";
630  LINPUT D$
650  PRINT "Zip Code : ";
660  LINPUT E$
670  IF LEN(E$)#5 THEN 650
680  PRINT "Contact Name : ";
690  LINPUT F$
700  IF T$="/E" THEN 650
710  PRINT "Phone# (xxxxxxxxxx) : ";
770  LINPUT G$
775  IF LEN(G$)#10 THEN 680
780  IF S$="/E" THEN 680
781  PRINT "Products used : ";
782  H$=""
783  LINPUT H$
784  PRINT "Credit History : ";
785  I$=""
786  LINPUT I$
787  PRINT "Comments : ";
788  J$=""
789  LINPUT J$
790  IF N#0 THEN 820
800  R=2
810  GOTO 930
820  F=2
830  L=N+1
840  R=INT((F+L)/2)
850  READ #1,R;A$,B$,C$,D$,Z$,E$,F$,G$,H$,I$,J$
860  IF A$<A1$ THEN 960
870  IF A$>A1$ THEN 990
880  IF A$=A1$ THEN 4790
890  FOR I=N+1 TO R STEP -1
900  READ #1,I;A1$,B1$,C1$,D1$,E1$,F1$,G1$,H1$,I1$,J1$
910  PRINT #1,I+1;A1$,B1$,C1$,D1$,E1$,F1$,G1$,H1$,I1$,J1$
920  NEXT I
930  PRINT #1,R;A$,B$,C$,D$,E$,F$,G$,H$,I$,J$,
940  PRINT #1,1;N+1
950  GOTO 470
960  L=R
970  IF F#L THEN 840
980  GOTO 890
990  F=R
1000  IF L-F>1 THEN 840
1010  R=R+1
1020  IF L-F#1 THEN 890
1030  F=F+1
1040  GOTO 840
1050  PRINT "FILE FULL"
1060  GOTO 240
1070  N=0
1080  GOTO 510
1090  REM- *** ROUTINE TO DELETE A CUSTOMER RECORD ****
1100  PRINT "DELETE CUSTOMER"
1110  PRINT 
1120  PRINT "CUSTOMER # : ";
1130  INPUT Y$
1140  IF Y$="/" THEN 240
1180  IF  END #1 THEN 1520
1190  J=2
1200  IF  END #1 THEN 1260
1210  READ #1,J;A$,B$,C$,D$,E$,F$,G$,H$,I$,J$
1220  IF A$=Y$ THEN 1280
1240  J=J+1
1250  GOTO 1200
1260  PRINT "FIND NO RECORDS OF THIS DESCRIPTION; PLEASE CHECK INPUT."
1270  GOTO 1100
1300  PRINT 
1330  PRINT A$
1331  PRINT B$
1332  PRINT C$
1333  PRINT D$;E$
1340  PRINT 
1350  PRINT " IS THIS THE RECORD YOU WANTED TO DELETE (Y OR N)";
1360  INPUT Q$
1370  IF Q$="N" THEN 1100
1380  PRINT #1,J
1390  PRINT "FILE DELETED"
1400  REM***DECREMENT***
1410  READ #1,1;V
1420  V=V-1
1430  PRINT #1,1;V
1440  J=J+1
1450  IF  END #1 THEN 1540
1460  REM-***REPACK***
1470  READ #1,J;A$,B$,C$,D$,E$,F$,G$,H$,I$,J$
1480  IF  END #1 THEN 1540
1490  PRINT #1,J-1;A$,B$,C$,D$,E$,F$,G$,H$,I$,J$
1500  J=J+1
1510  GOTO 1450
1520  PRINT "NO RECORDS IN THIS FILE"
1530  GOTO 1100
1540  PRINT #1,J-1; END 
1550  GOTO 1100
1555  REM   *** LIST ROUTINE ***
1560  PRINT " DO YOU WANT THE OUTPUT ON THE LINEPRINTER";
1570  LINPUT L$
1580  IF L$[1,1]="Y" THEN 1610
1590  Z=0
1600  GOTO 1710
1610  PURGE R,"ASCBOB"
1620  SYSTEM X,"FILE-ASCBOB,LP0"
1630  GOTO 1650
1640  PRINT "THE LP IS BUSY... BREAK IF YOU DON'T WANT TO WAIT!"
1650  ASSIGN "ASCBOB",2,R
1660  IF R=8 THEN 1690
1670  IF R=6 THEN 1640
1680  PRINT "ASSIGNMENT OF LP FAILED!!";R
1690  Z=2
1700  PRINT "WAIT....FILE IS BEING PRINTED!!"
1710  REM- *** ROUTINE TO LIST INVENTORY ***
1720  PRINT #Z;"                  *****************************"
1730  PRINT #Z;"                  *    CRISIS COMPUTER CORP   *"
1740  PRINT #Z;"                  *         CUSTOMER         *"
1750  PRINT #Z;"                  *           LIST            *"
1760  PRINT #Z;"                  *****************************"
1770  PRINT #Z
1790  PRINT #Z;LIN(3)
1800  D$="WDMYTPN"
1810  GOSUB 7280
1820  PRINT #Z;D$
1830  PRINT #Z;LIN(3)
1840  K=2
1850  PRINT #Z; USING 2570
1860  PRINT #Z; USING 2580
1870  PRINT #Z
1900  IF  END #1 THEN 2180
1910  READ #1,K;A$,B$,C$,D$,E$,F$,G$,H$,I$,J$
1920  K=K+1
1940  READ #1,K;A1$,B1$,C1$,D1$,E1$,F1$,G1$,H1$,I1$,J1$
1942  PRINT #Z;A$;TAB(40);A1$
1945  PRINT #Z;B$;TAB(40);B1$
1950  PRINT #Z;C$;TAB(40);C1$
1955  PRINT #Z;D$;TAB(40);D1$
1960  PRINT #Z;E$;TAB(40);E1$
1965  PRINT #Z;F$;TAB(40);F1$
1970  PRINT #Z;G$;TAB(40);G1$
1975  PRINT #Z;H$;TAB(40);H1$
1980  PRINT #Z;I$;TAB(40);I1$
1985  PRINT #Z;J$;TAB(40);J1$
1990  PRINT #Z
2030  K=K+1
2040  GOTO 1900
2350  PRINT #Z;"                   END OF REPORT"
2360  PRINT #Z
2370  H=1
2380  IF L$[1,1]#"Y" THEN 2440
2390  PRINT #Z;'12'12
2400  ASSIGN *,2,R
2410  PURGE R,"ASCBOB"
2420  IF R=0 THEN 2440
2430  PRINT "ASCII FILE 'ASCBOB' NOT PURGED.  ";R
2440  GOTO 240
2450  REM *** ROUTINE TO SEARCH FOR A CUSTOMER RECORD ***
2460  PRINT "THIS ROUTINE WILL SEARCH FOR A CUSTOMER RECORD."
2470  PRINT 
2471  PRINT "Search by (#/N) : ";
2472  LINPUT Y$
2473  IF Y$[1,1]="N" THEN 2483
2480  PRINT "Customer # : ";
2482  GOTO 2490
2483  PRINT "Company Name : ";
2490  INPUT X$
2500  IF X$="/" THEN 250
2510  J=2
2520  IF  END #1 THEN 2660
2530  READ #1,J;A$,B$,C$,D$,E$,F$,G$,H$,I$,J$
2535  IF Y$="N" THEN 2545
2540  IF A$=X$ THEN 2570
2544  GOTO 2550
2545  IF B$=X$ THEN 2570
2550  J=J+1
2560  GOTO 2520
2570  PRINT A$
2580  PRINT B$
2590  PRINT C$
2600  PRINT D$
2610  PRINT E$
2620  PRINT F$
2630  PRINT G$
2631  PRINT H$
2632  PRINT I$
2633  PRINT J$
2640  PRINT LIN(3)
2642  PRINT "this one ? (y/n) : ";
2643  LINPUT Z$
2644  IF Z$="N" THEN 2743
2650  GOTO 2460
2660  PRINT "NO FIND...PLEASE CHECK INPUT"
2670  GOTO 2460
3890  REM***FILE MAINTAINCE***
3900  PRINT "Customer Record Maintaince"
3910  PRINT 
3920  PRINT "Customer # : ";
3930  INPUT X$
3940  IF X$="/" THEN 250
3950  J=2
3960  IF  END #1 THEN 4610
3970  READ #1,J;A$,B$,C$,D$,E$,F$,G$,H$,I$,J$
3980  IF A$=X$ THEN 4010
3990  J=J+1
4000  GOTO 3960
4010  IF X$="N" THEN 3920
4012  IF X$="/" THEN 250
4013  CONVERT X$ TO X,4110
4014  PRINT SPA(3);A$;"  DELETE & REENTER TO CHANGE CUST # "
4015  PRINT "#1 : ";B$
4020  PRINT "#2 : ";C$
4025  PRINT "#3 : ";D$
4030  PRINT "#4 : ";E$
4035  PRINT "#5 : ";F$
4040  PRINT "#6 : ";G$
4045  PRINT "#7 : ";H$
4050  PRINT "#8 : ";I$
4055  PRINT "#9 : ";J$
4090  PRINT 
4100  PRINT "WHICH NUMBER ARE YOU GOING TO CHANGE (N=NEW#,/=MENU)";
4110  INPUT X$
4190  IF X$="N" THEN 3920
4200  IF X$="/" THEN 250
4205  GOTO X OF 4230,4270,4291,4310,4350,4381,4390,4430,4470
4210  PRINT "WRONG INPUT,CHECK SPELLING IN THE HEADING."
4220  GOTO 4100
4230  PRINT "WHAT IS THE NEW COMPANY NAME";
4240  LINPUT B$
4260  GOTO 4500
4270  PRINT "WHAT IS THE NEW ADDRESS ";
4280  LINPUT C$
4291  PRINT "WHAT IS THE NEW CITY/STATE ";
4292  LINPUT G$
4293  GOTO 4500
4300  GOTO 4500
4310  PRINT "WHAT IS THE NEW ZIPCODE ";
4320  LINPUT E$
4340  GOTO 4500
4350  PRINT "WHAT IS THE NEW CONTACT NAME ";
4360  LINPUT F$
4380  GOTO 4500
4381  PRINT "WHAT IS THE NEW PHONE # ";
4382  LINPUT G$
4383  GOTO 4500
4390  PRINT "WHAT IS THE NEW PRODUCT ";
4400  LINPUT H$
4420  GOTO 4500
4430  PRINT "WHAT IS THE NEW CREDIT ";
4440  LINPUT I$
4460  GOTO 4500
4470  PRINT "WHAT IS THE NEW COMMENTS ";
4480  LINPUT J$
4500  PRINT #1,J;A$,B$,C$,D$,E$,F$,G$,H$,I$,J$
4510  PRINT "YOUR NEW CUSTOMER RECORD LOOKS LIKE THIS:"
4520  PRINT 
4530  GOTO 4010
4540  PRINT  USING 2580
4550  G1=S1-C1
4560  P1=G1/S1*100
4570  PRINT  USING 1960;M$,D$,I$,C1,S1,G1,P1,T$,S$
4580  PRINT LIN(3)
4590  PRINT "        SO THERE!!!"
4600  GOTO 4100
4610  PRINT "THERE AIN'T NO SECH CUSTOMER # "
4620  GOTO 3900
7270  STOP 
7280  D$="WDMYTPN"
7290  D9=K=0
7300  IF LEN(D$)=0 THEN 8520
7310  T$="MDYWTPN"
7320  A1$="0123456789"
7330  H$=D$[1,7]
7340  R1=R
7350  D$=""
7360  FOR I=1 TO LEN(H$)
7370  IF K<45 THEN 7410
7380  PRINT "FORMAT EXCEEDS CAPACITY.  FORMAT TERMINATED AND"
7390  PRINT "RETURNED TO CALLING PROGRAM."
7400  GOTO 8520
7410  FOR J=1 TO 7
7420  IF H$[I,I]=T$[J,J] THEN 7470
7430  NEXT J
7440  PRINT "INVALID FORMAT CODE = ";H$[I,I];".  FORMAT TERMINATED"
7450  PRINT "AND RETURNED TO CALLING PROGRAM."
7460  GOTO 8520
7470  GOTO J OF 7490,7620,7800,7860,7960,8110,8180
7480  GOTO 7440
7490  IF D9#0 THEN 7510
7500  GOSUB 8220
7510  K=K+1
7520  RESTORE 7590
7530  FOR L=1 TO M
7540  READ M$
7550  NEXT L
7560  D$[K,K+LEN(M$)-1]=M$
7570  K=K+LEN(M$)-1
7580  GOTO 8490
7590  DATA "JANUARY","FEBRUARY","MARCH","APRIL"
7600  DATA "MAY","JUNE","JULY","AUGUST"
7610  DATA "SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"
7620  IF D9#0 THEN 7640
7630  GOSUB 8220
7640  B=D
7650  GOSUB 7700
7660  IF H$[I+1,I+1]#"Y" THEN 7690
7670  K=K+1
7680  D$[K,K]=","
7690  GOTO 8490
7700  REM TWO DIGIT NUMBER TO STRING ROUTINE
7710  K=K+1
7720  D1=INT(B/10)
7730  IF J=5 AND D1=0 THEN 7760
7740  IF D1=0 THEN 7770
7750  D$[K,K]=A1$[D1+1,D1+1]
7760  K=K+1
7770  D2=B-INT(B/10)*10
7780  D$[K,K]=A1$[D2+1,D2+1]
7790  RETURN 
7800  B=TIM(3)
7810  K=K+1
7820  D$[K,K+1]="19"
7830  K=K+1
7840  GOSUB 7700
7850  GOTO 8490
7860  K=K+1
7870  T=(TIM(2)+365*TIM(3)+INT((TIM(3)-1)/4+.01))/7
7880  T=INT(7*(T-INT(T))+1.5)
7890  RESTORE 7930
7900  FOR L=1 TO T
7910  READ M$
7920  NEXT L
7930  DATA "SUNDAY","MONDAY","TUESDAY","WEDNESDAY"
7940  DATA "THURSDAY","FRIDAY","SATURDAY"
7950  GOTO 7560
7960  K=K+1
7970  H=TIM(1)
7980  IF H <= 12 THEN 8020
7990  D$[K,K+7]="  :0  PM"
8000  H=H-12
8010  GOTO 8030
8020  D$[K,K+7]="  :0  AM"
8030  B=H
8040  K=K-1
8050  GOSUB 7700
8060  K=K+1
8070  B=TIM(0)
8080  GOSUB 7700
8090  K=K+3
8100  GOTO 8490
8110  K=K+1
8120  ENTER #P
8130  D$[K,K+5]="PORT #"
8140  K=K+5
8150  B=P
8160  GOSUB 7700
8170  GOTO 8490
8180  IF D9#0 THEN 8200
8190  GOSUB 8220
8200  R=Y*10^4+M*100+D
8210  GOTO 8510
8220  REM  COMPUTE MONTH AND DAY NUMBERS
8230  L=0
8240  D9=1
8250  Y=TIM(3)
8260  FOR S=1 TO 8
8270  IF Y=68+S*4 THEN 8300
8280  IF Y<68+S*4 THEN 8310
8290  NEXT S
8300  L=1
8310  Q[1]=31
8320  RESTORE 8370
8330  FOR S=2 TO 12
8340  READ S1
8350  Q[S]=S1+L
8360  NEXT S
8370  DATA 59,90,120,151,181,212,243,273,304,334,365
8380  D=TIM(2)
8390  FOR M=1 TO 12
8400  IF D <= Q[M] THEN 8460
8410  NEXT M
8420  Y=Y+1
8430  M=1
8440  D=D-365
8450  GOTO 8480
8460  IF M=1 THEN 8480
8470  D=D-Q[M-1]
8480  RETURN 
8490  K=K+1
8500  D$[K,K]=" "
8510  NEXT I
8520  RETURN 
8530  END 
