从古代BASIC转换为新数据库 [英] Converting from an ancient BASIC to new database

查看:37
本文介绍了从古代BASIC转换为新数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

(希望我正确地发布这个,否则 - 对不起!,不知道还有什么

要做的事)

我写了一套程序"许多"几年前,运行一种基本类型,称为Thoroughbred Basic,一种基本的业务。我需要重新编写它的b $ b,让它在Windows XP上运行并尖叫。这是一个

视频租赁地点,跟踪电影和游戏租赁,客户,员工

交易,预订,报告,.....等等。 />
我知道一些Visual Basic - 我现在编写VB脚本来工作。任何人都可以帮助提供建议,以便将其转换为新语言吗?对我来说最简单的可能是什么?而且,什么类型的数据库引擎最好? SQL,

访问,平面文件,我不太了解。

这不能在Windows,Linux或任何new下运行。操作系统 - 但我可以导出

所有文件和程序到DOS。他们目前正在运行20-30 286

或386台计算机 - 而不是印刷错误 - 老了!没有联网,不是必要的。

它使用的数据文件叫做Direct。和排序。我有大约90个b
程序,一些是叠加层,大多数是独立的,25-30个仅用于报告b / b
。它可以保持基于角色 - 不需要花哨的屏幕

或pix。


这是一个样本:

0010 REM" ;租赁/会员系统TOP HALF和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 ,_,...,$(80,"<"),S $(80,");

如果FID(0)=" T0"那么

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 $)+ QUOT; - 会员系统

0350 LET Y $ = FNF $(FNE $(Z9 $)),Y = NUM​​(Y $(3,2)) - 6

0360如果Y< 1那么

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打印

''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),评论,@(65,3),LAST

TIME",@(53,5)," 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),P HONE

HM,@(24

,8),WK,@(42,8),#LT,@(50,8),#FREE,@(60,8),#M P ;,@(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额外设置


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 REMSOLICIT会员编号


0500 IF E1 $<> ""那么

LET E0 $ = E1 $(1,3);

IF E1 $(1,3)<> S $(1,3)那么

GOTO 00520


0510 GOSUB 02430;

IF E0 $ =""那么

GOTO 00010


0520 PRINT @(7,2),B1 $(1,6);

IF E1 $<>""那么

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 = ID NUMBER",@(0,22)," ENTER MEMBER#,CR = LAST

NAME,

F2 =电话搜索,F3 =下一个新客户#,F4 = END",;

INPUT(0,ERR = 00550)@(7,2),Q $,@(0,23),''CL'',@(0,22) ,''CL'',

0560如果CTL = 1那么

GOTO 01240

0570如果CTL = 2那么

GOTO 01360

0580 LET X = NUM​​(Q $,ERR = 00590);

如果LEN(Q $)= 7或LEN( Q $)= 10那么

LET G $ = Q $;

GOTO 01370

0590如果Q $ =" T"那么

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"或者CTL = 4那么

GOTO 09110

0610如果CTL = 3那么

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 $ = QUOT;" AND E1 $<>""那么

LET Q $ = E1 $(4,6);

GOTO 00710

0630如果Q $ =""那么

PRINT @(7,2),S $(1,6);

GOTO 01070


0640 FOR I = 1到LEN(Q $)

0650 IF POS(Q $(I,1)<"!")<> 0 OR POS(Q $(I,1) >" z")<> 0那么

EXITTO 00540

0660下一个我

0670如果LEN( Q $)> 6那么

GOTO 00550

0680 LET Q $ = S $(1,6-LEN(Q $))+ Q $

0690如果Q $ =T那么

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如果M0 $(238,1)=" "那么

LET X7 $ = S $(1,7)

ELSE

LET X7 $ =" * NOF *" ;; < br $>
关闭(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如果M0 $(153,1)=" "那么

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

如果M0 $(112,10)<> S $(1,10)那么

LET X5 $ = FND $(M0 $(112,10))

0780 LET X6 $ = S $(1,14);

如果M0 $(122,10)<> S $(1,10)那么

LET X6 $ = FND $(M0 $(122,10))

0790如果M0 $(215,6)= S $(1,6)那么

LET X3 $ =" NONE"

ELSE

LET X3 $ = FNA $(M0 $(215,6))

解决方案

(80," - "),B1


(80," _"),B2


(80,"<"),S

(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),"P HONE
HM",@(24
,8),"WK",@(42,8),"#LT",@(50,8),"#FREE",@(60,8),"#M P",@(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))

解决方案

(80,"-"),B1


(80,"_"),B2


(80,"<"),S


这篇关于从古代BASIC转换为新数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆