首页 > 解决方案 > 如何通过减少以下代码来提高流程性能?

问题描述

我使用progress 4GL编写了一个程序。语法是正确的,但不知道如何减少代码..我们是为座位工作的公司,使用progress 4gl..我们有一张名为轮班维护的表,每个小时都有轮班时间。举个例子来解释一下。

DEFINE VARIABLE FistshiftStartHour AS INTEGER NO-UNDO.
DEFINE VARIABLE FistShiftEnddHour AS INTEGER NO-UNDO.
DEFINE VARIABLE SecshiftStartHour AS INTEGER NO-UNDO.
DEFINE VARIABLE SecShiftEnddHour AS INTEGER NO-UNDO.

FIND FIRST shift WHERE shift.shiftsequence = 1 NO-LOCK NO-ERROR.
ASSIGN
        FistshiftStartHour = shift.starthour
        FistShiftEnddHour = shift.endhour.

FIND FIRST shift WHERE shift.shiftsequence = 2 NO-LOCK NO-ERROR.
ASSIGN
        SecshiftStartHour = shift.starthour
        SecShiftEnddHour = shift.endhour.

像这样,我需要为每个班次编写一个查询,并为 21 个班次序列分配两个变量。有没有机会减少这么多查询?(注意 - 我必须为各个变量分配开始和结束时间)。

标签: openedgeprogress-4gl

解决方案


您可以使用数组变量处理移位时间,并在表/临时表中执行循环时分配它:

DEFINE VARIABLE sSeq AS INTEGER EXTENT 21 NO-UNDO. /* start hour */
DEFINE VARIABLE eSeq AS INTEGER EXTENT 21 NO-UNDO. /* end hour */

FOR EACH shift WHERE shift.shiftsequence LE 21 NO-LOCK BY shift.shiftsequence:
    sSeq[shift.shiftsequence] = shift.starthour.
    eSeq[shift.shiftsequence] = shift.endhour.
    DISP sSeq[shift.shiftsequence] eSeq[shift.shiftsequence].
END.

推荐阅读