计算机审计方法语言编制规范Word文件下载.docx
《计算机审计方法语言编制规范Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机审计方法语言编制规范Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
![计算机审计方法语言编制规范Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/8/10a0373a-e45f-4f0d-adb1-8b72aa47a06a/10a0373a-e45f-4f0d-adb1-8b72aa47a06a1.gif)
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;
=1;
callsum;
end.
call
调用过程基本字,调用定义的一个过程。
程序开始基本字,一段程序的开始标志。
vara,b;
b:
=2;
ifa<
0then
=b+a;
write(b);
end
程序结束基本字,一段程序的结束标志。
程序段结束end后面紧跟分号,全程序结束end后面紧跟句号。
如过在if语句有else,则在else前的end不用跟随分号。
if
if-then-else判断基本字。
if条件then
处理语句;
else
ifa>
write(‘a是正数’);
write(‘a是正数’)
write(‘a是不是正数’);
=0then
write(‘a是负数’);
then
repeat
repeat-until循环基本字。
repeat-until循环是直到until后的条件满足循环就停止
until条件;
i:
=0;
=i*i;
write(a);
=i+1;
untili>
5;
until
while
while-do循环基本字
while条件do
whileb<
100do
=b*b;
60000thenbreak;
=b+1;
do
break
循环中止基本字
read
录入基本字。
read(a);
write
输出基本字。
3.11系统函数
系统标示符
LeftStr
左截取字符串函数,输入要操作的字符串和截取的个数,返回左截取后的字符串。
一个中文文字符占两位。
leftstr(‘操作字符’,个数);
RightStr
右截取字符串函数,输入要操作的字符串和截取的个数,返回右截取后的字符串。
rightstr(‘操作字符串’,个数);
MidStr
中部截取字符串函数,输入要操作的字符串,起始位置和截取的个数,返回中部截取后的字符串。
MidStr(‘操作字符串’,起始位置,个数);
Length
字符串取长度函数,输入要操作的字符串,返回该字符串的长度,一个中文字符占两位。
Length(‘操作字符串’);
CreateQ
执行SQL语句,返回一个SQL语句的执行及结果到查询变两中。
第一个参数是查询的SQL语句,第二个参数是使用过已经没有用的查询变量,如果是第一次作查询则填写-1,这样做的好处是,节省查询变量的个数,节约资源。
CreateQ(‘SQL语句’,查询变量);
=createq(‘select*from凭证表’,-1);
=createq(‘select*from凭证表’,a);
QEof
查看查询变量当前指向的记录是否为空。
返回1则表明为空。
QEof(查询变量);
=QEof(a);
ifb<
1then
//你的操作
//……
QMov
查寻变量记录移动函数,返回成功与否。
QMov(查询变量,移动方向1向下-1向上);
=createq(‘select*from凭证表’,-1);
=QMov(a,1);
QFDValue
取当前查询变量当前纪录的字段的值。
入口参数一个是查询变量,一个是某一个字段的名称,需要用单引号括起来。
QFDValue(查询变量,‘字段名称’);
=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)赋值语句
//定义变量并且为变量赋值和输出变量
//常量赋值
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)判断语句
//脚本说明:
//输入一个数判断输入的数字是否为正数,正数显//示你输入的数为正数负数显示你输入的数为负数
InputNumber;
Read(InputNumber);
ifInputNumber<
ifInputNumber>
ShowMsg('
你输入的是正数'
);
你输入的是负数数'
你输入的是零'
(3)循环语句
//提示用户输入一个数字,如果输入的数是负数停止
//循环否则将输入的数字累加并在最后将累加结果显示
TotalNumber;
ProcedureDoCycle;
TotalNumber:
//输入一个数字
whileInputNumber>
0do
//循环条件输入的数字是正数
=TotalNumber+InputNumber;
//累加输入的数字
End;
//主程序
CallDoCycle;
//调用过程
ShowMsg(TotalNumber);
//显示累计结果
(4)数据库操作
//读取凭证库中的一月份凭证,计算一类,五类科
//目,2,3,4类科目总数并显示
//对于凭证号为1的凭证放在未落实疑点为2的放
//到已落实疑点
CurrentQuery,IsEmpty,
AccountCode,
Total1,Total2,
VoucherNum,
SourceVoucherNum;
Total1:
Total2:
select*from凭证库where会计月份=1'
IsEmpty:
=Qeof(CurrentQuery);
ifIsEmpty<
AccountCode:
=QFDValue(CurrentQuery,'
科目编码'
=LeftStr(AccountCode,1);
ifAccountCode='
1'
orAccountCode='
5'
then
=Total1+1;
=Total2+1
=Qmov(CurrentQuery,1);
VoucherNum:
凭证号'
ifVoucherNum=1then
SourceVoucherNum:
源凭证号'
AddVouDout(SourceVoucherNum);
ifVoucherNum=2then
AddVouRslt(SourceVoucherNum);
untilIsEmpty=1;
write(Total1);
write(Total2);
ShowMsg(Total1);
(5)字符串操作
TestString,
ResultStr,
LengthStr;
TestString:
ResultStr:
=LeftStr(TestString,1);
ShowMsg(ResultStr);
=RightStr(TestString,1);
=MidStr(TestString,1,4);
=TrimStrEX(TestString,'
CD'
'
DC'
LengthStr:
=Length(TestString);
ShowMsg(LengthStr);
(6)图形输出
//用户输入科目编码对当前输入的科目编码按月份
//汇总借贷金额以图表方式输出
CurrentQuery,
x;
Read(x);
SELECT会计月份,SUM(借方金额)ASJ,SUM(贷方金额)ASD
FROM凭证库WHERELEFT(科目编码,4)='
+'
'
+x+'
GROUPBY会计月份'
oputchart(CurrentQuery,'
会计月份'
J,clred;
D,clgreen'
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
<
tablereference>
[{,<
}…]
[WHERE<
searchcondition>
]
[GROUPBYColumns[Havingcondition]]
Select语句查询sql数据,返回一个由在From子句中所指的表导出的结果表。
结果表的导出可以描述为一个操作的序列,每一个操作的结果被输入到下一个操作。
这个操作序列是From子句,然后是WHERE、GROUPBY、HAVING和选择清单(即列表达式的清单),而对这些子句的描述也以这个顺序出现。
From子句
Form子句为查询提供一个<
表引用>
语法
FROM<
WHERE子句
可选项WHERE子句用于设置对于行的检索条件。
不在规定范围内的任何行都从结果表中去除。
规定的搜索条件必须含有算术和布尔运算符、sql判断和Sql标量函数,以及设置运算顺序的括弧。
GROUPBY子句
GROUPBY子句逻辑上将由WHERE子句返回的结果集重新编组。
[GROUPBY[ALL]group_by_expression[,...n]
[WITH{CUBE|ROLLUP}]]
HAVING子句
可选行HAVING子句用于为组设置检索条件。
不在规定范围内的任何组都从结果集中去除。
规定的搜索条件必须含有算术运算符、布尔运算符、SQL判断和SQL标量函数,以及设置运算顺序的括弧。
[HAVING<
search_condition>
]
Case子句:
计算条件列表并返回多个可能结果表达式之一
caseexpression>
Function
Specifyaconditiona