JR-T 0066.3—2019 银行间市场业务数据交换协议 第 3 部分:适流表示层.pdf
- 文档编号:14660799
- 上传时间:2023-06-25
- 格式:PDF
- 页数:41
- 大小:555.73KB
JR-T 0066.3—2019 银行间市场业务数据交换协议 第 3 部分:适流表示层.pdf
《JR-T 0066.3—2019 银行间市场业务数据交换协议 第 3 部分:适流表示层.pdf》由会员分享,可在线阅读,更多相关《JR-T 0066.3—2019 银行间市场业务数据交换协议 第 3 部分:适流表示层.pdf(41页珍藏版)》请在冰点文库上搜索。
ICS35.240.40A11JR中华人民共和国金融行业标准JR/T0066.32019代替JR/T00662011银行间市场业务数据交换协议第3部分:
适流表示层InterbankmarketinformationexchangeprotocolPart3:
Presentationstreaminglayer2019-01-08发布2019-01-08实施中国人民银行发布JR/T0066.32019目次前言.II1范围.12术语和定义.13语法和结构.24编解码语法.4附录A(资料性附录)错误代码汇总.36IJR/T0066.32019前言JR/T0066银行间市场业务数据交换协议分成3部分:
第1部分:
语法、结构与会话层;第2部分:
应用层;第3部分:
适流表示层。
本部分为JR/T0066的第3部分。
本部分依据GB/T1.12009给出的规则起草。
本部分由中国外汇交易中心暨全国银行间同业拆借中心提出。
本部分由全国金融标准化技术委员会(SAC/TC180)归口。
本部分负责起草单位:
中国外汇交易中心暨全国银行间同业拆借中心。
本部分参与起草单位:
中国人民银行科技司。
本部分主要起草人:
许再越、姚前、杨富玉、朱荣、叶胜国、姜才康、王成勇、胡剑、李正、陈彬、胡卫平、沈峻、崔嵬、郦永达、余波、曲维民、孙小林、沈薇薇、茅廷、杨帆、夏志江、孙英昊、包晓晶、赵俊锋、卢艳民、崔奇、邓钢轶、严璐祎、沈叶。
JR/T0066于2011年6月2日首次发布,本次为第一次修订。
IIJR/T0066.32019银行间市场业务数据交换协议第3部分:
适流表示层1范围JR/T0066的本部分规定了银行间市场参与方基于会话层和应用层的银行间市场成员交互数据进行适流压缩的协议(InterbankMarketInformationExchangeAdaptedforStreaming,简称IMAST)。
本部分适用于外汇市场、货币市场和衍生品市场的前、中、后台以及债券市场的前、中台,不含债券市场的后台清算、结算部分。
2术语和定义下列术语和定义适用于本文件。
2.1IMIX适流IMIXadaptedforstreaming(IMAST)一种压缩IMIX报文数据的二进制流。
2.2编码encode将IMIX报文转换成IMAST流的过程。
2.3解码decode将IMAST流转换成报文的过程。
2.4应用类型applicationtypeIMIX会话层或应用层的域、组件或重复组在适流表示层的抽象概念。
2.5域指令fieldinstructionIMIX会话层或应用层的域、组件或重复组在适流表示层的编码规则。
2.6模板template某个场景下若干域指令的集合所实现的编解码控制结构。
2.71JR/T0066.32019上下文contextIMAST编码或解码的运行环境。
3语法和结构3.1IMAST协议框架适流表示层应用模式见图1。
图1适流表示层应用模式图IMAST协议框架依赖报文所指向的模板进行编码和解码,形成IMAST流进行网络传输。
模板是针对某一IMIX报文的编解码控制结构,通过规定报文中域、组件、重复组的顺序和结构、运算规则、二进制编码表示方法来控制与应用报文相对应的二进制流的编码和解码。
模板是包含若干域指令的序列。
域指令规定报文中域、组件、重复组的编码方式。
域指令由名称、应用类型、存在属性和操作符组成。
应用类型是报文中域、组件或重复组在适流表示层的表现形式。
3.2IMAST流总体结构IMAST流的总体结构采用扩展巴科斯范式(EBNF)语法进行定义。
stream:
=message*|block*block:
=BlockSizemessage+message:
=segment*segment:
=PresenceMapTemplateIdentifier?
(field|segment)*field:
=integer|string|Decimal|ByteVectorIMAST总体结构图见图2。
IMIX报文35=8适流编码IMAST流111000001000000101001000适流解码IMIX报文35=8模板域指令应用类型模板域指令应用类型2JR/T0066.32019图2IMAST流总体结构图IMAST流总体结构具体说明如下:
a)流(stream):
一个IMAST流(stream)为一个报文的序列(sequence),或为一个块的序列;b)块(block):
块(block)是包含单个或多个报文的一个序列,块带有一个前导的、用来表示块包含报文所占字节数量的块大小(blocksize);c)报文(message):
每个报文(message)由一个段(即报文段)来表示;d)段(segment):
段(segment)由头部和具体域组成。
IMAST流示例如下:
市场数据请求IMIX报文示例见图3。
图3市场数据请求IMIX报文示例通过编码后,形成市场数据请求IMAST流,其中PAMP表示占位图,TID表示模板标识符,见图4。
报文Message或段Segment报文Message报文Message块BlockSizeMessage报文Message报文Message报文Message占位图PresenceMap模板标识符TemplateIdentifier(可选)域Field域Field子段Segment子段Segment头部块BlockSizeMessage块BlockSizeMessage8=IMIX.2.09=4134=235=V49=CFETS-RMB-CSTP56=IH52=20151208-12:
00:
00263=2146=148=CNY10=167流Stream3JR/T0066.32019图4市场数据请求IMAST流示例3.3字节停止位IMAST流采用停止位编码规则进行编码,即报文中每一个字节都有一个停止位。
一个停止位编码实体是一个字节序列,其中每个字节的最高有效位(themostsignificantbit)指示下一字节是否是实体的一部分。
停止位示例说明见图5。
注:
当字节为停止位实体的最后一个字节,停止位设置为1。
图5停止位示例图4编解码语法4.1概述编解码的过程依赖于报文所指向的模板。
编码时,编码器通过模板中域的属性对原始消息中的域进行编码操作,并根据规则生成占位图,从而把占位图和编码后的值输出到报文二进制流中。
IMAST接收端解码器根据接收的报文二进制流里的模板标识符找到模板后,根据模板中对域的编码规则(主要是由操作符和占位图决定编码)进行解码,还原传输前的报文。
报文实例字节字节字节字节字节字节第7位第6位第5位第4位第3位第2位第1位第0位停止位数据位停止位实体011111111111100010000010101010011000001011010110010000110100011001000101-PMAP-|-TID-|-9号域-|-34-|-35-|-010101000101001100101101010100100100110101000010001011010100001101010011-39-010101001101000001001001110010001000000000110010001100000011000100110101-|-56-|-长度-|-001100010011001000110000001110000010110100110001001100100011101000110000-52-001100000011101000110000101100001000001010000001010000110100111011011001-|-263-|-146-|-48-|0000000110000111-10-4JR/T0066.320194.2应用类型应用类型能被映射为下列模型:
a)基本类型:
包含整数类型、十进制小数类型、字符串类型、字节向量类型;b)组件类型:
一个包含无序的域指令的集合;c)重复组类型:
一个包含长度及有序的若干组件类型的域指令的集合。
应用类型模型见图6。
图6应用类型模型图4.3模板4.3.1概述模板的定义应使用XML表达,由“”元素定义。
一个模板定义的XML文档可包含单个模板或多个模板的集合。
模板集合应封装在“”元素中,该元素可包含应用于整个封装的模板集合的命名空间参数。
4.3.2语法规则模板语法规则定义如下:
start=templates|templatetemplates=elementtemplatesnsAttr?
templateNsAttr?
dictionaryAttr?
template*template=elementtemplatetemplateNsName,nsAttr?
dictionaryAttr?
instruction*instruction=field注:
templates:
多个模板;template:
单个模板;elementtemplates:
多个模板元素;应用类型基本类型模板模板名称模板标识符十进制小数域指令整数域指令字符串域指令字节向量域指令组件域指令重复组域指令十进制小数类型整数类型字符串类型字节向量类型组件类型重复组类型5JR/T0066.32019elementtemplate:
单个模板元素;nsAttr?
:
命名空间属性,可选元素;templateNsAttr?
:
模板命名空间属性,可选元素;dictionaryAttr?
:
字典属性,可选元素;template*:
N个模板;templateNsName:
模板命名空间名;instruction*:
N个域指令。
示例:
下面的XML片段是采用具体语法格式的一个模板定义的例子。
6JR/T0066.320194.3.3标识符模板标识符在数据流中报文段头部,表示该报文所使用的模板,以一个无符号整数来表示。
如果过长,则产生可报告错误ERRR6。
如果一个解码器无法找到与数据流中出现的模板标识符所关联的模板,则产生动态错误ERRD9。
模板标识符的编码与拷贝操作符的用法相同。
拷贝操作符使用全局字典,且具有所有模板标识符域公用的一个内部关键字(Key)。
拷贝操作符定义见4.6.7。
4.3.4名称4.3.4.1定义规则模板名称的定义由两部分组成:
命名空间(namespace)URI和本地名称。
使用应用类型、域和操作符关键字的命名空间URI由“ns”参数指定。
模板的命名空间URI由“templateNs”参数指定。
本地名称由参数“名称(name)”指定。
两个名称相同,当且仅当它们的命名空间标识符和本地名称都相同。
4.3.4.2语法规范模板名称语法规范定义如下:
nsName=nameAttr,nsAttr?
idAttr?
templateNsName=nameAttr,templateNsAttr?
idAttr?
nameAttr=attributenametokennsAttr=attributenstexttemplateNsAttr=attributetemplateNstextidAttr=attributeidtoken注:
nsName:
命名空间名;nameAttr:
名称属性;nsAttr?
:
命名空间属性,可选元素;7JR/T0066.32019idAttr?
:
标识符属性,可选元素;templateNsName:
模板命名空间名;templateNsAttr?
:
模板命名空间属性,可选元素。
4.3.5指令模板指令是包含若干指令的序列。
指令应与数据在流中的位置相对应。
模板指令主要采用域指令,规定域的实例编码和二进制流的方法。
4.4上下文上下文规定编码和解码的运行环境,应包括:
a)模板的集合;b)当前模板;c)域指令的集合;d)当前的域指令;e)字典集合;f)可选的初始值。
当前模板指正被处理的模板,在流中处理到一个模板标识符时当前模板被更新。
对静态模板的引用也可引起当前模板的改变。
4.5域指令4.5.1定义域指令由名称、应用类型、存在属性和操作符组成。
域指令通过名称区分,名称在单个组件内具有唯一性。
应用类型规定了域的基本编码方法,具体包括:
整数(integerField)、十进制小数(decimalField)、ASCII码字符串(asciiStringField)、Unicode字符串(unicodeStringField)、字节向量(byteVectorField)、重复组(sequence)、组件(group)。
存在属性用于指示域指令是必选域(mandatory)或者是可选域(optional)。
如果存在属性未被指定,则该域指令为必选。
域操作符是可选信息,用于规定域指令编码的优化传输方式。
除组件域和重复组域之外的域可定义其域操作符。
4.5.2空值属性每个域指令的应用类型具有一个空值(nullability)的属性。
如果类型为可空(nullable),则NULL值采用一种特殊表示方式。
如果类型不可空(non-nullable),则不保留任何NULL的表示方式。
所有的可空类型按照以下方式构建,即NULL由所有位均为0的7位实体值来表示。
在使用停止位编码时,NULL由0x80来表示。
除非明确指定,否则缺省使用不可空的表示方式。
4.5.3语法规则域指令语法规则如下:
field=integerField|decimalField|asciiStringField|unicodeStringField|byteVectorField|sequence|group8JR/T0066.32019fieldInstrContent=nsName,presenceAttr?
fieldOp?
presenceAttr=attributepresencemandatory|optional注:
integerField:
整数域指令;decimalField:
十进制小数域指令;asciiStringField:
ascii码类型字符串域指令;unicodeStringField:
unicode字符串域指令;byteVectorField;字节向量域指令;sequence:
重复组域指令;group;组件域指令;nsName:
域指令命名空间名;presenceAttr:
存在属性,可选元素;fieldOp:
域操作符,可选元素。
4.5.4分类4.5.4.1整数域指令4.5.4.1.1概述整数域指令的类型包括32位无符号整数(uInt32),32位整数(int32),64位无符号整数(uInt64),64位整数(int64)。
整数(Integer)在传送编码中的大小不受限。
所有的整数域指令使用大尾端(bigendian)方式来表示,其中位元和字节均采用网络字节顺序,即高位在低位前,高字节在低字节前。
4.5.4.1.2有符号整数域指令实体的值为一个补码TWOC。
实体值的最高有效位为符号位。
4.5.4.1.3无符号整数域指令实体值即为整数的二进制表示形式。
4.5.4.1.4语法规则整数域指令语法规则如下:
integerField=elementint32fieldInstrContent|elementuInt32fieldInstrContent|elementint64fieldInstrContent|elementuInt64fieldInstrContent注:
integerField:
整数域指令;fieldInstrContent:
域指令内容;前缀“int”表示域是带符号的,“uInt”则表示域是无符号的。
4.5.4.1.5错误发生9JR/T0066.32019整数由停止位编码实体表示。
如果一个整数在移除7位或7位以上的最高有效位后,实体值还是表示相同的整数,则该整数过长(overlong)。
如果在流中出现一个过长的整型数,除非该整数被用作块大小,否则产生可报告错误ERRR6。
如果数据流中的整数大于特定类型的最大值,或小于指定类型的最小值,则产生动态错误ERRD2。
各整数类型最大值和最小值见表1。
表1各整数类型最大值和最小值类型最小值最大值int32-21474836482147483647uInt3204294967295int64-92233720368547758089223372036854775807uInt640184467440737095516154.5.4.1.6编码示例可选的正数定义如下:
可选的正数编码示例见表2。
表2可选的正数编码示例输入值本地十六进制/二进制IMAST十六进制/二进制9427550x0e0x620xa30000111001100010101000110x390x450xa4000111001001000101110100100注:
停止位由黑体表示。
符号位由下划线表示。
域可选且值非负,所以自加1。
必选的正数定义如下:
必选的正数编码示例见表3。
表3必选的正数编码示例输入值本地十六进制/二进制IMAST十六进制/二进制9427550x0e0x620xa30000111001100010101000110x390x450xa3000111001001000101110100011注:
停止位由黑体表示。
符号位由下划线表示。
域为必选,因此不自加1。
可选的负数定义如下:
可选的负数编码示例见表4。
表4可选的负数编码示例输入值本地十六进制/二进制IMAST十六进制/二进制-9427550xf10x9d0x5d1111000110011101010111010x460x3a0xdd00100011000011101011101110110JR/T0066.32019输入值本地十六进制/二进制IMAST十六进制/二进制注:
停止位由黑体表示。
符号位由下划线表示。
域为可选的负数,因此不自加1。
必选的负数定义如下:
必选的负数编码示例见表5。
表5必选的负数编码示例输入值本地十六进制/二进制IMAST十六进制/二进制-79427550xff0x860xcd0x9d111111111000011011001101100111010x7c0x1b0x1b0x9d001111100000011011000011011110011101注1:
本地十六进制/二进制中,最左端位的高值被抛掉。
注2:
IMAST十六进制/二进制中,停止位由黑体表示。
符号位由下划线表示。
域为必选,因此不自加1。
带符号位扩展的必选的正数定义如下:
带符号位扩展的必选的正数编码示例见表6。
表6带符号位扩展的必选的正数编码示例输入值本地十六进制/二进制IMAST十六进制/二进制81930x200x0100100000000000010x000x400x81000000000001000000110000001注:
停止位由黑体表示。
符号位由下划线表示。
表示符号所必需的符号位扩展(斜体)。
域必选,因此不自加1。
带符号位扩展的必选的负数定义如下:
带符号位扩展的必选的负数编码示例见表7。
表7带符号位扩展的必选的负数编码示例输入值本地十六进制/二进制IMAST十六进制/二进制-81930xff0xdf0xff1111111111011111111111110x7f0x3f0xff001111111000111111111111111注:
停止位由黑体表示。
符号位由下划线表示。
表示符号所必需的符号位扩展(斜体)。
域为必选,因此不自加1。
无符号可选的整数定义如下:
无符号可选的整数编码示例见表8。
11JR/T0066.32019表8无符号可选的整数编码示例输入值本地十六进制/二进制IMAST十六进制/二进制nullN/A0x8011000000000x0000x8111000000110x0110x821100000109427550x0e0x620xa3111001100010101000110x390x450xa4000111001001000101110100100注:
停止位由黑体表示。
域可选,因此自加1。
无符号必选的整数定义如下:
无符号必选的整数编码示例见表9。
表9无符号必选的整数编码示例输入值本地十六进制/二进制IMAST十六进制/二进制00x0000x8011000000010x0110x811100000019427550x0e0x620xa3111001100010101000110x390x450xa3000111001001000101110100011注:
停止位由黑体表示。
域必选,因此不自加1。
4.5.4.2十进制小数域指令4.5.4.2.1概述十进制小数域指令包含两部分:
指数(exponent)部分和尾数(mantissa)部分。
该域指令两部分整体使用单个域操作符,或者两部分使用各自的操作符。
整个十进制小数未指定操作符,或只指定了单个操作符,则运算对象被当成一个十进制小数表示的数值,在编码传输过程中表示为一个带比例数(ScaledNumber)。
带比例数(ScaledNumber)由一个尾数和一个指数表示。
为了计算效率,浮点数使用以2为底的指数,但为了支持十进制数的确切表示形式,带比例数采用了以10为底数的指数。
V=SBE式中:
V数值;S尾数;B底数;E指数。
12JR/T0066.32019其中,数值由尾数和10的指数次方相乘来得到。
带比例数由一个带符号的整数指数及其之后的一个带符号的整数尾数来表示。
如果一个带比例数可空,则其指数可空,但尾数不可空。
NULL值的带比例数由一个NULL的指数来表示。
当且仅当指数不为NULL时,尾数在流中出现。
当对指数和尾数部分分别应用操作符时,指数和尾数部分所生成的名称是该十进制小数域指令的特有名称。
如果十进制小数域是可选存在的,并具有单独的操作符,则尾数存在与否取决于指数是否存在,具体规定见4.7。
4.5.4.2.2语法规则十进制小数域指令语法规则如下:
decimalField=elementdecimalnsName,presenceAttr?
(fieldOp|decFieldOp)decFieldOp=elementexponentfieldOp?
elementmantissafieldOp?
注:
presenceAttr:
存在属性,可选元素;exponent:
指数域操作符;mantissa:
尾数域操作符。
4.5.4.2.3错误发生虽然指数被看作int32类型,但其值域范围应是-63,63。
在应用任何操作符后,如果获得的指数超出了该范围,则产生可报告错误ERRR1。
当使用单独的操作符时,可对十进制小数科学计数法表示的数的范围和精度进行限制。
由于使用某个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JR-T 0066.32019 银行间市场业务数据交换协议 部分:适流表示层 JR 0066.3 2019 银行间 市场 业务 数据 交换 协议 部分 表示
![提示](https://static.bingdoc.com/images/bang_tan.gif)