您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Navision-技术开发培训文档2
Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReservedAsia'sbestlow-leveragedesigner,implementor,andintegratorofadvancedbusinesssolutionsTechnical/技术-C/ALAlbert.FangCopyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReservedC/AL教程目录•第一章C/AL介绍•第二章简单数据类型•第三章标识符和变量•第四章赋值语句•第五章表达式•第六章数值表达式•第七章逻辑关系表达式•第八章If和Exit语句•第九章复合语句和注释•第十章数组•第十一章循环语句•第十二章其他语句•第十三章调用内置函数•第十四章自定义函数•第十五章C/AL函数•第十六章编码规范Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第一章C/AL介绍•C/AL:ClientApplicationLanguage,即客户应用开发语言。该语言用于Navision的C/SIDE(客户/服务器集成开发环境)中。•在C/SIDE中,C/AL主要用于对数据的操作,例如向表中插入数据,或在不同的表中传输数据等。Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第二章简单数据类型•2.1简单数据类型•2.2数值型数据类型•1.integer2.decimal3.option4.char•2.3字符串型数值类型•1.text2.code•2.4布尔、日期和时间类型•1.boolean2.date3.timeCopyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第三章标识符和变量•3.1标志符和变量•(1)标识符:指对Navision中元素的命名,如对象、变量、常量、函数、字段等•(2)被命名的常量(NamedConstant).在Navision中只有TextConstant是一种被命名的常量,可以像变量一样被定义。•(3)变量•(4)语法结构Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第三章标识符和变量•3.2标识符的语法•C/AL使用标志符语法•(1)遵循Pascal语言语法。这种情况下,标识符必须以字母或下划线开头。•(2)不遵循Pascal语言语法。这种情况下,标识符必须加上双引号。如在代码中,“SalesHeader”可能代表是一个数据集变量Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第三章标识符和变量•3.3.1变量范围•(1)C/AL中的全局变量其实是在对象内部使用的变量。如果要在整个NavisiOn程序范围内使用变量,则要进行特殊的处理。•(2)在同一个对象里,可以允许存在相同命名的变量,本地变量的优先级要更高一些。但不建议用户在程序中在一个对象内使用多个相同命名的变量。•(3)系统级变量,如UserId、Companyname等。在调试环境中,用户可以在见C/ALsymbolmenu(F5),Database,Functions中看到所有的系统级变量•(4)Text常量:和变量一样,定义也有全局和局部之分。Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第三章标识符和变量•3.3.2变量初始化•对于数字形变量,其初始值为0•对于字符串变量,其初始值为空字符串''•对于文本常量,其初始值等于其定义的时候的值•对于布尔变量,其初始值为False•对于日期和时间值,其初始值为0D和0TCopyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第三章标识符和变量•3.4创建一个新的代码单元,定义变量。(操作)•3.5显示变量•如message('Thevalueof%1is%2','LoopNo',LoopNo)Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第四章赋值语句•4.1赋值语句•变量=表达式;•4.2将一个值赋给变量•变量:=表达式•4.3自动类型转换•某些数据类型之间在赋值时可以自动进行转换,不过这种转换是受限制的,只有特定的数据类型之间可以进行转换,如数值类型和数值类型,数值类型和字符类型之间,另外,在转换时不能超出数据类型的范围。•4.4语句分隔符;Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第四章赋值语句•4.5使用赋值语句和symbolmenu•1.简单复制语句•2.symbolmenu的使用•symbol左边一栏中就是用户定义的标志符•3.字符常量赋值•如,设ch为一个字符常量,则ch:=65和ch:='A'的赋值效果一样•4.选项常量•如,设color是一个option常量,则Color:=color::yellow;和color:=2的效果一样•5.运行时错误:赋值语句出错时,系统会出现运行时错误Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第五章表达式•5.1表达式、操作数和操作符•1.表达式•2.表达式求值•3.操作数(term)•4.操作符•5.2表达式的语法•一元操作符:如:=,+,-,NOT•字符串操作符:如:=,+•算术操作符:如:=,+,-,*,/,DIV,MOD•关系操作符:如:=,,,,=,=,,IN•逻辑操作符:如NOT,OR,AND,XORCopyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第五章表达式•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函数Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第六章数值表达式•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的120405T•6.2.2减号运算符-•和加法运算符类似。需要注意的是日期与日期的差,时间与时间的差都是整数。Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第六章数值表达式•6.2算术操作符的类型•*(乘法):•/(除法):•DIV(整除):注意整除不是四舍五入。例如17DIV8的2,17DIV9得2•MOD(取余):例如6MOD10得6,10MOD127得7•6.3操作符优先次序效果•操作符优先级:优先级最高的是一元操作符,如NOT,正号(+),负号(-);优先级排在第二位的是乘法运算符,如*,/,DIV,MOD优先级排在最低的是加减等二元运算符。正常运算是自左至右,但遇到优先级高的运算符会先对其进行运算。•相关练习。Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第七章逻辑与关系表达式•7.1逻辑与关系操作符和表达式•1.关系操作符•=,,,=,=,,IN•2.关系表达式•如5=IntVar•3.逻辑操作符•AND,OR,XOR•4.逻辑表达式•(Quantity5)OR(Quantity=10)OR(Price100)Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第七章逻辑与关系表达式•7.2关系表达式的比较•1.数值比较•例如,5758结果为True•2.字符串比较•‘ark’‘arc’结果为True,'arC''arc'结果为True•3.日期和时间比较•现在的日期比过去的日期大,现在时间比过去大•4.关系运算符的优先级:关系运算符的优先级比数值运算符优先级低•7.3IN运算符•例如,5IN[2,4,5,6]的结果为TrueCopyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第七章逻辑与关系表达式•7.4使用逻辑表达式•1.逻辑操作符的结果•2.逻辑操作符的优先级(参见下面的表格)•3.练习。新增窗体。定义变量。简单运算。Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第七章逻辑与关系表达式•附:Navision中运算符的优先级类型运算符说明子表达式()[].::子表达式在所有运算符中优先级最高一元+-NOT乘法运算符*/DIVMODAND加法运算符+-ORXOR关系运算符==IN范围..Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第八章If和Exit语句•8.1条件语句和布尔表达式•8.2If语句•1.If-Then语句•IfAmount0then•A•2.If-Then-Else语句•IfQuantity0then•unitprice:=totalprice/quantity•else•unitprice:=0;•8.3Exit语句•3.Exit语句•Ifquantity=0then•exit;•unitprice:=totalprice/quantity•系统执行exit语句后将不再运行trigger中其他的语句•8.4用这些语句执行计算Copyright2002EnterpriseSolutionsGroup(Shanghai)LtdAllRightsReserved第九章复合语句和注释•9.1复合语句和注释:解释相关的概念•9.2复合语句的语法:使用Begin和End•1.复合语句语法:•begin•语句1;•语句2;•end•2.if-then复合语句•ifquantity0thenbegin•unitprice:=
本文标题:Navision-技术开发培训文档2
链接地址:https://www.777doc.com/doc-5514738 .html