R
Randy Reimers
(Hope I'm posting this correctly, otherwise - sorry!, don't know what else
to do)
I wrote a set of programs "many" years ago, running in a type of basic,
called "Thoroughbred Basic", a type of business basic. I need to re-write
it, bring it kicking and screaming to run on Windows XP. This is for a
video rental place, tracks movie and game rentals, customers, employee
transactions, reservations, does reports,..... and on.
I know some of Visual Basic - I now write VB scripts for work. Can anyone
help with suggestions, as to converting this to a new language? What may be
easiest for me? And, what type of database engine would be best? SQL,
Access, flat files, I don't know enough.
This does NOT run under Windows, Linux, or any "new" OS - but I can export
all the files, and programs to DOS. They currently are running on 20-30 286
or 386 computers - not a misprint - OLD! Not networked, not neccessary.
The data files it uses are called "Direct" and "Sort". I have about 90
programs, a few are overlays, most are stand-alone, 25-30 are just for
reporting purposes. It can stay character based - no need for fancy screens
or pix.
Here is a sample:
0010 REM "RENTAL/MEMBERSHIP SYSTEM TOP HALF AND SUBMENU"
0020 REM "PROGRAM VID-AA"
0030 REM 06/07/99
0050 BEGIN
0060 PRECISION 2
0070 SETERR 09000
0080 DIM B$(80,"-"),B1$(80,"_"),B2$(80,"<"),S$(80," ");
IF FID(0)="T0" THEN
DIM B2$(80,CHR(205))
0090 DEF FNA$(X$)=X$(1,2)+"/"+X$(3,2)+"/"+X$(5,2)
0100 DEF FNC$(X$)=X$(3,2)+"/"+X$(5,2)+"/"+X$(1,2)
0110 DEF FND$(X$)="("+X$(1,3)+") "+X$(4,3)+"-"+X$(7,4)
0120 DEF FNE$(X$)=X$(1,2)+X$(4,2)+X$(7,2)
0130 DEF FNF$(X$)=X$(5,2)+X$(1,4)
0140 DEF FNZ$(X$)=X$(1,POS(" "=X$+" ")-1)
0150 OPEN (6) "CONTRO"
0160 READ (6,KEY="001") *,N1$,*,A0$,A1$,A2$
0170 READ (6,KEY="TODAY") Z9$,Z8$
0180 LET E1$="";
READ (6,KEY="RENT"+FID(0),DOM=00200) E1$,T
0190 REMOVE (6,KEY="RENT"+FID(0)) ;
IF T<>TIM THEN
LET E1$=""
0200 IOLIST
M0$(1,250),M(0),M(1),M(2),M(3),M(4),M(5),M(6),M(7),M(8),M(9),M
(10),M(11),M(12),M(13),M(14),M(15),M(16)
0210 REM "OPEN FILES"
0220 OPEN (1) "VID01"
0230 OPEN (2) "VIDST"
0240 OPEN (3) "VIN01"
0250 OPEN (4) "PHONEY"
0260 OPEN (5) "VIV02"
0270 OPEN (8) "IDSRT"
0280 OPEN (9) "VIN02"
0290 OPEN (10) "VIN03"
0300 OPEN (11) "RSVST"
0310 OPEN (12) "VINST"
0320 OPEN (14) "VIN04"
0330 REM "PAINT SCREEN"
0340 LET N3$=FNZ$(N1$)+" - MEMBERSHIP SYSTEM"
0350 LET Y$=FNF$(FNE$(Z9$)),Y=NUM(Y$(3,2))-6
0360 IF Y<1 THEN
LET
Y$(1,2)=STR(NUM(Y$(1,2))-1:"00"),Y$(3,2)=STR(NUM(Y$(3,2))+6:"0
0")
ELSE
LET Y$(3,2)=STR(Y:"00")
0370 PRINT
'CS','SB',@(36-INT(LEN(N3$)/2),0),N3$,'BG',@(0,1),B2$,'EG','SF'
0380 PRINT 'SB',@(0,2),"NUMBER",@(15,2),"LAST NAME",@(50,2),"INVOICE
#",@(
0,3),"COMMENTS",@(65,3),"LAST
TIME",@(56,4),"HARDWARE",@(0,4),"
NAME",@(35,4),"DL#",@(42,5),"VCR
OWNER?",@(55,5),"MAILING?",@(6
6,5),"TYPE",@(0,5),"ADDRESS",@(0,6),"ADDRESS",@(42,6),"JOINED",
@(58,6),"LAST ACTIVITY",@(0,7),"ZIP",@(18,7),"CARRIER
ROUTE",@(
42,7),"MTD",@(51,7),"YTD",@(61,7),"HOLD",@(0,8),"PHONE
HM",@(24
,8),"WK",@(42,8),"#LT",@(50,8),"#FREE",@(60,8),"#MP",@(0,10),"T
OT
$$",@(16,10),"IG",@(25,10),"IM",@(34,10),"IU",@(43,10),"IV",
@(52,10),"IX",@(62,10),"UNPAID
FEE",'BG',@(0,9),B2$,@(0,11),B2$
,'EG','SF'
0390 REM "IOLISTS"
0400 IOLIST
'LD','LD','LD','LD','LD','LD','LD','LD','LD','LD','LD','LD','L
D','LD'
0410 REM "EXTRA SETUP"
0420 LET M5$="##0",M6$="####.00-",M7$="###.00-"
0430 READ (6,KEY="DUEDATE") D1$;
LET D4$=D1$,D2$=D1$
0440 READ (6,KEY="STORENUM",DOM=00441) R8
0450 DIM Z5$(36);
READ (6,KEY="DZIP",DOM=00451) Z5$(1,9)
0460 READ (6,KEY="DACODE",DOM=00461) Z5$(10,3)
0470 READ (6,KEY="DAADDR",DOM=00471) Z5$(13,24)
0480 LET D5$=S$(1,6);
READ (6,KEY="HANDOUT",DOM=00490) D5$,D6$
0490 REM "SOLICIT MEMBER NUMBER"
0500 IF E1$<>"" THEN
LET E0$=E1$(1,3);
IF E1$(1,3)<>S$(1,3) THEN
GOTO 00520
0510 GOSUB 02430;
IF E0$="" THEN
GOTO 00010
0520 PRINT @(7,2),B1$(1,6);
IF E1$<>"" THEN
PRINT @(7,2),'SB',E1$(4,6),'SF'
0530 DIM M0$(250),M(16);
LET M0$(222,1)=STR(R8:"0"),M0$(147,6)=FNE$(Z9$)
0540 LET G$="**",M0$(210,3)=E0$(1,3)
0550 PRINT @(0,23),"F1=I.D. NUMBER",@(0,22),"ENTER MEMBER #, CR=LAST
NAME,
F2=PHONE SEARCH, F3=NEXT NEW CUSTOMER #, F4=END",;
INPUT (0,ERR=00550) @(7,2),Q$,@(0,23),'CL',@(0,22),'CL',
0560 IF CTL=1 THEN
GOTO 01240
0570 IF CTL=2 THEN
GOTO 01360
0580 LET X=NUM(Q$,ERR=00590);
IF LEN(Q$)=7 OR LEN(Q$)=10 THEN
LET G$=Q$;
GOTO 01370
0590 IF Q$="T" THEN
READ (6,KEY="TEMPNUM",DOM=00600) P5;
LET P5=P5+1,Q1$=STR(P5:"T00000");
READ (1,KEY=Q1$,DOM=00690) ;
WRITE (6,KEY="TEMPNUM") P5;
GOTO 00590
0600 IF Q$="END" OR CTL=4 THEN
GOTO 09110
0610 IF CTL=3 THEN
READ (6,KEY="NXTCUS",DOM=00620) P5;
LET P5=P5+1,Q$=STR(P5:"#####0");
WRITE (6,KEY="NXTCUS") P5;
READ (1,KEY=Q$,DOM=00680) ;
GOTO 00610
0620 IF Q$="" AND E1$<>"" THEN
LET Q$=E1$(4,6);
GOTO 00710
0630 IF Q$="" THEN
PRINT @(7,2),S$(1,6);
GOTO 01070
0640 FOR I=1 TO LEN(Q$)
0650 IF POS(Q$(I,1)<"!")<>0 OR POS(Q$(I,1)>"z")<>0 THEN
EXITTO 00540
0660 NEXT I
0670 IF LEN(Q$)>6 THEN
GOTO 00550
0680 LET Q$=S$(1,6-LEN(Q$))+Q$
0690 IF Q$="T" THEN
LET Q$=Q1$
0700 PRINT @(7,2),Q$
0710 LET M0$(1,6)=Q$
0720 READ (1,KEY=M0$(1,6),DOM=01490) IOL=00200
0730 GOSUB 00740;
GOTO 00850
0740 IF M0$(238,1)=" " THEN
LET X7$=S$(1,7)
ELSE
LET X7$="*NOF*";
CLOSE (7) ;
OPEN (7) "MEMTY";
READ (7,KEY=M0$(238,1),DOM=00750) X7$;
LET X7$=X7$(2)
0750 LET X7$=X7$+S$(1,10)
0760 IF M0$(153,1)=" " THEN
LET X8$=S$(1,11)
ELSE
LET X8$="NOT ON FILE";
CLOSE (7) ;
OPEN (7) "VSYH";
READ (7,KEY=M0$(153,1),DOM=00770) X8$;
LET X8$=X8$(2)
0770 LET X5$=S$(1,14);
IF M0$(112,10)<>S$(1,10) THEN
LET X5$=FND$(M0$(112,10))
0780 LET X6$=S$(1,14);
IF M0$(122,10)<>S$(1,10) THEN
LET X6$=FND$(M0$(122,10))
0790 IF M0$(215,6)=S$(1,6) THEN
LET X3$="NONE"
ELSE
LET X3$=FNA$(M0$(215,6))
to do)
I wrote a set of programs "many" years ago, running in a type of basic,
called "Thoroughbred Basic", a type of business basic. I need to re-write
it, bring it kicking and screaming to run on Windows XP. This is for a
video rental place, tracks movie and game rentals, customers, employee
transactions, reservations, does reports,..... and on.
I know some of Visual Basic - I now write VB scripts for work. Can anyone
help with suggestions, as to converting this to a new language? What may be
easiest for me? And, what type of database engine would be best? SQL,
Access, flat files, I don't know enough.
This does NOT run under Windows, Linux, or any "new" OS - but I can export
all the files, and programs to DOS. They currently are running on 20-30 286
or 386 computers - not a misprint - OLD! Not networked, not neccessary.
The data files it uses are called "Direct" and "Sort". I have about 90
programs, a few are overlays, most are stand-alone, 25-30 are just for
reporting purposes. It can stay character based - no need for fancy screens
or pix.
Here is a sample:
0010 REM "RENTAL/MEMBERSHIP SYSTEM TOP HALF AND SUBMENU"
0020 REM "PROGRAM VID-AA"
0030 REM 06/07/99
0050 BEGIN
0060 PRECISION 2
0070 SETERR 09000
0080 DIM B$(80,"-"),B1$(80,"_"),B2$(80,"<"),S$(80," ");
IF FID(0)="T0" THEN
DIM B2$(80,CHR(205))
0090 DEF FNA$(X$)=X$(1,2)+"/"+X$(3,2)+"/"+X$(5,2)
0100 DEF FNC$(X$)=X$(3,2)+"/"+X$(5,2)+"/"+X$(1,2)
0110 DEF FND$(X$)="("+X$(1,3)+") "+X$(4,3)+"-"+X$(7,4)
0120 DEF FNE$(X$)=X$(1,2)+X$(4,2)+X$(7,2)
0130 DEF FNF$(X$)=X$(5,2)+X$(1,4)
0140 DEF FNZ$(X$)=X$(1,POS(" "=X$+" ")-1)
0150 OPEN (6) "CONTRO"
0160 READ (6,KEY="001") *,N1$,*,A0$,A1$,A2$
0170 READ (6,KEY="TODAY") Z9$,Z8$
0180 LET E1$="";
READ (6,KEY="RENT"+FID(0),DOM=00200) E1$,T
0190 REMOVE (6,KEY="RENT"+FID(0)) ;
IF T<>TIM THEN
LET E1$=""
0200 IOLIST
M0$(1,250),M(0),M(1),M(2),M(3),M(4),M(5),M(6),M(7),M(8),M(9),M
(10),M(11),M(12),M(13),M(14),M(15),M(16)
0210 REM "OPEN FILES"
0220 OPEN (1) "VID01"
0230 OPEN (2) "VIDST"
0240 OPEN (3) "VIN01"
0250 OPEN (4) "PHONEY"
0260 OPEN (5) "VIV02"
0270 OPEN (8) "IDSRT"
0280 OPEN (9) "VIN02"
0290 OPEN (10) "VIN03"
0300 OPEN (11) "RSVST"
0310 OPEN (12) "VINST"
0320 OPEN (14) "VIN04"
0330 REM "PAINT SCREEN"
0340 LET N3$=FNZ$(N1$)+" - MEMBERSHIP SYSTEM"
0350 LET Y$=FNF$(FNE$(Z9$)),Y=NUM(Y$(3,2))-6
0360 IF Y<1 THEN
LET
Y$(1,2)=STR(NUM(Y$(1,2))-1:"00"),Y$(3,2)=STR(NUM(Y$(3,2))+6:"0
0")
ELSE
LET Y$(3,2)=STR(Y:"00")
0370 PRINT
'CS','SB',@(36-INT(LEN(N3$)/2),0),N3$,'BG',@(0,1),B2$,'EG','SF'
0380 PRINT 'SB',@(0,2),"NUMBER",@(15,2),"LAST NAME",@(50,2),"INVOICE
#",@(
0,3),"COMMENTS",@(65,3),"LAST
TIME",@(56,4),"HARDWARE",@(0,4),"
NAME",@(35,4),"DL#",@(42,5),"VCR
OWNER?",@(55,5),"MAILING?",@(6
6,5),"TYPE",@(0,5),"ADDRESS",@(0,6),"ADDRESS",@(42,6),"JOINED",
@(58,6),"LAST ACTIVITY",@(0,7),"ZIP",@(18,7),"CARRIER
ROUTE",@(
42,7),"MTD",@(51,7),"YTD",@(61,7),"HOLD",@(0,8),"PHONE
HM",@(24
,8),"WK",@(42,8),"#LT",@(50,8),"#FREE",@(60,8),"#MP",@(0,10),"T
OT
$$",@(16,10),"IG",@(25,10),"IM",@(34,10),"IU",@(43,10),"IV",
@(52,10),"IX",@(62,10),"UNPAID
FEE",'BG',@(0,9),B2$,@(0,11),B2$
,'EG','SF'
0390 REM "IOLISTS"
0400 IOLIST
'LD','LD','LD','LD','LD','LD','LD','LD','LD','LD','LD','LD','L
D','LD'
0410 REM "EXTRA SETUP"
0420 LET M5$="##0",M6$="####.00-",M7$="###.00-"
0430 READ (6,KEY="DUEDATE") D1$;
LET D4$=D1$,D2$=D1$
0440 READ (6,KEY="STORENUM",DOM=00441) R8
0450 DIM Z5$(36);
READ (6,KEY="DZIP",DOM=00451) Z5$(1,9)
0460 READ (6,KEY="DACODE",DOM=00461) Z5$(10,3)
0470 READ (6,KEY="DAADDR",DOM=00471) Z5$(13,24)
0480 LET D5$=S$(1,6);
READ (6,KEY="HANDOUT",DOM=00490) D5$,D6$
0490 REM "SOLICIT MEMBER NUMBER"
0500 IF E1$<>"" THEN
LET E0$=E1$(1,3);
IF E1$(1,3)<>S$(1,3) THEN
GOTO 00520
0510 GOSUB 02430;
IF E0$="" THEN
GOTO 00010
0520 PRINT @(7,2),B1$(1,6);
IF E1$<>"" THEN
PRINT @(7,2),'SB',E1$(4,6),'SF'
0530 DIM M0$(250),M(16);
LET M0$(222,1)=STR(R8:"0"),M0$(147,6)=FNE$(Z9$)
0540 LET G$="**",M0$(210,3)=E0$(1,3)
0550 PRINT @(0,23),"F1=I.D. NUMBER",@(0,22),"ENTER MEMBER #, CR=LAST
NAME,
F2=PHONE SEARCH, F3=NEXT NEW CUSTOMER #, F4=END",;
INPUT (0,ERR=00550) @(7,2),Q$,@(0,23),'CL',@(0,22),'CL',
0560 IF CTL=1 THEN
GOTO 01240
0570 IF CTL=2 THEN
GOTO 01360
0580 LET X=NUM(Q$,ERR=00590);
IF LEN(Q$)=7 OR LEN(Q$)=10 THEN
LET G$=Q$;
GOTO 01370
0590 IF Q$="T" THEN
READ (6,KEY="TEMPNUM",DOM=00600) P5;
LET P5=P5+1,Q1$=STR(P5:"T00000");
READ (1,KEY=Q1$,DOM=00690) ;
WRITE (6,KEY="TEMPNUM") P5;
GOTO 00590
0600 IF Q$="END" OR CTL=4 THEN
GOTO 09110
0610 IF CTL=3 THEN
READ (6,KEY="NXTCUS",DOM=00620) P5;
LET P5=P5+1,Q$=STR(P5:"#####0");
WRITE (6,KEY="NXTCUS") P5;
READ (1,KEY=Q$,DOM=00680) ;
GOTO 00610
0620 IF Q$="" AND E1$<>"" THEN
LET Q$=E1$(4,6);
GOTO 00710
0630 IF Q$="" THEN
PRINT @(7,2),S$(1,6);
GOTO 01070
0640 FOR I=1 TO LEN(Q$)
0650 IF POS(Q$(I,1)<"!")<>0 OR POS(Q$(I,1)>"z")<>0 THEN
EXITTO 00540
0660 NEXT I
0670 IF LEN(Q$)>6 THEN
GOTO 00550
0680 LET Q$=S$(1,6-LEN(Q$))+Q$
0690 IF Q$="T" THEN
LET Q$=Q1$
0700 PRINT @(7,2),Q$
0710 LET M0$(1,6)=Q$
0720 READ (1,KEY=M0$(1,6),DOM=01490) IOL=00200
0730 GOSUB 00740;
GOTO 00850
0740 IF M0$(238,1)=" " THEN
LET X7$=S$(1,7)
ELSE
LET X7$="*NOF*";
CLOSE (7) ;
OPEN (7) "MEMTY";
READ (7,KEY=M0$(238,1),DOM=00750) X7$;
LET X7$=X7$(2)
0750 LET X7$=X7$+S$(1,10)
0760 IF M0$(153,1)=" " THEN
LET X8$=S$(1,11)
ELSE
LET X8$="NOT ON FILE";
CLOSE (7) ;
OPEN (7) "VSYH";
READ (7,KEY=M0$(153,1),DOM=00770) X8$;
LET X8$=X8$(2)
0770 LET X5$=S$(1,14);
IF M0$(112,10)<>S$(1,10) THEN
LET X5$=FND$(M0$(112,10))
0780 LET X6$=S$(1,14);
IF M0$(122,10)<>S$(1,10) THEN
LET X6$=FND$(M0$(122,10))
0790 IF M0$(215,6)=S$(1,6) THEN
LET X3$="NONE"
ELSE
LET X3$=FNA$(M0$(215,6))