GB/T 18221-2000 信息技术 程序设计语言 环境与系统软件接口 独立于语言的数据类型

GB/T 18221-2000 Information technology—Programming languages,their environments and system software interfaces—Language-independent datatypes

国家标准 中文简体 现行 页数:101页 | 格式:PDF

基本信息

标准号
GB/T 18221-2000
相关服务
标准类型
国家标准
标准状态
现行
中国标准分类号(CCS)
国际标准分类号(ICS)
发布日期
2000-10-17
实施日期
2001-10-01
发布单位/组织
国家质量技术监督局
归口单位
中国电子技术标准化研究所
适用范围
-

研制信息

起草单位:
西安电子科技大学
起草人:
刘坚、金益民、冯惠
出版信息:
页数:101页 | 字数:196 千字 | 开本: 大16开

内容描述

GBIT18221-2000

运算:Equal,InOrder整(数运算);Add,Multiply,Negate.

Add(x,y:modulo(modulus)):modulo(modulus)=

integer.Remainder(integer.Add(x,y),modulus).

Negate(x:modulo(modulus)):modulo(modulus)is

Modulo(modulus)值空间的唯一值y,且Add(x,y)=0.

Multiply(x,y:modulo(modulus)):Modulo(modulus)=

integer.Remainder(integer.Multiply(x,y),modulus).

10.1.3位

描述:位是表示分别指定加法恒等元g,off和乘法恒等元"1“的两个符号有限域的数据类型。

声明:typebit=modulo(2);

参数值:无。

值:0,1

性质:有序,精确,数值,有界。

运算:取自模的E(qual,InOrder,Add,Multiply)o

10-1.4位串

描述:位串是变长二进制位串的数据类型。

声明:typebitstring=newsequenceof(bit);

参数值:无。

值:位串数据类型的每个值是一个位数据类型值的有限序列。其值空间由所有这些值组成。

值语法:

位串字面值=双引号位{字面值}双引号.

位字面值二o“ffII71

应碧笋A省表示一个值,其中序列中的第一个值由最左边的应笋wm表‘示,序列中的第二个值由

下一个应笋,茵表示,依此类推。若应沪笋厕道中没有夕笋汤者,‘则该值表示长度为零的序列。

性质:无序,精确,非数值。

运算:取自序列见(8.4.4)的H(ead,Tail,Append,Equal,Empty,IsEmpty)o

1位串被认为是一个序列,而不是一个数组,其中的值可以具有不同长度。

2位串的描述和性质与位()序列的相同。称位串是’'new”以便于映射。实体可能需要附加特殊性质到位串数据类型

上。

10.1.5字符串

描述:字符串是一个数据类型族,它表示标准字符集中符号的串。

声明:

typecharacterstring(repertoire:objectidentifier)=newsequenceof(character(repertoire));

参数值:repertoire是一个“全员标识符”见(8.1.4)0

值:字符串数据类型的每个值是一个由全刃(repertoire)所标识的字符集的有限序列。值空间由所

有这样值的汇集组成。

值语法:

串字面值=双引号{串字符}双引号.

串字符=非双引号字符}附加字符}转义字符.

非双引号字符=字母}数字}下划线}特殊字符}单引号}间隔.

附加字符=本标准没有定义.

转义字符=转义字符名转义.

GB/T18221-2000

字符名=标识符{l,标识符}.

笋完百道中的每个笋笋痊表示由至J,标识的字符集的一个成员,如8.1.4中所述。笋究百窗表示

字符串数据类型的值,其中序列中的第一个值由最左边的笋.笋夸表示,序列中的第二个值由下一个笋

笋孝表示,依此类推。若笋笋汤者中‘没有笋笋拼,则该值表示长度为零的序列。

性质:无序,精确,非数值,可数。

运算:取自序列见(8.4.4)的H(ead,Tail,Append,Equal,Empty,IsEmpty)a

1虽然一些字符集标准需要规定理序序列,但是并没有规定理序序列的国家标准和国际标准。有些应用需要字符

串上的次序关系,并且共享没有标准理序序列的字符集,这就需要创建一个定义的数据类型或一个}}赤F1?

扩,它引用字符集并且与理序序列一致。

2字符串被定义为一个序列,而不是一个数组,以允许不同长度的值。

3characterstring(r)数据类型的描述和特性sequenceof(character(r))的相同。称字符串数据类型是"new"以便于

映射。实体可能需要附加特殊性质到字符串数据类型上。

4许多语言将由具有不同语法需求的字符串所表示的对象区分为不同的数据类型对象。例如,LISP具有“s表达

式”的动态求值;Prolog具有类似地结构;COBOL把货币表示为一个“数值编辑串卜以及若千语言具有一种“标

识符”数据类型,该类型的值被作为附有特性的用户定义的对象对待。在多语言环境中,这样的对象大概只能被

作为字符串数据类型,除非语言中企图解释特殊的特性。因此,这样的数据类型应被声明为“从字符串导出的”LI

数据类型,例如:

typeidentifier=newcharacterstring(repertoire)size(1二maxidsize);

typeeditcharacter=character({isostandard646})

selecting('0,二’9',’.’,’,’,’+’,’一’,’$‘’,’#’,’*’);

typenumericedited=newsequenceof(editcharacter);

两种情况中,关键字"new"应用来指示非寻常的特性描述运算,构造规则和解释见(9.1.2).

10.16时间间隔

描述:时间间隔是一个数据类型族,它表示以秒或秒的小数逝去的时间和(日期与时间不同,它表示

时间的一个点,见8.1.6)。它是一个产生的数据类型,从运算受限的含比例数数据类型导出。

声明:

typetimeinterval(unit:timeunit,eger,factor:integer)

二newscaled(radix,factor);

typetimeunit=state(year,month,day,hour,minute,second);

参数值:radix是一个正整数值,factor是一个整数值。

值:所规定时间单位的一个:adix一‘-‘0单位的整数倍的所有值。

性质:有序,精确,数值,无界。

运算:取自含比例数的E(qual,Add,Negate);ScalarMultiplyo

令scaled.Multiply()是定义在含比例数数据类型上的乘法运算,则:

ScalarMultiply(x:scaled(r,f),y:timeinterval(u,r,f)):timeintervalu(,r,f)=

scaled.Multiply(x,y)。

举例-timeinterval(second,10,3)是以毫秒计所逝去时间的数据类型。

10.1.7八位位组

描述:八位位组是八位代码的数据类型,用于字符集和私有编码。

声明:typeoctet=newintegerrange(0..255);

参数值:无。

值:每个八位位组数据类型的值是一个代码,由范围0「,255]中的非负整数值表示。

性质:有序,有界,精确,非数值,有限。

GB/T18221-2000

运算:取自整数的E(qual,InOrder)o

1八位位组是通信协议中的通用数据类型。

2通常可以定义把一个八位位组值转换为一个位串值或一个位数组值的“特性描述运算”,但是对八位位组中的哪

一位是位串中的第一位,或同等地,如何将数组的下标映射到位上,并没有一致意见。

10-1.8八位字符串

描述:八位字符串是使用八位代码的变长编码数据类型。

声明:typeoctetstring=sequenceof(octet);

参数值:无。

值:每个八位字符串数据类型的值是一个由八位位组值表示的代码的有限序列。值空间包含所有这

样值的汇集,包括空序列。

性质:无序,精确,非数值,可数。

运算:取自序列见(8.4.4)的H(ead,Tall,Append,Equal,Empty,IsEmpty),

注:在其他使用中,八位字符串值是字符串值的表示,并且用于当字符串被作为代码使用时。特别地,当值可以包括

与所有组成部分中字符均没有关联的代码时,八位字符串被推荐使用。

10-1.9私有

描述:私有数据类型表示一个应用定义的、对处理实体隐藏的值空间和运算集。

声明:typeprivate(length:NaturalNumber)=newarray(1..length)of(bit);

参数值:length应是一个正整数值。

值:应用定义。

性质:无序,精确,非数值。

运算:无。

1没有对私有数据类型的值的记法。

2私有数据类型的目的是通过下列提供手段:

a)一个非标准数据类型的对象,具有复杂的内部结构,可以在两个通过标准的一致性服务了解类型的团体p(ar-

ties)之间传递,此服务无需解释内部结构;

b)除一个所谓的"handles”之外,对所有团体均无意义的数据类型的值。可以通过服务,例如一个包接口部分为终

端用户提供",handles",供以后使用。

上述两种情况中,所有媒介均必须适当维持位的次序与长度。前一种情况中,私有数据类型必须由提供者或(其

代理商)编码并由接收者或(其代理商)解码。后一种情况中,私有类型仅由代理商编码和解码,而所有其他的,包

括终端用户将其作为一个位数组处理。

10.1.10对象标识符

描述:对象标识符是一种对“象标识符”的数据类型,即用由抽象语法记法一G(B/T16262)所定义

的形式结构,唯一标识开(放系统互联)通信协议的值。

声明:

typeobjectidentifier=newsequenceof(objectidentifiercomponent)size(1二*);

typeobjectidentifiercomponent=newintegerreange(0.,*);

参数值:无。

值:objectidentifiercomponent数据类型的值空间是基数见(10.1.1)的同态,但是每个值的意义由

其在一个对象标识符值中的位置确定。

数据类型对象标识符的值空间包含所有非空有限对象标识符成分值序列。每个对象标识符值中的

对象标识符成分值的意义由此在使用之前的值序列确定,如ISO/IEC8824:1990所提供。序列构成唯

一表示一个对象的数据类型标识符的单一值。

GB/T18221-2000

值语法:

对象标识符值=ASN对象标识符}汇集标识符.

ASN对象标识符=“{对“象标识符成分列表”}“

对象标识符成分列表二对象标识符成分值对{象标识符成分值}.

对象标识符成分值=名形式}数形式}名数形式.

名形式=标识符.

数形式=数.

名数形式=标识符””(数形式“)”.

汇集标识符=登记名登记索引.

登记名="ISO10646"JISO2375"1"ISO7350"I"ISO10036".

登记索引=数.

尹澎梁方刃寿者.表示对象标识符数据类型的一个值。袱亥##17&w分省表示对象标识符成分数据类

型的一个值。出现在戎iY亡中白堵泰那应是一个非负整数值。在所有情况中,由ASN'蒙奋解寿.表

示的值是由GB/T16262所规定的值。

At*赤"M表示对象标识符,它指一个登记字符集对象标识符的数据类型的一个值。

关键字IS‘O_10646"指在ISO/IEC10646-1:1993附录A中定义的汇集以及其所指定的汇集,指定

的汇集的“汇集号”为registry-index的值。对象标识符值的形式为:

(iso(1)standard(0)10646partl(1)registry-index).

以关键字"ISO_2375"开头的庄浦赤刃孝指定按ISO2375:1985规定登记的汇集,其登记号是reg-

istry-index的值。对象标识符值的形式为:

(iso(1)standard(0)2375registry-index}.

以关键字"ISO_7350"开头的汇集标识符登记按ISO7350:1991规定登记的汇集,其登记号是reg-

istry-index的值。对象标识符值的形式为:

(iso(1)standard(0)7350registry-index}.

以关键字"ISO10036"开头的汇集标识符指定登记在ISO10036:1991之下的汇集,其登记号是

registry-index的值。对象标识符值的形式为:

iiso(1)standard(0)10036reigistry-index}.

性质:无序,精确,非数值。

对对象标识符成分上的运算:取自整数的Equal,

对对象标识符的运算:取自序列的Append;Equal,Length,Detach,Last.

Length(x:objectidentifier):integeris序列x中对象标识符成分值的个数。

Detach(x:objectidentifier):objectidentifier,其中Length(x)>l,is

从序列x中去掉最后一个对象标识符成分值所形成的对象标识符。

Last(x:objectidentifier):objectidentifiercomponentis

序列x中最右一个对象标识符成分值。

Equal(x,y:objectidentifier):boolean=

ifNot(Length(x)=Length(y))thenfalse,

elseifNot(objectidentifiercomponent.Equal(Last(x),Last(y)))thenfalse,

elseifLength(x)=1thentrue,

elseEqual(DetachW,Detach(y));

1序列中的IsEmpty,Head和Tail在对象标识符数据类型上无意义,因此,这里定义了Length和Equal,虽然它们

可以从序列运算中导出。

GB/T18221一2000

z对象标识符在许多应用中被认为是一个本原数据类型,但是它的值空间的定义机制,某些应用对机制的使用,诸

如OSI的目录服务,需要值是一个可访问元素数据类型的列表对(象标识符成分)。

10.2定义的产生器

本章定义可由第8章中数据类型和产生器导出的共用数据类型产生器汇集的声明。

数据类型产生器定义的模板是:

描述:对数据类型产生器的一般描述。

声明:数据类型产生器的一个类型声明。

成分:参数数据类型个数和限制,产生过程所用的参数值。

值:结果值空间的形式定义。

性质:结果数据类型的性质指出其作为某数据类型产生器的成分数据类型的允许性:数值或非数

值、近似或精确、无序或有序、有界或无界若(有序)。

当产生器产生一个聚集数据类型时,6.8中所描述的聚集性质也被规定。

运算:与数据类型产生器一致的结果数据类型的特性描述运算。运算的定义具有8.1中所描述的形

式。

102.1栈

描述:栈是用特性描述运算Push替换序列中的特性描述运算Append所导出的一个产生器。即,插

入运算P(ush)把值放在序列的头部而不是尾部A(ppend),

声明:typestack(element:type)=newsequenceof(element);

成分:element可以是任何数据类型。

值:取自element数据类型值的所有有限序列。

性质:非数值,无序,当且仅当element数据类型精确时为精确。

聚集性质:同类,可变大小,不唯一性,强加排序,通(过位置)间接访问。

运算:取自序列的I(sEmpty,Equal,Empty);Top,Pop,Pusho

Top(x;stack(element)):element=sequence.Head(x)-

Pop(x:stack(element)):element=sequence.Tail(x).

Push(x:stack(element),y:element);stack(element)is

在序列x头部加入值y所得到的序列。

10.2.2树

描述:树是产生递归列表结构的产生器。

声明:

typetree(leaf;type)=newsequenceof(choice(state(atom,list))

of((atom):leaf,(list):tree(leaf)));

成分:leaf应是任何数据类型。

值:所有有限递归序列,其中每个值或者是一个leaf数据类型的值,或者是一个自身的子()树。最

终,每个“终结”是一个leaf数据类型的值。

性质:无序,非数值,当且仅当leaf类型精确时为精确,可数。

聚集性质:同类,可变大小,不唯一性,强加排序,通(过位置)间接访问。

运算:取自序列的I(sEmpty,Equal,Empty,Head,Tail);Join.

为便于运算的定义,引人treemember数据类型,声明为:

typetreemember(leaf:type)=choice(state(atom,list)of((atom)aeaf,(list):tree(leaf));

则treemember(leaf)是树数据类型中序列数据类型的元素数据类型。

join(x:tree(leaf),y:tree(member(leaf)):tree(leaf)是

Head第(一个成员)是值y,Tail是序列x的所有成员的序列。

GB/T18221-2000

注:树是一个形式为aggregate(sequence)oftree-member的聚集数据类型。概念上,树是一个其值为leaf值的聚集

的聚集数据类型。上述两种情况中,均可认为树是一个同类聚集。

10.2.3循环枚举

描述:循环枚举是一个产生器,它在一个枚举数据类型上重定义后继运算,使得最后一个值的后继

是第一个值。

声明:typecyclicof(base;type)=newbase;

成分:base应指定一个枚举数据类型。

值:基数据类型的所有值vo

性质:有序,精确,非数值。

运算:取自基数据类型的E(qual,InOrder);Successor,

令base.Successor表示定义在基数据类型上的后继运算,则:

Successor(x:cyclicof(base)):cyclicof(base)is

若对所有基的值空间的值y,Or(NotUnOrder(x,y)),Equal(x,y))成立,则是基的值空间中的

值z,使得对所有基的值空间的值y,Or(Not(InOrder(y,z)),Equal(y,z))成立;

否则base.Successor(x)成立。

10-2.4任选

描述:任选是一个产生器,它在基数据类型的值空间中加上",nil”值。

声明:

typeoptional(base:type)

=newchoice(boolean)of((true):base,(false):void);

成分:base应指定任何数据类型。

值:基数据类型的所有值v加上无作用的",nilvalue"。此类型与下列同态:

{(true,v)Ivinbase)union{(false,nil)),它是选择类型的模型化的值空间。

性质:除值",nil"之外的所有基数据类型的性质。

运算:IsPresent(=DiscriminantfromChoice);所有基数据类型上的运算,作如下所示的修改。

IsPresent(x:optional(base)):boolean=Discriminant(x);

所有的一元运算:Unary-op(x:base):result-type由在任选的基数上按如下定义:

Unary-op(x:optional(base)):result-typeis

若IsPresent(x)成立则为Unary-op(Cast.base(x));

否则为未定义。

所有的二元运算:Binary-op(x:base):result-type由在任选的基数上按如下定义:

Binary-op(x,y:optional(base)):result-typeis

若And(IsPresent(x),IsPresent(y))成立则为Binary-op(Cast.base(x),Cast.base(y));

否则为未定义。

其他运算定义与上述类似。

注:任选数据类型是一个适当的对象的类型,例如过程的参数或记录的域,它们的有些实例可能没有值。

举例

1.包含任选有(时不出现或“未定义,’)值的记录类型可以被声明如下:

record(required_name:characterstring,optional_value:optional(integer));

2.仅有时被提供的过程参数可以被声明如下:

proceduresearch(int:T,intableT'sequenceof(T),

inindex:optional(procedure(ini:integer,inj:integer):integer)):boolean;

参数index是tableT的一个下标函数,并不总是需要提供。即,它可以具有"nil"值。

11映射

本章定义程序设计或规格说明语言与LI数据类型之间映射的一般形式和需求。

Gs/T18221-2000

语言的内部数据类型被认为包括可以表现在语言中的,特别是那些描述语言基本运算对象本质的

信息类型和结构概念。像LI数据类型一样,一个语言的数据类型概念可以被分为本原数据类型和数据

类型产生器。语言的本原数据类型是那些对象的类型,它们在语言的语义中被认为是本原的,即不能从

其他内部数据类型产生而来。语言的数据类型产生器是那些语言结构,它们可以被用来产生新的数据类

型,具有新数据类型的对象,以及更详尽的信息结构或静态内部对象关系。

本标准为精确语义数据类型概念—LI数据类型而定义了一个自然语言。一个语言的内部数据类

型和LI数据类型之间的映射,是两个语言的语义等价的概念识别。因此,语言的内部数据类型和LI数

据类型之间有两种映射:

—从语言的内部数据类型到LI数据类型的映射,称为出映射;

—从LI数据类型到语言的内部数据类型的映射,称为入映射。

本标准并不规定映射的精确形式,因为映射形式的许多细节是与语言相关的。本章规定对人映射和

出映射的信息内容的需求和接受这样的映射的条件。

1在这种观念下,映射并不直接应用于程序模块或服务规格说明,因为它们操纵特定的对象类型,这些对象类型具

有在特定语言中表示的特定数据类型。因此一个程序模块或服务规格说明的数据类型可以在LI数据类型语言

中直接描述,或者从用于编写模块或规格说明的语言的人映射或出映射中推导出。

2从一个内部表示到一个与LI数据类型关联的中立表示的值的转换的概念,并不是本标准的一部分,但可以是引

用本标准的标准的一部分。

11.1出映射

本原内部数据类型的出映射应标识语法和语义结构以及在语言中的关系,它们一起唯一表示内部

数据类型,并且使内部数据类型与对应第7章到第10章中定义的形式语言所表示的LI数据类型关联。

内部数据类型产生器的出映射应标识语法和语义结构以及在语言中的关系,它们一起唯一表示内

部数据类型产生器,并且使内部数据类型产生器与本标准中定义的形式语言所表示的LI数据类型产生

器关联。

一个语言的数据类型和数据类型产生器的出映射汇集,应称为砰序者留砰.,并应具有下列性质:

(1)对每一个本原的或产生的内部数据类型,映射应与单一的对应LI数据类型关联;

(2)对每个内部数据类型,映射应规定每个内部数据类型所允许的值和对应LI数据类型等价的值

之间的关系;

(3)对出现在映射中的LI数据类型的每个值,映射应规定是否任何内部数据的任何值均被映射,

若是,内部数据类型的哪些值被映射。

1不要求本原内部数据类型映射到本原1-1数据类型。本标准为从本原的或先前产生的数据类型生成产生的LI数

据类型的多种概念机制,以便于映射。

2由内部数据类型产生器应用于内部参数数据类型所构造的内部数据,被隐式地映射到由所映射数据类型产生器

应用于所映射参数数据类型所产生的LI数据类型。以这种方式,上述性质1()可以适合于内部产生的数据类型。

3到LI数据类型的概念映射可以不是一对一的映射。映射必须为内部数据类型和LI数据类型标识中的异常提供

文档,异常特别表现在那些在语言中是可区分的,但在LI数据类型中是不可区分的值,以及那些在语言中不可

访问的III数据类型的值等。

4在其他使用中,出映射可以被用于区分一个内部数据类型与一个特定的LI数据类型,以便要求由另一标准为

LI数据类型规定的运算或表示定义能够恰当地应用于内部数据类型。

5出映射可被用来保证使用通用程序设计语言的两个程序单元之间的接口由对语言全然不知的第三方服务提供。

11.2人映射

本原LI数据类型或产生的LI数据类型的人映射,应使LI数据类型与一个内部数据类型关联,内

部数据类型由唯一表示该类型的语法和语义结构以及在语言中的关系所定义。这样的映射应规定任何

Gs/T18221-2000

LI数据类型族参数值上的限制,参数用于从映射中排除该类型族成员。一个LI数据类型族的不同成员

可以被映射到不同的内部数据类型。

LI数据类型产生器人映射,应使LI数据类型产生器与一个内部数据类型产生器关联,内部数据类

型产生器由唯一表示该产生器的语法和语义结构以及在语言中的关系所定义。这样的映射应规定任何

I,I数据类型产生器参数值上的限制,参数用于从映射中排除对应的产生的数据类型的类。具有不同参

数数据类型的相同LI数据类型产生器可被映射到不同的内部数据类型产生器。

对LI数据类型的人映射应使LI数据类型与一个内部数据类型关联,在内部数据类型上可以实现

为LI数据类型规定的所有特性描述运算。

LI数据类型和数据类型产生器到一个语言的内部数据类型和数据类型产生器的人映射汇集,应被

称为组成了者库A拼,并且应具有下列性质:

(1)对每一个本(原的或产生的)LI数据类型,映射应规定I,I数据类型是否被(11.4中所规定的)

语言支持,若支持,则标识一个对应的内部数据类型;

(2)对每个所支持的LI数据类型,映射应规定每个LI数据类型所允许的值和对应内部数据类型

等价的值之间的关系;

(3)对内部数据类型的每个值,映射应规定该值是否是任何LI数据类型的任何值映(射下)的映

象,若是,哪些LI数据类型的哪些值被映射。

1一个未被本原数据类型映射特别映射、并且其参数数据类型在数据类型产生器的映射限制下是允许的、LI产生

的数据类型,会被隐式地映射到一个由所映射内部数据类型产生器应用于所映射内部参数数据类型所产生的内

部数据类型。

2当一个本原的或产生的LI数据类型,通过显式或隐式的映射产生器映射到一个语言数据类型,与之关联的内部

数据类型应支持LI数据类型的语义。这一支持的证据是在内部数据类型上执行特性描述运算的能力。不需要语

言通(过运算符或内置函数或其他)直接支持特性描述运算,但是需要内部数据类型概念地支持特性描述运算。

它或者能够在语言中编写在与之关联的内部数据类型的对象上执行特性描述运算的过程,或者语言标准应在进

一步将其内部数据类型映射到表示或程序设计语言中要求这一支持。

3到内部数据类型的概念映射可以不是一对一的映射。映射必须为内部数据类型和LI数据类型标识中的异常提

供文档,特别是那些在LI数据类型中是可区分的,但在语言中是不可区分的值,以及那些不能通过使用LI数据

类型的接口访问的内部数据类型的值等。

4到一个程序设计语言的入映射可以被用来保证两个用LI数据类型规定的程序单元之间的接口可以被用该语言

编写的程序通过现有语言特征,而不是应用特征的提供信息单元转换的软件工具来正确使用。

11.3逆人映射

从一个Ll数据类型到一个语言内部数据类型的人映射,定义内部数据类型值的一个特殊集合为语

言中LI数据类型的一个烫梁oLI数据类型的逆人映射使用由人映射建立的对应,把那些构成其映象的

内部数据类型的值映射到对应LI数据类型值上。为使逆人映射无二义性,每个LI数据类型的人映射必

须是一对一的。这被形式化为如下:

(1)若a是LI数据类型的一个值并且人映射把a映射到某内部数据类型的值a’,则除非b=a,否

则人映射不应将同一LI数据类型的任何值b映射到a’;

(2)若a是LI数据类型的一个值并且人映射把a映射到某内部数据类型的值a7,则人映射把a’映

射到a;

<3)若c是一个不在人映射定义域中的LI数据类型的值,即不映射到对应内部数据类型的任何

值,则不存在任何内部数据类型的值。’,使得逆人映射c’到co

一个语言的逆人映射是LI数据类型逆人映射的汇集。

1当两个程序单元之间的接口是以LI数据类型规定时,接口可以被由不同语言所编码的程序单元所使用,并可以

GB/T18221-2000

被对所涉及语言全然不知的服务所支持。对每个语言的人映射,被程序员用来编写筛选适当内部数据类型和值

以表示接口所用信息的程序单元。于是,信息由一个程序单元发送,它使用该语言的逆人映射把内部值映射到

I.I数据类型的值,并且由另一个程序单元接收,它使用人映射把LI数据类型的值映射到合适的内部值。信息的

实际传送可能涉及三个软件工具:一个执行发送格式和交换格式之间的转换,自动进行逆人映射,一个传送基于

LI数据类型的交换格式,一个执行交换格式与接收的内部格式之间的转换,自动进行人映射。三个中间工具均

不依赖所使用的特定的接口。因此,可以在任何支持这些数据类型而没有接口特性工具的程序设计语言中实现

使用LI数据类型的任意接口。

2一个语言的逆人映射不具备有用的形式上的性质。相同的内部值可以被映射到若干不同的值,只要不同的值属

于不同的LI数据类型。针对每个数据类型的逆人映射是有用的。

们.4数据类型支持

一个信息处理实体被称为灵夸一个LI数据类型,若该数据类型到其他内部数据类型见(11.2)的

映射保持该数据类型的性质见(6-3).

注:对于聚集数据类型,并不要求保持定义在6.8中的“聚集性质”。

114.1相等支持

对于保持相等性质的映射,任何两个内部数据类型值的实例a,b应被认为相等当且仅当LI数据类

型的对应值a’和b’相等。

11.4.2次序支持

对于保持次序性质的映射,任何两个内部数据类型值的实例a,b应与定义在LI数据类型上的次序

关系一致。也就是说,对于任何两个内部数据类型值的实例a和b,a成b为真当且仅当LI数据类型对应

值a’和b',有a'镇b'。

11-4.3边界支持

对于保持边界的映射,内部数据类型应有上界当且仅当LI数据类型有上界,内部数据类型应有下

界当且仅当LI数据类型有下界。

注:要求边界值必须是相应的。

11-4.4基数支持

对于保持有限数据类型的基数的映射,内部数据类型值的个数应与LI数据类型完全相同。对于保

持精确、可数无限数据类型的基数的映射,I_I数据类型的每个值应精确对应一个内部值,并且在可以被

表示的值上不应有优先限制。对于保持近似数据类型的基数的映射,它只需保持6.3.5所提供的近似性

质就足够了。

1在可以被表示的精确、可数无限数据类型上可能会有偶然限制,诸如对特定用户可用的全部存储空间,或者机器

的物理大小。这样的限制不是特定信息处理实体所实现的数据类型上的意向限制,因此被认为不影响支持。

2限制整数值可以被表示在32位之内,或者字符串长度为256个字符的实体,被认为不支持数学的无限整数和字

符串数据类型。这样的实体支持数据类型见(8-2)的可描述子类型。

114.5精确与近似特性支持

为了保持精确性质,LI数据类型值和内部数据类型值之间的映射应是一对一的。

对于保持近似性质的人映射,每个在L1数据类型中是可区分的值,在内部数据类型中也必须是可

区分的。

注:内部数据类型可以比LI数据类型具有较多值,即更精细的近似程度。

对于保持近似性质的出映射,每个在内部数据类型中是可区分的值,在LI数据类型中也必须是可

区分的。

11.4.6数值性质支持

对于数值性质的支持没有需求。对数值性质的支持是一个数据类型值的表示的需求,已超出本标准

的范围。

GB/T18221-2000

附录A

提(示的附录)

字符集标准

下列是定义字符集的国家标准和国际标准的部分列表。由这些标准所定义的字符集适合于由字符

和字符串数据类型中的“全员标识符”来引用。

这些标准以字符全体的观点定义字符集。其中大多数也定义“字符代码”—用于表示一定计算目

的的字符值的整数值。“字符全(员)”是否被解释为由全定义的代码所表示的字符,已超出本标准的

范围。

所有标准均未定义字符集上的理序序列或次序关系。这样的次序关系需要附加标准或应用认同。程

序设计语言所支持的次序关系基于该语言的特定实现所采用的代码值的整数次序。这样的次序与字符

集自身没有语义并且超出本标准的范围。

GB1988-1998信息技术信息交换用七位编码字符集e(qvISO/IEC646:1991)

GB/T2311-2000信息技术字符代码结构与扩充技术i(dtISO/IEC2022:1994)

GB/T3911-1983信息处理用七位编码字符集控制字符的图形表示e(qvISO2047:1975)

GB/T5261-1994信息技术七位和八位编码字符集的控制功能(i(dtISO6429:1988)

GB/T11383-1989信息处理信息交换用八位代码结构和编码规则(i(dtISO4873:1986)

GB13000.1-1993信息技术通用多八位编码字符集U(CS)第一部分:体系结构与基本多文

种平面i(dtISO/IEC10646-1:1993)

GB/T13141-1991书目信息交换用希腊字母编码字符集i(dtISO5428:1984)

GB/T13142-1991书目信息交换用拉丁字母代码字符扩充集i(dtISO5426:1983)

GB/T15273.1-1994信息处理八位单字节编码图形字符集第一部分:拉丁字母一(i(dtISO

8859-1:1987)

GB/T15273.2-1995信息处理八位单字节编码图形字符集第二部分:拉丁字母二i(dtISO

8859-2:1987)

GB/T15273.3-1995信息处理八位单字节编码图形字符集第三部分:拉丁字母三i(dtISO

8859-3:1988)

GB/T15273.4-1995信息处理八位单字节编码图形字符集第四部分:拉丁字母四i(dtISO

8859-4:1988)

GB/T15273.7-1996信息处理八位单字节编码图形字符集第七部分:拉丁/希腊字母(i(dt

ISO8859-7:1987)

GB/T16262-1996信息处理系统开放系统互连抽象语法记法一A(SN.1)规范(i(dtISO

8824:1990)

GB/T16964.1-1997信息技术字型信息交换第1部分:体系结构i(dtISO/IEC9541-1:

1991)

GB/T16964.2-1997信息技术字型信息交换第2部分:交换格式i(dtISO/IEC9541-2:

1991)

GB/T16964.3-1997信息技术字型信息交换第3部分:字形形状表示(i(dtISO/IEC9541-

3:1994)

ISO5427:1984书目信息交换用西里尔字母编码字符扩充集

ISO6093:1985信息处理用于信息交换的字符串中数值值的表示为(数值串定义字符集和语

法)

GB/T18221一2000

ISO6438:1983文献书目信息交换用非洲字母编码字符集

ISO6630:1986文献文献控制字符

ISO6861:1996信息与文献书目信息交换用西里尔文稿中历史斯拉夫语和欧洲非斯拉夫语的

西里尔字母编码字符集

ISO6862:1996信息与文献书目信息交换用数学编码字符集

ISO/IEC6937:1994信息技术文本通信用编码图形字符集拉丁字母

ISO/IEC8859-5:1988信息处理八位单字节编码图形字符集第五部分:拉丁/西里尔字母

ISO/IEC8859-6:1987信息处理八位单字节编码图形字符集第六部分:拉丁/阿拉伯字母

ISO/IEC8859-8:1988信息处理八位单字节编码图形字符集第八部分:拉丁/希伯来字母

ISO/IEC8859-9:1989信息处理八位单字节编码图形字符集第九部分:拉丁字母五

ISO/IEC8859-10:1992信息处理八位单字节编码图形字符集第十部分:拉丁字母六

ISO/IEC8957:1996信息与文献书目信息交换用希伯来字母编码字符集

ISO9036:1987信息处理信息交换用阿拉伯7位编码字符集

ISO/IEC9541-4'’信息技术字型信息交换第四部分:特定应用的需求

ISO10585:1996信息与文献书目信息交换用亚美尼亚字母编码字符集

ISO10586:1996信息与文献书目信息交换用乔治亚字母编码字符集

ISO10754:1995信息与文献书目信息交换用非斯拉夫语的西里尔字母编码字符扩充集

ISO/IEC10367:1991信息技术用于八位码的标准编码图形字符

ISO/IEC10538:1991信息技术文本通信用控制功能

下列是用于字符集登记的国家标准和国际标准。依据这些标准的条款而登记的字符集适合于字符

和字符串数据类型中的“全员标识符”引用。

GB/T12054-1989数据处理转义序列的登记规程n(eqISO2375:1985)

ISO/IEC7350:1991信息技术ISO10367图形字符的登记

ISO/IEC10036:1993信息技术字型信息交换与字型相关的标识符的登记规程

附录B

提(示的附录)

推荐的注解安排

注解见(7-4)是一个附属到尹到茁男孝、或成分数据类型、或过程值()上的描述性信息单元,用于

描述特定语境中变量、与数据类型值相关的运算、成分或过程等某些表示方面的特性。本标准并不规定

任何&穿的语法和语义。当然,岔榨安排的通用惯例可以使用户容易确定左津和语境用于什么对象。本

附录包括7.4所需求的语法中左一庸安排的指南和之笋一穿应用范围内的对应区别。

使用推荐的安排惯例,可在涉及注解的某种程度上提高LI数据类型使用和实现的兼容性。使用其

他标准和实现所采用的附加或替代惯例是与本标准一致的。

B1类型属性

类型属性是附属到一个劳-!,w痊,特别是一种葬一型"的霓碧茹男孝的之竺津,它描述在特定语

境中,该数据类型规定的值和变量的特性,或者对这些变量的运算等方面的特性。类型属性与其他一起,

可包括:

-—实现或应用中特定语境中的数据类型的值空间上的限制或参数描述的标识;

1)待出版。

GB/T18221-2000

—数据类型值空间的规格说明或限制;

—可在数据类型值上执行的运算的规格说明或限制;

—用于特定的交换或外部介质的数据类型值转换的过程或参数的标识。

类型属性应紧跟在要被应用到的数据类型的尹型澎男孝之后。特别地,用于聚集类型的元素类型

的ly*应出现在括号之内,而用于聚集类型白VW应出现在括号之外。

BZ成分属性

成分属性是附属到一个产}t成ff的成分的左津,它描述在特定语境中,对特定产生的数据类型

成分中值即(与成分数据类型值上一般限制不同的值)的运算或表示等方面的特性。成分属性与其他一

起,可包括:

—B1中所给出的任何属性概念,但仅限于成分;

—聚集结构中的成分的对齐,表示或排序;

—成分上访问的限制。

成分属性应位于要被应用的成分的男型运澎男夸的紧前面。也就是说,在ze霓中,它们应在斌男

f之前,在凿岸熟/i中,它们应在寄涉更tff之前,在同类的更黛劳型中,它们应在元亲尹之前。

B3过程属性

过程属性是一种附属到iff,声男的It津,它描述在特定语境中,对命名过程的调用或使用等方面

的特性。过程属性与其他一起,可包括:

—过程实例位置的规格说明;

—过程接口的规格说明。

过程属性应在关键字'p‘rocedure"之前,或者在整个#ffxo-iv之后。此外,过程属性应能通过其正

文与类型属性或成分属性区分。

B4参数属性

参数属性是附属到一个逻鳌声男或逻筹j的左.押,它描述在特定语境中,对特定过程或过程类

型中参数传递的值(与参夔尹i/的数据类型上的一般限制不同)的运算或表示等方面的特性。参数属性

与其他一起,可包括:

--一B1中所给出的任何属性概念,但仅限于此参数中数据类型的使用;

—传递参数的手段的规格说明。

参数属性之后应紧随想要描述的理(理劳型

定制服务

    推荐标准