ページ 11

AB4.04/4.1のコンパイラが落ちる

Posted: 2005年8月26日(金) 01:59
by Sinryow
プログラミング掲示板のソートの問題をAB4に移植しようとして以下のコードを書いたのですが,コンパイル(デバッグ,リリースともに)するとAB4.04,4.1ともにコンパイラが落ちてしまいます。
原因の調査お願いします。

※環境
Windows XP SP2を使用しています。下のコードは1つのabpファイルに書いてあります。

コード: 全て選択

#prompt

Print "program start", Time$()
'
' ファイルオープン
'
Open "infile.csv" For Input As #1
Open "outfile.csv" For Output As #2
'
' ファイルリード、テーブルストック
'
Const DATANUM = 1000
Dim FileData[25] As String
Dim i As Long, j As Long, tblcnt As Long
Dim keytbl[ELM(DATANUM)] As String
Dim datatbl[ELM(DATANUM)] As String

Print "tbl stock start", Time$()
tblcnt=-1
While Eof(1)=0
	For i=0 To 25
		Input #1, FileData
	Next
	
	tblcnt=tblcnt+1
	If tblcnt>=DATANUM Then Exit While
    
	keytbl[tblcnt]=FileData[0]+FileData[1]
	datatbl[tblcnt]=Str$(tblcnt)
	For i=0 To 25
		datatbl[tblcnt]=datatbl[tblcnt]+","+FileData
	Next
Wend
Print "tbl stock end", Time$()
'
' 単純選択法ソート
'
Dim p1 As Long, p2 As Long, p3 As Long
Dim buf As String ' データの交換用

Print "sort start", Time$()
p3=tblcnt
For i=0 To p3-1
	p1=i: p2=i
	For j=i+1 To p3
		If keytbl[p1]>keytbl[j] Then
			p1=j
		End If
		If keytbl[p2]<keytbl[j] Then
			p2=j
		End If
    Next
    If p1<>i Then
		buf=keytbl: keytbl=keytbl[p1]: keytbl[p1]=buf
		buf=datatbl: datatbl=datatbl[p1]: datatbl[p1]=buf
    End If
    If p2<>i Then
		buf=keytbl[p3]: keytbl[p3]=keytbl[p2]: keytbl[p2]=buf
		buf=datatbl[p3]: datatbl[p3]=datatbl[p2]: datatbl[p2]=buf
		p3=p3-1
	End If
Next
Print "sort end", Time$()
'
' ソートしたテーブルをファイルに出力
'
Print "file out start", Time$()
For i=0 To tblcnt
    Print #2,datatbl
Next
Print "file out end", Time$()
'
' ファイルクローズ
'
Close #1
Close #2
Print "program end", Time$()
'
' 処理終了確認
'
*ProgramEnd
Print "ソート処理が終了しました。"

Re: AB4.04/4.1のコンパイラが落ちる

Posted: 2005年8月26日(金) 08:37
by hira
実は以前から問題になっているんです、これ(^^;;
String型の配列の要素数を1000~1500(環境によって多少違う)以上で宣言するとコンパイラが落ちることについては、回避策が過去ログにありますのでご覧ください。
[http://dbp.cool.ne.jp/patio/patio.cgi?mode=view&no=138 より過去ログをダウンロードしてください。この件に関しては過去ログの1915番に書いてあります。]

結局の所、バグといえばバグなんですが、文字列型の配列はあまりスマートじゃないかも、という結論に至っています。山本さんからのアナウンスはないみたいですが。

Re: AB4.04/4.1のコンパイラが落ちる

Posted: 2005年8月26日(金) 22:19
by Sinryow
その問題でしたか・・・すっかり忘れてました。

しかし,なぜコンパイラが落ちるのでしょうね・・・これは山本さんに是非原因を究明していただきたいです。