Управляющие символы Фортрана (механизм управления кареткой) все еще реализованы в компиляторах?

В книге Фортран 95/2003 для Ученых и Инженеров, существует много доклада, сделанного к важности распознавания, что первый столбец в операторе формата резервируется для управляющих символов. Я также видел управляющие символы, называемые механизмом управления кареткой в Интернете.

Для предотвращения беспорядка, управляющими символами, я обращаюсь к символам "1, пробел (т.е. \s), 0, и +" как имение эффекта на пространство по вертикали вывода при размещении в первый столбец (символ) Оператора формата.

Кроме того, посмотрите эту веб-страницу только для текста, записанную полностью в шрифте фиксированной ширины: механизм управления кареткой Фортрана (потому что ничто не кричит точность и старина лучше, чем проза в моноширинном шрифте). Я нашел, что эта страница и другие как она были не совсем ясны.

Согласно Фортрану 95/2003 для Ученых и Инженеров, отказ вспомнить, что первый столбец резервируется для механизма управления кареткой, может привести к ужасному непреднамеренному выводу. При перефразировании Dave Barry введите неправильный символ, и ядерные ракеты запущены в Норвегию.

Однако, когда я пытаюсь придерживаться этого строгого предупреждения, я нахожу, что gfortran понятия не имеет, о чем я говорю.

Позвольте мне иллюстрировать свой тезис с некоторым примером кода. Я пытаюсь распечатать число 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)

9
задан Paul R 21 July 2010 в 05:14
поделиться

3 ответа

В прошлые годы игнорирование этого использования первого столбца могло привести к плохим последствиям на линейном принтере, например, к выбросу страниц - но когда вы в последний раз видели линейный принтер? В остальном это зависело от устройства вывода, компилятора и ОС. Советы "Fortran 95/2003 для ученых и инженеров" были превосходны лет 15 или 20 назад. С терминалами, postscript и другими современными принтерами первая колонка уже не является чем-то особенным. Я больше не обращаю особого внимания на первую колонку, и у меня не было проблем.

В стандарте Fortran 2003 контроль каретки указан как deleted, что редко делают стандарты языка Fortran. См. страницу 359 из "Fortran 95/2003 explained" или страницу 326 из "The Fortran 2003 Handbook". Возможно, выбор -std=f2003 или -std=f2008 в gfortran гарантирует, что столбец 1 не будет использоваться как элемент управления кареткой, так что "плохие вещи" совершенно невозможны.

10
ответ дан 4 December 2019 в 13:44
поделиться

Я считаю, что Fortran 95 был последней версией, определяющей специальные значения для символов в столбце 1 печатного вывода.

1
ответ дан 4 December 2019 в 13:44
поделиться

Символы управления кареткой были определены для вывода на принтеры. Для вывода на другие типы устройств (например, перфокарты, бумажную ленту или эти новомодные магнитные вращающиеся кругляшки) они не предусмотрены. Если ваш вывод идет в дисковый файл, то gfortran делает все правильно.

Edit: gfortran действительно поступает правильно. Если вы хотите приказать драйверу принтера интерпретировать символы управления кареткой Fortran вместо того, чтобы печатать их буквально, скажите об этом в команде lpr, используя опцию f filter. Например. http://www.computerhope.com/unix/ulpr.htm

1
ответ дан 4 December 2019 в 13:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: