Форум программистов, компьютерный форум, киберфорум
Наши страницы
Fortran
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Cheetah7
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 11
1

Как перекомпилировать код из Fortran 77 в Fortran 90/95?

29.04.2018, 19:24. Просмотров 961. Ответов 23

Добрый день!

У меня есть exe-файл, написанный на Fortran 77 для Windows XP 32-bit. На моём компьютере стоит Windows 7 64-bit. Понятно, что этот exe-файл не будет запускаться на семёрке. Как мне перекомпилировать файл, чтобы работал на моей Windows 7? (исходный файл с кодом на Fortran 77 есть)

Использую компилятор Silverfrost 95 Plato
Так же стоит CodeBlocks с библиотекой MinGW, gfortran

Пытаюсь компилировать файл, вылезает много ошибок, возможно из-за разных версий Fortran

Есть ли какой-нибудь способ создать работающий exe для Windows 7?

Заранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2018, 19:24
Ответы с готовыми решениями:

Как копировать из Word в Fortran?
Конечно глупый вопрос,но как скопировать текст из вордовского файла в fortran?

Как распараллелить процедуру Fortran OMP
SUBROUTINE rasch(a,n,m1,m2,np,mp,al,mpl,indx,b) INTEGER ::...

Как заставить Fortran читать перемещающиеся координаты?
Имеется программа, которая уже строит чертежи объектов, но в одной плоскости во всех видах. Если...

Посоветуйте книгу по Fortran-у (как работать с битами)
как на fortran'е работать с битами.

Как задержать экран в компиляторе Microsoft Fortran Powerstation 4.0 ?
при запуске программы выдаётся результат и мгновенно исчезает. Какой командой задержать окошко?

23
WH
953 / 344 / 63
Регистрация: 10.09.2013
Сообщений: 1,323
Записей в блоге: 1
29.04.2018, 19:38 2
А в режиме совместимости не получается на win7 запустить?
Вообще fortran 95 обеспечивает обратную совместимость, так что должно компилироваться, хотя в синтаксисе может и нужно что-то подправить. Вы бы файл с кодами, если он не "секретный" ), выложили. Без этого все советы это "пальцем в небо") .
0
Cheetah7
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 11
29.04.2018, 20:22  [ТС] 3
А как запустить режим совместимости?

Добавлено через 7 минут
Нет. В режиме совместимости тоже самое(

Добавлено через 1 минуту
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
C
C  СПЕЦИАЛЬНАЯ ПРОГРАММА ДЛЯ РЕЛњЕНИЯ УРАВНЕНИЙ
C         ТЕПЛОВОГО БАЛАНСА ( SPRUT 3 )
C
       LOGICAL L1,L2,L3
       CHARACTER L44,DAT*12,PDAT*12,FDAT*12
       REAL A(60,60),B(60,60),P(60,60),W(60,120),C(60),F(60),
     * E(60),Q(60),X(60),WR(60)
       EQUIVALENCE (B(1,1),P(1,1),W(1,61))
       INTEGER IA(120),IB(60),H
       MAX=60
 1000  FORMAT(5A4)
 1001  FORMAT(87X,'ВАРИАНТ',1X,5A4)
 1002  FORMAT(2E4.2,3I3)
 1003  FORMAT(1X/59X,'ТАБЛИЦА')
 1004  FORMAT(1X//49X,'ПРОДОЛЖЕНИЕ ТАБЛ.'/1X)
 1005  FORMAT(22X,'НЕНУЛЕВЫЕ ЭЛЕМЕНТЫ МАТРИЦЫ'/18X,
     * 'КОЭФФИЦИЕНТОВ ТЕПЛОПЕРЕДАЧИ K(I,J),BT/K')
 1006  FORMAT(6X,64('-')/)
 1007  FORMAT(6X,':  I  :',3(2X,'J  K(I,J)  :'),
     * 2X,'J  K(I,J)  :')
 1008  FORMAT(24X,'НЕНУЛЕВЫЕ ЭЛЕМЕНТЫ МАТРИЦЫ'/23X
     * ,'УГЛОВЫХ КОЭФФИЦИЕНТОВ FI(I,J)')
 1009  FORMAT(6X,':  I  :  J   FI(I,J):',
     * 4(' J FI(I,J):'))
 1010  FORMAT(2X,'ЗНАЧЕНИЯ ВЕЛИЧИН  F (M**2),E, QBH (BT), AS, FIS,FIR,
     * FIE')
 1011  FORMAT(5X,66('-')/)
 1012  FORMAT(5X,':  I  :',5X,'F',5X,':   E',3X,':',4X,'QBH',4X,':',
     * 2X,'AS',2X,':',2X,'FIS',1X,':',2X,'FIR',1X,':',2X,'FIE',1X,':')
 1013  FORMAT(1X,6(/),52X,'ТАБЛИЦА'/21X,
     * 'РАСПРЕДЕЛЕНИЕ ТЕМПЕРАТУР T(I), ГРАД. С'/1X)
 1014  FORMAT(13X,50('-')/)
 1015  FORMAT(13X,2(':    I   :      T(I)    :'))
 1016  FORMAT(19X,'РАСПРЕДЕЛЕНИЕ ТЕПЛОВЫХ ПОТОКОВ'/13X,
     * 'ТЕПЛОПРОВОДНОСТЬЮ И ИЗЛУЧЕНИЕМ  Q(I,J), ВТ' )
 1017  FORMAT(4X,68('-')/)
 1018  FORMAT(5X,'I :',4('  J   Q(I,J)  :'))
 1019  FORMAT(I1,2I3,9(I3,E5.3)/10(I3,E5.3))
 1120  FORMAT(6X,':',1X,I3,1X,':',I3,1X,E9.3,3(I4,1X,E9.3),1X,':')
 1020  FORMAT(6X,':',1X,I3,1X,':',I3,1X,E9.3,3(I4,1X,E9.3),1X,':'/(6X
     * ,':',5X,':',I3,1X,E9.3,I4,1X,E9.3,I4,1X,E9.3,I4,1X,E9.3,1X,':'))
 1021  FORMAT(5X,':',I4,':',1X,E9.3,1X,':',1X,F5.3,1X,':',E10.3
     * ,1X,':',4(1X,F4.2,1X':'))
 1022  FORMAT(I1,2E5.3,E6.3,4E4.2)
 1023  FORMAT(15X,'НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ'/(3X,10F7.1)/)
 1024  FORMAT(17X,'ГРАНИЧНЫЕ УСЛОВИЯ'/(3X,10F7.1)/)
 1025  FORMAT(10E6.4)
 1026  FORMAT(13X,2(':',2X,I3,3X,':',4X,F6.1,4X,':'))
 1027  FORMAT(3X,I3,1X,':',4(15X,':'))
 1029  FORMAT(7X,':',I3,1X,E10.3,1X,':',I3,1X,E10.3,1X,':'
     * ,I3,1X,E10.3,1X,':',I3,1X,E10.3,1X,':')
 1129  FORMAT(7X,':',4(I3,1X,E10.3,' :'))
 1130  FORMAT(6X,':',I4,2X,':',5(I3,1X,F5.3,2X),':')
 1030  FORMAT(6X,':',I4,2X,':',5(I3,1X,F5.3,2X),':'/(6X,':',6X
     * ,':',I3,1X,F5.3,2X,I3,1X,F5.3,2X,I3,1X,F5.3,2X,I3,1X,F5.3
     * ,2X,I3,1X,F5.3,2X,':'))
 1111  FORMAT(A1)
 2222  FORMAT(A)
       WRITE(*,*)' ВВЕДИТЕ ИМЯ ФАЙЛА ДАННЫХ?'
       READ(*,2222) DAT
       OPEN(UNIT=10,FILE=DAT,STATUS='OLD')
C      
       READ(10,1000) LB1,LB2,LB3,LB4,LB5
       READ(10,1002) E0,E1,N,NK,H
       L1=.FALSE.
       L2=.TRUE.
 100   DO 1 I=1,N
       X(I)=.0
       IF(L1) X(I)=1.
       DO 1 J=1,MAX
       W(I,J)=.0
    1  P(I,J)=.0
    2  READ(10,1019)L0,J,K,(IA(L),Q(L),L=1,K)
       DO 3 L=1,K
       I=IA(L)
       P(I,J)=Q(L)
       X(I)=X(I)-P(I,J)
       R=1.
       IF(L1) R=F(I)/F(J)
       P(J,I)=R*Q(L)
       X(J)=X(J)-P(J,I)
    3  CONTINUE
       IF(L0. EQ .1) GO TO 2
       IF(L1) GO TO 12
       WRITE(*,*)'ВЫВОД ИСХОДНЫХ ДАННЫХ:PRN/CON/FILE'
       READ(*,2222) PDAT
       OPEN(UNIT=5,FILE=PDAT,STATUS='NEW')
       WRITE(*,*) 'ПЕЧАТАТЬ ТАБЛИЦУ КОЭФ-ТОВ ТЕПЛОПЕРЕДАЧИ? (Y/N)'
       READ(*,1111) L44
       IF(L44.EQ.'N') GO TO 454
C
       WRITE(5,1001) LB1,LB2,LB3,LB4,LB5
       WRITE(5,1003)
       WRITE(5,1005)
       WRITE(5,1006)
       WRITE(5,1007)
       WRITE(5,1006)
  454  CONTINUE
       KL=1
       KC=12
       DO 4 I=1,N
       P(I,I)=X(I)
       K=0
       DO 5 J=1,N
       IF(P(I,J).LT..1E-4.OR.P(I,I).EQ.1.) GO TO 5
       K=K+1
       IA(K)=J
       Q(K)=P(I,J)
    5  CONTINUE
       IF(L44.EQ.'N') GO TO 4
       IF(K.EQ.0) GO TO 4
       KP=K/4+1
       IF(K/4*4.EQ.K) KP=K/4
       KC=KC+KP
       IF(KC.LE.66*KL) GOTO 60
       KL=KL+1
       KC=KC+9
       WRITE(5,1004)
       WRITE(5,1006)
       WRITE(5,1007)
       WRITE(5,1006)
   60  IF(K.LE.4) WRITE(5,1120)I,(IA(J),Q(J),J=1,K)
       IF(K.GT.4) WRITE(5,1020)I,(IA(J),Q(J),J=1,K)
    4  CONTINUE
       IF(L44.EQ.'Y') WRITE(5,1006)
C
       DO 6 I=1,N
       DO 6 J=1,N
    6  A(I,J)=P(I,J)
       WRITE(*,*) 'ПЕЧАТАТЬ ТАБЛИЦУ ЗНАЧЕНИЙ F,E,QВН,AS ? (Y/N)'
       READ(*,1111)L44
       IF(L44.EQ.'N') GO TO 455
C
       KC=66*KL-KC-1
       IF(KC.GT.10) GO TO 65
       KC=8
       GO TO 66
   65  KC=66-KC+9
   66  KL=1
       WRITE(5,1003)
       WRITE(5,1010)
       WRITE(5,1011)
       WRITE(5,1012)
       WRITE(5,1011)
  455  CONTINUE
       DO 8 K=1,N
       IB(K)=K
       C(K)=.0
       DO 9 I=1,7
    9  X(I)=.0
       READ(10,1022)J,(X(I),I=1,J)
       F(K)=X(1)
       E(K)=X(2)
       C(K)=X(3)+F(K)*(X(4)*(X(5)*1400.+X(6)*280.)+
     * E(K)*X(7)*210.)
       IF(L44.EQ.'N') GO TO 8
       KC=KC+1
       IF(KC.LE.66*KL) GO TO 61
       KL=KL+1
       KC=KC+9
       WRITE(5,1004)
       WRITE(5,1011)
       WRITE(5,1012)
       WRITE(5,1011)
   61  IF(K-NK) 10,10,11
   10  WRITE(5,1021)K,(X(I),I=1,J)
       GO TO 8
   11  WRITE(5,1021)K,F(K),E(K)
    8  CONTINUE
       IF(L44.EQ.'Y') WRITE(5,1011)
  445  CONTINUE
       L1=.TRUE.
       L2=.FALSE.
       GO TO 100
C
   12  KC=66*KL-KC-1
       IF(KC.GT.12) GO TO 67
       KC=10
       GO TO 68
   67  KC=66-KC+10
   68  KL=1
       WRITE(*,*) 'ПЕЧАТАТЬ ТАБЛИЦУ УГЛОВЫХ КОЭФ-ТОВ? (Y/N)'
       READ(*,1111) L44
       IF(L44.EQ.'N') GO TO 456
       WRITE(5,1003)
       WRITE(5,1008)
       WRITE(5,1006)
       WRITE(5,1009)
       WRITE(5,1006)
  456  CONTINUE
   16  R=.0
       DO 13 I=1,N
       IF(X(I).GE.R) GO TO 13
       K=I
       R=X(I)
   13  CONTINUE
       IF(R.GE.-1E-4) GO TO 7
       I=K
       R=R/(1.-R)
       IF(R.LT.-.3) GO TO 14
       DO 15 J=1,N
       IF(J.EQ.I) GO TO 15
       S=R*P(I,J)
       P(I,J)=P(I,J)+S
       S=S*F(I)/F(J)
       P(J,I)=P(J,I)+S
       X(J)=X(J)-S
   15  CONTINUE
       X(I)=.0
       GO TO 16
   14  WRITE(5,1100)I
 1100  FORMAT(1X,'СТРОКА N',I3)
       GO TO 2000
    7  CONTINUE
       DO 69 I=1,N
   69  P(I,I)=X(I)
       IF(L44.EQ.'N') GO TO 446
C
       DO 62 I=1,N
       K=0
       DO 63 J=1,N
       IF(P(I,J).LT..1E-2.OR.P(I,I).EQ.1.) GO TO 63
       K=K+1
       IA(K)=J
       Q(K)=P(I,J)
   63  CONTINUE
       IF(K.EQ.0) GO TO 62
       KP=K/5+1
       IF(K/5*5.EQ.K) KP=K/5
       KC=KC+KP
       IF(KC.LE.66*KL) GO TO 64
       KL=KL+1
       KC=KC+9
       WRITE(5,1004)
       WRITE(5,1006)
       WRITE(5,1009)
       WRITE(5,1006)
  64   IF(K.LE.5)WRITE(5,1130)I,(IA(J),Q(J),J=1,K)
       IF(K.GT.5)WRITE(5,1030)I,(IA(J),Q(J),J=1,K)
  62   CONTINUE
       WRITE(5,1006)
  446   CONTINUE
C
       K=NK+1
       READ(10,1025)(X(I),I=1,N)
       WRITE(5,1023)(X(I)-273,I=1,NK)
       WRITE(5,1024)(X(I)-273,I=K,N) 
       CLOSE(UNIT=10)
       OPEN(UNIT=6,FILE='CON',STATUS='NEW')
       WRITE(*,'(//'' ПЕЧАТЬ РЕЗУЛЬТАТОВ:PRN/CON/FILE?'')')
       READ(*,2222) FDAT
       OPEN(UNIT=7,FILE=FDAT,STATUS='NEW')
C
       DO 18 K=1,N
       P1=(1.-E(K))/E(K)
       Q(K)=P1
       DO 18 I=1,N
       R=-P1*P(K,I)
       IF(I.EQ.K) R=R+P1+1.
  18   P(K,I)=R
       DO 19 K=1,N
       DO 20 I=1,N
  20   W(K,I)=P(K,I)*Q(I)
  19   P(K,K)=P(K,K)-1.
       M=N
       M1=MAX+N
C
   21  DO 22 I=1,M1
   22  IA(I)=1
       DO 23 L=1,M
       S=.0
       DO 24 I=1,M
       IF(IA(I)) 24,24,25
   25  DO 26 J=1,M
       IF(IA(J)) 26,26,27
   27  R=ABS(W(I,J))
       IF(R-S) 26,26,28
   28  IM=I
       JM=J
       S=R
   26  CONTINUE
   24  CONTINUE
       IF(S.LT.1E-15) GO TO 101
       R=1./W(IM,JM)
       IA(JM)=-1
       DO 23 J=1,M1
       IF(IA(J)) 23,23,29
   29  S=R*W(IM,J)
       DO 30 I=1,M
       IF(I-IM) 31,30,31
   31  W(I,J)=W(I,J)-S*W(I,JM)
   30  CONTINUE
       W(IM,J)=W(JM,J)
       W(JM,J)=S
   23  CONTINUE
       IF(L2) GO TO 51
       IF(M1-M.NE.1) GO TO 32
       GO TO 43
  101  WRITE(6,1101)
 1101  FORMAT(1X,'ОПРЕДЕЛИТЕЛЬ=0')
       GO TO 2000
C
   32  DO 33 I=1,N
       DO 33 J=1,N
   33  B(I,J)=-5.668*F(I)*P(I,J)
C
       K=NK+1
       DO 34 I=1,NK
       IF(X(I).LT.E0)A(I,I)=1.
       DO 34 J=K,N
   34  C(I)=C(I)+A(I,J)*X(J)+B(I,J)*(.01*X(J))**4
       M=NK
       M1=M+1
       NM=0
C
   37  L3=.TRUE.
       L1=.TRUE.
       S=.0
       DO 35 I=1,NK
       R=C(I)
       DO 36 J=1,NK
       R=R+A(I,J)*X(J)+B(I,J)*(X(J)*.01)**4
   36  W(I,J)=A(I,J)+0.04*B(I,J)*(X(J)*0.01)**3
       A1=ABS(R)
       IF(S.LT.A1) S=A1
       L3=L3.AND.A1.LT.E0
       L1=L1.AND.A1.LT.E1
       W(I,M1)=R
   35  Q(I)=R
       WRITE(6,1102) S
 1102  FORMAT(1X,' MAX НЕВЯЗКА:',E10.2)
       IF(L3) GO TO 45
       IF(L1) WRITE(6,1103)(IB(I),X(I),I=1,NK)
 1103  FORMAT(2X,10('T',I3,'=',F6.1))
       IF(L1.OR.NM.GT.H) GO TO 21
C
       DO 38 I=1,NK
       R=.0
       DO 39 L=1,NK
   39  R=R+W(L,I)*Q(L)
   38  WR(I)=R
       PM=.0
       DN=.0
       DO 40 I=1,NK
       R=.0
       DO 41 L=1,NK
   41  R=R+W(I,L)*WR(L)
       PM=PM+Q(I)*R
   40  DN=DN+R*R
       PM=PM/DN
       DO 42 I=1,NK
   42  X(I)=X(I)-PM*WR(I)
       NM=NM+1
       WRITE(6,1106)
 1106  FORMAT(1X,'МЕТОД СКОРЕЙЛњЕГО СПУСКА')
       GO TO 37
C
   43  DO 44 I=1,NK
   44  X(I)=X(I)-W(I,M1)
       NM=NM+1
       WRITE(6,1107)
 1107  FORMAT(1X,'МЕТОД НЬЮТОНА')
       GO TO 37
C
   45  DO 46 I=1,N
       R=.0
       DO 47 J=1,N
       IF(I.EQ.1) WR(J)=(.01*X(J))**4
   47  R=R-B(I,J)*WR(J)
   46  C(I)=R
C
       WRITE(7,1001) LB1,LB2,LB3,LB4,LB5
       WRITE(7,1013)
       WRITE(7,1014)
       WRITE(7,1015)
       WRITE(7,1014)
       K=N/2
       DO 48 I=1,K
       J=K+I
   48  WRITE(7,1026) I,X(I)-273,J,X(J)-273
       IF(2*K.LT.N) WRITE(7,1104) N,X(N)-273
 1104  FORMAT(13X,':',8X,':',14X,'::',2X,I3,3X,':',4X,F6.1,4X,':')
       WRITE(7,1014)
       WRITE(*,*) 'ПЕЧАТАТЬ ТАБЛИЦУ ТЕПЛОВЫХ ПОТОКОВ ? (Y/N)'
       READ(*,1111)L44
       IF(L44.EQ.'N') GO TO 447
C
       DO 49 I=1,N
       Q(I)=(1.-E(I))/E(I)
       DO 49 J=1,N
   49  P(I,J)=-B(I,J)/(5.668*F(I))
       DO 50 I=1,N
       W(I,I)=P(I,I)*Q(I)-1.
       P(I,I)=-1.0
       DO 50 J=1,N
       IF(I.EQ.J) GO TO 50
       W(I,J)=P(I,J)*Q(I)
       P(I,J)=.0
   50  CONTINUE
       M=N
       M1=MAX+N
       L2=.TRUE.
       GO TO 21
C
   51  KL=1
       KC=12
       WRITE(7,1001) LB1,LB2,LB3,LB4,LB5
       WRITE(7,1003)
       WRITE(7,1016)
       WRITE(7,1017)
       WRITE(7,1018)
       WRITE(7,1017)
       DO 52 I=1,N
       M=0
       DO 53 J=1,N
       R=A(I,J)*(X(J)-X(I))
       IF(ABS(R).LT..1E-1) GO TO 53
       M=M+1
       IB(M)=J
       Q(M)=R
   53  CONTINUE
       IF(M.EQ.0) GO TO 55
       NM=4
       IF(M.LT.NM) NM=M
       WRITE(7,1129)(IB(J),Q(J),J=1,NM)
       IF(M.EQ.NM) GO TO 55
       WRITE(7,1029)(IB(J),Q(J),J=5,M)
       KP=M/4+1
       IF(M/4*4.EQ.M) KP=M/4
       KC=KC+KP+1
   55  IF(M.EQ.0.OR.M.EQ.NM) KC=KC+2
       M=0
       DO 57 J=1,N
       R=C(I)*P(I,J)-C(J)*P(J,I)+5.668*F(J)*P(J,I)*
     * WR(J)*E(J)/(1.-E(J))-5.668*F(I)*P(I,J)*WR(I)*
     * E(I)/(1.-E(I))
       R=-R
       IF(ABS(R).LT..1E-1) GO TO 57
       M=M+1
       IB(M)=J
       Q(M)=R
   57  CONTINUE
       WRITE(7,1027) I
       IF(M.EQ.0) GO TO 52
       WRITE(7,1029)(IB(J),Q(J),J=1,M)
       KP=M/4+1
       IF(M/4*4.EQ.M) KP=M/4
       KC=KC+KP+1
       IF(KC.LT.66*KL) GOTO 52
       KL=KL+1
       KC=KC+9
       WRITE(7,1004)
       WRITE(7,1017)
       WRITE(7,1018)
   52  WRITE(7,1017)
  447  CONTINUE
 2000  CONTINUE
       CLOSE(UNIT=5)
       CLOSE(UNIT=6)
       CLOSE(UNIT=7)
C
       STOP
       END
 
C
0
WH
953 / 344 / 63
Регистрация: 10.09.2013
Сообщений: 1,323
Записей в блоге: 1
29.04.2018, 20:30 4
Крокозябр полно. Что-то с кодировкой не то. Попробуйте открыть файл с кодом корректно, можно попробовать с помощью браузера.
0
29.04.2018, 20:30
Cheetah7
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 11
29.04.2018, 20:30  [ТС] 5
Когда компилирую в Plato, выходят только warning. exe-файл, который запускается на Windows 7 создаётся, но работает некорректно.
0
Миниатюры
Как перекомпилировать код из Fortran 77 в Fortran 90/95?  
Cheetah7
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 11
29.04.2018, 20:33  [ТС] 6
Эта программа была написана давно, на Fortran 77
0
WH
953 / 344 / 63
Регистрация: 10.09.2013
Сообщений: 1,323
Записей в блоге: 1
29.04.2018, 20:56 7
Попробуйте так скомпилировать. Но если получиться нужно обязательно проверить на правильность работы. (у меня компильнулась)

Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
!
!  СПЕЦИАЛЬНАЯ ПРОГРАММА ДЛЯ РЕЛњЕНИЯ УРАВНЕНИЙ
!         ТЕПЛОВОГО БАЛАНСА ( SPRUT 3 )
!
       LOGICAL L1,L2,L3
       CHARACTER L44,DAT*12,PDAT*12,FDAT*12
       REAL A(60,60),B(60,60),P(60,60),W(60,120),C(60),F(60),&
       E(60),Q(60),X(60),WR(60)
       EQUIVALENCE (B(1,1),P(1,1),W(1,61))
       INTEGER IA(120),IB(60),H
       MAX=60
 1000  FORMAT(5A4)
 1001  FORMAT(87X,'ВАРИАНТ',1X,5A4)
 1002  FORMAT(2E4.2,3I3)
 1003  FORMAT(1X/59X,'ТАБЛИЦА')
 1004  FORMAT(1X//49X,'ПРОДОЛЖЕНИЕ ТАБЛ.'/1X)
 1005  FORMAT(22X,'НЕНУЛЕВЫЕ ЭЛЕМЕНТЫ МАТРИЦЫ'/18X,&
       'КОЭФФИЦИЕНТОВ ТЕПЛОПЕРЕДАЧИ K(I,J),BT/K')
 1006  FORMAT(6X,64('-')/)
 1007  FORMAT(6X,':  I  :',3(2X,'J  K(I,J)  :'),&
       2X,'J  K(I,J)  :')
 1008  FORMAT(24X,'НЕНУЛЕВЫЕ ЭЛЕМЕНТЫ МАТРИЦЫ'/23X&
       ,'УГЛОВЫХ КОЭФФИЦИЕНТОВ FI(I,J)')
 1009  FORMAT(6X,':  I  :  J   FI(I,J):',&
       4(' J FI(I,J):'))
 1010  FORMAT(2X,'ЗНАЧЕНИЯ ВЕЛИЧИН  F (M**2),E, QBH (BT), AS, FIS,FIR,&
       FIE')
 1011  FORMAT(5X,66('-')/)
 1012  FORMAT(5X,':  I  :',5X,'F',5X,':   E',3X,':',4X,'QBH',4X,':',&
       2X,'AS',2X,':',2X,'FIS',1X,':',2X,'FIR',1X,':',2X,'FIE',1X,':')
 1013  FORMAT(1X,6(/),52X,'ТАБЛИЦА'/21X,&
       'РАСПРЕДЕЛЕНИЕ ТЕМПЕРАТУР T(I), ГРАД. С'/1X)
 1014  FORMAT(13X,50('-')/)
 1015  FORMAT(13X,2(':    I   :      T(I)    :'))
 1016  FORMAT(19X,'РАСПРЕДЕЛЕНИЕ ТЕПЛОВЫХ ПОТОКОВ'/13X,&
       'ТЕПЛОПРОВОДНОСТЬЮ И ИЗЛУЧЕНИЕМ  Q(I,J), ВТ' )
 1017  FORMAT(4X,68('-')/)
 1018  FORMAT(5X,'I :',4('  J   Q(I,J)  :'))
 1019  FORMAT(I1,2I3,9(I3,E5.3)/10(I3,E5.3))
 1120  FORMAT(6X,':',1X,I3,1X,':',I3,1X,E9.3,3(I4,1X,E9.3),1X,':')
 1020  FORMAT(6X,':',1X,I3,1X,':',I3,1X,E9.3,3(I4,1X,E9.3),1X,':'/(6X&
       ,':',5X,':',I3,1X,E9.3,I4,1X,E9.3,I4,1X,E9.3,I4,1X,E9.3,1X,':'))
 1021  FORMAT(5X,':',I4,':',1X,E9.3,1X,':',1X,F5.3,1X,':',E10.3&
       ,1X,':',4(1X,F4.2,1X':'))
 1022  FORMAT(I1,2E5.3,E6.3,4E4.2)
 1023  FORMAT(15X,'НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ'/(3X,10F7.1)/)
 1024  FORMAT(17X,'ГРАНИЧНЫЕ УСЛОВИЯ'/(3X,10F7.1)/)
 1025  FORMAT(10E6.4)
 1026  FORMAT(13X,2(':',2X,I3,3X,':',4X,F6.1,4X,':'))
 1027  FORMAT(3X,I3,1X,':',4(15X,':'))
 1029  FORMAT(7X,':',I3,1X,E10.3,1X,':',I3,1X,E10.3,1X,':'&
       ,I3,1X,E10.3,1X,':',I3,1X,E10.3,1X,':')
 1129  FORMAT(7X,':',4(I3,1X,E10.3,' :'))
 1130  FORMAT(6X,':',I4,2X,':',5(I3,1X,F5.3,2X),':')
 1030  FORMAT(6X,':',I4,2X,':',5(I3,1X,F5.3,2X),':'/(6X,':',6X&
       ,':',I3,1X,F5.3,2X,I3,1X,F5.3,2X,I3,1X,F5.3,2X,I3,1X,F5.3&
       ,2X,I3,1X,F5.3,2X,':'))
 1111  FORMAT(A1)
 2222  FORMAT(A)
       WRITE(*,*)' ВВЕДИТЕ ИМЯ ФАЙЛА ДАННЫХ?'
       READ(*,2222) DAT
       OPEN(UNIT=10,FILE=DAT,STATUS='OLD')
!      
       READ(10,1000) LB1,LB2,LB3,LB4,LB5
       READ(10,1002) E0,E1,N,NK,H
       L1=.FALSE.
       L2=.TRUE.
 100   DO 1 I=1,N
       X(I)=.0
       IF(L1) X(I)=1.
       DO 1 J=1,MAX
       W(I,J)=.0
    1  P(I,J)=.0
    2  READ(10,1019)L0,J,K,(IA(L),Q(L),L=1,K)
       DO 3 L=1,K
       I=IA(L)
       P(I,J)=Q(L)
       X(I)=X(I)-P(I,J)
       R=1.
       IF(L1) R=F(I)/F(J)
       P(J,I)=R*Q(L)
       X(J)=X(J)-P(J,I)
    3  CONTINUE
       !IF(L0. EQ .1) GO TO 2
       IF(L0 == 1) GO TO 2
       IF(L1) GO TO 12
       WRITE(*,*)'ВЫВОД ИСХОДНЫХ ДАННЫХ:PRN/CON/FILE'
       READ(*,2222) PDAT
       OPEN(UNIT=5,FILE=PDAT,STATUS='NEW')
       WRITE(*,*) 'ПЕЧАТАТЬ ТАБЛИЦУ КОЭФ-ТОВ ТЕПЛОПЕРЕДАЧИ? (Y/N)'
       READ(*,1111) L44
       IF(L44.EQ.'N') GO TO 454
!
       WRITE(5,1001) LB1,LB2,LB3,LB4,LB5
       WRITE(5,1003)
       WRITE(5,1005)
       WRITE(5,1006)
       WRITE(5,1007)
       WRITE(5,1006)
  454  CONTINUE
       KL=1
       KC=12
       DO 4 I=1,N
       P(I,I)=X(I)
       K=0
       DO 5 J=1,N
       IF(P(I,J).LT..1E-4.OR.P(I,I).EQ.1.) GO TO 5
       K=K+1
       IA(K)=J
       Q(K)=P(I,J)
    5  CONTINUE
       IF(L44.EQ.'N') GO TO 4
       IF(K.EQ.0) GO TO 4
       KP=K/4+1
       IF(K/4*4.EQ.K) KP=K/4
       KC=KC+KP
       IF(KC.LE.66*KL) GOTO 60
       KL=KL+1
       KC=KC+9
       WRITE(5,1004)
       WRITE(5,1006)
       WRITE(5,1007)
       WRITE(5,1006)
   60  IF(K.LE.4) WRITE(5,1120)I,(IA(J),Q(J),J=1,K)
       IF(K.GT.4) WRITE(5,1020)I,(IA(J),Q(J),J=1,K)
    4  CONTINUE
       IF(L44.EQ.'Y') WRITE(5,1006)
!
       DO 6 I=1,N
       DO 6 J=1,N
    6  A(I,J)=P(I,J)
       WRITE(*,*) 'ПЕЧАТАТЬ ТАБЛИЦУ ЗНАЧЕНИЙ F,E,QВН,AS ? (Y/N)'
       READ(*,1111)L44
       IF(L44.EQ.'N') GO TO 455
!
       KC=66*KL-KC-1
       IF(KC.GT.10) GO TO 65
       KC=8
       GO TO 66
   65  KC=66-KC+9
   66  KL=1
       WRITE(5,1003)
       WRITE(5,1010)
       WRITE(5,1011)
       WRITE(5,1012)
       WRITE(5,1011)
  455  CONTINUE
       DO 8 K=1,N
       IB(K)=K
       C(K)=.0
       DO 9 I=1,7
    9  X(I)=.0
       READ(10,1022)J,(X(I),I=1,J)
       F(K)=X(1)
       E(K)=X(2)
       C(K)=X(3)+F(K)*(X(4)*(X(5)*1400.+X(6)*280.)+&
       E(K)*X(7)*210.)
       IF(L44.EQ.'N') GO TO 8
       KC=KC+1
       IF(KC.LE.66*KL) GO TO 61
       KL=KL+1
       KC=KC+9
       WRITE(5,1004)
       WRITE(5,1011)
       WRITE(5,1012)
       WRITE(5,1011)
   61  IF(K-NK) 10,10,11
   10  WRITE(5,1021)K,(X(I),I=1,J)
       GO TO 8
   11  WRITE(5,1021)K,F(K),E(K)
    8  CONTINUE
       IF(L44.EQ.'Y') WRITE(5,1011)
  445  CONTINUE
       L1=.TRUE.
       L2=.FALSE.
       GO TO 100
!
   12  KC=66*KL-KC-1
       IF(KC.GT.12) GO TO 67
       KC=10
       GO TO 68
   67  KC=66-KC+10
   68  KL=1
       WRITE(*,*) 'ПЕЧАТАТЬ ТАБЛИЦУ УГЛОВЫХ КОЭФ-ТОВ? (Y/N)'
       READ(*,1111) L44
       IF(L44.EQ.'N') GO TO 456
       WRITE(5,1003)
       WRITE(5,1008)
       WRITE(5,1006)
       WRITE(5,1009)
       WRITE(5,1006)
  456  CONTINUE
   16  R=.0
       DO 13 I=1,N
       IF(X(I).GE.R) GO TO 13
       K=I
       R=X(I)
   13  CONTINUE
       IF(R.GE.-1E-4) GO TO 7
       I=K
       R=R/(1.-R)
       IF(R.LT.-.3) GO TO 14
       DO 15 J=1,N
       IF(J.EQ.I) GO TO 15
       S=R*P(I,J)
       P(I,J)=P(I,J)+S
       S=S*F(I)/F(J)
       P(J,I)=P(J,I)+S
       X(J)=X(J)-S
   15  CONTINUE
       X(I)=.0
       GO TO 16
   14  WRITE(5,1100)I
 1100  FORMAT(1X,'СТРОКА N',I3)
       GO TO 2000
    7  CONTINUE
       DO 69 I=1,N
   69  P(I,I)=X(I)
       IF(L44.EQ.'N') GO TO 446
!
       DO 62 I=1,N
       K=0
       DO 63 J=1,N
       IF(P(I,J).LT..1E-2.OR.P(I,I).EQ.1.) GO TO 63
       K=K+1
       IA(K)=J
       Q(K)=P(I,J)
   63  CONTINUE
       IF(K.EQ.0) GO TO 62
       KP=K/5+1
       IF(K/5*5.EQ.K) KP=K/5
       KC=KC+KP
       IF(KC.LE.66*KL) GO TO 64
       KL=KL+1
       KC=KC+9
       WRITE(5,1004)
       WRITE(5,1006)
       WRITE(5,1009)
       WRITE(5,1006)
  64   IF(K.LE.5)WRITE(5,1130)I,(IA(J),Q(J),J=1,K)
       IF(K.GT.5)WRITE(5,1030)I,(IA(J),Q(J),J=1,K)
  62   CONTINUE
       WRITE(5,1006)
  446   CONTINUE
!
       K=NK+1
       READ(10,1025)(X(I),I=1,N)
       WRITE(5,1023)(X(I)-273,I=1,NK)
       WRITE(5,1024)(X(I)-273,I=K,N) 
       CLOSE(UNIT=10)
       OPEN(UNIT=6,FILE='CON',STATUS='NEW')
       WRITE(*,'(//'' ПЕЧАТЬ РЕЗУЛЬТАТОВ:PRN/CON/FILE?'')')
       READ(*,2222) FDAT
       OPEN(UNIT=7,FILE=FDAT,STATUS='NEW')
!
       DO 18 K=1,N
       P1=(1.-E(K))/E(K)
       Q(K)=P1
       DO 18 I=1,N
       R=-P1*P(K,I)
       IF(I.EQ.K) R=R+P1+1.
  18   P(K,I)=R
       DO 19 K=1,N
       DO 20 I=1,N
  20   W(K,I)=P(K,I)*Q(I)
  19   P(K,K)=P(K,K)-1.
       M=N
       M1=MAX+N
!
   21  DO 22 I=1,M1
   22  IA(I)=1
       DO 23 L=1,M
       S=.0
       DO 24 I=1,M
       IF(IA(I)) 24,24,25
   25  DO 26 J=1,M
       IF(IA(J)) 26,26,27
   27  R=ABS(W(I,J))
       IF(R-S) 26,26,28
   28  IM=I
       JM=J
       S=R
   26  CONTINUE
   24  CONTINUE
       IF(S.LT.1E-15) GO TO 101
       R=1./W(IM,JM)
       IA(JM)=-1
       DO 23 J=1,M1
       IF(IA(J)) 23,23,29
   29  S=R*W(IM,J)
       DO 30 I=1,M
       IF(I-IM) 31,30,31
   31  W(I,J)=W(I,J)-S*W(I,JM)
   30  CONTINUE
       W(IM,J)=W(JM,J)
       W(JM,J)=S
   23  CONTINUE
       IF(L2) GO TO 51
       IF(M1-M.NE.1) GO TO 32
       GO TO 43
  101  WRITE(6,1101)
 1101  FORMAT(1X,'ОПРЕДЕЛИТЕЛЬ=0')
       GO TO 2000
!
   32  DO 33 I=1,N
       DO 33 J=1,N
   33  B(I,J)=-5.668*F(I)*P(I,J)
!
       K=NK+1
       DO 34 I=1,NK
       IF(X(I).LT.E0)A(I,I)=1.
       DO 34 J=K,N
   34  C(I)=C(I)+A(I,J)*X(J)+B(I,J)*(.01*X(J))**4
       M=NK
       M1=M+1
       NM=0
!
   37  L3=.TRUE.
       L1=.TRUE.
       S=.0
       DO 35 I=1,NK
       R=C(I)
       DO 36 J=1,NK
       R=R+A(I,J)*X(J)+B(I,J)*(X(J)*.01)**4
   36  W(I,J)=A(I,J)+0.04*B(I,J)*(X(J)*0.01)**3
       A1=ABS(R)
       IF(S.LT.A1) S=A1
       L3=L3.AND.A1.LT.E0
       L1=L1.AND.A1.LT.E1
       W(I,M1)=R
   35  Q(I)=R
       WRITE(6,1102) S
 1102  FORMAT(1X,' MAX НЕВЯЗКА:',E10.2)
       IF(L3) GO TO 45
       IF(L1) WRITE(6,1103)(IB(I),X(I),I=1,NK)
 1103  FORMAT(2X,10('T',I3,'=',F6.1))
       IF(L1.OR.NM.GT.H) GO TO 21
!
       DO 38 I=1,NK
       R=.0
       DO 39 L=1,NK
   39  R=R+W(L,I)*Q(L)
   38  WR(I)=R
       PM=.0
       DN=.0
       DO 40 I=1,NK
       R=.0
       DO 41 L=1,NK
   41  R=R+W(I,L)*WR(L)
       PM=PM+Q(I)*R
   40  DN=DN+R*R
       PM=PM/DN
       DO 42 I=1,NK
   42  X(I)=X(I)-PM*WR(I)
       NM=NM+1
       WRITE(6,1106)
 1106  FORMAT(1X,'МЕТОД СКОРЕЙЛњЕГО СПУСКА')
       GO TO 37
!
   43  DO 44 I=1,NK
   44  X(I)=X(I)-W(I,M1)
       NM=NM+1
       WRITE(6,1107)
 1107  FORMAT(1X,'МЕТОД НЬЮТОНА')
       GO TO 37
!
   45  DO 46 I=1,N
       R=.0
       DO 47 J=1,N
       IF(I.EQ.1) WR(J)=(.01*X(J))**4
   47  R=R-B(I,J)*WR(J)
   46  C(I)=R
!
       WRITE(7,1001) LB1,LB2,LB3,LB4,LB5
       WRITE(7,1013)
       WRITE(7,1014)
       WRITE(7,1015)
       WRITE(7,1014)
       K=N/2
       DO 48 I=1,K
       J=K+I
   48  WRITE(7,1026) I,X(I)-273,J,X(J)-273
       IF(2*K.LT.N) WRITE(7,1104) N,X(N)-273
 1104  FORMAT(13X,':',8X,':',14X,'::',2X,I3,3X,':',4X,F6.1,4X,':')
       WRITE(7,1014)
       WRITE(*,*) 'ПЕЧАТАТЬ ТАБЛИЦУ ТЕПЛОВЫХ ПОТОКОВ ? (Y/N)'
       READ(*,1111)L44
       IF(L44.EQ.'N') GO TO 447
!
       DO 49 I=1,N
       Q(I)=(1.-E(I))/E(I)
       DO 49 J=1,N
   49  P(I,J)=-B(I,J)/(5.668*F(I))
       DO 50 I=1,N
       W(I,I)=P(I,I)*Q(I)-1.
       P(I,I)=-1.0
       DO 50 J=1,N
       IF(I.EQ.J) GO TO 50
       W(I,J)=P(I,J)*Q(I)
       P(I,J)=.0
   50  CONTINUE
       M=N
       M1=MAX+N
       L2=.TRUE.
       GO TO 21
!
   51  KL=1
       KC=12
       WRITE(7,1001) LB1,LB2,LB3,LB4,LB5
       WRITE(7,1003)
       WRITE(7,1016)
       WRITE(7,1017)
       WRITE(7,1018)
       WRITE(7,1017)
       DO 52 I=1,N
       M=0
       DO 53 J=1,N
       R=A(I,J)*(X(J)-X(I))
       IF(ABS(R).LT..1E-1) GO TO 53
       M=M+1
       IB(M)=J
       Q(M)=R
   53  CONTINUE
       IF(M.EQ.0) GO TO 55
       NM=4
       IF(M.LT.NM) NM=M
       WRITE(7,1129)(IB(J),Q(J),J=1,NM)
       IF(M.EQ.NM) GO TO 55
       WRITE(7,1029)(IB(J),Q(J),J=5,M)
       KP=M/4+1
       IF(M/4*4.EQ.M) KP=M/4
       KC=KC+KP+1
   55  IF(M.EQ.0.OR.M.EQ.NM) KC=KC+2
       M=0
       DO 57 J=1,N
       R=C(I)*P(I,J)-C(J)*P(J,I)+5.668*F(J)*P(J,I)*&
       WR(J)*E(J)/(1.-E(J))-5.668*F(I)*P(I,J)*WR(I)*&
       E(I)/(1.-E(I))
       R=-R
       IF(ABS(R).LT..1E-1) GO TO 57
       M=M+1
       IB(M)=J
       Q(M)=R
   57  CONTINUE
       WRITE(7,1027) I
       IF(M.EQ.0) GO TO 52
       WRITE(7,1029)(IB(J),Q(J),J=1,M)
       KP=M/4+1
       IF(M/4*4.EQ.M) KP=M/4
       KC=KC+KP+1
       IF(KC.LT.66*KL) GOTO 52
       KL=KL+1
       KC=KC+9
       WRITE(7,1004)
       WRITE(7,1017)
       WRITE(7,1018)
   52  WRITE(7,1017)
  447  CONTINUE
 2000  CONTINUE
       CLOSE(UNIT=5)
       CLOSE(UNIT=6)
       CLOSE(UNIT=7)
!
       STOP
       END
 
!
0
Cheetah7
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 11
29.04.2018, 21:06  [ТС] 8
У меня нет( Может я не то, что нужно выбрала в кодировках?
А каким компилятором вы пользовались? Если можно, скиньте exe-файл, который у Вас получился
0
Миниатюры
Как перекомпилировать код из Fortran 77 в Fortran 90/95?   Как перекомпилировать код из Fortran 77 в Fortran 90/95?   Как перекомпилировать код из Fortran 77 в Fortran 90/95?  

WH
953 / 344 / 63
Регистрация: 10.09.2013
Сообщений: 1,323
Записей в блоге: 1
29.04.2018, 21:25 9
Я в линуксе компилировал. Завтра попробую в винде (поздно уже очень, а она у меня только в виртуалке есть, долго возится).
И может быть не понимает кодировку, у вас там в сообщениях что-то про Unicode. Хотя вообще должно было, но при запуске в консоли были бы крокозябры. Для запуска в виндовой консоли перед компиляцией должна быть поставлена кодировка CP866. Я не знаю есть ли в вашей среде разработки такая кодировка. В среде-редакторе Geany есть. Завтра попробую. Компилятор gfortran 4.9.2.
0
WH
953 / 344 / 63
Регистрация: 10.09.2013
Сообщений: 1,323
Записей в блоге: 1
30.04.2018, 07:02 10
Что исправил:

1. Заменил символы комментирования "С" в первом стобце на символы комментирования "!"
2. исправил синтаксис переносов строк: а) убрал звездочки из начала перенесенных строк, б) поставил знак & в конце переносимых строк. Хотя можно было попробовать просто убрать переносы, сделав строки более длинными (в свободном формате это можно).
3. В строке 84 компилятор ругался на .eq.. Не знаю почему, но заменив .eq. на == все заработало (строку 84 закомментировал, вместо нее написал строку 85).

Дополнительно вставил в конце программы (в виндовой версии), перед оператjром stop и end команду pause, на всякий случай.

И дополнительно компилятор (в винде) ругался на то, что в строках № 2 и 357 есть символ, который не переводится в нужную кодировку. Сами посмотрите, похоже вместо буквы "Ш" какая то крокозабра влезла, в таблице CP866 такого символа просто нет. Я эту крокозябрину заменил на букву "Ш". Это просто заголовок сообщения.


ps Текст компилировал с расширением файла f90. Пробовал скомпилировать как "старый" формат с расширением f, но почему то компилятор ругался на некоторые начальные строки с длинными метками (типа 1023), не знаю что там ему не поноравилось, хотя на переносы и метки "С" ругани не было.

Прикладываю скомпилированные файлы для винды и линукс (строки 2 и 357 в файле teplo.f90 не исправлены).
0
Вложения
Тип файла: zip Teplo_program.zip (913.3 Кб, 1 просмотров)
WH
953 / 344 / 63
Регистрация: 10.09.2013
Сообщений: 1,323
Записей в блоге: 1
30.04.2018, 07:14 11
ps, Кстати понял по строке 84, почему eq не принято было. Нужно было поправить . eq . на .eq., пробелы убрать. Я не знаю что там за типы сравниваются, но с == работает. Если нужно можно еще раз перекомпилить с eq вместо ==. Хотя вроде бы это равноценно и если работает, то должно быть все правильно.
0
WH
953 / 344 / 63
Регистрация: 10.09.2013
Сообщений: 1,323
Записей в блоге: 1
30.04.2018, 09:44 12
У Вас там как я понял производство, а не просто учебные цели. На всякий случай перекомпилил. Берите этот вариант. В файле кодов то же исправлено.
1
Вложения
Тип файла: zip Teplo_program.zip (913.8 Кб, 1 просмотров)
Cheetah7
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 11
30.04.2018, 19:19  [ТС] 13
Не работает. Запускала exe-файл, сделанный Вами. После того, как вводится файл данных, консоль закрывается.

Поставила Geany. Компилировала в нём, вышли следующие предупреждения. В коде ничего не меняла. После сборки в консоли выводится следующее:
0
Миниатюры
Как перекомпилировать код из Fortran 77 в Fortran 90/95?   Как перекомпилировать код из Fortran 77 в Fortran 90/95?  
Cheetah7
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 11
30.04.2018, 19:21  [ТС] 14
Файл данных, который нужно вводить при запуске exe
0
Вложения
Тип файла: rar TK1.rar (830 байт, 3 просмотров)
WH
953 / 344 / 63
Регистрация: 10.09.2013
Сообщений: 1,323
Записей в блоге: 1
30.04.2018, 19:33 15
Код
./teplo_linux.run
  ВВЕДИТЕ ИМЯ ФАЙЛА ДАННЫХ?
TK1
 ВЫВОД ИСХОДНЫХ ДАННЫХ:PRN/CON/FILE
А дальше что?
0
Cheetah7
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 11
30.04.2018, 19:42  [ТС] 16
Дальше любое имя файла, который создастся и в него будут записываться исходные данные. Файлы input и output создадутся сами. Это я запускала на виртуальной машине WinXP
0
Миниатюры
Как перекомпилировать код из Fortran 77 в Fortran 90/95?  
WH
953 / 344 / 63
Регистрация: 10.09.2013
Сообщений: 1,323
Записей в блоге: 1
30.04.2018, 20:06 17
Завтра попробую поразбираться. Идет какая-то ругань на unit
0
Cheetah7
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 11
30.04.2018, 20:16  [ТС] 18
Запускала на виртуальной WinXP
0
Миниатюры
Как перекомпилировать код из Fortran 77 в Fortran 90/95?  
Cheetah7
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 11
30.04.2018, 20:18  [ТС] 19
Спасибо)
0
WH
953 / 344 / 63
Регистрация: 10.09.2013
Сообщений: 1,323
Записей в блоге: 1
01.05.2018, 10:00 20
Похоже дело в зарезервированных системой Unit-ах 5 и 6, а здесь как раз они использованы. Раньше компьютеры были большими и не такими умными. )))
С утра заменить попробую и может быть все заработает.


*************
*************

Добавлено через 11 часов 50 минут
Похоже нужна помощь сообщества. Unit-ы заработали, заменил unit=5 на 101, соответственно 6 на 102, 7 на 103, 10 на 110. Программа начала работать, создает файлы, но спотыкается на строчке 387 (код из поста №7).

Вывод работы:
Код
  ВВЕДИТЕ ИМЯ ФАЙЛА ДАННЫХ?
TK1
 ВЫВОД ИСХОДНЫХ ДАННЫХ:PRN/CON/FILE
data1
 ПЕЧАТАТЬ ТАБЛИЦУ КОЭФ-ТОВ ТЕПЛОПЕРЕДАЧИ? (Y/N)
Y
 ПЕЧАТАТЬ ТАБЛИЦУ ЗНАЧЕНИЙ F,E,QВН,AS ? (Y/N)
Y
 ПЕЧАТАТЬ ТАБЛИЦУ УГЛОВЫХ КОЭФ-ТОВ? (Y/N)
Y


 ПЕЧАТЬ РЕЗУЛЬТАТОВ:PRN/CON/FILE?
data2
 ПЕЧАТАТЬ ТАБЛИЦУ ТЕПЛОВЫХ ПОТОКОВ ? (Y/N)
Y
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL
Вот это последнее сообщение мне не понятно. С консоли вводится символьная переменная "Y", программа просматривает формат по ссылке 1111 (строка 58) и дальше выводится это сообщение. Это происходит если ввести хоть "Y" хоть "N", одинаково. Интересно, что на предыдущих вопросах (Y/N) используется такая же строчка READ(*,1111) L44 (например строка 185) и ввод проходит нормально.

перевод сообщения гуглом
Примечание. Следующие предупреждения с плавающей запятой сигнализируют: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL
Я предположил, что возможно что-то происходит в процессе вычислений (хотя опять же вряд ли раз люди ей уже пользовались). Но при вводе символа "N" программа должна перейти по ссылке 447, закрыть открытые файлы и завершится. Поэтому подозрение именно на строку 387. Но происходит какая-то причуда. Если есть возможность, подскажите пути решения.

Добавлено через 1 час 37 минут
Похоже ругань эта идет на оператор STOP в самом конце или PAUSE (который добавил для виндовой версии). Если эти операторы не писать, то все срабатывает без предупреждений. Почему так?
0
01.05.2018, 10:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2018, 10:00

Как правильно подключить ГраФор к Compaq Visual Fortran
Добрый день. Подскажите, пожалуйста, как мне правильно подключить ГраФор к Compaq Visual Fortran,...

Как взять только чётные номера массива? Fortran 90
Приветствую! Собственно, у меня есть массив и надо найти последний положительный элемент с чётным...

Как мне научиться пользоваться Fortran и какая программа для этого нужна?
Как мне научиться пользоваться Fortran и какая программа для этого нужна?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru