第八章审核和计算
审核是按照具体的平衡关系,对报表中的数据进行审查。这是对数据进行质量控制的一个重要手段。审核公式统一存贮在专业路径下的文件SARP##.APP中。而计算是指对报表中数据进行运算的加工处理。许多分析资料都要用计算来得到。计算公式同样统一存贮在专业路径下的文件SARP##.APP中。##为专业代码。
审核和计算只能在每一个填报单位的报表上进行,单位之间的计算关系(例如上级单位对下级单位的加总、分组)在汇总模块进行。由于报表中的错误可能有两种情况,即原始表填表错误和录入错误,在具体处理时对这两种错误要分别处理,因此,SARP 系统提供了对数据出错处理的不同情况的处理功能。
§8.1审核、计算公式的描述及使用
审核、计算公式,用于用户对统计表的数据进行审查和计算,由于其功能相近,所以我们将审核和计算归在一起来讲解。
以下开始详细介绍审核、计算公式的语法。
§8.1.1计算公式的语法规则
①  OP  A=表名1(/参数)  B=表名2(/参数)  C=表名3(/参数)......J=表名10(/参数)
②  UN CODE1-CODE2
③  UN AUTO
④  Tn:条件表达式
⑤关系式1
关系式N
1、确定打开的表及打开的方式,一共可以打开10张表,打开表描述行的详细解释请参见§4.1打开表描述。
这里需要说明的是,本版本允许单位字典库参与全部的数据处理,如果需要对单位字典库中的内容进行审核或计算,则同样要在选处理表语句中作为普通表打开,与普通数据表一样进行数据运算或修改数据。
如果不作为数据表打开的话,则仍然沿用原来的用法,如:Z[X,X,Z],但只能用于条件语句,不能对数据进行修改或运算。
2、指定处理单位范围从CODE1到CODE2,并且CODE1<=CODE2。如:UN  152101-152131表示指定对单位编码为152101到152131的单位进行计算。
3、指处理方式,UN AUTO 表示以自动方式进行,如是非自动方式不写此项。
4、这里的条件为总的条件,对于每一单位系统首先检查是否满足该条件,如果满足条件,则系统按照下面描述的关系式进行计算,否则,不对该单位进行计算。条件公式的描述方法与IF语句的条件描述方法相同。
5、关系式描述行的详细解释请参见§4.3关系式描述。
SARP系统对于多关系行的描述,引入了循环(DO)及判断(IF)两种语句,下面我们对这两种语句作一下介绍:
一、循环语句(DO语句)分为:
1、dox=abc
语句串
enddo
以a为起始值,b为终止值,c为循环语句的步长。
2、dox=a,b,c,d……
语句串
enddo
当x=a,b,c,d……时执行语句串。
注意: DO 语句只能嵌套两层,而且循环变量只能为 X 或 Y ,另外DO和ENDDO 一定要配对。
例如:关系式:
DOX=131
A[X,1]=A[X,2]+A[X,4]
ENDDO
展开后共有3行:
A[1,1]=A[1,2]+A[1,4]
A[2,1]=A[2,2]+A[2,4]
A[3,1]=A[3,2]+A[3,4]
例:关系式:
DOX=121
DOY=341
A[X,Y]=0
ENDDO
ENDDO
展开后有4行:
A[1,3]=0
A[1,4]=0
A[2,3]=0
A[2,4]=0
对于有“#”号的关系式,使用时也要进行展开。
字符串长度统计例:A[1]=A[2]#A[5]
展开为:A[1]=A[2]+A[3]+A[4]+A[5]
例:关系式:
DOX=131
A[X,1]=A[X,2]#A[X,5]
ENDDO
展开后为:
A[1,1]=A[1,2]+A[1,3]+A[1,4]+A[1,5]
A[2,1]=A[2,2]+A[2,3]+A[2,4]+A[2,5]
A[3,1]=A[3,2]+A[3,3]+A[3,4]+A[3,5]以下几种用循环语句描述的关系式皆为正确。如:
(1)DOX=121
A[X,1]=A[(J01)+X,1]
ENDDO
(2)A[(J01),1]=A[(J02),1]#A[(J08),1]
二、条件判断语句:
if表达式
语句串1
else
语句串2
endif
当条件成立时执行语句串1,否则执行语句串2(语句串2可为空)。
注意:IF语句不能嵌套,条件表达式可由多个部份组成,中间用逻辑算符连接:(1)关系式。如:Z[a,b,c]=“字符串”、Z[a]=d、A[m,n]>d。
(2)逻辑算符&&(并且)及||(或者)。
Z[a,b,c]意义如下:
此用法为使用系统缺省打开的单位字典库中的内容,不需在“OP”语句中打开。另外与以前版本不同的是,如果是字符型的数据段,则公式中的字符串常量要用括号括起来,单位代码为字符型。对于数据型字段不可以取子串。
该使用方法,只用于条件语句,如需进行运算,则将单位字典库作为表在“OP”语句中打开。
a表示第几个分组标志,b表示从第几位开始,c表示取几位。
例:某单位字典库结构如下:
单位编码单位名称标志1  标志2  标志3 ......
15000001  AAAAAAAA  0012  1234  34567
则:
Z[0,1,2]=“15”, Z[3,1,4]=“1234”, Z[2]=“0012” ,
Z[4,2,3]=“456”
条件表达式可以为:
Z[0,1,2]=“15”&&Z[4,2,3]=“456”
含义:单位编码的1~2位等于15并且第4个分组标志的2~4位等于456。
或 Z[0,1,2]=“15”||Z[4,2,3]=“456”
含义:单位编码的1~2位等于15或者第4个分组标志的2~4位等于456。
以前版本不同的是,单位名称为“第一”个分组标志。
注意:不管语句串2是否有,else不能省略。
举一例说明计算公式的基本写法:
OP A=JG17 B=JG19 C=JG34 D=GD06
UN 000000000000-999999999999
UN AUTO
DO Y=1 47 1
D[1,Y]=0
ENDDO
IF A[70]<0||B[43]<0
D[2]=1
ELSE
ENDIF
D[3]=A[1]+B[1]
D[4]=A[2]+B[2]
D[7]=A[6]+B[6]
D[9]=A[16]+B[7]
D[10]=A[17]+B[8]
D[24]=A[30]+A[40]+B[19]+B[24]
IF A[45]>55
D[25]=A[45]+B[28]
D[37]=A[70]+B[43]
ELSE
D[38]=0-A[70]-B[43]
ENDIF
D[39]=D[37]-D[38]
D[40]=A[60]+A[63]+A[68]+A[70]+B[36]+B[39]+B[42]+B[43]
D[46]=C[2]
D[47]=C[12]
D[8]=D[9]-D[13]-D[15]+D[27]+D[28]
三、时间的使用
在审核、计算公式中可以将时间的年和月作为两个常数数据项参与运算,使用方法为,在公式中用“TY”表示年度,4位数据;用“TM”表示月份,1位或2位数据。例如:如果将报表时期设置为2000年9月份,在公式中“TY”和“TM”两项,在运算时将分别用2000和9来代替,参与运算。
四、对于字符串的处理
本版本增加了对于字符串处理的功能,在审核计算公式或条件公式中,可以对于字符串数据段进行赋值,比较等操作。公式中,对于字符串常量,需用引号括起来,并且可以对字符串数据段取子串。

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