1、Quantum软件培训手册742020年5月29日文档仅供参考Quantum培训手册1. QUANTUM介绍1.1. QUANTUM主要功能1.2. QUANTUM运行过程1.2.1. 编译Quantum程序1.2.2. 装入C编码1.2.3. 读入数据1.2.4. 产生表格1.3. QUANTUM处理数据步骤2. QUANTUM安装2.1. 运行QUANTUM最低要求2.2. QUANTUM目录结构2.3. QUANTUM安装步骤3. 数据3.1. 基本元素3.1.1. 数据常量3.1.2. 数字3.1.3. 变量和数组3.2. QUANTUM数据格式3.3. 数据结构4. 轴(AXES)4
2、.1. 轴定义4.1.1. 特殊条件4.2. COL语句4.2.1. 处理dont knows类型答案4.2.2. col 语句中的条件4.2.3. col语句中其它项5. 表格5.1. TAB语句5.2. AND语句5.3. 组合表格5.3.1. 水平或垂直组合5.3.2. 增加表格5.3.3. 一个表格的数据除以另一个表格的数据5.4. 一页打印多个表格6. 数据检查6.1. 对HOLECOUNTS进行加权7. 表格格式7.1. QUANTUM制表区的层次7.2. 定义运行控制条件7.3. 在A,SECTBEG,FLT和TAB语句中的选项7.3.1. 输出选项:7.3.2. 数据选项7.4
3、. 表格标题7.4.1. 针对T统计表中的标题7.4.2. 标题下划线7.4.3. 表格脚注7.4.4. 在页底部打印文本8. 产生列标题8.1. 自动设置8.2. 手动设置9. 复杂元素定义9.1. 计数产生的元素9.2. 子标题10. 表格管理10.1. 表数目10.2. 页数目10.3. FLT过滤语句10.3.1. 全局过滤语句10.3.2. 命名过滤语句10.3.3. 过滤语句嵌套11. 处理数字11.1. VAL 语句11.1.1. 检测是否等于算术值11.1.2. 检测在算术值范围11.1.3. 组合两种检测11.1.4. 统计缺失值11.2. FLD语句11.3. BIT语句1
4、1.4. 比较BIT语句和FLD语句11.5. 频数分布(FREQUENCY DISTRIBUTIONS)12. 统计功能12.1. 产生合计数12.2. 其它统计语句13. 生成和调用文件13.1. 生成和调用语句13.2. 生成和调用不同的语句13.2.1. 列符号参数13.2.2. 编码符号参数13.2.3. 给符号参数设置全局值1. Quantum介绍1.1. Quantum主要功能Quantum主要用来从市场研究的一组问卷表中获取有价值的信息。它是一种很完善又很灵活的计算机语言,语法结构和英语相似。 Quantum的主要功能有: 检查和确认数据 编辑和校正数据 生成不同类型的数据打印
5、和报告文件 生成新的数据文件 对数据可重新编码和生成新的变量 产生表格 执行统计计算1.2. Quantum运行过程Quantum从磁盘读入数据,这些数据能够从CATI、CAPI、WEB获得或者就是人工输入的,用Quantum语言写脚本定义好要完成的任务,最后运行脚本处理数据得到输出结果。Quantum运行程序一般按以下几步:1. 编译Quantum程序,检查语法并转为C编码(Compilation)。2. 把C编码转为C程序(Datapass Program)。3. 用第2步产生的程序读入并处理数据,改正了错误数据或从数据文件中增加新数据后,能够直接从这一步开始往下处理。4. 对数据进行加权
6、(可选项)。5. 累计每一单元的数据。6. 处理数据(可选项)。7. 输出表格。 Quantum运行命令格式是:Quantum options program file data file tables file 能够不带options值运行所有过程,必须有program file和data file,如果没有给出tables file , 则所有表格输出到 tab_ 中。Quantumprogram filedata filetables file Options 的值主要有:-c 编译Quantum程序,转为C编码。-l 把C编码转为C程序-r读入数据进行处理-o 产生表格1.2.1. 编
7、译Quantum程序在所有Quantum运行中第一步都是检查程序语法错误并转为C 编码,我们称这为编辑(compilation),单独运行这一步命令格式为:quantum c program file产生主要输出文件有:out1列出检查内容,如果有错,Quantum在这个文件中标记出来。colmap列出所有列和编码。.1.2.2. 装入C编码编译成功后,Quantum把产生的C 编码转为程序,如果没有问题就读入数据,我们称这为(datapass program),DOS下单独运行这一步命令格式为:quantum l data file产生许多中间文件,运行最后被删掉。DOS下产生主要输出文件有
8、:qtm_ex_.exedatapass 程序。 1.2.3. 读入数据一般情况下,Datapass program 自动读入并处理数据,但如果修改了数据或增加新的数据到数据文件中,能够用下面命令重新运行datapass而不用再编译和装入C编码。quantum r data file产生文件有:clean.q Clean data filedirty.q Dirty data filehct_Holecount outputlst_Frequency distribution (list) outputout2Listing of records failing write and requi
9、re statementspunchout.qRecords written out by requiresum_Sorted summary of datapass errors1.2.4. 产生表格如果修改了表格的版面而没改变表格单元中的数据(如改变小数点位置,用特殊字符代替0值),则只须运行第一步编辑(compilation)和输出表格这一步:quantum o program_file产生文件有:out3 累积输出概要tab_ 表格1.3.Quantum处理数据步骤Quantum程序分为两个部分:编辑区(edit section)和制表区(tabulation section),编辑区
10、检查和校正数据,产生新的数据文件和变量等;制表区做表和进行统计计算。2. Quantum安装2.1. 运行Quantum最低要求运行Quantum最低需求是: l PC机上的Intel处理器类型: any Pentium Processor i486 (80486 family) i386 (80386 family) l 操作系统: Microsoft Windows 95 or Microsoft Windows 98. Microsoft Windows 3.1 or Windows 3.11 for Workgroups (referred to as 3.x in this guid
11、e). Microsoft Windows NT 4.0 (for Intel-based systems). Microsoft Windows (for Intel-based systems). Microsoft MS-DOS 3.3 or later (with HIMEM.SYS v2.78 or later and at least 4MB of available XMS memory configured). l 硬盘至少6MB可用空间。 l 内存最小8MB 。 l 标准PC并行打印机接口(在使用之前,一个dongle 必须接到并行口,起加密作用,未授权的用户不能使用。 l
12、安装适合的dongle驱动程序。 l 单独安装C编译器。 2.2. Quantum目录结构 qtime/bin Spss MR公用程序qtime/qt/qttest测试安装的一个例子qtime/qt/v5.7/binQuantum 所带的程序qtime/qt/v5.7/doc当前版本的信息qtime/qt/v5.7/include Quantum 运行时读取的文件qtime/qt/v5.7/lib运行时库文件 2.3. Quantum安装步骤3. 数据3.1. 基本元素在Quantum中有三种基本的元素,它们分别存贮在三种变量中:数据常量(data constants) 数据变量(data v
13、ariables)整数(integer numbers)整型变量(integer variables)实数(real numbers)实型变量(real variables) 3.1.1. 数据常量单个常量(individual constants)l 一列中的一个或多个编码,用codes表示。编码范围是-& 和 空值(blank)。例如:Red 1 Yellow 2 Blue 3 Green4 Black5 White6如问题是”你最喜欢的颜色”,最喜欢颜色是”Blue”,则对应列是编码3。l 多选题(multicodes)在一列中对应有多个编码,如236。Quantum不关心多编码的输入顺
14、序.如是连续的编码,则能够在第一和最后一个编码间用/表示。1/3 代表123&/4 表示&012344/& 表示4567890-& 数据常量串(strings of data constants)一个列区间包含的编码串,用$codes$表示。这里每一列只含一个编码。如$123$。在表示问卷序列号或问题答案要用多于1位的编码表示时用数据常量串。 3.1.2. 数字Quantum一般打印10个数字,超出10个输出为 * 号。如”12345678.12”输出1位小数显示为”12345678.1”,输出2位小数则显示为 * 号,但能够用 scale= 来调整。l 整数(integer numbers)
15、Quantum能处理整数范围为-1,073,741,824 到 +1,073,741,823,能处理6位有效数,超出6位四舍五入。数字型问题需要用数字来回答,如”你家里有几个小孩?” l 实数(real numbers)包括有小数点的数字,在小数点两边至少有1位数字,也是处理6位有效数,超出6位四舍五入。一般有单精度,如需要双精度用a语句中dp选项来定义。 3.1.3. 变量和数组数据变量(data variables) 在C数组(c array)中的单个数据变量,用 cnumber 表示 在C数组区间中的数据变量,用 c(start_pos,end_pos) 表示 定义数据变量,用 data
16、 var_name sizes 表示 在C数组中最大有1000个数据单元,每个单元称C变量(c-variables);每次处理完一个记录时,清空数据单元读下一记录;每一单元对应一列(column)。 整型变量(integer variables) 定义整型变量,用int var_name sizes表示,调用用namecell_number。 整型变量在运行开始赋为0,在读入不同记录时不会被清空。 Quantum提供一个有200个整型变量的整型数组(t array), 数组中每一位可含一个整型值。 数据变量和整型变量的区别是:如6000要占用4列用4个数据变量来表示,而用整型变量则只要一个来表
17、示。 实型变量(real variables) 定义实型变量,用real var_name sizes表示,调用用namecell_number。 实型变量在运行开始赋为0.0,在读入不同记录时也不会被清空。 Quantum提供一个有100个实型变量的实型数组(x array), 数组中每一位可含一个实型值。 非零实变量值在运行结束时不自动输出,可用report语句输出。 在C数据中读实数,用cx(start_pos,end_pos) 表示。 3.2. Quantum数据格式Quantum有三种类型的记录:ordinary recordmulticard recordmulticard rec
18、ord with trailer cards Ordinary record Quantum数据自动从数据文件中读到C array中,一次一条记录。 Ordinary record的数据是一串编码或数字,最大有32767个字符。 对于ordinary 类型记录,从C array的单元1开始向前存放。 Multicard record Multicard record:当数据从punch card中得来,且每一个记录不止80列,这些数据就会放在不同卡片上,Quantum给每一条记录安排一个序列号(serial number),每一张卡有一个卡类型号(card type),根据记录序列号和卡类型号
19、Quantum就能够决定哪些数据属于哪一个被访问者。 Quantum每个记录最多有327张卡。这里处理的卡每张卡最多100列。 对于multicard类型记录,一般card 1放在c101-c200,card 2放在c201-c300,如此类推。 如果是80列的卡,card 1读入到c101-c180, card 2读入到c201-c280等,c181-c200,c281-c300等为空,这个C array 假设为10行,每行100列。则第2张卡的第30列用c230来表示,而c867表示第8张卡的第67列。 Multicard record with trailer cards Multica
20、rd record with trailer cards :有些记录含有重复的数据,我们把重复的数据的每一组放到一张独立的卡中,Quantum给这些含有相同问题的卡安排了一个卡数目(card number),这些卡被称为:trailer card。 如在一个购物调查中,针对被访问者光临的每个商店,都是一列相同的问题。那么对每个商店设一张独立的卡。假设被访者到过5个商店,我们把被访者基本信息放在card 1中(card type为1),商店的信息放在card 2中(card type为2),那么这条记录包含5张卡类型为2的卡,一共含6张卡。Card 1的层次(level)高,card 2的层次低
21、。 3.3. 数据结构所有处理multicard record 的程序必须包含一个struct结构语句,除非记录类型是trailer cards且在读入和制表时用到层(level)的功能,在这种情况下能够选择用struct语句或用level文件,如果没有struct语句也没level文件,则当作ordinary record 对待。 定义数据结构的语句格式是:Struct;options Options有多种:记录类型(record type)Struct;read=nn =0 ordinary 记录,数据从c1开始往上放在c array中。缺省值。n =2 muiticard记录,每张卡记录
22、读到卡类型对应的行中,如card 1 在c(101,200), card 2在 c(201,300)中,如此类推。n =3 忽略卡类型,一次读入multicard记录 记录长度(record length)Struct;reclen=n定义长度大于100列的记录长度,也就是能读入到c array中的最大字符数。一般缺省为reclen=100. 如果是multicard record 输出,c101到c(100+reclen),c201到c(200+reclen)等记录输出。例如:struct;read=2;reclen=60假设有2张卡,则输出c101-c160和c201-c260. 序列号(
23、serial number)Struct;ser=c(m,n)每一记录的序列号在c array中的位置。例如:对于ordinary record,序列号在列1到5: struct;read=0;ser=c(1,5)对于multicard record,序列号在列1到5:struct;read=2;ser=c(1,5)注意这里multicard record中序列号用的是实际的列号而不是带卡类型的列值来表示。 卡类型(card type location)Struct;crd=cn 或crd=c(m,n)只对multicard 有用,定义卡类型。卡类型是1位数用cn表示,多于1位数用c(m,n)
24、表示。这里m,n都是实际的列值而不是卡类型加列值。例如:struct;read=2;ser=c(1,4);crd=c5是multicard 类型记录,每张卡序列号在column1到column4,卡类型号在column5. 必须存在的卡类型(requird card types)Struct;req=card_numbers有时候有些卡是可选的,有些卡是必须存在的。req= 定义在记录中必须有的卡类型,只对multicard 有用,可用逗号分开独立列出,也可用start:end或start/end列出。例如:struct;req=1,2定义在每个记录中必须有卡1和卡2,其它卡是可选的。 重复出
25、现的卡类型(repeat card types)Struct;rep=card_numbers定义哪些卡在记录不止出现一次,只有定义了read=2和crd 后rep才有意义例如:struct;read=2;ser=c(1,4);crd=c5;rep=1,2 最大卡类型数 (Highest card type number)每个记录超过了9张卡,要在这里定义。struct; max=n4. 轴(axes)轴是表格的一部分,可生成表的行(row),表的列(column)等。轴中每一项称为元素(element)。轴元素类型有:1. 文本和条件元素:包含文本和条件,即一个被访者包括在该元素中应有特征。
26、2. 文本元素:只产生文本,不包括其它。3. 算术元素:元素包括算术值。4. 统计元素:合计、小计及一些统计功能如均值和标准差。 4.1. 轴定义定义轴的格式是:name ;option options有很多选项,下面列出几个常见的:c=logical_expression 定义轴中元素要满足的条件 条件定义被访者的特征,只有满足条件的记录才能在这个元素中。 Logical_expression是一个逻辑表示式,结果为真时,该单元合计数加1,否则不变。 如c=c23412c234列中至少含编码12中任何一个元素为真 c=c234n12 c234列中不含编码12中任何元素为真c=c234=12
27、c234列中只含编码12为真 c=c234u12 c234列中不等于编码12时为真 c=numb(c163,c171,c175).eq.1 列163,171,175编码合计数为1时为真 inc=arith_expression 表中这个轴单元值合计时根据上面数学表示式的值而不是加1。 nz 所有单元值都是0时该元素在打印报表时被忽略。 4.1.1. 特殊条件用来处理Dont know 和No answers之类编码的记录的条件C=- 统计从最后基本元素后没有出现满足轴条件的被访问者。c=-n统计最后n个元素中没有出现满足轴条件的被访问者。 产生net元素,用来处理多选题和开放题的条件c=+从最
28、后基本元素后出现在任何元素中的被访者合计c=+n统计最后n个元素中出现的被访问者。4.2. Col语句能够定义相同一列(column)中带编码的多个元素,能够代替一组n01语句。语句格式为:col number;base;elm_txt1=code1;elm_txt2=code2number列编码base产生base元素elm_txt n 定义每一元素的文本coden为编码 如在col语句中只包含元素文本,未含编码,则假定这些答案是单选题且按-&和空(blank)顺序为元素自动编码。 能够对其中一个或几个元素指定编码,未指定编码的第一个元素编码为1;中间有元素指定编码的,后面未指定编码的跟着前
29、面自动编码的元素编码。 col语句12个编码后编码为空(blank)。 编码能够用联合列出,相当一个or条件。如 red/green=12 因为;是每一元素分割符,如果;是文本一部分,则要把 符号放在; 之前。 用+能够把一个col语句分为多行,要在;后分开语句。 4.2.1. 处理dont knows类型答案产生一个元素统计包括在base中但不包括在其它元素中的被调查者。等于n01语句中c=- 条件。语句格式为:col number;element_txt=rej 4.2.2. col语句中的条件用 = 统计一列(column)中只包含对应元素中编码而没有其它编码的被调查者的数目。是精确的等
30、于(exactly equal to)col=number; 例:l child1col=114;base;under 5;aged 5-10;aged11-15;aged16-18相当于写c=c1141 ,under 5元素统计只有5岁以下小孩的家庭。 4.2.3. col语句中其它项在col语句中产生一个base项。语句格式为:col number;base=text;如果后面带text,base元素文本为text内容,否则为base标识。 col语句中的子标题语句格式为:col number;hd=sub_heading_text;同axis轴中的n23语句功能一样。 col语句中只含文
31、本的元素语句格式为:col number;tx= text;定义只含文本的行,在列中则被忽略。 5. 表格由轴产生表,表中每一单元值由横轴(行)和纵轴(列)的条件决定。 5.1. Tab语句语句格式为:tab axis1 axis2 axis3 axis4 row_axis column_axis;options 每一个都需要一个独立的tab语句。 能够做多维表,最多能够有6维。多维表是一组表有相同的行和列,但组中的每一个表都有由另外的轴定义的特征。例如:基本表 tab age * 现在我们需要根据不同的地区不同年龄不同性别统计数。三维表 tab region age * 设region 有5
32、行: l region col 125;base;hd=area of residence;north;south;east;west 将产生5个表: base:age by *(包括所有被访问者) north:age by * south:age by * east:age by * west:age by * 5.2.and语句一列表有相同的轴,用and语句形成的每一个表和每一页的表数目和页数目是不同的。andn axis1 axis2例如: tab ax01 bk01 tab ax01 bk02 tab ax01 bk03 tab ax01 bk04能够写成: tab ax01 bk01
33、 and bk02 bk03 bk04 5.3. 组合表格把表格水平或垂直组合,把它们内容加到一起或分开。 Sid把当前表格放到前一个表格右边Und 把当前表格放到前一个表格下面Add 把当前表格内容加到前一个表格中Div用前面表格的数据除以后面表格的数据 这些语句不单独使用,她们一般跟在一个tab语句之后。 用这些语句把表格组合在一起,表格单元数都要一样,如果表格小一些,要填充一些哑单元去使表格一样。 and语句也会相同行或列轴的表,它们每一个表都打印在单独一页中,比较数据困难 sid或und语句使不同表打印在同一页,能够横向组合或纵向排列。 5.3.1. 水平或垂直组合水平组合:sid r
34、ow_axis column_axis ;options例如: tab rating * sid rating region 整个表格的宽度不能超过定好的表格宽度。(用pagwid定义)。 表格必须是两维的。 所有表格必须含有相同的行数。 在一个tab语句之后最多可有40个sid语句。 如果不止一个表含有诸如均值(n12)和标准差(n17),则在用axis轴中n25语句产生统计,而不是用因子(factor)。如果用因子,组中第一个表定义的因子会覆盖随后的表格。 如果tab表和sid表都有base列,则用对应的base列去产生行百分数。 如果tab表中有base列,而sid表中没有,则所有表中的
35、行百分数根据tab表中的base列产生。 如果tab语句中没有base列,而sid表中有一个,则side 表产生行百分数而tab表不产生。 垂直组合:und row_axis column_axis ;options例如: tab lq1 ban1 und lq2 ban1 表格必须是两维的。 所有表格必须含有相同的行数。 所有表格的元素个数不能超过500个。 5.3.2. 增加表格 语句格式为:add row_offset,col_offsetaxis_names axis_names的个数和tab语句中一样。 相加的结果放在tab表中。 两个表相加最简单的办法是把两个表对应的行依次相加。
36、例如:我们调查每一个公司拥有的打印机,第一个表存放不同商标的手动打印机,第2个表存放不同商标的电子打印机,最后我们要一个表显示拥有每一个商标的打印机数。tab manbrd comsiz;c=c(123,149)u$ $add elecbrd comsiz;c=c(151,175)u$ $l manbrdn10basen01brandA;inc=c(123,125)n01brandB;inc=c(126,128)l elecbrdn10basen01brandA;inc=c(151,153)n01brandB;inc=c(154,156) 5.3.2.1. 相加表的偏移(offset) 表在相
37、加之前可向右或向下偏移指定的列数或行数。 多个表相加表偏移是基于tab表,而不是一些中间的add表表偏移指定的列数addn axis1 axis2表偏移指定的行数addm,0 axis1 axis2,axis6在同一表中同时设置向下和向右偏移的行数和列数addm,n axis1 axis2,axis6 5.3.3. 一个表格的数据除以另一个表格的数据语句格式为:div axis_names ;options axis_names的个数和tab语句中一样。 tab语句中定义的表是”分子”,div语句中定义的表是”分母”。 一个tab语句后只能跟一个div语句,且两个表要有相同的行数和列数,用ta
38、b表中单元除以div表中对应的单元。 例如:tab表中是被访问者购买的总面包数,div表中是购买面包的总人数,它们相除得到平均每个人购买的面包数。tab ax06 loaf;inc=c(132,133);dec=2div ax06 loaf 5.4. 一页打印多个表格一页打印多个表格有多种选择,由以下两个语句控制:hitch=numbernumber范围为0-4,把当前表第一页跟前面表格打印在同一页。 hitch=1把当前表第一页跟前面表格打印在同一页,但空间不够当前表第一页就分页打印。 hitch=4如果两表有相同列,能够把一个表的行粘贴在另一个表的后面,使它们打印后看起来象一个表。sque
39、eze=numbersqueeze范围为0-2,只要有空间,在同一页尽可能多打印当前表的页。 squeeze=1 打印又短又肥的表格,在同一页尽可能多的打印。 squeeze=2控制表头(titles)、脚注(footnotes)、底部文本(bottom text)的输出 忽略第一页底部文本。 如果和第二页的脚注相同,忽略第一页脚注。 如果和第一页的表头相同,忽略第二页脚注。 从第一页的脚注和底部文本间开始打印。 能够在a 语句中用a;nopage;notbl选项控制page numbers,table numbers不输出。能够用选项a;physpag 控制输出物理页数(physical p
40、age numbers) 而不是逻辑页数(logical page numbers)。 6. 数据检查数据一读入到c array中,就能够检查数据。这里我们介绍用holecount对数据进行检查。Holecount 能够显示每一列总的编码数。用来在写编辑程序前了解数据全面的情况。 编码的分布-例如,在column 56有多少被访问者选择了编码2。 编码的密度-例如,在一列中有多少被访问者选了一个、两个、三个或多个编码。检查某列是否应该是多选题 在整个数据文件中编码的总数 语句格式是:count c(start_col,end_col) $text$ text是打印在每一页上的题头,可选项。例如
41、:count c(101,108) $Demonstration Survey$ 在holecount标题中,Quantum接受双引号,但C编译器不接受,因此在双引号之前要用”符号。 能够对或多或少的列进行统计,只要这些列是连续的。 对holecount进行过滤,满足特定条件的记录将被合计。例如:if (c1061) count c(101,108) $Demonstration Survey_Male$ 对trailer cards进行统计一般,所给类型的trailer cards被当作一张卡,一起合计,因此列的计数包括所有的trailer cards的编码。有时需要在一组trailer c
42、ards中合计某一张特定卡,如某张trailer card是第5张卡,存在c79中,则用:if (c5791) count c(501,580) $Harrods$ 6.1. 对holecounts进行加权语句格式是:count c(start_col,end_col) $text$ c(m_start,m_end) c(m_start,m_end)是c array中存放的对每一记录的乘数(权值)。 在一般holecounts中,每一单元只是对记录进行简单的计数。包含给定列中某个特定编码的记录被读入,对应单元加1。 Holecounts也能够不是简单加1,而用c(m_start,m_end)含
43、的值来增加。 如果权值是实数,则用 cx(m_start,m_end) 来表示。 权值能够事先写定也可在编辑过程中计算。 合计数最后四舍五入。7. 表格格式7.1. Quantum制表区的层次Quantum制表区是分层次的,在某一层定义的特征将适用于这一层及下面所有层,单行语句是最低层,从最低层开始逐渐向上增加,在当前层定义的条件和特点被当前层和低层接受。低层的特点覆盖高层的特点,tab语句定义的特征覆盖a语句定义的,而一些对单行定义的特点则覆盖tab语句或a语句中定义的特点。 制表区程序主要的内容有: 运行控制语句:决定运行的总特点,包括对所有表的文本常量,过滤条件,表格头等的定义。主要是a 语句。 表格控制语句:定义交*作表的轴,这些语句定义每一个表的文本和一般特征。主要是tab 语句。 轴控制语句:每个轴包含一组语句,用来建立表的行与列的文本及条件。 7.2. 定义运行控制条件在作表区开头第一个语句定义全局缺省的运行条件。语句格式:a;opt1;opt2opt选项将在下一节讨论。例如:a;dsp;op=12;date;dec=1dspdouble-spaced缩写,每一行之间有一空行。 op=12 每一单元包括绝对数值和列百分数。 date 每一页右上角打印日期,格式是dd mmm yy .dec小数点的位置。