ここから本文です

解決できなっかたのでもう一度質問させて頂きます。前回回答してくださった方、申...

ryo********さん

2010/10/522:17:55

解決できなっかたのでもう一度質問させて頂きます。前回回答してくださった方、申し訳ありません。もう補足できないので・・・。
Basicで、ファイル読み込みが上手くいきません。どこが悪いでしょうか。

jup.txt というテキストファイルの中身が

2446790.5, 4.957619, -0.214931, -0.110241
2446800.5, 4.959314, -0.135904, -0.110602

のようになっています。
そして以下のプログラム

110 DEFDBL T,D,R,X,Y,Z
120 OPEN "jup.txt"FOR INPUT AS #1
130 OPEN "jb2000.txt"FOR OUTPUT AS #2
140 IF EOF(1) THEN 380
150 INPUT #1,TT,DX,DY,DZ
160 T = TT/36525!
170 R11 = T* T*(-2.97235#*.0001 - T* .131#*.000001)
180 R12 = T*( 2.4381748#*.01 + T*( .05385#*.0001 - T*2.416#*.000001))
190 R13 = T*( .002035#*.01 + T*( .00943#*.0001 - T* .001#*.000001))
200 R21 = T*(-2.4381748#*.01 + T*( -.05389#*.0001 + T*2.416#*.000001))
210 R22 = T* T*(-2.97261#*.0001 - T* .131#*.000001)
220 R23 = T*( .0226966#*.01 + T*( -.00245#*.0001 - T* .002#*.000001))
230 R31 = T*( -.002035#*.01 + T*( .04591#*.0001 + T* .002#*.000001))
240 R32 = T*( -.0226966#*.01 + T*( -.00251#*.0001 + T* .046#*.000001))
250 R33 = T* T*( -.00026#*.0001)
260 X = DX + R11*DX + R12*DY + R13*DZ
270 Y = DY + R21*DX + R22*DY + R23*DZ
280 Z = DZ + R31*DX + R32*DY + R33*DZ
290 PRINT USING"######.#";TT;
300 PRINT USING"###.######";X;
310 PRINT USING"###.######";Y;
320 PRINT USING"###.######";Z
330 PRINT #2,USING"######.#";TT;
340 PRINT #2,USING"###.######";X;
350 PRINT #2,USING"###.######";Y;
360 PRINT #2,USING"###.######";Z
370 GOTO 140
380 CLOSE
390 END

を実行した結果、実行画面に
%2446790.5 0.000000 0.000000 0.000000
%2446800.5 0.000000 0.000000 0.000000

と出てしまい、jb2000.txt もつくられません。
0ではない計算された値を jb2000.txt に出力するにはどうすればよいでしょうか。
ちなみに使用しているのはN88互換BASIC for Windows95です。

閲覧数:
205
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

por********さん

2010/10/523:29:36

こんにちは。
これ、エクセルVABでも計算できます。 データのinputは仕方ないとして、
最初のデータは
2446790.5 -2.051156 -4.537791 -.011329
が答えです。

Sub basic()
'120 Open "jup.txt" For Input As #1
'130 Open "jb2000.txt" For Output As #2
'140 If EOF(1) Then GoTo 380
'150 Input #1, TT, DX, DY, DZ
TT = 2446790.5: DX = 4.957619: DY = -0.214931: DZ = -0.110241
'2446800.5, 4.959314, -0.135904, -0.110602

160 T = TT / 36525!
170 R11 = T * T * (-2.97235 * 0.0001 - T * 0.131 * 0.000001)
180 R12 = T * (2.4381748 * 0.01 + T * (0.05385 * 0.0001 - T * 2.416 * 0.000001))
190 R13 = T * (0.002035 * 0.01 + T * (0.00943 * 0.0001 - T * 0.001 * 0.000001))
200 R21 = T * (-2.4381748 * 0.01 + T * (-0.05389 * 0.0001 + T * 2.416 * 0.000001))
210 R22 = T * T * (-2.97261 * 0.0001 - T * 0.131 * 0.000001)
220 R23 = T * (0.0226966 * 0.01 + T * (-0.00245 * 0.0001 - T * 0.002 * 0.000001))
230 R31 = T * (-0.002035 * 0.01 + T * (0.04591 * 0.0001 + T * 0.002 * 0.000001))
240 R32 = T * (-0.0226966 * 0.01 + T * (-0.00251 * 0.0001 + T * 0.046 * 0.000001))
250 R33 = T * T * (-0.00026 * 0.0001)
260 x = DX + R11 * DX + R12 * DY + R13 * DZ
270 y = DY + R21 * DX + R22 * DY + R23 * DZ
280 z = DZ + R31 * DX + R32 * DY + R33 * DZ
Stop
290 Debug.Print Format(TT, "######.#"); " "; ' TT;
300 Debug.Print Format(x, "###.######"); " ";
310 Debug.Print Format(y, "###.######"); " ";
320 Debug.Print Format(z, "###.######"); " "

さて、前回に比べて、「データに,記号、追加しましたね」 inputの直後、stopしてみて、変数に正しく入ったのか、
確認したのかを、示して下さい。 そもそも、入らないのが質問だったでしょ。

続いて、usingですが、 本当に画面に、綺麗に、並んだのでしたら、usingは正しい使いかたですが、なぜか、数値が入らない
という部分と、 そもそも、ファイル名に、ドライブ名が無いのは、いいんですかね?
N88互換BASIC for Windows95です。 <==== これ、N88との違いがありますから、マニュアルもよく読まないとだめですね。
ファイル名の規則は、マニュアルをしっかり読んで下さい。 ドライブ名は正確にしてください。

手元に無いので、確認してほしいこと
DEFDBL <=== これ、疑っていませんでしたけど、 ここが、間違っていたら、全然ダブルの変数扱いになりません。
webページでは、変数に#記号が使われていましたので、 もしかして、ここが原因かも

コードの変数は単純変数扱い、ということです。 一行DEFの部分を修正したら、直るかもです。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

tac********さん

2010/10/522:37:58

私はN88BASICを使った事が無いので良く判りませんが、

120 OPEN "jup.txt"FOR INPUT AS #1
130 OPEN "jb2000.txt"FOR OUTPUT AS #2

に # はいらないのでは?

又デバッグは一気に行わず、1行づつ変数の結果が予定通りに変化しているか確認しながら行いましょう。
ステップ実行機能が無いのなら変数の結果を表示させれば判ります。

380 CLOSE
は正しくは
CLOSE #1
CLOSE #2

CLOSE 1
CLOSE 2
になる気がします。


# の要否に付いては下記を参考にしました。
N88BASICプログラム見本
http://www.sci.kagoshima-u.ac.jp/~furukawa/home/n88_program.htm

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる