Фортран такой Фортран
Jun. 22nd, 2022 12:35 amНапишем программу на Фортране:
Что эта программа делает? Она объявляет целый массив 9х9, заполняет его числами от 11 до 99, печатает диагональ для проверки, а потом обращается к элементам массива с нецелыми индексами, чтобы посмотреть, как разные Фортран-компиляторы себя ведут.
У нас в системе "Дубна" есть 3 компилятора: Фортран БЭСМ-6 (переписанный из CDC-шного), Фортран-ГДР и Форекс ИПМ АН СССР.
Сумрачное германское изделие говорит
Форекс более покладист: компилирует и печатает
как люди и ожидают.
А вот Фортран-Дубна, согласно с принципом "Вы этого хотели, вот вам", печатает
Такие дела.
program main
dimension ia(9,9)
do 1 i=1,9
do 1 j=1,9
1 ia(i,j)=10*i+j
print 2,(ia(i,i),i=1,9)
2 format(9i6)
e=2.718281828
pi=3.14159265
i=ia(e,pi)
j=ia(pi,e)
print 2,i,j
endЧто эта программа делает? Она объявляет целый массив 9х9, заполняет его числами от 11 до 99, печатает диагональ для проверки, а потом обращается к элементам массива с нецелыми индексами, чтобы посмотреть, как разные Фортран-компиляторы себя ведут.
У нас в системе "Дубна" есть 3 компилятора: Фортран БЭСМ-6 (переписанный из CDC-шного), Фортран-ГДР и Форекс ИПМ АН СССР.
Сумрачное германское изделие говорит
Ф O P T P A H - Г Д P
(24.04.81)
001 PROGRAM MAIN
002 DIMENSION IA(9,9)
003 DO 1 I=1,9
004 DO 1 J=1,9
005 1 IA(I,J)=10*I+J
006 PRINT 2,(IA(I,I),I=1,9)
007 2 FORMAT(9I6)
008 E=2.718281828
009 PI=3.14159265
010 I=IA(E,PI)
011 J=IA(PI,E)
012 PRINT 2,I,J
013 END
BESM FORTRAN DIAGNOSTIC RESULTS
ERRORS: 2 WARNINGS: 0
ERROR 054 IN 00011 SUBSCRIPT OF ARRAY HAS NOT INTEGER TYPE
ERROR 054 IN 00010 SUBSCRIPT OF ARRAY HAS NOT INTEGER TYPEФорекс более покладист: компилирует и печатает
11 22 33 44 55 66 77 88 99
23 32как люди и ожидают.
А вот Фортран-Дубна, согласно с принципом "Вы этого хотели, вот вам", печатает
11 22 33 44 55 66 77 88 99
33 92Такие дела.