All pastes #2979494 Raw Edit

Miscellany

public unlisted text v1 · immutable
#2979494 ·published 2015-04-23 14:43 UTC
rendered paste body
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.