peoplesoft笔记

PeopleCode 语言结构

本主题假定您熟悉一种编程语言,例如 C、Visual Basic 或 Java。

在其基础上,PeopleCode 语法类似于其他编程语言。但是,PeopleCode 语言的某些方面与 PeopleTools 环境特别相关。例如,定义名称引用使您能够在不使用硬编码字符串文字的情况下引用 PeopleTools 定义,例如记录定义或页面。其他语言特性,如 PeopleCode 数据类型和元字符串,反映了 PeopleTools 和 SQL 的密切交互。PeopleCode 中的点符号、类和方法类似于其他面向对象的语言,如 Java。

数据类型

常规数据类型包括数字、日期、字符串。将它们用于基本计算。对象数据类型从 PeopleTools 类实例化对象。在文档讨论使用该数据类型的 PeopleCode 的地方演示了每种数据类型的适当使用。

在使用变量之前声明变量。

本节讨论:

  • 常规数据类型。
  • 对象数据类型。

常规数据类型

PeopleCode 包括这些常规数据类型:

  • any

    当变量和函数返回值声明为 any 时,数据类型是不确定的,使 PeopleTools 能够根据上下文确定适当的值类型。默认情况下,未声明的局部变量是 any。

  • boolean

  • date

  • datetime

  • float

  • integer

    **注意:**只有当性能分析表明提高的速度是有用的并且应用程序分析表明不同的表示不会影响计算结果时,才应使用浮点数和整数数据类型而不是数字。

  • number

  • string

  • time

浮点型、整数和数字类型的注意事项

Integer 类型是一个表示为 32 位有符号二进制补码的数字,因此它的范围是 -2,147,483,648 到 2,147,483,647。

Float 类型是使用机器浮点二进制小数点(双精度)表示法表示的数字。这种浮点二进制表示不适用于涉及十进制小数的精确计算;特别是涉及金钱的计算。例如,由于十分之一(1/10 或 .1)不能用浮点二进制小数点精确表示,浮点二进制小数点和 0.10 + .10 不等于 .20。

Number 类型的大小限制为 34 位,不包括小数点,小数点右侧最多 32 位。由于 Number 类型是浮点小数点表示,因此它是涉及货币计算的适当数据类型。

如果操作数都是整数且目标是整数,则操作(除除法外)使用整数算术完成,即使变量被声明为 Number 类型。如果以下条件之一为真,则目的地被视为整数:

  • 目标是对整数变量或参数的赋值。
  • 目标是数组下标。
  • 目标是比较的右侧操作数,左侧操作数是整数。
  • 目标是一个evaluate 语句的when-expression 部分,并且在evaluate 语句开始处计算的表达式是一个整数。
  • 目标是 for 循环的初始值、限制值或步长表达式,而 for 循环的控制变量是整数。

除法(/ 运算符)永远不会使用整数算术来执行。它始终使用浮点小数点算术执行,即使结果变量被声明为 Integer 类型。

请按照以下建议为数字分配类型:

  • 对大多数应用程序数据值使用数字。

  • 在计算项目(例如行集中的行)时使用 Integer。

  • 仅在您调整代码以提高性能时(在它已经工作之后)才使用 Float。

    此外,仅当您确定由此导致的精度损失不会影响应用程序并且计算速度的增加对事务产生影响时,才应使用 Float 类型。一般来说,很少有应用程序应该使用 Float 类型。

对象数据类型

对于 PeopleTools 中的大多数类,您需要相应的数据类型来实例化该类中的对象。

请参阅类和对象

PeopleCode 包括这些内置的组件缓冲区访问类型:

  • Field
  • Record
  • Row
  • Rowset

PeopleCode 还包括这些内置的显示数据类型:

  • AnalyticGrid
  • Chart
  • Gantt
  • Grid
  • GridColumn
  • OrgChart
  • Page
  • RatingBoxChart

PeopleCode 还包括这些内置的 Internet 脚本数据类型:

  • Cookie
  • Request
  • Response

PeopleCode 包括许多杂项数据类型,例如,数组、图表、异常、文件、消息、XmlDoc 等等。

API 对象类型

将此数据类型用于任何 ApiObject,例如会话对象、树对象、组件接口、门户注册表等。

以下 ApiObject 数据类型对象可以声明为 Global 类型:

  • 会议
  • PSMessages 集合
  • PS消息
  • 所有树类(树、树结构、节点、级别等)
  • 所有查询类

所有其他 ApiObject 数据类型对象(例如所有 PortalRegistry 类)必须声明为 Local。

注释

使用注释来解释代码的作用,最好使用任何阅读您程序的人都能理解的语言。注释还使您能够区分随产品提供的 PeopleCode 和您添加或更改的 PeopleCode。这种区分有助于您分析调试和升级。

**注意:**使用注释放置唯一标识符,标记您对 PeopleSoft 应用程序所做的任何更改或增强。此标记使您可以搜索所做的所有更改,这在升级数据库时特别有用。

您可以通过以下方式将注释插入 PeopleCode:

  • 您可以使用**/*开头和*/**插入跨多行的 C 样式注释。

  • 您可以使用Rem(备注)语句进行注释。

    在 Rem 注释的末尾放置一个分号。如果不这样做,直到下一条语句结束的所有内容都被视为注释的一部分。

  • 您可以使用开头的**<*和结尾的*>**注释代码块和嵌套的 C 样式注释。

    使用这种类型的注释将一组注释包含在另一组注释中。当您测试代码并想要注释掉已经包含注释的部分时,您通常会使用它。

**警告!在应用程序类中,您将看到/+ +/**样式注释的使用。 *不要在 PeopleCode 程序中使用这些。*这些注释由编译器生成。如果您使用它们,系统会在您下次验证、编译或保存 PeopleCode 时删除它们。它们用于提供有关应用程序类方法和属性的签名信息,并且每次编译器编译您的应用程序类 PeopleCode 时都会重新生成它们。相反,请使用上面列出的标准评论机制。

**注意:**注释文本最多不能超过 16383 个字符。

以下代码示例显示了注释格式:

<* this program is no longer valid commenting out 
entire thing 

Rem This is an example of commenting PeopleCode; 
/* ----- Logic for Compensation Change ----- */ 
/* Recalculate compensation change for next row.  
Next row is based on prior value of EFFDT.  */ 

calc_next_compchg(&OLDDT, EFFSEQ, 0); 

/* Recalculate compensation change for current row and next row.  
Next row is based on new value of EFFDT.  */ 

calc_comp_change(EFFDT, EFFSEQ, COMP_FREQUENCY, COMPRATE, 
CHANGE_AMT, CHANGE_PCT); 

calc_next_compchg(EFFDT, EFFSEQ, 0); 

*>

注意: <* 和 *> 注释标记之间的所有文本都会被扫描。使用这种类型的注释时,您可能会收到针对某些情况的错误消息,例如引号不匹配。

声明

语句可以是声明、赋值、程序构造(例如 Break 语句或条件循环)或子例程调用。

本节讨论:

  • 分隔符。
  • 赋值语句。
  • 语言结构。
  • 分支语句。
  • 条件循环。

展开所有部分

分离器

PeopleCode 语句通常以分号结尾。PeopleCode 语言接受分号,即使它们不是必需的,例如在 If 语句中完成的最后一个语句之后。此功能使您能够在每个语句后始终添加分号。

多余的空格被忽略。当您保存代码时,它们会被 PeopleCode 编辑器删除。

赋值语句

赋值语句是 PeopleCode 中最基本的语句类型。它由等号和左边的变量名和右边的表达式组成:

variableName = expression;

计算右边的表达式,并将结果放在左边命名的变量中。根据所涉及的数据类型,赋值通过值或引用传递。

按值分配

在大多数类型的赋值中,右侧表达式的结果作为新创建的值分配给变量,位于变量自己分配的内存区域中。对该变量值的后续更改不会影响任何其他数据。

参考赋值

当赋值语句的两边都是对象变量时,赋值的结果不是在唯一的内存位置创建对象的副本并赋值给变量。相反,变量指向对象的内存位置。附加变量可以指向相同的对象位置。

例如,&AN 和 &AN2 都是 Number 类型的数组。分配和AN2到与AN并没有AN2的&副本分配到与AN。两个数组对象都指向内存中的相同信息。

Local array of number &AN, &AN2; 
Local number &NUM; 
 
&AN = CreateArray(100, 200, 300); 
&AN2 = &AN; 
&NUM = &AN[1];

在代码示例中,&AN2 和 &AN 指向同一个对象:三个数字的数组。如果您将 &AN[2] 的值更改为 500,然后引用 &AN2[2] 的值,您将得到 500,而不是 300。另一方面,将 &NUM 分配给 &AN (100) 中的第一个元素是不是对象分配。它是按值赋值。如果将 &AN[1] 更改为 500,则 &NUM 仍为 200。

**注意:**在 PeopleCode 中,等号可以用作赋值运算符或比较运算符,具体取决于上下文。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值