计算机审计方法语言编制规范.docx

上传人:b****6 文档编号:7248732 上传时间:2023-05-11 格式:DOCX 页数:27 大小:29.59KB
下载 相关 举报
计算机审计方法语言编制规范.docx_第1页
第1页 / 共27页
计算机审计方法语言编制规范.docx_第2页
第2页 / 共27页
计算机审计方法语言编制规范.docx_第3页
第3页 / 共27页
计算机审计方法语言编制规范.docx_第4页
第4页 / 共27页
计算机审计方法语言编制规范.docx_第5页
第5页 / 共27页
计算机审计方法语言编制规范.docx_第6页
第6页 / 共27页
计算机审计方法语言编制规范.docx_第7页
第7页 / 共27页
计算机审计方法语言编制规范.docx_第8页
第8页 / 共27页
计算机审计方法语言编制规范.docx_第9页
第9页 / 共27页
计算机审计方法语言编制规范.docx_第10页
第10页 / 共27页
计算机审计方法语言编制规范.docx_第11页
第11页 / 共27页
计算机审计方法语言编制规范.docx_第12页
第12页 / 共27页
计算机审计方法语言编制规范.docx_第13页
第13页 / 共27页
计算机审计方法语言编制规范.docx_第14页
第14页 / 共27页
计算机审计方法语言编制规范.docx_第15页
第15页 / 共27页
计算机审计方法语言编制规范.docx_第16页
第16页 / 共27页
计算机审计方法语言编制规范.docx_第17页
第17页 / 共27页
计算机审计方法语言编制规范.docx_第18页
第18页 / 共27页
计算机审计方法语言编制规范.docx_第19页
第19页 / 共27页
计算机审计方法语言编制规范.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机审计方法语言编制规范.docx

《计算机审计方法语言编制规范.docx》由会员分享,可在线阅读,更多相关《计算机审计方法语言编制规范.docx(27页珍藏版)》请在冰点文库上搜索。

计算机审计方法语言编制规范.docx

计算机审计方法语言编制规范

 

计算机审计方法语言编制规范

——计算机审计实务公告第13号

 

中华人民共和国审计署

二OO八年三月

目录

1.前言4

2.引言4

3.审计脚本语言(ASL)4

3.1概述4

3.2约束4

3.3参数作用域5

3.4常量5

3.5变量5

3.6数组5

3.7表达式、运算符与界符6

3.7.1算术运算符6

3.7.2逻辑运算符6

3.7.3关系表达式6

3.7.4界符6

3.8叙述语法7

3.8.1分支语句7

3.8.2WHILE循环7

3.8.3REPEAT-until循环8

3.9过程9

3.9.1过程定义9

3.9.2过程的调用9

3.10系统基本字(保留字)10

3.11系统函数12

3.12程序举例15

4.Sql语句20

4.1约束20

4.2常用SQL数据库操作20

4.3查询表20

4.3.1Select语句20

4.3.2修改表23

4.3.3连接表25

4.4常用SQL函数与表达式27

4.4.1聚合函数27

4.4.2字符串函数28

4.4.3时间函数:

31

4.5常用函数对照表31

计算机审计方法语言编制规范

1.前言

本规范由审计署计算机技术中心、信息化建设办公室提出。

本规范的起草单位:

审计署计算机技术中心、信息化建设办公室。

2.引言

计算机审计方法语言包括ASL审计脚本语言和SQL语句两部分。

ASL审计脚本语言完成审计方法的流程控制。

ASL审计脚本语言是由审计署基于PASCAL语言研制的适用于审计人员编制计算机审计方法的语言。

SQL语句完成对数据库的操作。

本规范的SQL语句采用国家标准GB_12991-91《信息处理系统数据库语言SQL》及国际标准ISO/IEC9075:

1992《信息技术数据库语言SQL》中审计所需的部分内容。

为使计算机审计方法语言适用于SQLserver、ORACLE、DB2等不同数据库,本规范在4.5节中列示了常用函数在SQLserver、ORACLE、DB2等数据库使用中的对照表。

3.审计脚本语言(ASL)

3.1概述

审计脚本语言是基于PASCAL语言的基础之上开发一门专为审计人员书写审计方法的编程语言。

审计脚本语言主体是PASCAL语言的子集,在此基础之上进行了数据库操作、图表输出等一系列功能扩展,其功能简单,结构清晰,可读性强,具备了一般高级语言的必备部分。

3.2约束

(1)变量、标示符、函数及过程名称一律使用英文字母开头,可以使用英文和数字。

(2)变量、标示符、函数及过程名称大小写不敏感。

(3)一段程序中变量、过程不能超过100个。

(4)数字最大位数为24位。

(5)过程嵌套不超过3层。

(6)一行程序不超过5000个字符

(7)任何一段超过1行以上的程序需要使用begin….end语句进行约束,表明哪里是开始,哪里是结束。

(8)每行程序以分号作为结束符。

(9)全程序以end.作为结束

(10)变量定义要在主程序的begin之前。

(11)赋值语句使用:

=为运算符

3.3参数作用域

过程可以引用自己定义的局部参数,也可以引用包围它的外过程定义的局部参数。

3.4常量

定义常量的格式:

CONST<常量标识符>=<常量>

说明:

常量说明部分以关键字const开头,后面的标识符为常量标识符,其中"="号后的常量为整数、实数、字符、字符串(字符、字符串常量在后面章节中将作介绍)。

而且,在常量说明部分可以将几个常量说明成符号常量,共用一个关键字"const"。

3.5变量

变量说明的格式:

VAR<变量标识符>[,<变量标识符>];

其中VAR是ASL保留字,表示开始一个变量说明段;

3.6数组

说明的格式:

array<数组标识符>[下标];

其中array是ASL保留字,表示开始一个数组说明段。

3.7表达式、运算符与界符

3.7.1算术运算符

算术运算符

说明

+

加号

-

减号

*

乘号

/

除号

3.7.2逻辑运算符

逻辑运算符

说明

=

等于

and

or

not

3.7.3关系表达式

关系表达式

说明

:

=

等于号(赋值符、算术表达式)

<

小于

>

大于

<>、#

不等于

<=

小于等于

>=

大于等于

3.7.4界符

界符

说明

逗号,变量界符。

用来分隔函数和过程的参数,以及声明变量时分隔变量

分号,语句界符。

用来做为每一行程序段的结束标志

.

句号,程序界符。

用来表示程序全部结束,一般使用在最后一个end后

()

小括号,函数和过程的参数界符。

[]

中括号,数组下标的界符,定义数组时使用,一般中括号中间添入该数组的下标

‘’

单引号,字符串的界符,单引号中间一般为字符串。

如果想单独输入一个单引号字符,则需要‘’’’。

//

注释符,注释符号,//后的本行文字不影响程序执行。

3.8叙述语法

3.8.1分支语句  

(1)格式

Ⅰ、IF<布尔表达式>THEN语句;

Ⅱ、IF<布尔表达式>THEN语句1ELSE语句2;

(注意Ⅱ型IF语句中语句1后无";"号)

(2)功能

Ⅰ、执行IF语句时,先计算<布尔表达式>的值,若为TRUE则执行语句,否则不执行任何操作。

Ⅱ、执行IF语句时,先计算<布尔表达式>的值,若为TRUE则执行语句1,否则执行语

3.8.2WHILE循环

while语句的形式为:

while<布尔表达式>do<语句>;

其意义为:

当布尔表达式的值为true时,执行do后面的语句。

while语句的执行过程为:

①判断布尔表达式的值,如果其值为真,执行步骤2,否则执行步骤4;

②执行循环体语句(do后面的语句);

③返回步骤1;

④结束循环,执行while的下一个语句。

说明:

这里while和do为保留字,while语句的特点是先判断,后执行。

当布尔表达式成立时,重复执行do后面的语句(循环体)。

3.8.3REPEAT-until循环

用while语句可以实现"当型循环",用repeat-until语句可以实现"直到型循环"。

repeat-until语句的含义是:

"重复执行循环,直到指定的条件为真时为止"。

直到循环语句的一般形式:

Repeat

   <语句1>;

:

<语句n>;

until<布尔表达式>;

其中Repeat、until是ASL保留字,repeat与until之间的所有语句称为循环体。

说明:

①repeat语句的特点是:

先执行循环,后判断结束条件,因而至少要执行一次循环体。

②repeat-until是一个整体,它是一个(构造型)语句,不要误认为repeat是一个语句,until是另一个语句。

③repeat语句在布尔表达式的值为真时不再执行循环体,且循环体可以是若干个语句,不需用begin和end把它们包起来,repeat和until已经起了begin和end的作用。

while循环和repeat循环是可以相互转化的。

3.9过程

3.9.1过程定义

在pascal中,函数也遵循先说明后使用的规则,在程序中,函数的说明放在调用该函数的程序(主程序或其它子程序)的说明部分。

函数的结构主程序的结构很相似。

procedure<过程名>;{过程首部}

说明:

过程首部以关键字procedure开头。

过程名是用户自定义的标识符,只用来标识一个过程,不能代表任何数据,因此不能说明"过程的类型"。

过程体的说明部分可以定义只在本过程有效的标号、常量、类型、变量、子程序等。

3.9.2过程的调用

过程调用是通过一条独立的过程调用语句来实现的,调用的一般格式为:

call<过程名> 

3.10系统基本字(保留字)

系统基本字(保留字)

说明

调用举例

var

变量定义基本字,描述其后面的字符为定义的变量。

vara,x,mymun;

const

常量定义基本字,描述其后面的字符为定义的常量。

constpi=3.14159265;

array

数组定义基本字,描述其后面的字符为定义的数组。

arraya[10],b[10];

procedure

过程定义基本字,描述其后面的字符为定义的程序过程。

vara;

proceduresum;

begin

a:

=a+1;

write(a);

end;

begin

a:

=1;

callsum;

end.

call

调用过程基本字,调用定义的一个过程。

begin

程序开始基本字,一段程序的开始标志。

vara,b;

begin

a:

=1;

b:

=2;

ifa<>0then

begin

b:

=b+a;

write(b);

end;

end.

end

程序结束基本字,一段程序的结束标志。

程序段结束end后面紧跟分号,全程序结束end后面紧跟句号。

如过在if语句有else,则在else前的end不用跟随分号。

if

if-then-else判断基本字。

if条件then

begin

处理语句;

处理语句;

end

else

begin

处理语句;

处理语句;

end;

ifa>0then

write(‘a是正数’);

ifa>0then

write(‘a是正数’)

else

write(‘a是不是正数’);

ifa>=0then

begin

a:

=a+1;

write(‘a是正数’);

end

else

write(‘a是负数’);

then

else

repeat

repeat-until循环基本字。

repeat-until循环是直到until后的条件满足循环就停止

repeat

处理语句;

处理语句;

until条件;

i:

=0;

repeat

a:

=i*i;

write(a);

i:

=i+1;

untili>5;

until

while

while-do循环基本字

while条件do

begin

处理语句;

处理语句;

end;

b:

=1;

whileb<100do

begin

a:

=b*b;

ifa>60000thenbreak;

b:

=b+1;

end;

write(b);

do

break

循环中止基本字

read

录入基本字。

vara;

begin

read(a);

ifa>0then

write(‘a是正数’)

else

write(‘a是不是正数’);

end.

write

输出基本字。

3.11系统函数

系统标示符

说明

调用举例

LeftStr

左截取字符串函数,输入要操作的字符串和截取的个数,返回左截取后的字符串。

一个中文文字符占两位。

leftstr(‘操作字符’,个数);

RightStr

右截取字符串函数,输入要操作的字符串和截取的个数,返回右截取后的字符串。

一个中文文字符占两位。

rightstr(‘操作字符串’,个数);

MidStr

中部截取字符串函数,输入要操作的字符串,起始位置和截取的个数,返回中部截取后的字符串。

一个中文文字符占两位。

MidStr(‘操作字符串’,起始位置,个数);

Length

字符串取长度函数,输入要操作的字符串,返回该字符串的长度,一个中文字符占两位。

一个中文文字符占两位。

Length(‘操作字符串’);

CreateQ

执行SQL语句,返回一个SQL语句的执行及结果到查询变两中。

第一个参数是查询的SQL语句,第二个参数是使用过已经没有用的查询变量,如果是第一次作查询则填写-1,这样做的好处是,节省查询变量的个数,节约资源。

CreateQ(‘SQL语句’,查询变量);

a:

=createq(‘select*from凭证表’,-1);

a:

=createq(‘select*from凭证表’,a);

QEof

查看查询变量当前指向的记录是否为空。

返回1则表明为空。

QEof(查询变量);

a:

=createq(‘select*from凭证表’,-1);

b:

=QEof(a);

ifb<>1then

begin

//你的操作

//……

//你的操作

end;

QMov

查寻变量记录移动函数,返回成功与否。

QMov(查询变量,移动方向1向下-1向上);

a:

=createq(‘select*from凭证表’,-1);

b:

=QMov(a,1);

QFDValue

取当前查询变量当前纪录的字段的值。

入口参数一个是查询变量,一个是某一个字段的名称,需要用单引号括起来。

QFDValue(查询变量,‘字段名称’);

a:

=createq(‘select*from凭证表’,-1);

b:

=QFDValue(a,‘摘要’);

RecordNum

如果参数为一个打开的查询变量,则取出当前查询变量的记录个数。

如果参数为数据库中的一个表名,则取出该表的所有记录个数。

RecordNum(查询变量或‘表名称’);

ExecuteUpdate

执行数据库插入、更新、删除(Insert,Update,Delete)的SQL语句的函数。

ExecuteUpdate(‘SQL语句’);

CreateTempTable

把SQL语句取出来的结果以用户输入的表名存储在数据库中。

CreateTempTable(‘新表名’,‘SQL语句’);

OPutChart

将查询变量或SQL语句结果输出到图表。

Y轴字段显示颜色参数:

clred——红色、clblue——蓝色、clyellow——黄色、clgreen——绿色、clMaroon——栗色、clPurple——紫色、clFuchsia——紫红色、clOlive——橄榄色、clSkyBlue——天蓝色、clMoneyGreen——货币绿色、clLime——亮绿色。

或者直接使用颜色数字,格式为$加6位的16进制数字。

如:

$1f11c1。

OPutChart(查询变量或‘SQL语句’,‘X轴字段’,‘Y轴字段1,显示颜色参数1;Y轴字段2,显示颜色参数2;Y轴字段N,显示颜色参数N’);

AddVouDout

输出源凭证号到疑点库中,该源凭证号对应的凭证将被定义为已落实疑点。

AddVouDout(源凭证号);

AddVouRslt

输出源凭证号到疑点库中,该源凭证号对应的凭证将被定义为未落实疑点。

AddVouRslt(源凭证号);

AddTransDout

把指定查询变量的当前记录输出到业务疑点的临时库中。

AddTransDout(查询变量,‘疑点说明’);

AddTransRslt

把指定查询变量的当前记录输出到业务结果的临时库中。

AddTransRslt(查询变量,‘疑点说明’);

TransBatch

把指定查询变量的业务疑点或结果临时库中的数据写入业务疑点或结果库中。

并清空相应的临时库中的数据

TransBatch(查询变量,‘批量疑点说明’);

showmsg

showmsg(‘消息内容’);

3.12程序举例

(1)赋值语句

//定义变量并且为变量赋值和输出变量

constpi=3.14159265;//常量赋值

Var

InputNumber,

InputString,

CurrentQuery;

ArrayInputArrary[10];

Begin

InputNumber:

=123;//数值赋值

InputString:

='ABCDEFG';//字符串赋值

InputArrary[1]:

='abc';//数组赋值

CurrentQuery:

=CreateQ('select*from凭证库',-1);

ShowMsg(InputNumber);

ShowMsg(InputString);

ShowMsg(InputArrary[1]);

End.

(2)判断语句

//脚本说明:

//输入一个数判断输入的数字是否为正数,正数显//示你输入的数为正数负数显示你输入的数为负数

Var

InputNumber;

begin

Read(InputNumber);

ifInputNumber<>0then

begin

ifInputNumber>0then

begin

ShowMsg('你输入的是正数');

end

else

begin

ShowMsg('你输入的是负数数');

end;

end

else

begin

ShowMsg('你输入的是零');

end;

end.

(3)循环语句

//提示用户输入一个数字,如果输入的数是负数停止

//循环否则将输入的数字累加并在最后将累加结果显示

Var

InputNumber,

TotalNumber;

ProcedureDoCycle;

Begin

TotalNumber:

=0;

Read(InputNumber);

//输入一个数字

whileInputNumber>0do

//循环条件输入的数字是正数

Begin

TotalNumber:

=TotalNumber+InputNumber;

//累加输入的数字

Read(InputNumber);

//输入一个数字

End;

End;

//主程序

Begin

CallDoCycle;//调用过程

ShowMsg(TotalNumber);//显示累计结果

End.

(4)数据库操作

//读取凭证库中的一月份凭证,计算一类,五类科

//目,2,3,4类科目总数并显示

//对于凭证号为1的凭证放在未落实疑点为2的放

//到已落实疑点

var

CurrentQuery,IsEmpty,

AccountCode,

Total1,Total2,

VoucherNum,

SourceVoucherNum;

begin

Total1:

=0;

Total2:

=0;

CurrentQuery:

=CreateQ('select*from凭证库where会计月份=1',-1);

IsEmpty:

=Qeof(CurrentQuery);

ifIsEmpty<>1then

begin

repeat

AccountCode:

=QFDValue(CurrentQuery,'科目编码');

AccountCode:

=LeftStr(AccountCode,1);

ifAccountCode='1'orAccountCode='5'then

begin

Total1:

=Total1+1;

end

else

begin

Total2:

=Total2+1

end;

IsEmpty:

=Qmov(CurrentQuery,1);

IsEmpty:

=Qeof(CurrentQuery);

VoucherNum:

=QFDValue(CurrentQuery,'凭证号');

ifVoucherNum=1then

begin

SourceVoucherNum:

=QFDValue(CurrentQuery,'源凭证号');

AddVouDout(SourceVoucherNum);

end;

ifVoucherNum=2then

begin

SourceVoucherNum:

=QFDValue(CurrentQuery,'源凭证号');

AddVouRslt(SourceVoucherNum);

end;

untilIsEmpty=1;

end;

write(Total1);

write(Total2);

ShowMsg(Total1);

end.

(5)字符串操作

var

TestString,

ResultStr,

LengthStr;

begin

TestString:

='ABCDEFG';

ResultStr:

=LeftStr(TestString,1);

ShowMsg(ResultStr);

ResultStr:

=RightStr(TestString,1);

ShowMsg(ResultStr);

ResultStr:

=MidStr(TestString,1,4);

ShowMsg(ResultStr);

ResultStr:

=TrimStrEX(TestString,'CD','DC');

ShowMsg(ResultStr);

LengthStr:

=Length(TestString);

ShowMsg(LengthStr);

end.

(6)图形输出

//用户输入科目编码对当前输入的科目编码按月份

//汇总借贷金额以图表方式输出

var

CurrentQuery,

x;

begin

Read(x);

CurrentQuery:

=CreateQ('SELECT会计月份,SUM(借方金额)ASJ,SUM(贷方金额)ASD

FROM凭证库WHERELEFT(科目编码,4)='+''''+x+''''+'GROUPBY会计月份',-1);

oputchart(CurrentQuery,'会计月份','J,clred;D,clgreen');

end.

4.Sql语句

4.1约束

在计算机审计方法语言中的SQL语句只支持数据定义语言(DDL,DataDefinitionLanguage)、数据操纵语言(DML,DataManipularionLanguage)、数据控制语言(DCL,DataControlLanguage)和系统存储过程(SystemStoredProcedure)中的数据定义语言和数据操纵语言。

4.2常用SQL数据库操作

4.3查询表

4.3.1Select语句

Select语句从一个或多个表中检索数据

(1)语法

SELECT[ALL|DISTINCT]

{Columnexpression[ASname]}[…]|*

FROM     [{,}…]

[WHERE]

[GROUPBYColumns[Havingcondition]]

Select语句查询sql数据,返回一个由在From子句中所指的表导出的结果表。

结果表的导出可以描述为一个操作的序列,每一个操作的结果被输入到下一个操作。

这个操作序列是From子句,然后是WHERE、GROUPBY、HAVING和选择清单(即列表达式的清单),而对这些子句的描述也以这个顺序出现。

From子句

Form子句为查询提供一个<表引用>

语法

FROM[{,}…

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2