DEF VAR WrkPrmLst AS CHA NO-UNDO INIT "13,17,19,23,29,31,37,41".
DEF VAR WrkPrmNum AS INT NO-UNDO.
DEF VAR WrkPrvYr AS INT NO-UNDO INIT 0.
DEF VAR WrkExcCnt AS INT NO-UNDO INIT 0.
DEF VAR WrkRecCnt AS INT NO-UNDO INIT 0.
DEF VAR WrkDteBgn AS DAT NO-UNDO INIT 01/01/2015.
DEF VAR WrkDteEnd AS DAT NO-UNDO INIT 12/31/2024.
DEF VAR WrkDteCur AS DAT NO-UNDO.
DEF VAR I AS INT NO-UNDO.
DEF VAR J AS INT NO-UNDO.
/*
ASSIGN WrkPrmLst = "7,11,13,17,19,23,29,31".
ASSIGN WrkPrmLst = ""
I = 0.
DO WHILE (I < 8):
ASSIGN J = RANDOM(1, 20).
IF (NOT CAN-DO(WrkPrmLst, STRING(J))) THEN
ASSIGN I = I + 1
WrkPrmLst = WrkPrmLst
+ (IF WrkPrmLst > "" THEN "," ELSE "")
+ STRING(J).
END.
DISPLAY WrkPrmLst FORMAT "X(25)".
*/
DEF TEMP-TABLE Tt1
FIELD Dte AS DAT
FIELD Flg AS LOG EXTENT 8
FIELD Cnt AS INT
INDEX Prm IS PRIMARY Dte.
DO I = 1 TO 8:
ASSIGN WrkPrmNum = INT(ENTRY(I, WrkprmLst))
J = 0.
REPEAT:
ASSIGN J = J + 1
WrkDteCur = WrkDteBgn + (WrkPrmNum * J * 7).
IF (WrkDteCur > WrkDteEnd) THEN
LEAVE.
FIND FIRST Tt1 WHERE Tt1.Dte = WrkDteCur NO-ERROR.
IF (NOT AVAILABLE(Tt1)) THEN
DO:
CREATE Tt1.
ASSIGN Tt1.Dte = WrkDteCur.
END.
ASSIGN Tt1.Flg [I] = TRUE
Tt1.Cnt = Tt1.Cnt + 1.
RELEASE Tt1.
END.
END.
FOR EACH Tt1:
ASSIGN WrkRecCnt = WrkRecCnt + 1.
IF (YEAR(Tt1.Dte) <> WrkPrvYr) THEN
ASSIGN WrkPrvYr = YEAR(Tt1.Dte)
WrkExcCnt = 0.
IF (Tt1.Cnt > 1) THEN
ASSIGN WrkExcCnt = WrkExcCnt + 1.
IF (Tt1.Cnt > 1) THEN
DISPLAY
WrkRecCnt FORMAT "ZZZ,ZZ9" COLUMN-LABEL "RecNum"
WrkExcCnt FORMAT "ZZZ,ZZ9" COLUMN-LABEL "ExcCnt"
Tt1.Dte FORMAT "99/99/99" COLUMN-LABEL "CurDate"
Tt1.Flg [1] FORMAT "Y/N" COLUMN-LABEL "1"
Tt1.Flg [2] FORMAT "Y/N" COLUMN-LABEL "2"
Tt1.Flg [3] FORMAT "Y/N" COLUMN-LABEL "3"
Tt1.Flg [4] FORMAT "Y/N" COLUMN-LABEL "4"
Tt1.Flg [5] FORMAT "Y/N" COLUMN-LABEL "5"
Tt1.Flg [6] FORMAT "Y/N" COLUMN-LABEL "6"
Tt1.Flg [7] FORMAT "Y/N" COLUMN-LABEL "7"
Tt1.Flg [8] FORMAT "Y/N" COLUMN-LABEL "8"
Tt1.Cnt FORMAT "ZZ9" COLUMN-LABEL "Cnt"
WITH FRAME Tt1 DOWN WIDTH 180.
END.