首页 > 试题

punchout

更新时间:2022-12-08 12:29:34 阅读: 评论:0

益阳市高中2018统考-BOD5


2022年12月8日发(作者:不由自主的意思)

Quantum培训手册

M介绍

M主要功能

M运行过程

1.2.1.编译Quantum程序

1.2.2.装入C编码

1.2.3.读入数据

1.2.4.产生表格

M处理数据步骤

M安装

2.1.运行QUANTUM最低要求

M目录结构

M安装步骤

3.数据

3.1.基本元素

3.1.1.数据常量

3.1.2.数字

3.1.3.变量和数组

M数据格式

3.3.数据结构

4.轴(AXES)

4.1.轴定义

4.1.1.特殊条件

语句

4.2.1.处理’don’tknows’类型答案

语句中的条件

语句中其他项

5.表格

语句

语句

5.3.组合表格

5.3.1.水平或垂直组合

5.3.2.增加表格

5.3.3.一个表格的数据除以另一个表格的数据

5.4.一页打印多个表格

6.数据检查

6.1.对HOLECOUNTS进行加权

7.表格格式

M制表区的层次

7.2.定义运行控制条件

7.3.在A,SECTBEG,FLT和TAB语句中的选项

7.3.1.输出选项:

7.3.2.数据选项

7.4.表格标题

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.1.全局过滤语句

10.3.2.命名过滤语句

10.3.3.过滤语句嵌套

11.处理数字

语句

11.1.1.检测是否等于算术值

11.1.2.检测在算术值范围

11.1.3.组合两种检测

11.1.4.统计缺失值

语句

语句

11.4.比较BIT语句和FLD语句

11.5.频数分布(FREQUENCYDISTRIBUTIONS)

12.统计功能

12.1.产生合计数

12.2.其他统计语句

13.生成和调用文件

13.1.生成和调用语句

13.2.生成和调用不同的语句

13.2.1.列符号参数

13.2.2.编码符号参数

13.2.3.给符号参数设置全局值

m介绍

m主要功能

Quantum主要用来从市场研究的一组问卷表中获取有价值的信息。它是一种很完善又很灵活

的计算机语言,语法结构和英语相似。

Quantum的主要功能有:

Ø检查和确认数据

Ø编辑和校正数据

Ø生成不同类型的数据打印和报告文件

Ø生成新的数据文件

Ø对数据可重新编码和生成新的变量

Ø产生表格

Ø执行统计计算

m运行过程

Quantum从磁盘读入数据,这些数据可以从CATI、CAPI、WEB获得或者就是人工输入的,用

Quantum语言写脚本定义好要完成的任务,最后运行脚本处理数据得到输出结果。

Quantum运行程序一般按以下几步:

1.编译Quantum程序,检查语法并转为C编码(Compilation)。

2.把C编码转为C程序(DatapassProgram)。

3.用第2步产生的程序读入并处理数据,改正了错误数据或从数据文件中增加新数据

后,可以直接从这一步开始往下处理。

4.对数据进行加权(可选项)。

5.累计每一单元的数据。

6.处理数据(可选项)。

7.输出表格。

Quantum运行命令格式是:

Quantum[options][programfile][datafile][tablesfile]

可以不带options值运行所有过程,必须有programfile和datafile,如果没有给出tables

file,则所有表格输出到tab_中。

Quantumprogramfiledatafile[tablesfile]

Options的值主要有:

-c编译Quantum程序,转为C编码。

-l把C编码转为C程序

-r读入数据进行处理

-o产生表格

1.2.1.编译Quantum程序

在所有Quantum运行中第一步都是检查程序语法错误并转为C编码,我们称这为编辑

(compilation),单独运行这一步命令格式为:

quantum–c[programfile]

产生主要输出文件有:

out1列出检查内容,如果有错,Quantum在这个文件中标记出来。

colmap列出所有列和编码。.

1.2.2.装入C编码

编译成功后,Quantum把产生的C编码转为程序,如果没有问题就读入数据,我们称这为

(datapassprogram),DOS下单独运行这一步命令格式为:

quantum–ldatafile

产生许多中间文件,运行最后被删掉。

DOS下产生主要输出文件有:

qtm_ex_.exedatapass程序。

1.2.3.读入数据

通常情况下,Datapassprogram自动读入并处理数据,但如果修改了数据或增加新的数据

到数据文件中,可以用下面命令重新运行datapass而不用再编译和装入C编码。

quantum–rdatafile

产生文件有:

datafile

datafile

hct_Holecountoutput

lst_Frequencydistribution(list)output

out2Listingofrecordsfailingwriteandrequirestatements

dswrittenoutbyrequire

sum_Sortedsummaryofdatapasrrors

1.2.4.产生表格

如果修改了表格的版面而没改变表格单元中的数据(如改变小数点位置,用特殊字符代替0

值),则只须运行第一步编辑(compilation)和输出表格这一步:

quantum–o[program_file]

产生文件有:

out3累积输出概要

tab_表格

m处理数据步骤

Quantum程序分为两个部分:编辑区(editction)和制表区(tabulationction),编辑

区检查和校正数据,产生新的数据文件和变量等;制表区做表和进行统计计算。

m安装

2.1.运行Quantum最低要求

运行Quantum最低需求是:

lPC机上的Intel处理器类型:

–anyPentiumProcessor

–i486(80486family)

–i386(80386family)

l操作系统:

–MicrosoftWindows95orMicrosoftWindows98.

–MicrosoftWindows3.1orWindows3.11forWorkgroups(s

guide).

–MicrosoftWindowsNT4.0(forIntel-badsystems).

–MicrosoftWindows2000(forIntel-badsystems).

–MicrosoftMS-DOS3.3orlater(2.78orlaterandatleast4MB

ofavailableXMSmemoryconfigured).

l硬盘至少6MB可用空间。

l内存最小8MB。

l标准PC并行打印机接口(在使用之前,一个dongle必须接到并行口,起加密作用,未

授权的用户不能使用。

l安装适合的dongle驱动程序。

l单独安装C编译器。

m目录结构

qtime/binSpssMR公用程序

qtime/qt/qttest测试安装的一个例子

qtime/qt/v5.7/binQuantum所带的程序

qtime/qt/v5.7/doc当前版本的信息

qtime/qt/v5.7/includeQuantum运行时读取的文件

qtime/qt/v5.7/lib运行时库文件

m安装步骤

3.数据

3.1.基本元素

在Quantum中有三种基本的元素,它们分别存贮在三种变量中:

数据常量(dataconstants)数据变量(datavariables)

整数(integernumbers)整型变量(integervariables)

实数(realnumbers)实型变量(realvariables)

3.1.1.数据常量

单个常量(individualconstants)

l一列中的一个或多个编码,用’codes’表示。编码范围是1234567890-&和空值

(blank)。

例如:

Red1Yellow2Blue3Green4Black5

White6

如问题是“你最喜欢的颜色”,最喜欢颜色是”Blue”,则对应列是编码’3’。

l多选题(multicodes)在一列中对应有多个编码,如’236’。Quantum不关心多编码的输

入顺序.如是连续的编码,则可以在第一和最后一个编码间用’/’表示。

’1/3’代表’123’

’&/4’表示’&–01234’

‘4/&’表示‘4567890-&’

数据常量串(stringsofdataconstants)

一个列区间包含的编码串,用$codes$表示。这里每一列只含一个编码。如$123$。

在表示问卷序列号或问题答案要用多于1位的编码表示时用数据常量串。

3.1.2.数字

Quantum一般打印10个数字,超出10个输出为*号。如”12345678.12”输出1位小数显

示为”12345678.1”,输出2位小数则显示为*号,但可以用scale=来调整。

l整数(integernumbers)

Quantum能处理整数范围为-1,073,741,824到+1,073,741,823,能处理6位有效数,超出

6位四舍五入。

数字型问题需要用数字来回答,如“你家里有几个小孩?”

l实数(realnumbers)

包括有小数点的数字,在小数点两边至少有1位数字,也是处理6位有效数,超出6位四舍

五入。一般有单精度,如需要双精度用a语句中dp选项来定义。

3.1.3.变量和数组

数据变量(datavariables)

²在C数组(carray))中的单个数据变量,用cnumber表示

²在C数组区间中的数据变量,用c(start_pos,end_pos)表示

²定义数据变量,用datavar_namesizes表示

²在C数组中最大有1000个数据单元,每个单元称C变量(c-variables);每次处理完一个

记录时,清空数据单元读下一记录;每一单元对应一列(column)。

整型变量(integervariables)

²定义整型变量,用intvar_namesizes表示,调用用name[cell_number]。

²整型变量在运行开始赋为0,在读入不同记录时不会被清空。

²Quantum提供一个有200个整型变量的整型数组(tarray),数组中每一位可含一个整型

值。

²数据变量和整型变量的区别是:如6000要占用4列用4个数据变量来表示,而用整型变

量则只要一个来表示。

实型变量(realvariables)

²定义实型变量,用realvar_namesizes表示,调用用name[cell_number]。

²实型变量在运行开始赋为0.0,在读入不同记录时也不会被清空。

²Quantum提供一个有100个实型变量的实型数组(xarray),数组中每一位可含一个实型

值。

²非零实变量值在运行结束时不自动输出,可用report语句输出。

²在C数据中读实数,用cx(start_pos,end_pos)表示。

m数据格式

Quantum有三种类型的记录:

ordinaryrecord

multicardrecord

multicardrecordwithtrailercards

Ordinaryrecord

ØQuantum数据自动从数据文件中读到Carray中,一次一条记录。

ØOrdinaryrecord的数据是一串编码或数字,最大有32767个字符。

Ø对于ordinary类型记录,从Carray的单元1开始向前存放。

Multicardrecord

ØMulticardrecord:当数据从punchcard中得来,且每一个记录不止80列,这些数

据就会放在不同卡片上,Quantum给每一条记录安排一个序列号(rialnumber),每一张

卡有一个卡类型号(cardtype),根据记录序列号和卡类型号Quantum就可以决定哪些数据

属于哪一个被访问者。

ØQuantum每个记录最多有327张卡。这里处理的卡每张卡最多100列。

Ø对于multicard类型记录,一般card1放在c101-c200,card2放在c201-c300,如

此类推。

如果是80列的卡,card1读入到c101-c180,card2读入到c201-c280等,

c181-c200,c281-c300等为空,这个Carray假设为10行,每行100列。则第2张卡的第

30列用c230来表示,而c867表示第8张卡的第67列。

Multicardrecordwithtrailercards

ØMulticardrecordwithtrailercards:有些记录含有重复的数据,我们把重复的

数据的每一组放到一张独立的卡中,Quantum给这些含有相同问题的卡安排了一个卡数目

(cardnumber),这些卡被称为:trailercard。

Ø如在一个购物调查中,针对被访问者光临的每个商店,都是一列相同的问题。那么对

每个商店设一张独立的卡。假设被访者到过5个商店,我们把被访者基本信息放在card1

中(cardtype为1),商店的信息放在card2中(cardtype为2),那么这条记录包含5张

卡类型为2的卡,一共含6张卡。Card1的层次(level)高,card2的层次低。

3.3.数据结构

所有处理multicardrecord的程序必须包含一个struct结构语句,除非记录类型是

trailercards且在读入和制表时用到层(level)的功能,在这种情况下可以选择用struct

语句或用level文件,如果没有struct语句也没level文件,则当作ordinaryrecord对

待。

定义数据结构的语句格式是:

Struct;options

Options有多种:

记录类型(recordtype)

Struct;read=n

n=0ordinary记录,数据从c1开始往上放在carray中。缺省值。

n=2muiticard记录,每张卡记录读到卡类型对应的行中,如card1在c(101,200),card

2在c(201,300)中,如此类推。

n=3忽略卡类型,一次读入multicard记录

记录长度(recordlength)

Struct;reclen=n

定义长度大于100列的记录长度,也就是能读入到carray中的最大字符数。通常缺省为

reclen=100.

如果是multicardrecord输出,c101到c(100+reclen),c201到c(200+reclen)等记

录输出。

例如:

struct;read=2;reclen=60

假设有2张卡,则输出c101-c160和c201-c260.

序列号(rialnumber)

Struct;r=c(m,n)

每一记录的序列号在carray中的位置。

例如:

对于ordinaryrecord,序列号在列1到5:

struct;read=0;r=c(1,5)

对于multicardrecord,序列号在列1到5:

struct;read=2;r=c(1,5)

注意这里multicardrecord中序列号用的是实际的列号而不是带卡类型的列值来表示。

卡类型(cardtypelocation)

Struct;crd=cn或crd=c(m,n)

只对multicard有用,定义卡类型。卡类型是1位数用cn表示,多于1位数用c(m,n)表示。

这里m,n都是实际的列值而不是卡类型加列值。

例如:

struct;read=2;r=c(1,4);crd=c5

是multicard类型记录,每张卡序列号在column1到column4,卡类型号在column5.

必须存在的卡类型(requirdcardtypes)

Struct;req=card_numbers

有时候有些卡是可选的,有些卡是必须存在的。req=定义在记录中必须有的卡类型,只对

multicard有用,可用逗号分开独立列出,也可用start:end或start/end列出。

例如:

struct;req=1,2

定义在每个记录中必须有卡1和卡2,其他卡是可选的。

重复出现的卡类型(repeatcardtypes)

Struct;rep=card_numbers

定义哪些卡在记录不止出现一次,只有定义了read=2和crd后rep才有意义

例如:

struct;read=2;r=c(1,4);crd=c5;rep=1,2

最大卡类型数(Highestcardtypenumber)

每个记录超过了9张卡,要在这里定义。

struct;max=n

4.轴(axes)

轴是表格的一部分,可生成表的行(row),表的列(column)等。轴中每一项称为元素

(element)。

轴元素类型有:

1.文本和条件元素:包含文本和条件,即一个被访者包括在该元素中应有特征。

2.文本元素:只产生文本,不包括其他。

3.算术元素:元素包括算术值。

4.统计元素:合计、小计及一些统计功能如均值和标准差。

4.1.轴定义

定义轴的格式是:

name[;option]

options有很多选项,下面列出几个常用的:

c=logical_expression

²定义轴中元素要满足的条件

²条件定义被访者的特征,只有满足条件的记录才能在这个元素中。

²Logical_expression是一个逻辑表达式,结果为真时,该单元合计数加1,否则不变。

²如c=c234’12’c234列中至少含编码’12’中任何一个元素为真

c=c234n’12’c234列中不含编码’12’中任何元素为真

c=c234=’12’c234列中只含编码’12’为真

c=c234u’12’c234列中不等于编码’12’时为真

c=numb(c163,c171,c175).eq.1列163,171,175编码合计数为1时为真

inc=arith_expression

²表中这个轴单元值合计时根据上面数学表达式的值而不是加1。

nz

²所有单元值都是0时该元素在打印报表时被忽略。

4.1.1.特殊条件

用来处理Don’tknow和Noanswers之类编码的记录的条件

C=-统计从最后基本元素后没有出现满足轴条件的被访问者。

c=-n统计最后n个元素中没有出现满足轴条件的被访问者。

产生’net’元素,用来处理多选题和开放题的条件

c=+从最后基本元素后出现在任何元素中的被访者合计

c=+n统计最后n个元素中出现的被访问者。

语句

可以定义相同一列(column)中带编码的多个元素,可以代替一组n01语句。

语句格式为:

colnumber;[ba;]elm_txt1[=’code1’][;elm_txt2[=’code2’]…]

number列编码

ba产生ba元素

elm_txtn定义每一元素的文本

coden为编码

²如在col语句中只包含元素文本,未含编码,则假定这些答案是单选题且按1234567890-&

和空(blank)顺序为元素自动编码。

²可以对其中一个或几个元素指定编码,未指定编码的第一个元素编码为’1’;中间有元

素指定编码的,后面未指定编码的跟着前面自动编码的元素编码。

²col语句12个编码后编码为空(blank)。

²编码可以用联合列出,相当一个’or’条件。如red/green=’12’

²因为‘;’是每一元素分割符,如果‘;’是文本一部分,则要把‘’符号放在‘;’

之前。

²用’+’可以把一个col语句分为多行,要在‘;’后分开语句。

4.2.1.处理’don’tknows’类型答案

产生一个元素统计包括在ba中但不包括在其他元素中的被调查者。等于n01语句中c=-

条件。

语句格式为:

colnumber;…;element_txt=rej

语句中的条件

用=统计一列(column)中只包含对应元素中编码而没有其他编码的被调查者的数目。是精

确的等于(exactlyequalto)

col=number;…

例:

lchild1

col=114;ba;under5;aged5-10;aged11-15;aged16-18

相当于写c=c114’1’,under5元素统计只有5岁以下小孩的家庭。

语句中其他项

在col语句中产生一个ba项。

语句格式为:

colnumber;ba[=text];…

如果后面带text,ba元素文本为text内容,否则为ba标识。

col语句中的子标题

语句格式为:

colnumber;hd=sub_heading_text;…

同axis轴中的n23语句功能一样。

col语句中只含文本的元素

语句格式为:

colnumber;tx=text;…

定义只含文本的行,在列中则被忽略。

5.表格

由轴产生表,表中每一单元值由横轴(行)和纵轴(列)的条件决定。

语句

语句格式为:

tab[axis1][axis2][axis3][axis4]row_axiscolumn_axis[;options]

²每一个都需要一个独立的tab语句。

²可以做多维表,最多可以有6维。多维表是一组表有相同的行和列,但组中的每一个表都

有由另外的轴定义的特征。

例如:基本表tabage***

现在我们需要根据不同的地区不同年龄不同性别统计数。

三维表tabregionage***

设region有5行:

lregion

col125;ba;hd=areaofresidence;north;south;east;west

将产生5个表:

ba:ageby***(包括所有被访问者)

north:ageby***

south:ageby***

east:ageby***

west:ageby***

语句

一列表有相同的轴,用and语句形成的每一个表和每一页的表数目和页数目是不同的。

and[n]axis1[axis2…]

例如:tabax01bk01

tabax01bk02

tabax01bk03

tabax01bk04

可以写成:

tabax01bk01

andbk02bk03bk04

5.3.组合表格

把表格水平或垂直组合,把它们内容加到一起或分开。

Sid把当前表格放到前一个表格右边

Und把当前表格放到前一个表格下面

Add把当前表格内容加到前一个表格中

Div用前面表格的数据除以后面表格的数据

²这些语句不单独使用,他们通常跟在一个tab语句之后。

²用这些语句把表格组合在一起,表格单元数都要一样,如果表格小一些,要填充一些哑单

元去使表格一样。

²and语句也会相同行或列轴的表,它们每一个表都打印在单独一页中,比较数据困难

²sid或und语句使不同表打印在同一页,可以横向组合或纵向排列。

5.3.1.水平或垂直组合

水平组合:

sidrow_axiscolumn_axis[;options]

例如:tabrating***

sidratingregion

²整个表格的宽度不能超过定好的表格宽度。(用pagwid定义)。

²表格必须是两维的。

²所有表格必须含有相同的行数。

²在一个tab语句之后最多可有40个sid语句。

²如果不止一个表含有诸如均值(n12)和标准差(n17),则在用axis轴中n25语句产生统计,

而不是用因子(factor)。如果用因子,组中第一个表定义的因子会覆盖随后的表格。

²如果tab表和sid表都有ba列,则用对应的ba列去产生行百分数。

²如果tab表中有ba列,而sid表中没有,则所有表中的行百分数根据tab表中的ba

列产生。

²如果tab语句中没有ba列,而sid表中有一个,则side表产生行百分数而tab表不

产生。

垂直组合:

undrow_axiscolumn_axis[;options]

例如:tablq1ban1

undlq2ban1

²表格必须是两维的。

²所有表格必须含有相同的行数。

²所有表格的元素个数不能超过500个。

5.3.2.增加表格

语句格式为:

add[row_offt[,col_offt]]axis_names

²axis_names的个数和tab语句中一样。

²相加的结果放在tab表中。

²两个表相加最简单的办法是把两个表对应的行依次相加。

例如:我们调查每一个公司拥有的打印机,第一个表存放不同商标的手动打印机,第2个表

存放不同商标的电子打印机,最后我们要一个表显示拥有每一个商标的打印机数。

tabmanbrdcomsiz;c=c(123,149)u$$

addelecbrdcomsiz;c=c(151,175)u$$

lmanbrd

n10ba

n01brandA;inc=c(123,125)

n01brandB;inc=c(126,128)

lelecbrd

n10ba

n01brandA;inc=c(151,153)

n01brandB;inc=c(154,156)

5.3.2.1.相加表的偏移(offt)

²表在相加之前可向右或向下偏移指定的列数或行数。

²多个表相加表偏移是基于tab表,而不是一些中间的add表

表偏移指定的列数

addnaxis1axis2

表偏移指定的行数

addm,0axis1axis2,,,[axis6]

在同一表中同时设置向下和向右偏移的行数和列数

addm,naxis1axis2,,,[axis6]

5.3.3.一个表格的数据除以另一个表格的数据

语句格式为:

divaxis_names[;options]

²axis_names的个数和tab语句中一样。

²tab语句中定义的表是“分子”,div语句中定义的表是“分母”。

²一个tab语句后只能跟一个div语句,且两个表要有相同的行数和列数,用tab表中单元

除以div表中对应的单元。

例如:tab表中是被访问者购买的总面包数,div表中是购买面包的总人数,它们相除得到

平均每个人购买的面包数。

tabax06loaf;inc=c(132,133);dec=2

divax06loaf

5.4.一页打印多个表格

一页打印多个表格有多种选择,由以下两个语句控制:

hitch=number

number范围为0-4,把当前表第一页跟前面表格打印在同一页。

²hitch=1把当前表第一页跟前面表格打印在同一页,但空间不够当前表第一页就分页

打印。

²hitch=4如果两表有相同列,可以把一个表的行粘贴在另一个表的后面,使它们打印

后看起来象一个表。

squeeze=number

squeeze范围为0-2,只要有空间,在同一页尽可能多打印当前表的页。

²squeeze=1打印又短又肥的表格,在同一页尽可能多的打印。

²squeeze=2控制表头(titles)、脚注(footnotes)、底部文本(bottomtext)的输出

ü忽略第一页底部文本。

ü如果和第二页的脚注相同,忽略第一页脚注。

ü如果和第一页的表头相同,忽略第二页脚注。

ü从第一页的脚注和底部文本间开始打印。

可以在a语句中用a;nopage;notbl选项控制pagenumbers,tablenumbers不输出。可以

用选项a;physpag控制输出物理页数(physicalpagenumbers)而不是逻辑页数(logical

pagenumbers)。

6.数据检查

数据一读入到carray中,就可以检查数据。这里我们介绍用holecount对数据进行检查。

Holecount可以显示每一列总的编码数。用来在写编辑程序前了解数据全面的情况。

²编码的分布---例如,在column56有多少被访问者选择了编码2。

²编码的密度---例如,在一列中有多少被访问者选了一个、两个、三个或多个编码。检查

某列是否应该是多选题

²在整个数据文件中编码的总数

语句格式是:

countc(start_col,end_col)[$text$]

²text是打印在每一页上的题头,可选项。

例如:countc(101,108)$DemonstrationSurvey$

²在holecount标题中,Quantum接受双引号,但C编译器不接受,所以在双引号之前要

用””符号。

²可以对或多或少的列进行统计,只要这些列是连续的。

²对holecount进行过滤,满足特定条件的记录将被合计。

例如:if(c106’1’)countc(101,108)$DemonstrationSurvey_Male$

²对trailercards进行统计

通常,所给类型的trailercards被当作一张卡,一起合计,所以列的计数包括所有的

trailercards的编码。

有时需要在一组trailercards中合计某一张特定卡,如某张trailercard是第5张卡,

存在c79中,则用:

if(c579’1’)countc(501,580)$Harrods$

6.1.对holecounts进行加权

语句格式是:

countc(start_col,end_col)[$text$]c(m_start,m_end)

²c(m_start,m_end)是carray中存放的对每一记录的乘数(权值)。

²在一般holecounts中,每一单元只是对记录进行简单的计数。包含给定列中某个特定编

码的记录被读入,对应单元加1。

²Holecounts也可以不是简单加1,而用c(m_start,m_end)含的值来增加。

²如果权值是实数,则用cx(m_start,m_end)来表示。

²权值可以事先写定也可在编辑过程中计算。

²合计数最后四舍五入。

7.表格格式

m制表区的层次

Quantum制表区是分层次的,在某一层定义的特征将适用于这一层及下面所有层,单行语句

是最低层,从最低层开始逐渐向上增加,在当前层定义的条件和特点被当前层和低层接受。

低层的特点覆盖高层的特点,tab语句定义的特征覆盖a语句定义的,而一些对单行定义的

特点则覆盖tab语句或a语句中定义的特点。

制表区程序主要的内容有:

²运行控制语句:决定运行的总特点,包括对所有表的文本常量,过滤条件,表格头等的定

义。主要是a语句。

²表格控制语句:定义交*作表的轴,这些语句定义每一个表的文本和一般特征。主要是tab

语句。

²轴控制语句:每个轴包含一组语句,用来建立表的行与列的文本及条件。

7.2.定义运行控制条件

在作表区开头第一个语句定义全局缺省的运行条件。

语句格式:

a;opt1[;opt2…]

opt选项将在下一节讨论。

例如:a;dsp;op=12;date;dec=1

dspdouble-spaced缩写,每一行之间有一空行。

op=12每一单元包括绝对数值和列百分数。

date每一页右上角打印日期,格式是ddmmmyy.

dec小数点的位置。

7.3.在a,ctbeg,flt和tab语句中的选项

这些选项分为两类:

输出选项:决定运行中每一个表格式,但与表中每一单元内容无关。改变后无需重读数据就

可重运行。

数据选项:决定每一单元合计数怎样产生,但与表输出格式无关,改变后需要象新的job

一样重新运行。

7.3.1.输出选项:

dec=n小数点的位置,即包含几位小数。

decp=n百分数中小数点的位置,当op=0,2,7,或&时适用。

dsp表中每一行数据间有一空行。

flt=name调用flt语句中定义的过滤条件和表头,这个选项在ctbeg,flt和tab语句中

有用,但在a语句中无效。

flush让百分数和绝对数值向右齐平一行一行地打印。

Hitch把当前表和前一个表打印在同一页,如果当前表有多页,则把第一页和前一个表

打印在同一页。但如果空间不够打印整页表,则换页。

op表的输出类型

&---总数百分数,根据整个表的ba(表的左上角显示)来计算。

0---行百分数

1---绝对数值(缺省)

2---根据当前ba列计算列百分数

6---根据表格中第一个ba列计算列百分数

7---累积百分数

8---指数(indices)

pagwid=n表格每一页宽度,缺省为132个字符,可以加大。

physpag打印物理页数而不是逻辑页数,与squeeze,hitch配合使用。

side=n定义行文本的宽度。

spechar=ab当一单元值为零时,用特定字符去代替。

a---单元值为0

b---单元值四舍五入为0

nzrow一行所有单元均为0时不打印

nzcol一列所有单元均为0时不打印

7.3.2.数据选项

c=logical_expression

记录包括在表中需要满足的条件。

dp在a语句中有用,用双精度计算单元值。缺省是单精度。

Inc=arithmetic_expression

单元值根据数学表达式的值来累计,而不是计数加1。

7.4.表格标题

语句格式是:

ttxtitle_txt[<>][<>]

x定义标题的位置

title_txt打印在表格上的标题内容

<>可选项,可对表数目位置进行调整

<>可选项,可对页数目位置进行调整

ttl在一页中向左对齐。

ttr在一页中向右对齐。

ttc在一页中间打印

ttn缩进10次n个空格

tta奇数页向左对齐,偶数页向右对齐

ttb与tta相反,偶数页向左对齐,奇数页向右对齐

表格标题反映表格的不同层次:

üa语句后的tts定义的是整个运行的标题,打印在每一页的最上面。

üFlt语句后tts定义的是一组表的标题。

üTab语句后tts定义的是特定表的标题。

ü在l语句后轴定义的tts在横轴中打印,在纵轴中则被忽略。

标题打印的顺序可以用a语句、flt语句、tab语句中ttord,ttbeg,ttend来规定,缺省打

印顺序是:

1.a语句后tts

语句中的表数目

3.行l语句(横轴)后的tts

语句后的tts

语句后的tts

=语句后的tts

7.以”BASE”打头的tts

7.4.1.针对T统计表中的标题

ttxtitle_text;tstat

7.4.2.标题下划线

ttxtitle_text;unlnumber

üunl1整行加下划线一直到最后一个非空字符

üunl2和unl1一样,当空字符串除外

üunl3只在非空字符下加下划线

7.4.3.表格脚注

在表格每一页最后一行后打印的标题。

格式是:foot后跟tt语句。

只想在最后一页打印脚注,在表格区程序最后用n03s来代替foot语句。

可以在不同层次定义脚注,a语句、flt语句、tab语句和l语句均可定义,每一层在foot

后可定义30个tt语句。

Quantum假设所有标题打印在页上面,直到读到foot语句,foot语句之后的标题都属于这

个foot的脚注,直到另一个foot语句出现。

直到同层次的另一个脚注被读到,在某一特定层的脚注一直起作用。

关掉脚注,是在foot语句后跟一个空tt语句。

7.4.4.在页底部打印文本

格式是:bot后跟tt语句。

8.产生列标题

定义列标题(breakdown或banner)。

ü完全自动产生,标题用元素文本,列宽度自动计算。

ü半自动产生,标题用元素文本,列宽度用a,ctbeg,flt,tab或l语句中的colwid=来

定义。

ü手动产生,用g语句定义标题文本,p语句定义列宽度。

8.1.自动设置

列标题最大宽度

head_width=pagwid–(side+%_sign+pcpos_value)

pagwid页宽度,缺省为132

side行文本宽度,缺省为24

%_sign每一行最后一列打印%符号的位置

ü列宽度自动计算,列标题用行文本。用列标题最大宽度除以列数得出每一列宽度。

ü最大列宽度为16,最小为8。大于16设置为16,小于8也设置为8。

ü所有标题自动产生,轴标题(l语句中的hd=)列在所有标题中央,包括ba列。

ü轴的子标题(用n23语句,或col与val语句中hd=定义的标题)列在对应列中央。

ü每一列标题(从n01/col/val语句中产生)在列宽度范围向右对齐,如果太长分行,从空格

/连字符/反斜线处分开。

lregion;hd=AreaofResidence

col15;Ba;hd=London;InnerLondon;OuterLondon;

+hd=SouthernEngland;Cornwall/Devon;Kent/Surrey/Sus***;...

AreaofResidence

LondonSouthernEngland

Kent/

InnerOuterCornwall/Surrey/

BaLondonLondonDevonSus***

用hdlev=产生嵌套标题。

例如:

lban01

n23VisitorstotheMuum;hdlev=1

n10Ba

n23Sex;hdlev=2

col110;Male;Female

n23Age;hdlev=2

col111;11-20=’12’;21-34=’34’;35-44=’56’;55+=’78’

n23Visited;hdlev=2

n23MuumBefore;hdlev=2

col116;Yes;No

输出样式为:

VisitorstotheMuum

Visited

SexAgeMuumBefore

BaMaleFemale11-2021-3435-4455+YesNo

8.2.手动设置

l标题文本

定义格式为:

gcol1_text[col2_text...]

一个轴可以包括最多20个成组的g语句以形成列标题。

gMaritalStatus

gBaSingleMarriedDivorcedWidowed

g------------------------------------------

l列打印位置

定义格式为:

px[x....]

lax04

col109;Ba;Single;Married;Divorced;Widowed

gMaritalStatus

gBaSingleMarriedDivorcedWidowed

px|x|x|x|x

产生标题格式为:

MaritalStatus

BaSingleMarriedDivorcedWidowed

Ba200|44|122|33|1

Male44|6|27|10|1

Female156|38|95|23|0

9.复杂元素定义

9.1.计数产生的元素

n01用一些简单或复杂的条件产生基本元素

n15同n01语句相同但元素不打印

n10产生一个基于ba的百分数

n11同n10语句相同但元素不打印

n01语句

格式是:

n01[element_text][;options]

产生列的基本计数元素。

例如:n01Married;c=c109’2’

n15语句

格式是:

n15[text][;options]

n10语句

格式是:

n10[text][;options]

例如:n10ba

表中第一行和列包含合计数,它们是行或列满足条件的被调查者总数。Ba行和ba列交*

点就是表的ba数。

Ba不同于Total,total是表中实际数合计,而ba是指符合表中条件而不是表中实际数

的合计。

n11语句

格式是:

n11[text][;options]

9.2.子标题

n03产生只有文本的元素

n23产生一个子标题

n33继续长元素文本

产生额外文本

n03[element_text][;options]

经常用来产生空行(没有文本)。

例如:

lmstat

n10Ba

n03

n01Single;c=c109’1’

n01Married;c=c109’2’

轴的子标题

n23heading_text[;hdlev=header_level_number][;toptext=col_header][;options]

用hdlev=keyword定义子标题的层数,从1到9,1层最高,高层打印在上面,层数可以不

连续。打印位置都是在对应列的中央。

可用toptext=定义一个打印的标题来代替heading_text。

继续长文本元素语句

n33continuation_text

n33语句用在n01或n10语句之后,主动分行继续输出长文本。

n00

按照设定条件过滤记录。设定的条件适应于后面连续的行,直到另一个n00语句出现。

n00;c=logical_expression

lpref1

col321;Ba;LikedProduct;DislikedProduct;DK/NA=rej

n03

n00;c=c321’1’

col322;hd=ReasonsforLikingProduct;CleansWell;

+LastsaLongTime;SmellsNice;....

n03

n00;c=c321’2’

col325;hd=ReasonsforDislikingProduct;InconvenienttoU;

+TooExpensive;....

n09

手动分页

可以用语句控制新表在轴上开始的点。

n09[continuation_text][;hug=num_elms][;options]

continuation_text打印在下一页左上角位置。

Hug=num_elms当前页剩几个元素时开始新的一页。

当有squeeze和hitch关键字时,Quantum忽略n09而按照squeeze,hitch打印表格。

10.表格管理

10.1.表数目

格式是:

tbx[number][;nand]

x决定表数目在一行中的位置。

l左面

r右面

c中间

a奇数页打印在左边,偶数页打印在右边

b偶数页打印在左边,奇数页打印在右边

nand强迫and语句产生的表要和父tab语句的表树木一样。

number是随后tab语句产生的表数目。

如果表数目是连续的,只需不带参数的tb语句。

如果表数目是不连续的,tab语句之前要用带合适数字的tb语句,强制表数目为一特定数。

And语句产生的表都有一个独立的表数目,如果带nand,则可强迫and语句产生的的表和父

tab语句的表数目一样。

Notbl不打印表数目。

用notbl关闭自动表数目,在tt语句后定义表数目,且带《tab》符号指定表数目打印位置。

例:tabage***

ttlTable《tab》:AgebySex

表一产生,Quantum将用表数目替换《tab》,向左看齐打印标题。

10.2.页数目

pagnumber

下一个表页数目,可设定单独的页数目,通常打印在右上角,除了在a,flt,或tab语句中

用nopage不打印页数目。

Nopage只是不打印页数目,每一个新页还都有依次增加的页数目。

过滤语句

过滤语句在表格层次中的第2层,定义的条件、选项和文本适用于随后所有表,直到另一个

过滤语句覆盖它。

过滤语句有两种形式:全局(flt)和命名(flt=).

10.3.1.全局过滤语句

语句格式是:

flt[;c=logical_expression][;options]

如:

flt;c=c106’2’;nz;decp=2

ü后面所有表只包括106列编码为’2’的记录

ü忽略所有单元均为0的行

ü百分数显示2位小数

表格中不同层之间的c=定义的逻辑表达式是and的关系。其他条件是低层的覆盖高层的。

如:

flt;c=c106’2’

taboccupregion;c=c132’1’

ttlBa:WomeninFullTimeEmployment

在我们表中是一个‘and’条件:

c=c106’2’.and.c132’1’

在全局过滤语句后可有and和tt语句,前者列出轴的更高维数,后者定义所有表头的打印

标题。

flt语句后可跟foot和bot语句,每一个后面的tt语句定义的标题也是全局的,适用于后

面所有表。

fit在一组表有相同的过滤条件时很有用,或者用不同过滤条件多次产生一组表。

可以用一个空的flt语句停止前面的flt语句以及tt,and语句定义的选项。

10.3.2.命名过滤语句

语句格式是:

flt=name[;c=logical_expression][;options]

命名flt过滤语句可以提高效率。

使用命名过滤器就是在每一个tab语句后跟一个flt=name,命名flt语句只在调用tab语句

中有用,而且不覆盖以前的全局flt语句定义的条件,而是一个附加关系。

例如:定义命名过滤条件

flt=male;c=c106’1’;op=120

ttlMales

调用:

tabax01demo;flt=male

10.3.3.过滤语句嵌套

嵌套过滤区开始:

ctbeg[;c=logical_expression][;options]

嵌套过滤区结束:

ctend

有时一组表有相同的标题和过滤条件,但组内有些表需要附加标题和过滤条件,一个有效的

方法是用过滤语句嵌套。过滤嵌套是把表分为组,外面组的过滤条件和标题适用于组内所有

表,里面组的表可以定义自己附加的标题和过滤条件。

在ctend之前可以有10个ctbeg,连续的ctbeg语句而不被ctend插入,说明在

主制表区开始了一个子制表区(tablesubction),当遇到第一个ctend子制表区结束,

然后主制表区遇到另一个ctend才结束。子制表区的所有过滤和选项设置附加在主制表区

的过滤和标题之后。

11.处理数字

语句

val语句定义表元素的条件是变量等于一个算术值或在值的一个范围,是针对数值类型答案

而不是编码类型答案。如家庭人口数或电话号码。

11.1.1.检测是否等于算术值

Val语句格式是

valvariable;[Ba];[hd=Text];=;[tx=Text];n1[Text1];...;nn[Textn]

检查变量是否包含特定值,相等则对应单元值加1。

Variable是data,integer或real类型变量,变量值将与n1到nn的值比较,Text1到Textn

是被打印出来的行文本。

每个n[Text]必须包含一个数字,数字位置则不限定。

例如:

我们假设c(110,111)包含家庭人口数,我们想做一个表显示多少被访问者家中分别有

1,2,3,4,5,6个人。

valc(110,111);ba;hd=Numberinhouhold;=;1Person;2People;

+3People;4People;5People;6People

如果c(110,111)的值等于1,则被访问者包含在第2行(第1行为ba)中,如果等于6,

则包含在’6people’行中。

如果数字不是元素文本的一个有效部分,则可以用以下格式(文本后用=隔开):

valc(132,133);Ba;hd=BrandBoughtMostOften;=;BrandA=77;

+BrandB=79;BrandC=81;Others=rej

c(132,133)包含最常购买商标编码,如果c(132,133)=$77$,最常购买的是BrandA,

c(132,133)=$79$,最常购买的是BrandB。前面元素中都不包括的放在others行中。

如果元素中只包括数字,且数字每次加1,则可以用以下格式:

valc(m,n);Ba;=;start:end

start:end中间不能有空格。用start:end范围内数字做行或列文本。

11.1.2.检测在算术值范围

包含在表元素中的条件是变量值在给定范围内。

下面两种格式要输入最小和最大值,用‘-‘或‘/’分开。如果没给上限,假设是无穷

大。

语句格式是:

valvariable;i;min1–max1[element_txt1];min2–max2[element_txt2]...

i表示最大值包括在给定范围内。

valvariable;r;min1–max1[element_txt1];min2–max2[element_txt2]...

r表示最大值不包括在给定范围内。

例如:

valc(110,111);Ba;hd=SizeofHouhold;I;1-2People;

+3-4People;5-6People;7orMorePeople

如果c(110,111)的值在1-2之间,则被访问者包括在’1-2people’行中。

11.1.3.组合两种检测

在一个val语句中,操作符=,I,R可以联合使用。

lhshld

valc(110,111);Ba;hd=SizeofHouhold;=;1Person;2People;

+I;3-4People;5-6People;7-8People;9orMorePeople

11.1.4.统计缺失值

记录如果缺少数据而不满足val中所有条件,所以val语句中产生一个元素去统计这些缺少

数据的记录。条件是missing_.

lrental

valc(9,10);Ba;i;None=0;1-5;6-10;11-20;21-30;31+;

+=;DK/NA=missing_

语句

表中元素要满足条件是一个域(field)包含一个特定数值编码(numericcode).

语句格式是:

fldcol_specs;[ba[=btext]];[hd=hdtext];[tx=text];element_specs

col_specs定义被读的列,有三种方式输入:

1.一个接一个列出每一列,用,隔开:

如fld(c(12,13),c(14,15),c(16,17))

2.如果是顺序域,可以用每一个域开始列和域的宽度来定义:

fld(c12,c14,c16):2

3.如果不是顺序域,可以写出开始列和每一组域宽度,用/分开每一组:

fldc12,c16/c52,c56:2

将读c(12,13),c(14,15),c(16,17),c(52,53),c(54,55)andc(56,57).

element_specs定义元素的文本和答案对应的编码,只输文本则顺序编码,也可以自己编码。

例如:统计看过每一个电影的人数,

fld(c12,c14,c16):2;Columbus;Aliens3;PrettyWoman;

+GreenCard;Batman2

答案编码不是顺序的或不希望它们顺序列出,则在元素文本后跟=和对应编码,一个元素对

应多个编码,用逗号隔开,如是一个区间,则把开始编码和最后编码用连字符隔开。

fld(c12,c14,c16):2;ScienceFiction/Fantasy=2,5;Historical=1;

++Others=3-4

象NoAnswer或Don’tknow之类没有数字编码,则可以用$&&$来表示:

fld(c12,c14,c16):2;Columbus;Aliens3;PrettyWoman;

+GreenCard;Batman2;Noneofthe=$&&$

语句

bit语句是根据从编辑区产生的整型数组来合计数据。

Field和bit语句一起完成fld功能,bit根据field语句统计的数据来作表。

语句格式是:

bitarray_name;element_text1;element_text2;...

array_name是field语句中产生的整型数组,element_text是元素的文本和编码。

例如:

bitfilms;Columbus;Aliens3;PrettyWoman;GreenCard;Batman2

当films数组元素1大于0时,Columbus统计数加1,而不是加films数组元素,是统计多

少人看这个电影,而不是这个电影被看多少次(一个人可以重复看)。

Bit也可以象fld一样让答案不用顺序排出:

bitfilms;ScienceFiction/Fantasy=2,5;Historical=1;Others=3-4

当数组films单元2和(或)单元5值大于0时,ScienceFiction/Fantasy合计数将加1;

单元1大于0时,Historical合计数加1;单元3和(或)单元4值大于0时,Others合

计数加1。

11.4.比较bit语句和fld语句

当有数值编码,简单统计被访问者人数,用fld比field/bit语句简单和快速。

如要合计单元值,而不是简单加1,则要用inc=选项,但如果是数值编码,则inc=不可

能用,要用field/bit代替fld.

例如:统计每部电影被看的次数

bitfilms;Ba;Columbus;%inc=films1;Aliens3;%inc=films2;

+PrettyWoman;%inc=films3;GreenCard;%inc=films4;

+Batman2;%inc=films5

11.5.频数分布(Frequencydistributions)

频数分布检查域中包含的字符或数字数据。这样可以决定什么样数据可以被分组作表,也可

粗略估计中值。

产生频数分布

产生一个按字母和大小次序排序的频数分布,语句格式是:

listc(start_col,end_col)[$text$]

只按字母排序用listac(m,n)[$text$]

只按大小次序排序用listrc(m,n)[$text$]

listrc(107,108)$Contentsofcols7and8$

listac(t1,t1+4)$FirstSetofCarBrands$

每个频数分布表包括两个部分,第1部分域的值按字母或数字次序排序,第2部分按每个值

出现的次数排序。每个频数表包括绝对值和累积数,及对应的百分比。

最后Quantum打印:

ü不同的数据值

ü每个值出现的次数

ü所有数据的总和(按出现次数累计)

ü所有数据的均值

ü所有数据值的标准差

例如:列出column123到column125的频数分布:

listc(123,125)$PRICEPAID$

12.统计功能

Quantum强大功能之一就是产生不同类型的统计数据,不需了解特定的公式。

12.1.产生合计数

产生一个合计(total)

no4[element_text]

产生一个小计(subtotal)

no5[element_text]

ü所有从n01,n15,col,val,fld,bit语句产生的行或列都可用n04,n05语句来统计。

ü如果n04语句放在表头和ba之间,产生一个表头和ba之间的合计。

ün04语句放在ba与表底之间,产生一个ba与表底之间的合计。

ün04语句放在两个ba之间,产生这之间的合计。

ü如果这其中有一行是小计(n05),n04语句会忽略该行的数据。

ün01,n05均不受n00的影响。

/*BreadbuyershaveC125’1’

/*NumberofloavesboughtisinC(132,133)

tabax04loaf;c=c125’1’

ttlBa:RespondentsWhoBoughtBread

lloaf;inc=c(132,133)

n10Ba;noinc

valc(132,133);hd=NumberofLoavesPurchadLastMonth

+i;1-5;6-10;11-20;21-30;31+

lax04

n10Ba

n23BoughtfromSupermarket

col130;White;Wholemeal

n05Subtotal

n03

n03BoughtfromBaker’s

col130;White;Wholemeal

n05Subtotal

n03

n04TOTAL

12.2.其他统计语句

n07average

n12mean

n13sumoffactors

n17standarddeviation

n19standarderrorofthemean

n20errorvarianceofthemean

n30mediansandpercenties

n31effectiveba

语句格式是:

naa[text];[options]

13.生成和调用文件

在Quantum中常用语句可独立写成一个文件,需要时在主程序相应位置调用。如一组轴或表

控制语句常被单独写成一个文件。这样可提高效率。

可以使用符号参数(symbolicparameters),每一次调用用不同参数值调用。

13.1.生成和调用语句

包含一个数据文件或Quantum语句文件。

语句格式为:

#includefile_name

ü相当于用不同的过滤条件来制作一组表,表用相同的语句生成。

ü需要时在主程序相应位置调用,如在不同目录,要给出完全路径。

ü可以嵌套调用。

例如:要制作不同地区居民的一组表,对每个地区我们要求表格是:

tabbranddemo

ttcBrandBoughtMostOften

tabpreferage

ttcBrandPreferred

tabdemobk01

ttcDemographic

可以用过滤语句flt对不同地区来作表,但需要重复多次如:

flt;c=c121’1’

ttlBa:RespondentsLivinginCentralLondon

tabbranddemo

ttcBrandBoughtMostOften

……

flt;c=c121’2’

ttlBa;RespondentsLivinginOuterLondon

tabbranddemo

ttcBrandBoughtMostOften

……

我们可以把上面相同作表语句生成一个新文件,如命名为tab1.再用include语句来改写这

段程序:

flt;c=c121’1’

ttlBa:RespondentsLivinginCentralLondon

#includetab1

flt;c=c121’2’

ttlBa:RespondentsLivinginOuterLondon

#includetab1

……

13.2.生成和调用不同的语句

有时Quantum程序包含一组相似但不同的语句,Quantum可以把这一组语句作为一个文件,

用符号参数来代表变化的那部分。每次调用时用参数实际值来调用。

符号参数(symbolicparameters)一列问题有相同答案列表时经常使用,它们不同地方只是

列号或答案编码,可以把列号或编码当作符号参数,运行时用不同值去调用。

13.2.1.列符号参数

定义列符号参数:

col(letter)=column_number

使用列符号参数:

cletternumber

列符号参数格式是:

cann

üa是任意大小写字母,除了C,N,T,U,X或其他用户自定义的变量名。

ünn是任意整数。

例如:符号参数是b00,下面语句命名为ifil文件,

n01preferProductA;c=cb00’1’

n01preferProductB;c=cb00’2’

调用时用:

#includeifil;col(b)=256

读入ifil,语句内容替代为:

n01preferProductA;c=c256’1’

n01preferProductB;c=c256’2’

13.2.2.编码符号参数

定义编码符号参数

punch(letter)=’code’

定义编码符号参数

var_name’letter’

编码符号参数是:

cn’a’

ün是整数

üa是单个的大写或小写字母

例如:访问每一次到商店购买火腿的商标,同次购买的信息存在同一列中,但不同商标有不

同的编码,我们用符号参数’p’,下面语句命名为brds:

n10Ba

n01FirstVisit;c=c134’p’

n01SecondVisit;c=c137’p’

n01ThirdVisit;c=c140’p’

n01FourthVisit;c=c143’p’

调用时用:

lbrda

#includebrds;punch(p)=’1’

lbrdb

#includebrds;punch(p)=’2’

13.2.3.给符号参数设置全局值

#def[col(letter1)=number1][;punch(letter2)=’code’][;name=text]

number1是范围在00-99之间的两位有效数字

#def格式为:

#def[col(a)=cc][;punch(b)=’p’][;txt=text]

ücol,punch,txt是根据要定义值的可选项

üa,b是要定义值的参数

ücc是一个列号

üp是一个编码

ütext是一个文本

例如:定义一个列号适用于一组include文件:

#defcol(a)=157

定义一个编码适用于一组include文件:

#defpunch(b)=’2’

本文发布于:2022-12-08 12:29:34,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/66051.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:punchout
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图