COBOL DATATYPE CONVERSION: число в упаковке числовое, дата упаковки COMP-3

Я пытаюсь преобразовать Number в PACKED DEMCIMAL, из веб-исследования номер 123 будет 123D (C, если отрицательное число) как упакованное число. Мой вопрос: "это правильный PACKED DECIMAL?" Из-за требования, что у меня есть состояния, дата будет храниться в 3-байтовом упакованном номере, а длина будет всего 2 цифры.

Пожалуйста, объясните или уберите мои сомнения.

2 ответа

Решение

У тебя это задом наперед.

Десятичная дробь с положительной упаковкой заканчивается на C. Десятичная дробь с положительной упаковкой заканчивается на D. Упакованная десятичная дробь без знака, которая считается положительной, заканчивается на F.

3-байтовый упакованный номер содержит 5 цифр и знак. PIC S9(5) COMP-3 занимает 3 байта.

Я не уверен, в каком формате ваша дата, если она состоит всего из пяти цифр.

PIC S999 или S9(3) PACKED-DECIMAL или COMP-3 занимает два байта памяти. Это имеет знак.

PIC 999 или 9 (3) занимает два байта памяти, а знак "F" указывает на неподписанное, что всегда считается положительным.

Каждая цифра занимает половину байта, с половиной байта для "знака" - как говорит Гилберт, C положительно, D отрицательно.

Вы пометили Java и VBScript. Вы пытаетесь сделать так, чтобы преобразование "вне" Cobol было представлено в программе Cobol? Если это так, было бы намного проще представить данные в виде "простого текста" со "отдельным" знаком. Спасает вас от необходимости возиться. "Преобразование типов" в Cobol происходит автоматически, поэтому гораздо разумнее дать программе все в виде "простого текста" и позволить Cobol продолжить работу с ним.

То же самое со всем, что имеет десятичные разряды. Дайте "коэффициент масштабирования" или физическую десятичную точку. Вы сэкономите время, не тратите время на программиста на Cobol и получите отличное средство для создания тестовых данных для себя - редактор.

Другие вопросы по тегам