В книге Фортран 95/2003 для ученых и инженеров много говорится о важности признания того, что первый столбец в выражении формата зарезервирован для управляющих символов.Я также видел контрольные символы, которые в Интернете называются элементами управления кареткой.
Чтобы избежать путаницы, под контрольными символами я ссылаюсь на символы «1, пробел (то есть \ s), 0 и +msgstr "как влияющий на вертикальный интервал вывода, когда помещен в первый столбец (символ) оператора FORMAT.
Кроме того, посмотрите эту текстовую веб-страницу, написанную полностью шрифтом фиксированной ширины: Управление кареткой на Фортране (потому что ничто так не кричит о точности и древности, как проза в моноширинном шрифте).Я обнаружил, что эта страница и другие подобные ей не совсем понятны.
Согласно Fortran 95/2003 для ученых и инженеров , если не вспомнить, что первый столбец зарезервирован для управления кареткой,привести к ужасному непреднамеренному выводу.Перефразируя Дейва Барри , введите неправильный символ, и по Норвегии будут выпущены ядерные ракеты.
Однако, когда я пытаюсь придерживаться этого строгого предупреждения, я обнаруживаю, что Гфортран понятия не имеет, что яЯ имею в виду.
Позвольте мне проиллюстрировать мою точку зрения с помощью некоторого примера кода.Я пытаюсь распечатать число Pi:
PROGRAM test_format
IMPLICIT NONE
REAL :: PI = 2 * ACOS(0.0)
WRITE (*, 100) PI
WRITE (*, 200) PI
WRITE (*, 300) PI
100 FORMAT ('1', "New page: ", F11.9)
200 FORMAT (' ', "Single Space: ", F11.9)
300 FORMAT ('0', "Double Space: ", F11.9)
END PROGRAM test_format
Это вывод:
1New page: 3.141592741
Single Space: 3.141592741
0Double Space: 3.141592741
"1" и "0" не являются опечатками.Похоже, что gfortran полностью игнорирует столбец управляющих символов.
Мой вопрос в следующем:
Управляющие символы по-прежнему реализованы в компиляторах, соответствующих стандартам, или gfortran просто не соответствует стандартам?
Для ясности вот вывод моего gfortran -v
Using built-in specs.
Target: powerpc-apple-darwin9
Configured with: ../gcc-4.4.0/configure --prefix=/sw --prefix=/sw/lib/gcc4.4 --mandir=/sw/share/man --infodir=/sw/share/info --enable-languages=c,c++,fortran,objc,java --with-gmp=/sw --with-libiconv-prefix=/sw --with-ppl=/sw --with-cloog=/sw --with-system-zlib --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib --disable-libjava-multilib --build=powerpc-apple-darwin9 --host=powerpc-apple-darwin9 --target=powerpc-apple-darwin9
Thread model: posix
gcc version 4.4.0 (GCC)