Ubuntu GnuCobol CURRENCY SIGN IS "£" вызывает ошибки компиляции - PullRequest
0 голосов
/ 04 марта 2019

Использование GnuCOBOL 2.2.0 в Ubuntu 18.10.Работа над «Началом COBOL для программистов» Майкла Кофлана.GnuCOBOL без труда компилировал примеры книги вплоть до главы 9, когда эта программа:

IDENTIFICATION DIVISION.
PROGRAM-ID. Listing9-2.
AUTHOR. Michael Coughlan.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
    CURRENCY SIGN IS "£".
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Edit1    PIC £££,££9.99.

PROCEDURE DIVISION.
Begin.
    MOVE 12345.95 TO Edit1
    DISPLAY "Edit1 = " Edit1
    STOP RUN.

... выдает следующие ошибки при попытке компиляции:

~/Documents/COBOL$ cobc -x -free Listing9-2.cbl
Listing9-2.cbl: 8: error: PICTURE SYMBOL for CURRENCY must be one character long
Listing9-2.cbl: 11: error: invalid PICTURE character '�'
Listing9-2.cbl: 11: error: invalid PICTURE character '�'
Listing9-2.cbl: 11: error: invalid PICTURE character '�'
Listing9-2.cbl: 11: error: invalid PICTURE character '�'
Listing9-2.cbl: 11: error: invalid PICTURE character '�'
Listing9-2.cbl: 11: error: invalid PICTURE character '�'
Listing9-2.cbl: 11: error: invalid PICTURE character '�'
Listing9-2.cbl: 11: error: invalid PICTURE character '�'
Listing9-2.cbl: 11: error: invalid PICTURE character '�'
Listing9-2.cbl: 11: error: invalid PICTURE character '�'
Listing9-2.cbl: in paragraph 'Begin':
Listing9-2.cbl: 15: error: invalid MOVE statement

Если всесимволы £ заменяются на $, компиляция завершается успешно.Может ли быть проблема в том, что GnuCOBOL не поддерживает знак британского фунта?Или нужно вводить его по-другому, чем просто нажимать «?» На клавиатуре?

1 Ответ

0 голосов
/ 04 марта 2019

Как говорит компилятор:

СИМВОЛ ИЗОБРАЖЕНИЯ для ВАЛЮТЫ должен быть длиной в один символ

, поэтому £, найденный в исходном файле, не является длиной символа- Я предполагаю, что вы использовали кодировку UTF-8, а GnuCOBOL напрямую не поддерживает какую-либо многобайтовую исходную кодировку (вам на самом деле это удается, если в любом месте нет «переполнения размера»).

Если возможно, я предлагаю изменить кодировку на ISO-8859-15 , которая представляет собой однобайтовую кодировку со включенным знаком решетки.

...