Как следует из другого ответа, COMP означает двоичный код с прямым порядком байтов. COMP-3 представляет собой упакованный десятичный знак - это означает, что одна десятичная цифра сопоставляется с каждым полубайтом.
Я не уверен, что в предыдущем ответе проблема с точностью была правильной.
PIC S9 (9) V9 (9) COMP
а также
PIC S9 (9) V9 (9) COMP-3
Точно такой же точности. Это является частью стандарта ANSI85. Задача компилятора и среды выполнения состоит в том, чтобы гарантировать, что двоичное представление в COMP имеет соответствующие преобразования, помещенные в него, чтобы обеспечить точно те же результаты, которые были бы получены, как если бы использовалось отображение или COMP-3. .
В мэйнфреймах IBM упакованы десятичные вычисления в аппаратном обеспечении. Это очень полезно, потому что преобразование десятичной дробной шкалы в n в квадрате n - это длина числа. Это означает, что COMP-3 часто является самым быстрым форматом мэйнфрейма, но с меньшей вероятностью будет в распределенных системах. Однако, это снова не всегда так. Например, собственное решение COBOL для Micro Focus будет иметь тенденцию быть быстрее в COMP-3, чем в COMP-5 для очень большой десятичной точности (> 18 цифр), но в противном случае наоборот. Управляемая система COBOL от Micro Focus почти всегда самая быстрая в COMP (на самом деле, COMP-5 - самая лучшая - она похожа на COMP, но будет иметь аппаратный порядок байтов, а не принудительное размещение макета памяти с прямым порядком байтов).
Наконец, я полагаю, что для промежуточных значений и общей математики более новые определения данных для двоичного-длинного и двоичного-двойного являются лучшим выбором, потому что тогда компилятор может принять решение о том, как хранить и оптимизировать его для вас.
Чтобы узнать больше о COBOL в распределенном и управляемом COBOL, ознакомьтесь с этим кнолом: http://knol.google.com/k/alex-turner/micro-focus-managed-cobol/2246polgkyjfl/4, а также смело ищите cobol в facebook :)