B4-审计方法培训.doc_第1页
B4-审计方法培训.doc_第2页
B4-审计方法培训.doc_第3页
B4-审计方法培训.doc_第4页
B4-审计方法培训.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.1 审计脚本语言(ASL)使用简单入门1.1.1 审计脚本语言介绍审计脚本语言是基于PASCAL语言的基础之上开发一门专为审计人员书写审计方法的编程语言。审计脚本语言主体是PASCAL语言的子集,在此基础之上进行了数据库操作、图表输出等一系列功能扩展,其语法简单,结构清晰,可读性强,具备了一般高级语言的必备部分(如:read,write,while-do, if-then,call,begin-end,数组,过程,函数,赋值语句等)1.1.2 语法规则a) 约束i. 变量、标示符、函数及过程名称一律使用英文字母开头,可以使用英文和数字。ii. 变量、标示符、函数及过程名称大小写不敏感。iii. 一段程序中变量、过程不能超过100个。iv. 数字最大位数为24位。v. 过程嵌套不超过3层。vi. 一行程序不超过5000个字符b) 语法规则i. 语法规则近似于Pascal语言。ii. 任何一段超过1行以上的程序需要使用begin.end语句进行约束,表明哪里是开始,哪里是结束。iii. 每行程序以分号作为结束符。iv. 全程序以end.作为结束v. 变量定义要在主程序的begin之前。vi. 赋值语句使用:=为运算符c) 参数作用域过程可以引用自己定义的局部参数,也可以引用包围它的外过程定义的局部参数。例如:在过程p中可以使用过程外部定义的常量c,d和变量a。const c=10,d=100;var a;procedure p;begin if a10 then write(c); if a10 then write(d);end;begin read(a); call p;end.d) 程序举例(圆面积计算程序)const p=3.14159265; /常量说明部分var s, r; /变量说明部分begin/程序主体开始 read(r);/读取一个数值到变量r中 while r0 do/循环,直到r=0的时候结束循环 begin/循环开始 s:=p*r*r;/计算以r为半径的圆面积,结果存储到s中 write(s) ;/输出s的值,也就是刚刚计算出的圆面积 read(r);/重新需要用户输入一个值到r中 end;/循环结束,返回对应的while语句行end./主程序结束1.1.3 算术运算符算术运算符说明+加号-减号*乘号/除号:=等于号(赋值符、算术表达式)大于、#不等于=大于等于1.1.4 逻辑运算符逻辑运算符说明=等于and与or或not非1.1.5 界符界符说明,逗号,变量界符。用来分隔函数和过程的参数,以及声明变量时分隔变量;分号,语句界符。用来做为每一行程序段的结束标志.句号,程序界符。用来表示程序全部结束,一般使用在最后一个end后( )小括号,函数和过程的参数界符。 中括号,数组下标的界符,定义数组时使用,一般中括号中间添入该数组的下标单引号,字符串的界符,单引号中间一般为字符串。如果想单独输入一个单引号字符,则需要。/注释符,注释符号,/后的本行文字不影响程序执行。1.1.6 系统基本字(保留字)系统基本字(保留字)说明调用举例var变量定义基本字,描述其后面的字符为定义的变量。var a, x, mymun;const常量定义基本字,描述其后面的字符为定义的常量。const pi=3.14159265;array数组定义基本字,描述其后面的字符为定义的数组。array a10, b10;procedure过程定义基本字,描述其后面的字符为定义的程序过程。var a;procedure sum; begin a:=a+1;write(a) ; end;begina:=1;call sum;end.call调用过程基本字,调用定义的一个过程。begin程序开始基本字,一段程序的开始标志。var a, b;begin a:=1; b:=2; if a0 then begin b:=b+a; write(b); end;end.end程序结束基本字,一段程序的结束标志。程序段结束end后面紧跟分号,全程序结束end后面紧跟句号。如过在if语句有else,则在else前的end不用跟随分号。ifif-then-else判断基本字。if 条件 thenbegin 处理语句; 处理语句;endelsebegin 处理语句; 处理语句;end;if a0 then write(a是正数);if a0 then write(a是正数)else write(a是不是正数);if a=0 thenbegin a:=a+1;write(a是正数);endelse write(a是负数);thenelserepeatrepeat-until循环基本字。repeat- until循环是直到until后的条件满足循环就停止repeat 处理语句; 处理语句;until 条件;i:=0;repeat a:=i*i; write(a); i:=i+1;until i5;untilwhilewhile-do循环基本字while 条件 dobegin 处理语句; 处理语句;end;b:=1;while b6000 then break; b:=b+1;end;write(b);dobreak循环中止基本字read输入基本字。var a;begin read(a); if a0 then write(a是正数)else write(a是不是正数);end.write输出基本字。NewRead用户录入基本字var a;begin a:=NewRead(请输入数值); write(a是正数);end.1.1.7 系统标示符(自定义系统函数及过程)系统标示符说明调用举例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);if b1 thenbegin/你的操作/你的操作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(查询变量,批量疑点说明);showmsgshowmsg(消息内容);1.1.8 审计脚本语言(ASL)实例a) 财务数据审查审查现金科目,有借方金额大于1000元的记录到已落实疑点中。var CX,BZ,JFJE,YPZH; /定义变量 CX:查询,BZ:标志,/ JFJE:金额,YPZH:源凭证号beginCX:=CreateQ(SELECT * FROM 凭证库 WHERE 科目编码=101,-1); /打开表,把科目编码是101的打开BZ:=Qeof(CX);/判断是否为空while BZ1 do/循环开始直到BZ=1结束begin JFJE:=QFDValue(CX,借方金额); /取借方金额字段的值 if JFJE 1000 then/判断借方金额是否大于1000 begin YPZH:=QFDValue(CX,源凭证号); /是:取源凭证号字段的值 AddVouDout(YPZH); /把本源凭证号对应的凭证记录到已落实疑点中 end; BZ:=Qmov(CX,1);/下移一行 BZ:=Qeof(CX);/判断是否为空end;/循环结束end./程序结束b) 业务数据审查使用审计脚本语言对业务数据进行处理,对于入库单的金额进行分析,大于8000元的记为已落实疑点,5000-8000之间的记为未落实疑点。var Cx,Bz,Je; /定义变量 Cx:查询,Bz:标志,Je:金额begin Cx:=CreateQ(SELECT * FROM 其它表_入库单, -1); /打开表 Bz:=Qeof(Cx); /判断是否为空 while Bz1 do /循环开始直到Bz=1结束 begin Je:=QFDValue(Cx,金额); /取金额字段的值 if Je 8000 then AddTransDout(Cx,很有钱); /判断,成立插入已落实疑点临时表 if Je 5000 then AddTransRslt(Cx,有钱); /判断,成立插入未落实疑点临时表 Bz:=Qmov(Cx,1); /下移一行 Bz:=Qeof(Cx); /判断是否为空 end; /循环结束 TransBatch(Cx,大家都有钱); /把业务数据疑点丛临时表导出写入正式表end.c) 图表输出举例使用审计脚本语言对财务数据进行处理,按月汇总凭证库中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论