質問編集履歴

4

エラーメッセージ(.dat→.txt)

2021/07/04 02:50

投稿

beachone1155
beachone1155

スコア16

test CHANGED
File without changes
test CHANGED
@@ -62,7 +62,7 @@
62
62
 
63
63
  ターミナル実行結果
64
64
 
65
- At line 10 of file cutter50.f90 (unit = 11, file = 'test_master.dat')
65
+ At line 10 of file cutter50.f90 (unit = 11, file = 'test_master.txt')
66
66
 
67
67
  Fortran runtime error: End of file
68
68
 

3

誤字の修正

2021/07/04 02:50

投稿

beachone1155
beachone1155

スコア16

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- TRAN90を使って、複数行あるテキストファイルを50行ずつ分割して別々のテキストに保存する、ということをしたいのですが、うまくいきません。
1
+ FORTRAN90を使って、複数行あるテキストファイルを50行ずつ分割して別々のテキストに保存する、ということをしたいのですが、うまくいきません。
2
2
 
3
3
 
4
4
 

2

誤字の修正

2021/07/04 02:09

投稿

beachone1155
beachone1155

スコア16

test CHANGED
File without changes
test CHANGED
@@ -7,6 +7,8 @@
7
7
 
8
8
 
9
9
  この原因が分からないので教えていただきたいです。
10
+
11
+ 変数fnameはうまく生成されていることは確認済みです。
10
12
 
11
13
  環境はMacでターミナルはbashを用いています。
12
14
 
@@ -124,4 +126,4 @@
124
126
 
125
127
 
126
128
 
127
- teratailでの質問の経験が浅いため、質問方法が粗末で申し訳ありません。```
129
+ teratailでの質問の経験が浅いため、質問方法が粗末で申し訳ありません。

1

誤字の修正

2021/07/04 02:08

投稿

beachone1155
beachone1155

スコア16

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,16 @@
1
- FORTRAN90を使って、複数行あるテキストファイルを50行ずつ分割して別々のテキストに保存する、ということをしたいのですが、うまくいきません。
1
+ TRAN90を使って、複数行あるテキストファイルを50行ずつ分割して別々のテキストに保存する、ということをしたいのですが、うまくいきません。
2
2
 
3
- 以下のようにmodで出力ファイルを0001-0050.txtのように生成して、そこにmasterのテキストを一行ずつ入力するという方法を取っているのですが、modの余り値を0にする(出力ファイル名が0001-0050.txt,0051-0100.txtのようになる)と意図通りに動作してくれて、余り値を25に設定する(0026-0075.txt,0076-0125.txt)と
3
+
4
+
5
+ 以下のようにmodで出力ファイルを0001-0050.txtのように生成して、そこにmasterのテキストを一行ずつ入力するという方法を取っているのですが、modの余り値を0にする(出力ファイル名が0001-0050.txt,0051-0100.txtのようになる)と意図通りに動作してくれて、余り値を25に設定する(出力ファイルが0026-0075.txt,0076-0125.txt)とエラーになってしまいます。
6
+
7
+
8
+
9
+ この原因が分からないので教えていただきたいです。
10
+
11
+ 環境はMacでターミナルはbashを用いています。
12
+
13
+ よろしくお願いいたします。
4
14
 
5
15
  ```FORTRAN90
6
16
 
@@ -14,51 +24,7 @@
14
24
 
15
25
  do i = 1, 123 !入力ファイルのデータ数を設定
16
26
 
17
- if(mod(i-1,50) == 0) then
18
-
19
- write(fname,'(a11,i4.4,a1,i4.4,a4)') "test", i, "-", i+49, ".txt"!出力ファイル名を設定
20
-
21
- open(12,file = fname)
22
-
23
- end if
24
-
25
- read(11,'(a80)')
26
-
27
- write(12,*) line
28
-
29
- if(mod(i,50) == 0) then
30
-
31
- close(12)
32
-
33
- end if
34
-
35
-
36
-
37
- end do
38
-
39
-
40
-
41
- close(11)
42
-
43
-
44
-
45
- end
46
-
47
- ```
48
-
49
- ```FORTRAN90
50
-
51
- character*80 line
52
-
53
- character*24 fname
54
-
55
-
56
-
57
- open(11,file = 'test_master.txt')!入力ファイル名を設定
58
-
59
- do i = 1, 123 !入力ファイルのデータ数を設定
60
-
61
- if(mod(i-1,50) == 25) then
27
+ if(mod(i-1,50) == 25) then !ここを25にするとうまく動かない
62
28
 
63
29
  write(fname,'(a11,i4.4,a1,i4.4,a4)') "test", i, "-", i+49, ".txt"!出力ファイル名を設定
64
30
 
@@ -89,3 +55,73 @@
89
55
  end
90
56
 
91
57
  ```
58
+
59
+ ```
60
+
61
+ ターミナル実行結果
62
+
63
+ At line 10 of file cutter50.f90 (unit = 11, file = 'test_master.dat')
64
+
65
+ Fortran runtime error: End of file
66
+
67
+
68
+
69
+ Error termination. Backtrace:
70
+
71
+
72
+
73
+ Could not print backtrace: libbacktrace could not find executable to open
74
+
75
+ #0 0xffffffff
76
+
77
+ #1 0xffffffff
78
+
79
+ #2 0xffffffff
80
+
81
+ #3 0xffffffff
82
+
83
+ #4 0xffffffff
84
+
85
+ #5 0xffffffff
86
+
87
+ #6 0xffffffff
88
+
89
+ #7 0xffffffff
90
+
91
+ #8 0xffffffff
92
+
93
+ #9 0xffffffff
94
+
95
+ #10 0xffffffff
96
+
97
+ #11 0xffffffff
98
+
99
+ #12 0xffffffff
100
+
101
+ #13 0xffffffff
102
+
103
+ #14 0xffffffff
104
+
105
+ ```
106
+
107
+ ```
108
+
109
+ test_master.txtの中身
110
+
111
+ 37.751667 138.458000 19.990000 1.500000 2011 3 1 20 51 36.580000
112
+
113
+ 36.939167 138.714333 7.750000 0.400000 2011 3 2 6 39 10.170000
114
+
115
+ 37.122167 138.800833 7.860000 1.900000 2011 3 2 7 16 25.700000
116
+
117
+ 36.998167 138.876500 7.710000 1.300000 2011 3 2 14 40 18.940000
118
+
119
+ 36.958833 138.157667 19.470000 1.100000 2011 3 3 4 35 42.970000
120
+
121
+ 以下、計123行分同じ形式のデータ
122
+
123
+ ```
124
+
125
+
126
+
127
+ teratailでの質問の経験が浅いため、質問方法が粗末で申し訳ありません。```