Если вы хотите отслеживать до 21 последовательности смен.Возможно, вам следует сделать что-то вроде кода ниже.
Прямо сейчас вы просто обновляете sSeq [1] и eSeq [21] для каждой итерации цикла.
Вставьте последовательность сдвига в качестве индекса массива instad:
DEFINE VARIABLE sSeq AS INTEGER EXTENT 21 NO-UNDO. /* start hour */
DEFINE VARIABLE eSeq AS INTEGER EXTENT 21 NO-UNDO. /* end hour */
FOR EACH gdmf_shift WHERE gdmf_shift.shft_sequence LE 21 NO-LOCK BY gdmf_shift.shft_sequence:
sSeq[gdmf_shift.shft_sequence] = gdmf_shift.shft_start_hour.
eSeq[gdmf_shift.shft_sequence] = gdmf_shift.shft_stop_hour.
DISP sSeq[gdmf_shift.shft_sequence] eSeq[gdmf_shift.shft_sequence].
END.
Если вам абсолютно необходимы отдельные переменные вместо экстентов, то это будет намного больше кода и CASE-оператор (также может быть IF), решающий, какую переменную назначать:
DEFINE VARIABLE sSeq1 AS INTEGER NO-UNDO. /* start hour */
DEFINE VARIABLE eSeq1 AS INTEGER NO-UNDO. /* end hour */
DEFINE VARIABLE sSeq2 AS INTEGER NO-UNDO. /* start hour */
DEFINE VARIABLE eSeq2 AS INTEGER NO-UNDO. /* end hour */
/* More variables here... */
DEFINE VARIABLE sSeq21 AS INTEGER NO-UNDO. /* start hour */
DEFINE VARIABLE eSeq21 AS INTEGER NO-UNDO. /* end hour */
FOR EACH gdmf_shift WHERE gdmf_shift.shft_sequence LE 21 NO-LOCK BY gdmf_shift.shft_sequence:
CASE gdmf_shift.shft_sequence:
WHEN 1 THEN DO:
sSeq1 = gdmf_shift.shft_start_hour.
eSeq1 = gdmf_shift.shft_stop_hour.
END.
WHEN 2 THEN DO:
sSeq2 = gdmf_shift.shft_start_hour.
eSeq2 = gdmf_shift.shft_stop_hour.
END.
/* more code here */
WHEN 21 THEN DO:
sSeq21 = gdmf_shift.shft_start_hour.
eSeq21 = gdmf_shift.shft_stop_hour.
END.
END CASE.
END.
Но это будетМНОГО кода.Попробуйте вместо этого использовать что-то вроде временной таблицы, если вам не нравится массив.Если вы называете поля во временной таблице как имена в таблице, вы можете использовать BUFFER-COPY
, иначе вы можете ASSIGN
любое поле.
DEFINE TEMP-TABLE tt NO-UNDO
FIELD shft_sequence LIKE gdmf_shift.shft_sequence
FIELD shft_start_hour LIKE gdmf_shift.s.shft_start_hour
FIELD shft_stop_hour LIKE gdmf_shift.s.shft_stop_hour.
FOR EACH gdmf_shift WHERE gdmf_shift.shft_sequence LE 21 NO-LOCK BY gdmf_shift.shft_sequence:
CREATE tt.
BUFFER-COPY gdmf_shift TO tt.
END.