Типы данных КОБОЛа

У меня есть беспорядок относительно типов данных КОБОЛа. Как во многих интервью просят объяснить различие между АККОМПАНЕМЕНТОМ 3 и АККОМПАНИРОВАТЬ..., каково точное различие? каково значение режимов использования в КОБОЛе и как это связано с типами данных?

Спасибо и наилучшие пожелания, Manasi Kulkarni

15
задан Saisha 8 June 2010 в 09:53
поделиться

4 ответа

ИСПОЛЬЗОВАНИЕ в COBOL описывает, как должен использоваться элемент данных. Несколько примеров ИСПОЛЬЗОВАНИЯ:

  • ДИСПЛЕЙ. Это идентифицирует элемент, который может быть напечатан на терминале или отчет. Это может быть или не быть числом (например, может быть текстовым значением). В описание элемента DISPLAY дается предложением PICture. Например: PIC 9 (5) ДИСПЛЕЙ ИСПОЛЬЗОВАНИЯ описывает 5-значное число, которое может быть отображено (распечатано). Часто ОТОБРАЖЕНИЕ ИСПОЛЬЗОВАНИЯ не используется, так как в случае его отсутствия подразумевается.
  • УКАЗАТЕЛЬ. Это идентифицирует элемент, используемый в качестве индекса в таблице (OCCURS).
  • COMPsomething указывает, что элемент данных должен использоваться в арифметические операции (т.е. это число какого-то типа).

Существуют различные типы числовых элементов. Два наиболее часто используемых числовые типы данных:

  • ВЫЧИСЛИТЕЛЬНЫЙ или КОМП. Это эквивалентно BINARY
  • COMPUTATIONAL-3 или COMP-3. Это эквивалентно PACKED-DECIMAL

COMP (BINARY) элементы данных, как правило, являются наиболее эффективным способом выполнения вычисления с элементами данных, которые представляют собой целочисленные значения.

Элементы данных COMP-3 (PACKED-DECIMAL) используются в COBOL, потому что они поддерживают фиксированное количество десятичных знаков. Все вычисления приводят к результату, имеющему заданное количество десятичных знаков. Это особенно полезно при операциях бухгалтерского типа.Числа с плавающей запятой составляют количество цифр после переменная десятичной точки (например, десятичная точка может "плавать"), которая не так, как обычно представляют финансовые операции.

Вы можете найти полный список вычислительных элементов для IBM Enterprise COBOL. здесь

Одна из проблем, с которыми сталкиваются многие программисты, начиная с COBOL, - это понимание того, что элемент COMP отлично подходит для математических расчетов, но не может быть отображается (распечатывается) до тех пор, пока он не будет преобразован в DISPLAYable элемент через заявление MOVE. Если вы ПЕРЕМЕСТИТЕ элемент COMP в отчет или на экран будет не очень хорошо. Его нужно переместить в ДИСПЛЕЙ пункт первый.

Еще одна вещь, о которой вам, возможно, захочется узнать подробнее, - это связь между ИЗОБРАЖЕНИЕМ и ИСПОЛЬЗОВАНИЕМ при определении переменных в COBOL. Вот ссылка на очень хорошее вводное Учебное пособие по COBOL из Университета Лимерика.

17
ответ дан 1 December 2019 в 01:23
поделиться

Как следует из другого ответа, COMP означает двоичный код с прямым порядком байтов. COMP-3 упакован в десятичном формате, что означает, что каждому полубайту соответствует одна десятичная цифра.

Я не уверен, что в предыдущем ответе проблема с точностью была правильной.

PIC S9 (9) V9 (9) КОМП а также PIC S9 (9) V9 (9) COMP-3

Точность точно такая же. Это часть стандарта ANSI85. Задача компилятора и среды выполнения - гарантировать, что двоичное представление в COMP имеет соответствующие преобразования, помещенные в него, чтобы гарантировать в точности достижение тех же результатов, что и при использовании отображения или COMP-3. .

В мэйнфреймах IBM есть аппаратные средства для десятичных вычислений. Это очень полезно, потому что преобразование десятичной шкалы в двоичную, поскольку n в квадрате n - это длина числа. Это означает, что COMP-3 зачастую является самым быстрым форматом мэйнфреймов, но с меньшей вероятностью будет использоваться в распределенных системах. Однако это опять же не всегда так.Например, собственное решение COBOL от Micro Focus будет иметь тенденцию быть быстрее в COMP-3, чем COMP-5 для очень большой десятичной точности (> 18 цифр), но в противном случае наоборот. Система Managed COBOL от Micro Focus почти всегда самая быстрая в COMP (на самом деле, COMP-5 является лучшей - которая похожа на COMP, но будет иметь аппаратный порядок байтов, а не принудительную разметку памяти с прямым порядком байтов).

Наконец, я предлагаю, чтобы для промежуточных значений и общей математики более новые определения данных типа binary-long и binary-double были лучшим выбором, потому что тогда компилятор может принимать решения о том, как хранить и оптимизировать за вас.

Дополнительную информацию о COBOL на распределенном и управляемом COBOL можно найти в этом кноле: http://knol.google.com/k/alex-turner/micro-focus-managed-cobol/2246polgkyjfl/4 а также не стесняйтесь искать cobol на фейсбуке :)

2
ответ дан 1 December 2019 в 01:23
поделиться

В COBOL действительно есть только два типа данных: Числа и строки.

Расположение каждого поля в записи COBOL точно определяется предложением PICTURE (обычно сокращенно PIC). Наиболее распространенные из них:

  • PIC X для строк. PIC X(100) означает 100-байтную строку.
  • PIC 9 для чисел, опционально с S (знак) или V (неявная десятичная точка). Например, PIC S9(7)V99 означает знаковое число с 7 цифрами слева от неявной десятичной точки и 2 цифрами справа.

Числовые поля могут иметь оговорку USAGE для оптимизации их хранения. Наиболее распространенными USAGE являются DISPLAY, COMP и COMP-3.

DISPLAY сохраняет каждую цифру как символ. Например, PIC 9(4) VALUE 123 сохраняет число так, как если бы это была строка "0123". А PIC 9(4)V99 VALUE 123.45 сохраняет его как "012345". Обратите внимание, что десятичная точка фактически не сохраняется.

Это неэффективный формат, поскольку он требует 8 бит для представления каждой цифры. Но в нем есть "оптимизация" для знаковых чисел: половина последнего байта используется для хранения знака. Обычно все цифры EBCDIC имеют старший ниббл F, поэтому 0123 - это F0 F1 F2 F3. Но -0123 - это F0 F1 F2 D3; D означает отрицательный знак. C означает положительный, а F - беззнаковый (т.е. положительный). (Подобные форматы используются в ASCII-версиях COBOL, но не так стандартизированы.)

COMP-3 - двоично-десятичная кодировка с отстающим знаковым нибблом. PIC 9(3) COMP-3 VALUE 123 становится двумя байтами 12 3F.

COMP или BINARY - это родной двоичный формат, такой же, как short, int или long в C.

15
ответ дан 1 December 2019 в 01:23
поделиться

Что касается решения, какой тип данных использовать, его можно сделать очень сложным - НО - простой набор рекомендаций:

DISPLAY и Edited Zone Decimal следует использовать только для отображения числовых значений в отчете или системе. Переместите поля COMP и COMP-3 в поле DISPLAY / Edited перед помещением их в отчет или в sysout.

COMP - имеет самую высокую скорость вычисления для целых чисел

COMP-3 (PACKED Decimal) - следует использовать, когда необходимо сохранить десятичных разрядов .

Поля COMP и COMP-3 можно использовать вместе в вычислениях. Компилятор определит, какой тип поля будет преобразован (скрытно) в один общий числовой тип данных - правила на основе .

2
ответ дан 1 December 2019 в 01:23
поделиться
Другие вопросы по тегам:

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