Squeak.ru - шаблоны программирования

SQL Как получить COMP-3 Packed Decimal?

Я создаю выходной файл ASCII, содержащий некоторую информацию, и два из моих полей требуют, чтобы дата и время были в упакованных десятичных полях (COMP-3). Я использую SQL и SSIS для создания своего файла.

Field Name     Format       Length    Picture
Date           YYYYMMDD     5         S9(8) C-3
Time           HHMMSS       4         S9(6) C-3

Я просмотрел несколько сайтов и до сих пор не могу понять, как преобразовать дату/время в упакованное десятичное поле. Любая помощь будет принята с благодарностью.

Следующий сайт http://www.simotime.com/datapk01.htm#TablePackedDecimal был предоставлено для информации об упакованных полях. Я понимаю, как используются упакованные поля, но не совсем понимаю, как упаковать поле. Спасибо!


  • Общая идея заключается в том, что вам нужно будет создать два целочисленных поля, содержащих значения даты и времени Derived Column Transformation. У меня не было ничего, кроме боли с COMP-3, но я подозреваю, что это было скорее фактором плохих исходных данных. Подключите Script Transformation, чтобы преобразовать эти значения в их двоичный эквивалент и записать в файл. 23.01.2012
  • Я не уверен, что использовать в преобразовании сценария, потому что я действительно не понимаю, во что я преобразуюсь? Потому что я вижу шестнадцатеричный и двоичный варианты на сайте, который я указал выше. Я не понимаю, как дата ГГГГММДД может уместиться в 5 символов, используя метод Packed. 23.01.2012
  • Вам понадобится подпрограмма на C#/VB.NET для работы с Row.Date и Row.Time Общий вопрос о SO и Google Конвертировать распакованный десятичный формат 23.01.2012

Ответы:


1

Если вы сохраняете целочисленную дату (т.е. 20120123) в виде строки символов, шестнадцатеричное представление будет 0x3230313230313233, где 32 = 2, 30 = 0 и т. д., что составляет 8 байт (т.е. 32 30 31 32 30 31 32 33) хранения.

В упакованном десятичном формате представление той же строки будет выглядеть так: 0x020120123F F — это бит, показывающий, что это целое число без знака. Остальные числа хранятся как половина байта для каждой цифры. Таким образом, вы можете видеть, что обычная строка даты помещается в 5-байтовое поле (т.е. 02 01 20 12 3F ).

Итак, чтобы использовать это в SSIS, вам, вероятно, придется сделать, как указано выше @billinkc, и использовать преобразование сценария для преобразования поля. Механика этого будет состоять в том, чтобы подсчитать цифры в вашем номере, добавить 0 слева, чтобы получить ваши символы до 9 для comp-3 5 и 7 для comp-3 4, а затем построить шестнадцатеричную строку с цифрами из вашей даты или время и добавьте F в конце (или C, если пункт назначения ожидает число со знаком).

23.01.2012
  • Я понимаю, что вы говорите и как это сделать, но я не понимаю, как (02 01 20 12 3F) уместится в 5 символов. Я просто могу неправильно смотреть на это, но я вижу 10 символов. 23.01.2012
  • Каждая из этих двух пар чисел представляет собой один байт (или символ) информации. Один байт может быть представлен шестнадцатеричным числом от 00 до FF (в десятичном формате от 0 до 255 и в двоичном формате от 0000 0000 до 1111 1111). 25.01.2012
  • Я пишу эту информацию в текстовый файл, и у меня есть только 5 символов, чтобы содержать упакованную дату. Итак, в приведенном выше примере, что бы я использовал, если бы он занимал только одну позицию символа? Разве 00 или FF не займут две позиции символов? Мой файл отправляется на мейнфрейм COBOL. Спасибо за помощь! 25.01.2012
  • Вы отправляете шестнадцатеричное число, а не строку. Это будет выглядеть неправильно как строка. Посмотрите на диаграмму ascii. Последний из пяти символов в приведенном выше примере — 3F (шестнадцатеричное число). В ASCII символ 3F — это ? а 20 (третий символ) — это пробел. Двузначные числа, на которые я ссылаюсь в своих примерах, являются просто внутренними компьютерными представлениями символа в памяти компьютера. Вы когда-нибудь посещали занятия по теории компьютеров? 26.01.2012
  • Я считаю, что я сделал в какой-то момент. Я также понял, что два числа, на которые вы ссылались, были представлениями символа в памяти компьютера, но я просто не был уверен, что метод упакованного поля хотел вернуть значения. Я не был уверен, нужны ли ему значения ASCII или что-то еще, что я упустил, например, еще один процесс преобразования. Мне удалось найти очень мало на Packed Fields, и я хотел убедиться, что отправляю правильную информацию. Я действительно ценю вашу помощь! Спасибо! 26.01.2012
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...