Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на ФОРТРАН, как общего так и конкретного характера.
Постарайтесь дать как можно больше информации о возникшей проблеме -- это в конце концов в ваших же интересах чтобы вам помогли...

прежде чем просить помощи в задании
платное решение задач

ресурсы этого топика
ссылка на подборку ресурсов, собранных посетителями этого форума
 
то, чем мы решили поделиться
ссылка на страничку программ etc собственного изготовления, которыми любезно делятся наши форумчане


если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим
 
просьба к пишущим и отвечающим все большие листинги оформлять тегом more
и отключать графические смайлики при размещении фортран-кода

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 18:11 14-01-2007 | Исправлено: akaGM, 09:47 01-03-2020
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ESV1987
опять код покусал...
k_recl, mjd_l, mjd_r читаются из информационного файла, а mjd1 и mjd2 где определяются?
 
короче, вот этот код, основанный на твоём куске, нормально работает с eop_ba_d.bin файлом...
под 32-виндой и интелом 11.хх
может у тебя какие-нибудь эМЖиДи (mjd1 и mjd2) не инициализированы?

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 00:47 11-08-2011 | Исправлено: akaGM, 02:56 11-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ESV1987
знаешь ещё в чём может быть ошибка?
в чтении/обработке eop_ba_i.txt файла, а именно в геморре с CR-LF (концом строки), кот. в юниксе и виндах разные. я вижу, что там сейчас юниксовый формат, отсюда возможна и ошибка в инициализации, проверь на всякий случай...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 02:55 11-08-2011 | Исправлено: akaGM, 02:57 11-08-2011
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
ESV1987  
Со времен Ф-77 (может, и раньше) в Фортране есть как бы два варианта реагировать на ошибку при чтении файла: через метку, куда надо идти при ошибке (err=22 в исходнике), и путем указания переменной, содержащей указание на ошибку чтения, через IOSTAT. Когда я делал свои программы под Виндой для g77, оказалось, что использования только одного из этих "предохранительных клапанов" недостаточно, приходилось писать в программе оба. Попробуйте задействовать в чтение файла IOSTAT, может помочь!

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 11:07 11-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у меня всё работает :)

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 11:29 11-08-2011
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Да я не сомневаюсь, что работает! Это было замечание для ESV1987. Конечно, работает или нет - зависит от версии компилятора и от системы. Но лично я не нашел в приводимом коде каких-то указаний на использование типично юниксового варианта eof. Поэтому - лучше поставить дополнительный тормоз от слетания при чтении через конец файла.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 11:47 11-08-2011
ESV1987

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Какие вы тут все умные )) прям аж завидно
 
akaGM
в общем, как я понимаю, единственная разница в тексте программы - что ты вместо m1 и m2 поставил числа 1 и 5? Сейчас попробовал - у меня тоже ошибки не возникает в таком случае, но числа считываются неверные. Или ещё что-то надо изменить?
 
mjd1 и mjd2 приходят на вход данной процедуры, mjd1=55776 и mjd2=55816 - это модифицированные юлианские даты... и вот первое число, читаемое с бинарника должно соответствовать первой этой дате, ошибка именно при первом чтении при m=4241
 
Из отладчика юникса: первые значения для 4241 должны быть:
Подробнее...  
 
может всё-таки компилятору нужно какие-нибудь команды добавить?
 
FuzzyLogic
почитал про эндианс, но там же не написано, какой порядок для винды и какой для юникса
 
XPEHOMETP
там вроде и нет ничего типично юниксового, конец файла находится по стрелке "=>", как я понимаю.  А она введена в тексте файла. Да и даты и число строк из файла читаются нормально.

Всего записей: 56 | Зарегистр. 31-03-2007 | Отправлено: 13:12 11-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP

Цитата:
каких-то указаний на использование типично юниксового варианта eof.

наверное, всё-таки eol? да и нет там их, согласен...
я честно признаюсь, что под IF с такой проблемой не сталкивался, а вот под Лахеем -- 100%, что файл eop_ba_i.txt (с юникс eol) не будет корректно переводить строку после исполнения read(*,*)
 
ESV1987

Цитата:
в общем, как я понимаю, единственная разница в тексте программы - что ты вместо m1 и m2 поставил числа 1 и 5?

у меня работает и при m1=1, m2=6084 и при любых наперёд заданных...
 
ты проверь вычитываемое значение mjd
а вообще, стрёмный у тебя цикл какой-то:
Код:
 
      do 8 m=m1,m2
      read ( unit=kan_1, err=25, rec=m )  mjd, eop, cor_nut
      if (mjd.ne.mj)  go to 25
      n=n+1
      write ( unit=kan_r(2), err=29, rec=n )  eop, cor_nut
      mj=mj+1
    8 continue
может всё-таки так надо?

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 13:13 11-08-2011 | Исправлено: akaGM, 14:45 11-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ESV1987
конвертация не помогает:
Код:
      open ( unit=kan_1, file=fninp4,
     1       status='old', err=22, access='direct',
     2       form='unformatted', recl=lenrec,
     3       convert='BIG_ENDIAN')

-----
дай мне, плиз, значения самой первой записи:
50080  eop(1), eop(2), eop(3), cor_nut(1), cor_nut(2)
т.е. первые пять даблов...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 18:11 11-08-2011 | Исправлено: akaGM, 18:12 11-08-2011
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ESV1987

Цитата:
почитал про эндианс, но там же не написано, какой порядок для винды и какой для юникса  

Не знаю как вы читали, но порядок зависит, как я говорил выше, от архитектуры (процессора), а не от оси.
 
akaGM
имхо надо новую тему открывать - "дебаг фортрана с akaGM"

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 21:20 11-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FuzzyLogic
типа ремоут-дебуггер онлайн...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 23:50 11-08-2011
ESV1987

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
FuzzyLogic  
 типа ремоут-дебуггер онлайн...

 
да вот и я тоже удивляюсь, как так можно во всех вопросах разбираться))
 
N страниц назад я совсем другую тему затрагивал: фортран + делфи через длл и тоже мне помогал akaGM
 
 
по поводу первой строки - завтра с работы скину, дома нет работающей программы под рукой, да и вообще я исключил программирование дома, разве что только поиск материалов в инете...

Всего записей: 56 | Зарегистр. 31-03-2007 | Отправлено: 00:09 12-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да ладно вам меня смущать...
"что не знаю, то не знаю, а что знаю -- не таю" (что-то классическое)
 
ESV1987
кстати, там N страниц назад ты так и не ответил на мой вопрос:
какой у вас там фортран,  
вот этот?

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 00:44 12-08-2011
Wadzimu

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, какой IDE Фортрана наиболее похож на Absoft Fortran? Чтобы потом, при переходе на Абсофт, быстрее привыкнуть. Или просто самый "дружественный" Фортран. Я скачал бесплатный Open Watcom, но это кошмар какой-то.

Всего записей: 38 | Зарегистр. 02-04-2011 | Отправлено: 08:23 12-08-2011 | Исправлено: Wadzimu, 08:28 12-08-2011
ESV1987

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
дай мне, плиз, значения самой первой записи:
50080  eop(1), eop(2), eop(3), cor_nut(1), cor_nut(2)  

 
хм, там другая первая строка, это даже из тхт-файла следует:
Подробнее...
 
по поводу - вроде как Fortran for HP-UX
по крайней мере в инфо отладчика HP-UX встречается

Всего записей: 56 | Зарегистр. 31-03-2007 | Отправлено: 08:56 12-08-2011 | Исправлено: ESV1987, 08:57 12-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ESV1987
из какого текстового файла?

Цитата:

 | in file |       Left       |      Right       |
 |=========|==================|==================|
 |  6084   | 50080/1995.12.29 | 56163/2012.08.24 |
первое значение mjd при m=1 разве не 50080? (это число в файле в первой записи торчит 100%)
и ты можешь дать не рисунком а числами?
и потом, что за цикл-то у вас такой? (второй раз спрашиваю)
 
do 8 ...
  ...
8 mj=mj+1


Wadzimu
а особо и нет компиляторов Ф со средой (IF и Portland в ВизуалСтудию встраиваютя, SUN-студия и всё вроде)...
если уж так однозначно нацелился на Absoft, то возьми их триальную версию, может и кряк где-нибудь лежит...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 13:00 12-08-2011 | Исправлено: akaGM, 13:13 12-08-2011
ESV1987

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
мда... оказалось этих файлов несколько, с одинаковым названием
используется в программе конкретно этот:  
http://zalil.ru/31544240
но сути это не меняет... он всё равно читает не те числа...
 

Цитата:
do 8 ...
  ...
8 mj=mj+1  

 
я не знаю, что это за цикл... но в отладчике на юниксе всё работает как будто бы там стоит continue, хотя его там и нет
 
вообще не могу я пока постичь тонкостей фортрана, например вот ваш кусок кода:
 

Цитата:
короче, вот этот код, основанный на твоём куске, нормально работает с eop_ba_d.bin файлом...
под 32-виндой и интелом 11.хх  

 
mjd - переменная, в которую считывается значение из файла вообще не объявлена, как такое может быть? в делфи бы уже давно ошибку выдало. И по ходу текста разбираемого мной комплекса такого навалом встречается, вроде как не объявлена нигде переменная, а вдруг значение её где-то заполняется... вроде и equivalence я все проверил...
 

Цитата:
ты можешь дать не рисунком а числами?

первое число там 51536
eop : 0.037111999999999999, 0.37861800000000001, 0.36480869999999999
cor_nut: -50.581000000000003, -2.9700000000000002

Всего записей: 56 | Зарегистр. 31-03-2007 | Отправлено: 13:29 12-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ESV1987
б*я...
я трахался с не тем файлом...
всё работает с big_endian
можешь компилировать IF и спокойно работать
например, с
open ( unit=kan_1, file=fninp4,
     1       status='old', err=22, access='direct',
     2       form='unformatted', recl=lenrec,
     3       convert='BIG_ENDIAN')  
 
или со сквозной опцией
/convert:big_endian
что повлияет на все файловые чтение/запись...

Цитата:
mjd - переменная, в которую считывается значение из файла вообще не объявлена, как такое может быть?
если ты посмотришь на мой (и на свой!) код, то увидишь:
implicit real*8 (a-h,o-z) ! маздай
т.е. все переменные, начинающиеся с этих букв будут даблами, остальные -- целые, если не оговорено особо...
надо писать
implicit none
и описывать _все_ переменные _до_  использования(как в Дельфи)
 
я правильно понимаю, что фор-программу не ты писал?
 
вообще-то чем бросаться программить, надо хотя бы основы в книжке прочитать...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 13:50 12-08-2011 | Исправлено: akaGM, 14:44 12-08-2011
ESV1987

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM,

Цитата:
надо писать implicit none  

про это я как раз-таки прочитал, когда в первый раз увидел данную непонятную запись в примере на длл..
 

Цитата:
если ты посмотришь на мой (и на свой!) код, то увидишь:  
implicit real*8 (a-h,o-z) ! маздай

 
я знаю, что это означает, но я думал, что чтобы все остальные переменные были целыми надо дописать ещё: implicit  integer*4 (i-n) , т.е. если мы не используем параметры implicit по умолчанию, а задаём свои - то всё остальное тоже сбрасывается..
 

Цитата:
я правильно понимаю, что фор-программу не ты писал?  

и даже более того, я этот огромный комплекс (который писался с середины 90-х годов и до настоящего времени обновлялся регулярно) увидел только в начале лета. То, что раньше я тренировался с тандемом фортран-делфи -- это была просто подготовка к "не знаю чему".
Вся математика тут более-менее аккуратно вынесена в .f-файлы и работает независимо от оболочки, а вот собирается всё это вместе с оболочкой каким-то диким способом (там и мэйк-файлы, и код на Си, и обращение к БД на про-фортране и т.п. и т.д.) Но основное для меня - разобрать математику. Оболочкой займёмся потом, входы-выходы все известны, так что надо только раскодировать чёрные ящики
Я когда встречал в комплексе какие-то неизвестные мне моменты в части программирования - ответы на свои вопросы находил в разделе "Нерекомендуемые и устаревшие свойства Фортрана" у Бартеньева..
 

Цитата:
надо хотя бы основы в книжке прочитать

лично у меня с программированием всегда так, что пока на деле не столкнёшься с чем-то и не исправишь ошибку все книжные знания из головы вылетают. А вот когда сам мучился с проблемой - тогда всё запоминается надолго.
 
 
по поводу Конверт... первые строки - да читает, а 4000-ные мои пока нет, разбираюсь вот, в чём дело

Всего записей: 56 | Зарегистр. 31-03-2007 | Отправлено: 16:09 12-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ESV1987

Цитата:
по поводу Конверт... первые строки - да читает, а 4000-ные мои пока нет, разбираюсь вот, в чём дело
у тебя в инфо-файле (а на фига такой аски-арт?) написано:

Цитата:

 * Comment:
 *                                     Y   M  D  *
 * EOP are valid up to  MJD = 56108 / 2012.06.30 *
 ---
4000-ные ~~ MJD = 56108
может в этом дело?
 
а ты не забыл
/assume:byterecl
поставить?

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 16:30 12-08-2011 | Исправлено: akaGM, 16:31 12-08-2011
ESV1987

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
стыдно, конечно, такое спрашивать, но
как и куда записываются опции для компилятора?
/convert:big_endian
/assume:byterecl  
 
и ещё вопрос: конверт будет действовать только на бесформатные файлы же?

Всего записей: 56 | Зарегистр. 31-03-2007 | Отправлено: 10:04 15-08-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru