【问题标题】:How to use multiple values in when (Evaluate)? - PeopleCode如何在when(Evaluate)中使用多个值? - 人码
【发布时间】:2017-06-23 15:44:18
【问题描述】:

我有以下代码,可以看出,在这两种情况下,我都使用 Section = A。但是,有没有办法检查“何时”中的 1 和 2,以避免更多的代码行?

Evaluate INTERFACE
When "1"
   SECTION = "A";
   Break;
When "2"
   SECTION = "A";
   Break;

非常感谢任何帮助,请记住我还在学习。谢谢! :)

【问题讨论】:

  • 那么当您查看手册,其中记录了Evaluate 语句的语法,您发现了什么?假设您确实查看了手册,发现不能,为什么要在这里问?假设你没有看,这就是为什么你得到很多反对票,因为“这个问题没有显示任何研究工作”

标签: peoplesoft peoplecode


【解决方案1】:

您的语法和Evaluate 语句属于Oracle ERP 中使用的PeopleCode 编程语言PeopleSoft

Evaluate 类似于 switch/case 语句,这里是如何根据您的给定场景在 PeopleCode 中正确使用它的示例。

Evaluate &yourVariable
When = "1"
When = "2"
   Warning "Value is either 1 or 2";
   Break;
When = "3"
   Warning "Value is 3";
   Break;
When = "4"
   Warning "Value is 4";
   Break;
When-Other
   Warning "Unexpected value."
End-Evaluate;

Here是关于PeopleCode评估语句的详细官方文档。

【讨论】:

    【解决方案2】:

    首先:你的代码看起来不像 Java、C 或 Cpp,而且它与 OOP 无关,所以更正标记。

    问题: 在快速搜索 Evaluate-When 之后,它看起来像 COBOL(参见 IBM),具有与众所周知的 switch-case 相同的属性。

    switch-case 中你不能真正拥有ORstatements,但你可以不使用break 为同一个块分配多个值:

    char c = 'a';
    switch(c){
        case 'a':
        case 'A':
            fooA(); //'a' AND 'A' will land here
            break;
        case 'b':
            fooSmallB(); //only 'b' lands here
        case 'B':
            fooB(); //'b' AND 'B' lands here
            break;
        default:
            fooDef(); //Everything that does not hit any case lands here
    }
    

    这模拟了一个 OR 语句。而且是不可能的。

    编辑: 我现在明白了,语言是人员代码。以前从未听说过,但文档显示:Evaluate-When is not much different than Switch-Case

    尽管如此:几乎总是有比 switch-case 更好的可能性,请参阅 Michael here 的第一条评论。

    【讨论】:

    • 显然是peoplecode
    • 谢谢大家 :) 很抱歉这个基本问题。希望我能很快学会,不会为错误的标签而烦恼。再次感谢!
    • 以前从未听说过人员代码。但是阅读docu 几乎与任何其他开关/案例相同......
    猜你喜欢
    • 2020-03-03
    • 2018-02-18
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2015-09-17
    • 2019-10-08
    相关资源
    最近更新 更多