在BBx中获取错误31(Business Basic)

时间:2012-02-21 16:56:31

标签: file-io basic business-basic

我目前正在尝试将数千条记录从MULTIKEYED文件传输到平面STRING文件,即构建一个大型SQL INSERT语句以从我们的服务器中取出数据FILE库系统插入SQL Server进行测试

我已经成功完成了一些其他文件与一个非常相似的程序,但这一个不断产生错误31工作区溢出,我已经尝试缩短字符串,数组的长度,并通过文件过滤所以我只获取日期比2012年2月15日更新的记录

这是BBx关于错误31的在线帮助的片段:

  

!ERROR = 31 - 工作区内存溢出   有关BBj特定信息,请参阅BBj中的!ERROR更改。

     

工作空间内存不足。使用START动词分配更大的工作区可以更正此错误。

     

•尝试标注大字符串或数组。

     

•尝试加载大型程序。

     

•试图操纵一个大字符串。

     

•尝试读取或写入大型记录。

     

•尝试编辑会导致程序变得比可用内存大的程序。

     

•即使有足够的内存,也会尝试使程序超过允许的时间。

     

•尝试输入编译长度大于256字节的控制台模式命令。

我相信我没有打破任何这些条件

任何想法?

0001 STRING "/u/x/scc/scott.sql"
0002 OPEN (1)"/u/x/scc/scott.sql"
0004 LET ARRAYLEN=27
0005 DIM A$[1:ARRAYLEN]
0010 OPEN (2)"V1OEMF"
0015 LET K$=""; READ (2,KEY=K$,DOM=0016)
0020 LET K$=KEY(2,END=15000)
0030 READ (2,KEY=K$)A$[ALL]
0035 FOR I=1 TO ARRAYLEN STEP 1; IF A$[I]="" THEN LET A$[I]=".."; NEXT I
0036 FOR I=1 TO ARRAYLEN STEP 1
0039 IF POS("'"=A$[I])<>0 THEN LET A$[I](POS("'"=A$[I]),1)=" "; GOTO 0039
0040 NEXT I
0050 IF A$[14]<"B20215" THEN GOTO 0020
0080 PRINT "INSERT INTO WMS.dbo.V1OEMF VALUES ('"+A$[1]+"','"+A$[2]+"','"+A$[4
0080:]+"','"+A$[5]+"','"+A$[6]+"','"+A$[7]+"','"+A$[8]+"','"+A$[9]+"','"+A$[12
0080:]+"','"+A$[14]+"','"+A$[25]+"','"+A$[27]+"');"
0100 GOTO 0020
15000 CLOSE (1); CLOSE (2)

2 个答案:

答案 0 :(得分:1)

将第35行的Next I移动到自己的行,如果IF语句为假,则不会执行

答案 1 :(得分:0)

对我来说,你应该打印通道(1)你需要的字符串文件。你现在拥有它的方式只需打印到屏幕上并快速填满内存。尝试将第80行更改为打印(1).....等......