В настоящее время я пытаюсь перенести несколько тысяч записей из файла MULTIKEYED в плоский файл STRING, который строит большой оператор SQL INSERT для извлечения данных из наших систем баз данных FILE для вставки в SQL Server для тестирования. .
Я успешно сделал это с несколькими другими файлами с очень похожей программой, но этот продолжает вызывать переполнение рабочей области ошибки 31. Я попытался сократить длину строки, массива и фильтрации по файлу, поэтому я только получить записи с датой не позднее 15 февраля 2012
Вот фрагмент интерактивной справки от BBx об ошибке 31:
! ERROR = 31 - переполнение памяти рабочей области
Для информации, специфичной для BBj, см.! ERROR Изменения в BBj.
Недостаточно памяти для рабочего пространства. Выделение большего рабочего пространства с помощью глагола 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)