Как повысить производительность процесса за счет сокращения следующих кодов? - PullRequest
0 голосов
/ 09 декабря 2018

Я написал программу, использующую прогресс 4GL.Синтаксис правильный, но я не знаю, как уменьшить количество кодов. Мы работаем на рабочие места и используем прогресс 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 смены. Есть ли шанс уменьшить количество запросов? (Примечание-я должен назначить начало ивремя окончания отдельных переменных).

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете обрабатывать время сдвига с помощью переменной массива и назначать его при выполнении цикла в вашей таблице / временной таблице:

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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...