Форматирование разделителя данных дорожки кредитной карты II с использованием Cobol

У нас есть устаревшая программа COBOL, которая форматирует запрос авторизации iso 8583 0100. Недавно нам сказали, что данные дорожки II недействительны из-за разделителя. Данные дорожки II находятся в поле PIC X(), и мы просто заменяем = символом D, прежде чем прогонять данные через встроенный двоичный код по 2 байта за раз.

Нам говорят, что персонаж конвертируется в 4 на их стороне. Мой вопрос: какой символ мы должны использовать для замены символа =? Или мы оставим символ = в покое?

Спасибо за любое руководство.


person Jonathan King    schedule 04.09.2014    source источник
comment
Предположительно есть спецификация для iso 8583 0100? Что такое двоичная внутренняя структура? Если вы опубликуете код, мы увидим, что происходит. Не зная, что такое нисходящая обработка, это все, что может сделать каждый. D ix X'C4', который может легко превратиться в 4 в зависимости от того, что произойдет, чего вы нам не показали.   -  person Bill Woodger    schedule 04.09.2014


Ответы (1)


Данные дорожки 2 хранятся на кредитной карте в виде двоично-десятичного кода с четностью, а другие возможные двоичные значения используются для контроля.

Hex  ASCII  Meaning
0      0    0
1      1    1
2      2    2
3      3    3
4      4    4
5      5    5
6      6    6
7      7    7
8      8    8
9      9    9
A      :    (not used)
B      ;    Start Sentinel
C      <    (not used)
D      =    Field Separator
E      >    (not used)
F      ?    End Sentinel

У меня такое ощущение, что «двоичный встроенный» просто преобразует ASCII в BCD, что, если бы вы использовали стандартные символы ASCII, вы получили бы то, что хотите, поскольку = является 0x3D в ASCII, и если вы удалите первый кусок, вы остался с 0xD.

person Scott Nelson    schedule 05.09.2014
comment
Выглядит как хорошо продуманный выстрел. - person Bill Woodger; 05.09.2014