2014-09-04 1 views
0

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

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

Спасибо за любые рекомендации.

+1

Предположительно существует спецификация для 'iso 8583 0100'? Что такое «двоичное внутреннее»? Если вы отправляете код, мы можем видеть, что происходит. Не зная, что происходит с последующей обработкой, это все, что можно получить. 'D' ix X'C4 ', который может легко стать« 4 »в зависимости от того, что происходит, чего вы нам не показали. –

ответ

2

Данные дорожки 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.

+0

Похож на хорошо продуманный снимок. –

Смежные вопросы