Магнитные карты и ПК - Гёлль Патрик. Страница 17

Поскольку в Internet можно встретить интересные программы, использующие формат .CRD, нам показалось полезным снабдить читателей служебной программой, способной сделать файлы .CAR совместимыми с ними. Речь идет о программе CARTOCRD.BAS.

В том виде, в котором она написана, эта небольшая программа может преобразовать файл CARTE.CAR, который был только что считан, в файл CARTE. CRD.

10 REM — CARTOCRD.BAS —

20 CLS: KEY OFF

30 PRINT "Преобразование файла CARTE.CAR в CARTE.CRD"

40 OPEN "carte.car" FOR INPUT AS #1

50 OPEN "carte.crd" FOR OUTPUT AS #2

60 IF EOF(1) THEN 110

70 INPUT #1,A

80 IF A=1 THEN PRINT#2,"1";

90 IF A=0 THEN PRINT#2,"0";

100 GOTO 60

110 PRINT "Выполнено": BEEP

120 END

130 REM (c) 1996 Patrick GUEULLE

Ниже показано, во что превращается файл TEST5.CAR, обработанный программой CARTOCRD.BAS (сначала его надо скопировать под именем CARTE .CAR).

Магнитные карты и ПК - _93.jpg

Программа импорта файлов

Служебная программа CRDTOCAR.BAS осуществляет обратную операцию по отношению к предыдущей. Иначе говоря, выполняет преобразование файла CARTE.CRD в CARTE.CAR, совместимый со всеми нашими остальными программами.

10 REM — CRDTOCAR.BAS —

20 CLS: KEY OFF

30 PRINT "Преобразование файла CARTE.CRD в CARTE.CAR"

40 OPEN "carte.crd" FOR INPUT AS #1

50 OPEN "carte.car" FOR OUTPUT AS #2

60 IF EOF (1) THEN 110

70 A$=INPUT$ (1,#1)

80 IF A$="1" THEN PRINT#2,"1";: GOT0 60

90 IF A$="0" THEN PRINT#2,"0";: GOTO 60

10 °CLS: BEEP: PRINT "CARTE.CRD не соответствует формату CRD": END

110 PRINT "Выполнено": BEEP

120 END

130 REM (c) 1997 Patrick GUEULLE

Этим можно воспользоваться, чтобы извлечь пользу из файлов. CRD, полученных от пользователей, работающих, например, с программой CARDOMAT, очень высоко ценимой в США, которая, надо признаться, несколько подстегнула воображение автора…

Рекомендуется сначала скопировать исходный файл под именем CARTE.CRD, в то время как результат преобразования будет носить имя CARTE.CAR.

ДЕКОДИРОВАНИЕ ПЯТИБИТНЫХ СИМВОЛОВ

Иногда необходимо декодировать содержимое файла .CAR, когда нет карты, с которой он был считан. Это может быть файл, уже прочитанный при помощи LECT75 или LECT210, или файл, переписанный на дискету либо полученный по электронной почте другим любителем считывания с магнитных карт. Это может быть даже файл, предварительно «перевернутый» программой INVERT, если есть подозрение, что он был считан в обратном направлении.

Наши программы LECTISO не подходят для решения такой задачи по двум основным причинам. Во-первых, они созданы специально для управления операцией считывания в оболочке, а не для работы в автономном режиме. Во-вторых, каждая из них разработана для строго определенной дорожки ISO, а значит, рассчитана на определенное число битов.

Программа DEC5.BAS, со своей стороны, может взаимодействовать с любым файлом .CAR с пятиразрядным кодированием (а значит, цифровым) вне зависимости от его длины и дорожки, с которой он взят.

Познакомиться с работой DECS.BAS можно, предложив ей декодировать файл TEST5 .CAR, который есть на сайте www.dmk.ru.

10 REM — DEC5.BAS —

20 KEY OFF: CLS

30 PRINT "Имя декодируемого файла?";

40 INPUT N$: IF N$="" THEN END

50 FOR F=1 TO LEN(N$)

60 IF MID$(N$,F,1)="." THEN 90

70 NEXT F

80 N$=N$ +".CAR"

90 OPEN N$ FOR INPUT AS #1

100 L=INT(LOF(1)/2)-1

110 DIM T(LOF (1))

120 F=1:WHILE NOT EOF(1)

130 INPUT#1,T(F): F=F+1

140 WEND

150 J=1

160 IF T(J)<>1 THEN 220

170 IF T(J+1)<>1 THEN 220

180 IF T(J+2)<>0 THEN 220

190 IF T(J+3)<>1 THEN 220

200 IF T(J+4)<>0 THEN 220

210 K=J: GOTO 230

220 J=J+1: GOTO 160

230 C$=""

240 FOR F=0 TO 4

2S0 IF T(K+F) =0 THEN C$=C$+"0"

260 IF T(K+F) =1 THEN C$=C$+"1"

270 NEXT F

280 GOSUB 310

290 K=K+5: IF K>L-1 THEN END

300 GOTO 230

310 IF C$ = "11010" THEN PRINT "{Start}"

320 IF C$ = "10110" THEN PRINT " {sep}"

330 IF C$ = "11111" THEN PRINT "{end}"

340 IF C$ = "01011" THEN PRINT "{10}";

350 IF C$ = "00111" THEN PRINT "{12}";

360 IF C$ = "01110" THEN PRINT "{14}";

370 IF C$ = "00001" THEN PRINT "0";

380 IF C$ = "10000" THEN PRINT "1";

390 IF С$ = "01000" THEN PRINT "2";

400 IF C$ = "11001" THEN PRINT "3";

410 IF C$ = "00100" THEN PRINT "4";

420 IF C$ = "10101" THEN PRINT "5";

430 IF C$ = "01101" THEN PRINT "6";

440 IF C$ = "11100" THEN PRINT -7";

450 IF C$ = "00010" THEN PRINT "8";

460 IF C$ = "10011" THEN PRINT "9";

470 RETURN

480 REM (с) 1996 Patrick GUEULLE

ДЕКОДИРОВАНИЕ СЕМИБИТНЫХ СИМВОЛОВ

Программа DEC7.BAS выполняет функцию, аналогичную выполняемой программой DEC5, но с алфавитно-цифровыми файлами, символы которых закодированы семью битами.

10 REM — DEC7.BAS —

20 KEY OFF: CLS

30 PRINT "Имя декодируемого файла?";

40 INPUT N$: IF N$="" THEN END

50 FOR F=1 TO LEN(N$)

60 IF MID$ (N$,F,1) = "." THEN 90

70 NEXT F

80 N$=N$+".CAR"

90 OPEN N$ FOR INPUT AS #1

100 L=INT(LOF(1)/2)-1

110 DIM T (LOF (1))

120 F=1: WHILE NOT EOF(1)

130 INPUT#1,T(F): F=F+1

140 WEND