Bug 9576 - gfortran4.1 и русская буква 'я'
: gfortran4.1 и русская буква 'я'
Status: NEW
: Sisyphus
(All bugs in Sisyphus/gcc4.1-fortran)
: unstable
: all Linux
: P3 major
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2006-05-16 17:05 by
Modified: 2010-10-09 11:38 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2006-05-16 17:05:48
Осталась ошибка с русской буквой 'я' (код 255). Если при компиляции в режиме
фиксированной формы строки, то получается:
1) строка, например,
  5     write ('длинная строка')
конвертируется в
  5     write ('\xE4\xEB\xE8\xED\xED\xE0\xFF \xF1\xF2\xF0\xEE\xEA\xE0')
2) если в пределах первых 72 символов полученной строки попадётся \xFF, то
компилятор выдаёт ошибки:
Error: Unexpected end of format string in format string at (1)
и
Warning: Line truncated at (1)
Steps to Reproduce:
1. Собрать программу, состоящую из:
        program myprog
  5     write ('длинная строка')
        end

Actual Results:  
Ошибка компиляции

Expected Results:  
Правильная сборка
------- Comment #1 From 2006-05-18 15:57:03 -------
Ещё наткнулся на букву 'ю':
        program test
        write (*,*) 'ю'
        end

Выдаёт ошибку
In file test.for:2

        write (*,*) '\xFE'
                   1
Error: Unterminated character constant beginning at (1)
А программа
        program test
        write (*,*) 'я'
        end

Выдаёт ошибку
In file test.for:2

        write (*,*) '\xFF'
                     1
Error: Syntax error in WRITE statement at (1)
С другими буквами всё нормально компилится.
------- Comment #2 From 2006-05-18 16:11:48 -------
Дополнительные тесты показали, что вариант с константами Холлерита:
        program test2
   5    format (1Hя)
        write (*,1)
        end
нормально собирается и работает даже без Warning. А вариант
        program test3
   6    format (s)
        write (*,6) 1Hя
        end
приводит к
In file test.for:3

        write (*,6) 1H\xFF
                     1
Warning: Extension: Hollerith constant at (1)
test.for: In function 'MAIN__':
test.for:1: internal compiler error: Bad IO basetype (9)
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://bugzilla.altlinux.ru/> for instructions.

вне зависимости от варианта константы.
------- Comment #3 From 2010-10-09 11:38:01 -------
На gcc4.4-fortran-4.4.2-alt2.M51.1:

f77    test.f   -o test
test.f:2.15:

  5     write ('\xC4\xCC\xC9\xCE\xCE\xC1\xD1 \xD3\xD4\xD2\xCF\xCB\xC1')         
               1
Error: UNIT specification at (1) must be an INTEGER expression or a CHARACTER
variable
make: *** [test] Error 1

Видимо, всё-таки в апстрим.