Converting from an ancient BASIC to new database

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))
 
M

Michael Cole

Randy said:
(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.

For what its worth, my approach would be: -

Database first - MS Access. As they are stand alone, SQL Server or others
like that (Sybase, Oracle) are overkill. The other options include stuff
like dBase, but Access is reasonably common and easy to use, which will make
it easier for administration - you should be able to get some people at
remote sites who can use it if needed.

Front end - VB6 with DAO access. Again - for ease of use and upgrading of
existing code. Note that this does not nessesarily mean that this is the
best option for all, but you have existing basic code and a lot should
upgrade. In terms of your
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.

If you use VB, then you should make it screen based rather that character
based, it is pretty easy and much better for maintenance purposes.
 
R

rowe_newsgroups

For what its worth, my approach would be: -

Database first - MS Access. As they are stand alone, SQL Server or others
like that (Sybase, Oracle) are overkill. The other options include stuff
like dBase, but Access is reasonably common and easy to use, which will make
it easier for administration - you should be able to get some people at
remote sites who can use it if needed.

Front end - VB6 with DAO access. Again - for ease of use and upgrading of
existing code. Note that this does not nessesarily mean that this is the
best option for all, but you have existing basic code and a lot should
upgrade. In terms of your


If you use VB, then you should make it screen based rather that character
based, it is pretty easy and much better for maintenance purposes.

--
Regards,

Michael Cole

Database first - MS Access. As they are stand alone, SQL Server or others
like that (Sybase, Oracle) are overkill. The other options include stuff
like dBase, but Access is reasonably common and easy to use, which will make
it easier for administration - you should be able to get some people at
remote sites who can use it if needed.

I might be tempted to use Sql Server 2005 Express if the user's don't
already have Access to save them on costs (20-30 computes times $300
for a license of Office - ouch!). I believe you could use the free
Express edition in that environment, but you should definitely check
it out first.
Front end - VB6 with DAO access. Again - for ease of use and upgrading of
existing code

Again I agree - VB6 would leverage your current skills much better
than VB.Net (no I'm not trying to start a cross-language fight here).
However if you go the Sql Server route you would need to use OLEDB or
OBDC for connecting to Sql Server. Though if you don't have VB6 you
could upgrade to .Net and take advantage of the one of the free ide's
(VB Express, SharpDevolope, etc) and save yourself some cash.

Thanks,

Seth Rowe
 
N

Norman Yuan

rowe_newsgroups said:
I might be tempted to use Sql Server 2005 Express if the user's don't
already have Access to save them on costs (20-30 computes times $300
for a license of Office - ouch!). I believe you could use the free
Express edition in that environment, but you should definitely check
it out first.


If using VB6 FE or .NET FE, you do not need to buy MS Access for each
computer, no MS Access installation is required at all in this case. You may
need buy one for develping purpose, though. One the other hand, a small app
in the scope described in OP, MS Access could be the right tool, in spite of
the cost of $300 on each user computer, it save a huge amount of development
time, if you really know how to do MS Access.
 
M

meisen

Randy,

You do not have to convert to VB or any other Microsoft derivative to
achieve the results you want, and you can do so much less expensively,
both in terms of time and money, than walking down the Microsoft path.

The code you posted can be interpreted correctly by current versions
of Thoroughbred Basic (www.thoroughbredsoftware.com), VPRO/5
(www.basis.com), and ProvideX (www.pvx.com), with little or no change
to the listings.

All three have reasonably inexpensive single-user versions that run
under Windows XP. In addition, all three offer resources within
their basic interpreters that can adapt your code to the GUI
environment.

Best regards,

Michael Eisen
 
J

James

Randy,

You do not have to convert to VB or any other Microsoft derivative to
achieve the results you want, and you can do so much less expensively,
both in terms of time and money, than walking down the Microsoft path.

The code you posted can be interpreted correctly by current versions
of Thoroughbred Basic (www.thoroughbredsoftware.com), VPRO/5
(www.basis.com), and ProvideX (www.pvx.com), with little or no change
to the listings.

All three have reasonably inexpensive single-user versions that run
under Windows XP. In addition, all three offer resources within
their basic interpreters that can adapt your code to the GUI
environment.

Best regards,

Michael Eisen
Good for you. I would also add that if the system grows large enough to
be a management problem MYSQL is an excellent alternative to M$ SQL,
SybaseSQL, etc. For an Access competitor the database in Open Office is
a front runner. All are members of the GPL and all are cross platform
OS transparent running on versions of Linux, Unix, Solaris, M$Winx, and
some on MacOS10.

James
 
R

Randy Reimers

Thank you all for the information. Problem is, cost - each one wants about
$200 PER computer for the runtime license (needed per computer). This is a
small Mom&Pop operation that I am trying to help, the cost becomes
prohibitive, when they also have to purchase the newer/new computers. I'm
still no closer to a "reasonable" answer for them. So it goes - but
thanks - at least I know more now.

Randy
 
G

Gerard Bok

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.

My 2 cents:
- You have an application, fully running in Basic
- You have knowledge about the internal operations (as you once
wrote the program)
- You / your client wants minimal costs.

So:
Convert the program to some current Basic, e.g. PowerBasic.
If the database runs just fine on an antique computer, don't
waste resources writing a new database layer or adapting the
program to a 'market standard' database (like MySQL or Access).

All you need is a single licence to e.g.
www.powerbasic.com/products/pbcc/ at US$ 169
 
J

James

Randy said:
Thank you all for the information. Problem is, cost - each one wants about
$200 PER computer for the runtime license (needed per computer). This is a
small Mom&Pop operation that I am trying to help, the cost becomes
prohibitive, when they also have to purchase the newer/new computers. I'm
still no closer to a "reasonable" answer for them. So it goes - but
thanks - at least I know more now.

Randy
A later post suggests using a standard basic to run your system & I
agree, to a point. If your program used any of the machine specific
calls, embedded assembly language, etc. it may not be as easy as it
first appears. I had a "basic" language database in the early 80's that
handled over 20,000 customers & over 20,000 items with bar code for UPC
& code 39, etc. Time to the door was under 30 seconds for rental,
purchase or a mix. To "convert" that code to one of the currently
available basic languages would be no small task. I have been looking
into it. On the other hand the database with open office is free and is
compatible with access & Mysql, the GPL version, is also free. All
depend on the complexity of your code, how much time is available, and
what the future needs of the client may be. Open Office is available at
www.openoffice.org & Mysql, the GPL version, is available at
http://dev.mysql.com/downloads/maxdb/7.5.00.html. In its day my code
outperformed the code written for one of the chains on their
mini-computer but was, of course, not multi-user though with a few
tweaks could have been. Look at your options. Most were not available
just a few years ago.

James
 
G

Guest

A later post suggests using a standard basic to run your system & I
agree, to a point. If your program used any of the machine specific
calls, embedded assembly language, etc. it may not be as easy as it
first appears. I had a "basic" language database in the early 80's that
handled over 20,000 customers & over 20,000 items with bar code for UPC

Just out of curiosity, which one?

<snip>
 
J

James

Just out of curiosity, which one?

<snip>
At that time it was setup to run on the Trs80 Mdl III/IV using M$Basic,
& some assembly code for the bar code reader.

James
 
R

Randy Reimers

Thanks, Bill.
I am thinking of upgrading my skills, and SQL, VB6 seems to be the route I
will probably need to go. Guess I am leaning toward either VB Express and
SQL, or VB .Net. I don't care about "overkill" - who knows what may be
needed next? I am looking for a reasonable "cost" to the old company, as
they would still need to purchase all new computers, or GOOD used XP
computers, wiped and re-loaded.
My problem - my poor brain doesn't seem to be able to "get it", like I
used to. Any good pointers to VB Express/VB.NET and use with SQL database?
The programmers here access several types of databases with C#.NET, or
whatever it is called - not VB.NET. I have lots of simple code to look at -
not much that truly works with databases.
How would I go about writing a code converter?

Thanks, all, for what you have provided!

Randy Reimers
 
D

DAVID

Overlays?

VB classic requires that each module be small,
and that there be no overlap between the modules.

It can sometimes be very difficult to convert
classic code with overlays to VB, because the
only clean way to convert is as one big program,
and then the big program is too large to compile.

I would certainly give it a shot, but I already
own a copy of VB6, (which is a discontinued product.)

But if it is big, I would choose to use
Powerbasic (already mentioned in this thread)
which I also own a copy of, and which has no
runtime deployment cost. I assume that there
are other BASICs which might be suitable, but
PB is the one we have used. PB allows us to
convert overlays into one very large program,
with less re-write.


(david)
 
W

William Vaughn

Let's talk for a minute about the goals of this project. What is the
ultimate objective? Do you expect an application written like this to run as
a Windows Form application or an ASP (browser-based) application? What value
is there in the code? Are there proprietary formulas or other code that have
not been replaced by more current technology? Are you trying to save time
and money by leveraging this code? Are you trying to upgrade your skills so
that you can support the program once its deployed? All of these are
reasonable goals but might not make it worthwhile to convert the code to
resurrect the application.

As I see it, the BASIC code is about as old as it gets. Today's BASICs are
very different than those used in the 60's and 70's. I know, I used to teach
BASIC in college in the early 70's. Visual Basic (versions 1-6) had some
support for legacy operations as you are using so it might be easier to
start there. However, consider that a Windows program is not linear
coding--it's event-driven. This concept was not even considered in the
languages of the time. The way one interacts with the user is also radically
different. The PRINT statements aren't even supported in "Visual Basic".NET.

Depending on your goals, I would rethink this project. I liken it to a
person with an old crank telephone wanting to connect it to the Internet to
handle his email... ;)

--
____________________________________
William (Bill) Vaughn
Author, Mentor, Consultant, Dad, Grandpa
Microsoft MVP
INETA Speaker
www.betav.com
www.betav.com/blog/billva
Please reply only to the newsgroup so that others can benefit.
This posting is provided "AS IS" with no warranties, and confers no rights.
__________________________________
Visit www.hitchhikerguides.net to get more information on my latest book:
Hitchhiker's Guide to Visual Studio and SQL Server (7th Edition)
and Hitchhiker's Guide to SQL Server 2005 Compact Edition (EBook)
-----------------------------------------------------------------------------------------------------------------------
 
M

Michael Mattias

William Vaughn said:
Let's talk for a minute about the goals of this project. What is the
As I see it, the BASIC code is about as old as it gets.

Oldies are often goodies.

MCM
 
W

William Vaughn

Ah, would you rather launch yourself into space with the computers used in
the Apollo mission or those used today?
Oldies are just oldies... ;) Yes, an old application might be just as good
(or better) than the day it was written but it might not work at all on
today's OSs or fall short of what today's users expect.



--
____________________________________
William (Bill) Vaughn
Author, Mentor, Consultant, Dad, Grandpa
Microsoft MVP
INETA Speaker
www.betav.com
www.betav.com/blog/billva
Please reply only to the newsgroup so that others can benefit.
This posting is provided "AS IS" with no warranties, and confers no rights.
__________________________________
Visit www.hitchhikerguides.net to get more information on my latest book:
Hitchhiker's Guide to Visual Studio and SQL Server (7th Edition)
and Hitchhiker's Guide to SQL Server 2005 Compact Edition (EBook)
-----------------------------------------------------------------------------------------------------------------------
 
K

Karl E. Peterson

DAVID said:
Overlays?

VB classic requires that each module be small,
and that there be no overlap between the modules.

It can sometimes be very difficult to convert
classic code with overlays to VB, because the
only clean way to convert is as one big program,
and then the big program is too large to compile.

Huh? Examples, please? At least some sort of description, of what *possible*
coding horror you're looking at where this was actually an issue?
I would certainly give it a shot, but I already
own a copy of VB6, (which is a discontinued product.)

But if it is big, I would choose to use
Powerbasic (already mentioned in this thread)

Also a very good product. But the size of a DOS BASIC codebase never seemed to be
much of a deciding factor in this decision. Also, other than hardware specific
methods, nearly all DOS MSBASIC code loads and runs directly in VB6. Granted,
perhaps not a factor with "Thoroughbred Basic" but worth mentioning in any VB/PB
case.

(Why is this thread even in a *.dotnet.* group, anyway?)
 
K

Karl E. Peterson

William Vaughn said:
Ah, would you rather launch yourself into space with the computers used in
the Apollo mission or those used today?

Oh man, last time I was at the Cape (~1990), the tour guy was saying the computers
in the lander weren't anywhere near as powerful as "today's PCs. said:
Oldies are just oldies... ;) Yes, an old application might be just as good
(or better) than the day it was written but it might not work at all on
today's OSs or fall short of what today's users expect.

Nothing wrong with oldies! Especially of the musical sort. But yeah... Gotta take
each on its merits. <g>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top