Fortranの'read'のVBへの書き換え方
Fortranのread/writeをVBへの書き換え方を教えて下さい。
他の方の作られたfortran.90のprogramをvisual basicに書きなおす作業をしています。その中の下記のfileのaccessが上手出来ません。このなかに有るbinary,とかbig_endianが原因のようです。
(これの無いfile accessの箇所は問題なく出来ました。)
program内でdataをfileに書込み保存して蓄積しているようで、後日このdataをreadして使うようになっていますので新しくfileを作り直すわけにもいきません。
いろいろとcodeを入れてみたが、結果は文字化けばかりで10日も費してしまいました。
binary,bigendianなどの理屈が判っていないのでどうしょうもないと感じました。
どうか下記のfortranをVisual Basicへの書き変え方をご教授お願いします。
REAL ShipDim(17)
'読み込みの時
filename = 'c:\pbcal\pbcal\pushdata\'//'push04'
open (3,file= filename, status='old', &
& form='BINARY', convert='BIG_ENDIAN',err=930)
DO 10 J= 1,17
read(3) shipDim(j)
10 CONTINUE
(中略) '見やすいように簡略化しています。
CLOSE (3,STATUS='KEEP')
'書込みの時はopenは下記で、後readをwriteに変えただけです。
open (3,file= filename, status=pstatus,form='BINARY', convert='BIG_ENDIAN',err=940)
VBでTRYしたことの一例
Dim dat() As Byte = New Byte(-1) {}
Dim sr As System.IO.Stream = Nothing
Dim br As System.IO.BinaryReader = Nothing
Dim strf As String = filepath & "push04" 'filepathは適当にしている
sr = System.IO.File.Open(strf, _
System.IO.FileMode.Open, System.IO.FileAccess.Read)
br = New System.IO.BinaryReader(sr)
ReDim dat(sr.Length - 1)
dat = br.ReadBytes(sr.Length)
dat に=572個の2-3桁の数字が入っています。encodingなどでためしてみたが文字化け
ばかりです。
(System.Text.Encoding.GetEncoding("****").GetString(dat) など)
どうかよろしくお願いします。
補足
返答ありがとうございます。 カレントディレクトリも気をつけてやってみたのですが、まだできませんでした。 最初はVBおよびFORTRANともに複雑なものを用意してやっていたのですが、なかなかうまくいかないので、今は極シンプルなプログラムを作って試しています。 FORTRAN側は ====================== program test open(100,file="test.dat") do i=1,10 write(100,*) sin(i) end do end program test ====================== VB側は、FORTRANをデバックして作成されたexeファイルを下記のようにただ実行するだけのソースを作っています。 ====================== Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Process1.StartInfo.FileName =("F:\workplace\Dyansty\Analysis\test.exe") Process1.Start() End Sub ====================== これで実行するとプログラムが終了しても、本来作成されるべき"test.dat"がどこにも作成されません。 このときOPEN文の方を"F:\workplace\Dyansty\Analysis\test.dat"とフルパスで指定してもダメでした。 ちなみにFORTRANはDeveloper Studioを使っています。 わかりにくいかと思いますが、教えてください。