




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Technical/技术-C/AL,Albert.Fang,C/AL教程目录,第一章C/AL介绍第二章简单数据类型第三章标识符和变量第四章赋值语句第五章表达式第六章数值表达式第七章逻辑关系表达式第八章If和Exit语句第九章复合语句和注释第十章数组,第十一章循环语句第十二章其他语句第十三章调用内置函数第十四章自定义函数第十五章C/AL函数第十六章编码规范,第一章C/AL介绍,C/AL:ClientApplicationLanguage,即客户应用开发语言。该语言用于Navision的C/SIDE(客户服务器集成开发环境)中。在C/SIDE中,C/AL主要用于对数据的操作,例如向表中插入数据,或在不同的表中传输数据等。,第二章简单数据类型,2.1简单数据类型2.2数值型数据类型1.integer2.decimal3.option4.char2.3字符串型数值类型1.text2.code2.4布尔、日期和时间类型1.boolean2.date3.time,第三章标识符和变量,3.1标志符和变量(1)标识符:指对Navision中元素的命名,如对象、变量、常量、函数、字段等(2)被命名的常量(NamedConstant).在Navision中只有TextConstant是一种被命名的常量,可以像变量一样被定义。(3)变量(4)语法结构,第三章标识符和变量,3.2标识符的语法C/AL使用标志符语法(1)遵循Pascal语言语法。这种情况下,标识符必须以字母或下划线开头。(2)不遵循Pascal语言语法。这种情况下,标识符必须加上双引号。如在代码中,“SalesHeader”可能代表是一个数据集变量,第三章标识符和变量,3.3.1变量范围(1)C/AL中的全局变量其实是在对象内部使用的变量。如果要在整个NavisiOn程序范围内使用变量,则要进行特殊的处理。(2)在同一个对象里,可以允许存在相同命名的变量,本地变量的优先级要更高一些。但不建议用户在程序中在一个对象内使用多个相同命名的变量。(3)系统级变量,如UserId、Companyname等。在调试环境中,用户可以在见C/ALsymbolmenu(F5),Database,Functions中看到所有的系统级变量(4)Text常量:和变量一样,定义也有全局和局部之分。,第三章标识符和变量,3.3.2变量初始化对于数字形变量,其初始值为0对于字符串变量,其初始值为空字符串对于文本常量,其初始值等于其定义的时候的值对于布尔变量,其初始值为False对于日期和时间值,其初始值为0D和0T,第三章标识符和变量,3.4创建一个新的代码单元,定义变量。(操作)3.5显示变量如message(Thevalueof%1is%2,LoopNo,LoopNo),第四章赋值语句,4.1赋值语句=;4.2将一个值赋给变量变量:=表达式4.3自动类型转换某些数据类型之间在赋值时可以自动进行转换,不过这种转换是受限制的,只有特定的数据类型之间可以进行转换,如数值类型和数值类型,数值类型和字符类型之间,另外,在转换时不能超出数据类型的范围。4.4语句分隔符;,第四章赋值语句,4.5使用赋值语句和symbolmenu1.简单复制语句2.symbolmenu的使用symbol左边一栏中就是用户定义的标志符3.字符常量赋值如,设ch为一个字符常量,则ch:=65和ch:=A的赋值效果一样4.选项常量如,设color是一个option常量,则Color:=color:yellow;和color:=2的效果一样5.运行时错误:赋值语句出错时,系统会出现运行时错误,第五章表达式,5.1表达式、操作数和操作符1.表达式2.表达式求值3.操作数(term)4.操作符5.2表达式的语法一元操作符:如:=,+,-,NOT字符串操作符:如:=,+算术操作符:如:=,+,-,*,/,DIV,MOD关系操作符:如:=,=,IN逻辑操作符:如NOT,OR,AND,XOR,第五章表达式,5.3字符串操作符+例,设CodeA,CodeB为Code类型的变量,Text为Text类型的变量。CodeA:=HELLOTHERE;Text:=Howareyou?;CodeB:=CodeA+.+Text;Message(Thevalueof%1is%2,CodeB,CodeB);执行以后将会输出:ThevalueofCodeBisHELLOTHERE.Howareyou?5.4在表达式中调用函数例如,loopno:=MAXSTRLEN(Description);该表达式中调用了MAXSTRLEN函数,第六章数值表达式,6.1数值表达式和操作符优先次序优先级高的操作符将优先得到运算,如5+2*3可得到11,而不是21。NavisionC/AL中的运算符优先级顺序和Pascal一样。6.2算术操作符的类型6.2.1加号运算符+(1)字符串字符串字符串,数值数值数值(2)加号也可用作一元操作符(极少用)(3)日期整型(天数)日期,例如03202001D+7可得03272001D。如果计算得到一个错误的日期,系统会给出一个运行时错误(Runtimeerror)(4)时间整形(毫秒数)时间,例如115815T+350000的120405T6.2.2减号运算符-和加法运算符类似。需要注意的是日期与日期的差,时间与时间的差都是整数。,第六章数值表达式,6.2算术操作符的类型*(乘法):/(除法):DIV(整除):注意整除不是四舍五入。例如17DIV8的2,17DIV9得2MOD(取余):例如6MOD10得6,10MOD127得76.3操作符优先次序效果操作符优先级:优先级最高的是一元操作符,如NOT,正号(+),负号(-);优先级排在第二位的是乘法运算符,如*,/,DIV,MOD优先级排在最低的是加减等二元运算符。正常运算是自左至右,但遇到优先级高的运算符会先对其进行运算。相关练习。,第七章逻辑与关系表达式,7.1逻辑与关系操作符和表达式1.关系操作符=,=,IN2.关系表达式如55)OR(Quantity=10)OR(Pricearc结果为True3.日期和时间比较现在的日期比过去的日期大,现在时间比过去大4.关系运算符的优先级:关系运算符的优先级比数值运算符优先级低7.3IN运算符例如,5IN2,4,5,6的结果为True,第七章逻辑与关系表达式,7.4使用逻辑表达式1.逻辑操作符的结果2.逻辑操作符的优先级(参见下面的表格)3.练习。新增窗体。定义变量。简单运算。,第七章逻辑与关系表达式,附:Navision中运算符的优先级,第八章If和Exit语句,8.1条件语句和布尔表达式8.2If语句1.If-Then语句IfAmount0thenunitprice:=totalprice/quantityelseunitprice:=0;8.3Exit语句3.Exit语句Ifquantity=0thenexit;unitprice:=totalprice/quantity系统执行exit语句后将不再运行trigger中其他的语句8.4用这些语句执行计算,第九章复合语句和注释,9.1复合语句和注释:解释相关的概念9.2复合语句的语法:使用Begin和End1.复合语句语法:begin语句1;语句2;end2.if-then复合语句ifquantity0thenbeginunitprice:=extendedprice/quantity;totalprice:=totalprice+extendedprice;end;或者ifquantity0thenbeginunitprice:=extendedprice/quantity;totalprice:=totalprice+extendedprice;end;,第九章复合语句和注释,9.3使用嵌套的复合语句1.嵌套If语句的混乱原则:Else语句跟随其上最近的一个If,同时一定要把握缩写规则,否则写出来的程序将难以读懂2.正确的嵌套If语句缩写规则9.4将注释添加到代码1.单行注释:使用/2.块注释:使用3.嵌套注释9.5复合语句和注释的编码,第十章数组,10.1数组的定义1、数组是一种复合数据类型(相对于简单数据类型来说)2、以下是数组的几个概念(1)数组(2)元素(3)索引(4)维注意:定义数组的时候,和定义其他的变量一样,只不过定义以后要对在变量属性中修改dimension属性,如果是一维数组,只要输入一个整数就可以了。如果是多维数组,则各维之间用;进行分割,如2;510.2数组的语法如saleamount5:=0;10.3数组的power数组的使用,如saleamount5arraylen函数,返回数组的元素数目10.4字符串作为字符的数组10.5使用数组,第十一章循环语句,11.1循环语句11.2For循环foridx:=4to8dototal:=total+2.5;又例如foridx:=4to8dobegintotal:=total+2.5;grandtotal:=grandtotal+total;end;foridx:=9downto1dobegintotalsales:=totalsales+saleidx;numbersales:=numbersales+1;end;,第十一章循环语句,11.3WhileDo语句whilesalesidx+10dobeginidx:=idx+1;totalsales:=totalsales+salesidx;end;11.4Repeat语句repeatidx:=idx+1;totalsales:=totalsales+salesidx;untilsalesidx=0;注意:repeat循环是不需要begin和end的。11.5循环语句编码,第十二章其他语句,12.1With语句1.记录变量:和数组一样是一种复合数据类型。不过数组中存放的是同一种类型的数据。而记录中包含各种类型的值,包括被调用的字段。每个值都有他自己的类型和名称。2.with语句withcustomerdobeginname:=txt1;address:=txt2;city:=txt3;contact:=txt4;phoneno.:=txt5;end;其中customer就是一种记录类型3.隐含的with语句,第十二章其他语句,12.2Case语句casecolorofcolor:orange:Int2:=int1+int2;color:red,color:green:int2:=int2*2;color:yellow:beginamt1:=int1*5;int2:=amt1div2;end;end;case语句的复杂应用,第十三章调用内置函数,13.1函数和参数几个概念:函数,内置函数,参数,值传递(参数不发生改变),参数传递(参数可能发生改变)13.2使用内置函数1.以前各章节使用到的内置函数:message,maxstrlen,copystr,clear,arraylen2.C/AL符号菜单(symbolmenu):在代码单元中打开此菜单将会得到各种各样的内置函数3.使用DATE2DMY函数,例如,如果现在是二月,则DATE2DMY(TODAY,2)返回结果为24.系统函数:日期函数,字符串函数是最重要的系统函数。可以通过Navision在线帮助学习了解具体的函数。,第十四章创建自定义函数,14.1形式参数和实际参数14.2本地函数和变量1.本地函数:本地函数只能在对象内部被调用。未被调用的函数都可以在其他对象中进行调用2.本地变量:本地变量就是只能在函数内部被调用的对象14.3为什么创建函数:组织程序;简化任务;代码重用;降低错误;是程序的修改变得容易;数据本地化;降低对象的大小,第十四章创建自定义函数,14.4Exit语句在自己创建的函数中,exit语句用于返回一个值,如Exit(param*param)14.5创建函数1.定义一个函数:在涉及环境下进入view菜单的c/Lglobal菜单项,定义完函数以后,就可以进入对象的编码环境中找到此函数并为其添加代码。,第十五章C/AL函数,15.1用户通信函数1.message函数2.confirm函数:用于用户确认,例如:ifnotconfirm(DoyouwanttoposttheJournalLines?)then.3.strmenu函数:用于用户多项确认,例如:message(Yourselectionreturnsthevalueof%1,strmenu(Yes,No,N/A)4.error函数:用于产生一个报错信息,例如Error(Numbermustbepositive.currenvalue:%1,Number);,第十五章C/AL函数,15.2字符串函数1.strpos函数:返回子串第一次出现的位置,例如strpos(Helo,boy,o)将返回4。2.copystr函数:将字符串的某一位置开始的一段字符串复制到一个新的字符串变量。newstring:=COPYSTR(Helo,boy,6,3)3.padstr函数:添加字符串。用于将一个字符串的长度改为设定的长度,如果设定的长度比实际长度大,则删除多余字符,如果比实际长度小,则会将fillcharacter的数字添加进去,如果没有参数fillcharacter,则补空格。newstring:=padstr(string,length,fillcharacter)4.strlen函数:求字符长度5.maxstrlen函数:返回定义的最大长度(分配的内存)6.lowercase和uppercase函数:转换大小写7.convertstr函数:newstring:=converstr(string,fromcharacters,tocharacters)把String中的FromCharacters替换成ToCharacters8.delchr函数:删除一个或多个字符newstring:=delchar(string,where,which)9.Insstr函数:插入字符,Insstr(string)10.selectstr函数:newstring:=selecstr(number,commastring),例如selectstr(2,a,b,c),将返回b11.strchecksum函数:checknumber:=strchecksum(string),第十五章C/AL函数,15.3系统函数1.userid函数panyname函数3.todayandtime函数4.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 龙口中小学元旦活动方案
- 贫困幼儿六一活动方案
- 杭州中考试题及答案
- 灌肠基础考试题及答案
- 公文特点考试题及答案
- 幼儿园教学教案设计:安全玩沙池
- 设备维护保养周期性计划表工具
- 分级阅读考试题及答案
- 法院培训考试题及答案
- 高中话题作文:科技在我们身边1500字(9篇)
- 花坛景观设计59课件讲解
- 大一开学新生的安全教育
- 2024天津市非全日制用工劳动合同书(官方范本)范文
- 浙江财经大学《统计学》2023-2024学年第一学期期末试卷
- 2023年度新增学位授权审核分析报告
- 医疗机构信息系统安全防护预案
- 汽车维修质量管理及质量保证期制度
- 广州数控GSK 980TDc车床CNC使用手册
- ISO27001信息安全管理体系培训资料
- 2024年桑黄菌项目可行性研究报告
- 公转私借款合同书模板
评论
0/150
提交评论