Previous Topic: Step 4: Define the DialogsNext Topic: Dialog DEPTHDR


Dialog REPTEDIT

Dialog REPTEDIT executes at the beginning of the application. REPTEDIT reads database records required for the report, sets up report lines, and passes control to other dialogs, as required by the application. REPTEDIT also writes department and report total lines to the report file.

The dialog definition for REPTEDIT is illustrated below:

The premap process and mapout operation are shown below.

Dialog DEPTEDIT: Premap Process

!**********************************************************************
!*EMPL-REPT-EDIT                                                      *
!**********************************************************************
IF FIRST-TIME
  DO.
    MOVE DATE TO WK-DATE-HOLD.          !*SET UP CURRENT DATE
    CALL CVRTDATE.
    MOVE WK-DATE-WORK TO WK-CURR-DATE.
    CALL PAGHDR.                        !*SET UP FIRST PAGE.
    OBTAIN FIRST DEPARTMENT WITHIN ORG-DEMO-REGION.
  END.
ELSE
  OBTAIN NEXT DEPARTMENT WITHIN ORG-DEMO-REGION.
IF DB-ANY-ERROR
  DO.
!
!*************************************************
!*-SET UP GRAND TOTAL EMPLOYEE COUNT LINE TO LOOK*
!* AS FOLLOWS:                                   *
!    TOTAL EMPLOYEES ALL DEPARTMENTS: ZZZ9       *
!*************************************************
    MOVE SPACES TO CENTER.
    MOVE INSERT(CENTER,'TOTAL EMPLOYEES ALL DEPARTMENTS:  ',68)
      TO CENTER.
    MOVE WK-TOT-EE-COUNT TO WK-DEPT-EE-COUNT.
    CALL TOTEDIT.
    WRITE TO LOG MSG TEXT 'END OF EMPLOYEE REPORT RUN'.
    WRITE TRANSACTION RETURN.           !*LAST TOTAL LINE AND LEAVE APPL
  END.
!
!
MOVE DEPT-ID-0410 TO WK-DEPT-PRINT.     !*SET UP CURRENT DEPARTMENT ID
IF WK-LINE-NBR GE 52                    !*CHECK FOR PAGE BREAK ...
  CALL PAGHDR.                          !*... AND START NEW PAGE IF NEEDED
LINK NOSAVE TO 'DEPTHDR'.               !*PUT OUT DEPARTMENT HEADER
LINK NOSAVE TO 'COLMHDR'.               !*PUT OUT COLUMN HEADER
MOVE '0' TO DTL-CTRL-CHAR.              !*DOUBLE SPACE NEXT DETAIL
OBTAIN FIRST EMPLOYEE WITHIN DEPT-EMPLOYEE.
!
WHILE NOT DB-END-OF-SET
  REPEAT.
    MOVE EMP-ID-0415 TO DTL-EMP-ID.     !*EDIT ONE EMPLOYEE ... DETAIL LINE
    MOVE EMP-LAST-NAME-0415 TO DTL-LAST-NAME.
    MOVE EMP-FIRST-NAME-0415 TO DTL-FIRST-NAME.
    MOVE 'UNK' TO DTL-STAT-CODE.
    IF ACTIVE-0415
      MOVE 'ACT' TO DTL-STAT-CODE.
    IF ST-DISABIL-0415
      MOVE 'STD' TO DTL-STAT-CODE.
    IF LT-DISABIL-0415
      MOVE 'LTD' TO DTL-STAT-CODE.
    IF LEAVE-OF-ABSENCE-0415
      MOVE 'LOA' TO DTL-STAT-CODE.
    IF TERMINATED-0415
      MOVE 'TRM' TO DTL-STAT-CODE.
    MOVE SS-NUMBER-0415 TO DTL-SS-NBR.
    MOVE START-DATE-0415 TO WK-DATE-HOLD.
    CALL CVRTDATE.
    MOVE WK-DATE-WORK TO DTL-START-DATE.
    MOVE TERMINATION-DATE-0415 TO WK-DATE-HOLD.
    CALL CVRTDATE.
    MOVE WK-DATE-WORK TO DTL-TERM-DATE.
    IF WK-LINE-NBR GE 58                !*PAGE BREAK?
      DO.
        CALL PAGHDR.                    !*PUT OUT PAGE HEADERS
        LINK NOSAVE TO 'COLMHDR'.       !*AND COLUMN HEADER
        MOVE '0' TO DTL-CTRL-CHAR.      !*DOUBLE SPACE NEXT DETAIL
      END.
    LINK NOSAVE TO 'DLINEOUT'.          !*PUT OUT A DETAIL LINE
    ADD 1 TO WK-DEPT-EE-COUNT.          !*PLUS 1 TO EMPLOYEE COUNT
    MOVE SPACE TO DTL-CTRL-CHAR.        !*SINGLE SPACE NEXT DETAIL
    OBTAIN NEXT EMPLOYEE WITHIN DEPT-EMPLOYEE.
  END.
!
!
!*************************************************
!*-SET UP DEPARTMENT TOTAL EMPLOYEE COUNT LINE TO*
!* LOOK AS FOLLOWS:                              *
!    DEPARTMENT XXXX TOTAL EMPLOYEES: ZZZ9       *
!*************************************************
MOVE CONCATENATE('DEPARTMENT ',WK-DEPT-PRINT,' TOTAL EMPLOYEES:')
  TO WK-HDG.
MOVE SPACES TO CENTER.
MOVE INSERT(CENTER,SUBSTRING(WK-HDG,1,32),68) TO CENTER.
CALL TOTEDIT.
ADD WK-DEPT-EE-COUNT TO WK-TOT-EE-COUNT.!*ROLL DEPT INTO GRAND TOTAL
MOVE 0 TO WK-DEPT-EE-COUNT.             !*INIT DEPT TOTAL
ADD 2 TO WK-LINE-NBR.                   !*INCREASE LINE COUNT
WRITE TRANSACTION CONTINUE.             !*OUTPUT DEPT TOTAL LINE
!
!
!*************************************************
!*SUBROUTINE TO EDIT AN EMPLOYEE COUNT TOTAL LINE*
!*************************************************
DEFINE TOTEDIT.

  MOVE LEFT-JUSTIFY(WK-DEPT-EE-COUNT) TO RIGHT.
  MOVE SPACES TO LEFT.
  MOVE '0' TO CTRL-CHAR.                !*DOUBLE SPACE IT
  GOBACK.
!
!
!*************************************************
!*SUBROUTINE TO PUT OUT PAGE HEADER LINES        *
!*************************************************
DEFINE PAGHDR.

  MOVE 0 TO WK-LINE-NBR.                !*RESET LINE COUNTER
  ADD 1 TO WK-PAGE-NBR.                 !*INCREASE PAGE NUMBER
  MOVE WK-PAGE-NBR TO WK-PAGE-PRINT.    !*SET IT UP TO PRINT
  MOVE '1' TO CTRL-CHAR.                !*NEW PAGE
  MOVE ' FCI0001' TO LEFT.              !*REPORT ID
  MOVE 'FICTIONAL COMPANY, INC. '       !*COMPANY NAME
    TO WK-HDG.
  CALL CENTJUST.                        !*GO CENTER IT
  MOVE '   DATE    PAGE' TO RIGHT.      !*DATE/PAGE HEADERS
  LINK NOSAVE TO 'HDRLINE'.             !*OUTPUT 1ST HEADER LINE
  MOVE SPACES TO CTRL-CHAR.             !*SINGLE SPACE
  MOVE SPACES TO LEFT.
  MOVE 'EMPLOYEE LISTING BY DEPARTMENT' !*REPORT TITLE
    TO WK-HDG.
  CALL CENTJUST.                        !*GO CENTER IT
  MOVE CONCATENATE(' ',WK-CURR-DATE,'  ',WK-PAGE-PRINT) TO RIGHT.
  LINK NOSAVE TO 'HDRLINE'.
  GOBACK.
!
!
!*************************************************
!*SUBROUTINE TO CENTER JUSTIFY HEADER TITLES     *
!*************************************************
DEFINE CENTJUST.

  MOVE STRING-LENGTH(EXTRACE(WK-HDG)) TO WK-LENGTH.
  COMPUTE WK-START-POS TRUNCATED = ((100 - WK-LENGTH) / 2 + 1.
  MOVE SPACES TO CENTER.
  MOVE INSERT(CENTER,EXTRACT(WK-HDG),WK-START-POS) TO CENTER.
  GOBACK.
!
!
!*************************************************
!*SUBROUTINE TO CONVERT A DATE FROM YYMMDD TO    *
!*MM/DD/YY                                       *
!*************************************************
DEFINE CVRTDATE.

  MOVE SUBSTRING(WK-DATE-X,3,2) TO WK-MO.
  MOVE SUBSTRING(WK-DATE-X,5,2) TO WK-DAY.
  MOVE SUBSTRING(WK-DATE-X,1,2) TO WK-YR.
  GOBACK.

Dialog REPTEDIT: Mapout Operation

Internal field                  External field

CTRL-CHAR......................>CTRL-CHAR
LEFT...........................>LEFT
CENTER.........................>CENTER
RIGHT..........................>RIGHT