B2-READ RECORD
B2即獲取線性固定EF或者循環(huán)EF里面的記錄record,該指令一般在C0之后執(zhí)行臭蚁,在C0返回的fcp里面可以判斷到該文件下是否存在record最铁,record的個(gè)數(shù)及record的長(zhǎng)度,如果存在即可用B2需要讀的字節(jié)長(zhǎng)度垮兑。B2與B0的最大不同之處就是B2的個(gè)數(shù)是不確定的,而B0的個(gè)數(shù)是固定為一個(gè)漱挎。
B2指令有如下三種:
- 讀下一條記錄:00 B2 00 02 XX(XX代表要讀取的長(zhǎng)度)
- 讀上一條記錄:00 B2 00 03 XX(XX代表要讀取的長(zhǎng)度)
- 讀當(dāng)前記錄:00 B2 XX 04 XX (XX1代表要讀取的第幾個(gè)記錄系枪,XX2代表要讀取的長(zhǎng)度)
不過我們最常用的還是00 B2 XX 04 XX讀當(dāng)前記錄
1.正常讀取
當(dāng)讀B2時(shí),解析fcp里面的內(nèi)容可知B2的個(gè)數(shù)和每個(gè)Record的長(zhǎng)度為多少(83之前的三個(gè)字節(jié)002C07磕谅,共07個(gè)私爷,每個(gè)002C字節(jié)),后面就用解析到的長(zhǎng)度進(jìn)行B2的讀取即可膊夹,00 B2 00 00 XX(長(zhǎng)度)
=>00 A4 00 04 02
<=A4
=>2F 06
<=61 1C //返回長(zhǎng)度0x19
=>00 C0 00 00 19 //讀取0x19的fcp數(shù)據(jù)
<=C0 621A82054221002C0783022F068A01058B032F060480020134880130 9000 //2C07
=>00 B2 01 04 2C
<=B2 8001019000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 9000
=>00 B2 02 04 2C
<=B2 8001019000800102A406830101950108800118A40683010A950108FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 9000
=>00 B2 03 04 2C
<=B2 800101A40683010195010880011AA40683010A950108FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 9000
=>00 B2 04 04 2C
<=B2 800101900080011AA40683010A950108FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 9000
=>00 B2 05 04 2C
<=B2 80010190008001029700800118A40683010A950108FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 9000
=>00 B2 06 04 2C
<=B2 80011BA40683010A950108FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 9000
=>00 B2 07 04 2C
<=B2 80010190008001029700800118A40683010A950108FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 9000
2.讀取少于/多于/00原有記錄長(zhǎng)度
當(dāng)讀B2時(shí)衬浑,解析fcp里面的內(nèi)容可知B2個(gè)數(shù)為07,長(zhǎng)度為2C放刨,但是卻只想讀取少于0A/多余2F/00/的內(nèi)容工秩,則就會(huì)返回實(shí)際長(zhǎng)度回來6C開始
=>00 A4 00 04 02
<=A4
=>2F 06
<=61 1C //返回長(zhǎng)度0x19
=>00 C0 00 00 19 //讀取0x19的fcp數(shù)據(jù)
<=C0 621A82054221002C0783022F068A01058B032F060480020134880130 9000 //2C07
=>00 B2 01 04 0A
<=6C 2C //返回實(shí)際B2長(zhǎng)度
=>00 A4 00 04 02
<=A4
=>2F 06
<=61 1C //返回長(zhǎng)度0x19
=>00 C0 00 00 19 //讀取0x19的fcp數(shù)據(jù)
<=C0 621A82054221002C0783022F068A01058B032F060480020134880130 9000 //2C07
=>00 B2 01 04 2F
<=6C 2C //返回實(shí)際B2長(zhǎng)度
=>00 A4 00 04 02
<=A4
=>2F 06
<=61 1C //返回長(zhǎng)度0x19
=>00 C0 00 00 19 //讀取0x19的fcp數(shù)據(jù)
<=C0 621A82054221002C0783022F068A01058B032F060480020134880130 9000 //2C07
=>00 B2 01 04 00
<=6C 2C //返回實(shí)際B2長(zhǎng)度
3.讀超過/00原有記錄個(gè)數(shù)
當(dāng)讀B2時(shí),解析fcp里面的內(nèi)容可知B2個(gè)數(shù)為07进统,長(zhǎng)度為2C助币,但是卻想讀取超過08/00/的記錄,則就會(huì)返回記錄找不到6A 83
=>00 A4 00 04 02
<=A4
=>2F 06
<=61 1C //返回長(zhǎng)度0x19
=>00 C0 00 00 19 //讀取0x19的fcp數(shù)據(jù)
<=C0 621A82054221002C0783022F068A01058B032F060480020134880130 9000 //2C07
=>00 B2 08 04 2C
<=6A 83 //記錄找不到
=>00 A4 00 04 02
<=A4
=>2F 06
<=61 1C //返回長(zhǎng)度0x19
=>00 C0 00 00 19 //讀取0x19的fcp數(shù)據(jù)
<=C0 621A82054221002C0783022F068A01058B032F060480020134880130 9000 //2C07
=>00 B2 00 04 2C
<=6A 83 //記錄找不到