1、 审计脚本语言介绍
审计脚本语言是基于PASCAL语言的基础之上开发一门转为审计人员书写审计方法的编程语言。审计脚本语言主体是PASCAL语言的子集,在此基础之上进行了数据库操作、图表输出等一系列功能扩展,其功能简单,结构清晰,可读性强,具备了一般高级语言的必备部分(如:read,write,while-do, if-then,call,begin-end,数组,过程,函数,赋值语句等)
2、 语法规则
a) 约束
1. 变量、标示符、函数及过程名称一律使用英文字母开头,可以使用英文和数字。
2. 变量、标示符、函数及过程名称大小写不敏感。
3. 一段程序中变量、过程不能超过100个。
4. 数字最大位数为24位。
5. 过程嵌套不超过3层。
6. 一行程序不超过5000个字符
b) 语法规则
1. 语法规则近似于Pascal语言。
2. 任何一段超过1行以上的程序需要使用begin….end语句进行约束,表明那里时开始,哪里是结束。
3. 每行程序以分号作为结束符。
4. 全程序以end.作为结束
5. 变量定义要在主程序的begin之前。
6. 赋值语句使用:=为运算符
c) 参数作用域
过程可以引用自己定义的局部参数,也可以引用包围它的外过程定义的局部参数。
例如:在过程p中可以使用过程外部定义的常量c,d和变量a。
const c=10,d=100;
var a;
procedure p;
begin
if a>10 then
write(c);
if a<10 then
write(d);
end;
begin
read(a);
call p;
end.
d) 程序举例(圆面积计算程序)
const p=3.14159265; //常量说明部分
var s, r; //变量说明部分
begin //程序主体开始
read(r); //读取一个数值到变量r中
while r<>0 do //循环,直到r<>0的时候结束循环
begin //循环开始
s:=p*r*r; //计算以r为半径的圆面积,结果存储到s中
write(s) ; //输出s的值,也就是刚刚计算出的圆面积
read(r); //重新需要用户输入一个值到r中
end; //循环结束,返回对应的while语句行
end. //主程序结束
3、 算术运算符
算术运算符
说明
+
加号
-
减号
*
海尔笔记本乘号
/
除号
:=
等于号(赋值符、算术表达式)
<
小于
>
大于
<>、#
不等于
<=
小于等于
>=
大于等于
4、 逻辑运算符
逻辑运算符
说明
=
等于
and
与
or
或
not
非
5、 界符
界符
说明
,
逗号,变量界符。用来分隔函数和过程的参数,以及声明变量时分隔变量
;
分号,语句界符。用来做为每一行程序段的结束标志
.
句号,程序界符。用来表示程序全部结束,一般使用在最后一个end后
( )
小括号,函数和过程的参数界符。
[ ]
中括号,数组下标的界符,定义数组时使用,一般中括号中间添入该数组的下标
‘’
单引号,字符串的界符,单引号中间一般为字符串。如果想单独输入一个单引号字符,则需要‘’’’。
//
注释符,注释符号,//后的本行文字不影响程序执行。
6、 系统基本字(保留字)
系统基本字(保留字)
杏花是什么颜说明
调用举例
var
变量定义基本字,描述其后面的字符为定义的变量。
var a, x, mymun;
const
常量定义基本字,描述其后面的字符为定义的常量。
const pi=3.14159265;
array
数组定义基本字,描述其后面的字符为定义的数组。
array a[10], b[10];
procedure
过程定义基本字,描述其后面的字符为定义的程序过程。
var a;
procedure sum;
begin
a:=a+1;
write(a) ;
end;
begin
a:=1;
call sum;
end.
call
调用过程基本字,调用定义的一个过程。
begin
程序开始基本字,一段程序的开始标志。
var a, b;
begin
a:=1;
b:=2;
if a<>0 then
能打动女孩子的话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;
if a>0 then
write(‘a是正数’);
if a>0 then
write(‘a是正数’)
else
write(‘a是不是正数’);
if a>=0 then
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;
until i>5;
until
while
while-do循环基本字
while 条件 do
begin
处理语句;
处理语句;
end;
风筝鲁迅原文b:=1;
while b<100 do
begin
a:=b*b;
if a>60000 then break;
b:=b+1;
end;
write(b);
do
break
循环中止基本字
read
录入基本字。
var a;
begin
read(a);
if a>0 then
wr
ite(‘a是正数’)
else
write(‘a是不是正数’);
end.
write
输出基本字。
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 b<>1 then
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——蓝、clyello
w——黄、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(‘消息内容');
1、 财务数据审查
审查现金科目,有借方金额大于1000元的记录到已落实疑点中。
var CX,BZ,JFJE,YPZH; //定义变量 CX:查询,BZ:标志,
// JFJE:金额,YPZH:源凭证号
begin
CX:=CreateQ('SELECT * FROM 凭证库 WHERE 科目编码=''101''',-1);
//打开表,把科目编码是101的打开
BZ:=Qeof(CX); //判断是否为空
while BZ<>1 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. //程序结束
2、 业务数据审查
使用审计脚本语言对业务数据进行处理,对于入库单的金额进行分析,大于8000元的记为已落实疑点,5000-8000之间的记为未落实疑点。
var Cx,Bz,Je; //定义变量 Cx:查询,Bz:标志,Je:金额
begin
Cx:=CreateQ('SELECT * FROM 其它表_入库单', -1); //打开表
Bz:=Qeof(Cx); //判断是否为空
while Bz<>1 do //循环开始直到Bz=1结束
begin
Je:=QFDValue(Cx,'金额'); //取‘金额’字段的值
if Je >80000 then AddTransDout(Cx,'很有钱');
//判断,成立插入已落实疑点临时表
if Je <=80000 and Je >50000 then AddTransRslt(Cx,'有钱');
//判断,成立插入未落实疑点临时表
Bz:=Qmov(Cx,1); //下移一行
Bz:=Qeof(Cx); //判断是否为空
end; //循环结束
TransBatch(Cx,'大家都有钱'); //把业务数据疑点丛临时表导出写入正式表
end.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论