Previous Topic

Next Topic

Book Contents

Book Index

Example 3

The sample file provided below lists personnel information.

This rule definition determines if employees have exceeded their maximum number of sick or vacation days. This sample rule definition first initializes variables and prints out the header of a report. Then, the name, number of sick days, and the number of vacation days are extracted and validated (by calling another block within the same rule definition). The extracted information is printed, including an analysis of the balancing result.

Figure 298 Rule Definition Process Sample Report – Example 3

----+----1---+----2----+----3---+----4---+----5---+----6----+----7---+----8----+----9---+----0----+----1----+----2

 E M P L O Y E E S     R E P O R T    -----    FOR MANAGEMENT  DEPARTMENT       DATE:  08/08/00

 EMPLOYEE     EMPLOYEE     OFFICE  ANNUAL  SOCIAL        NO. OF      JOB CLASS  UNION   INSURANCE  SICK  VAC

NO.         NAME         NO.    SAL    SECURITY NO.  DEPENDENTS    CODE     DUES               DAYS  DAYS

 --------  --------------  ------  ------  ------------  ----------  ---------  ------  ---------  ----  ----

  64263    A. HERMAN         01    97,000   XXX-YY-ZZZZ      4                  212.00     372.00   04    14

  64535    V. GOLD           06    57,000   XXX-YY-ZZZZ      2                  106.00     252.00   01    05

  65173    S. PATTEL         14    86,500   XXX-YY-ZZZZ      2                  234.00     390.00   02    09

  65225    D. HAMILTON       08    67,500   XXX-YY-ZZZZ      2                  156.00     222.00   01    07

  65229    J. NEWMAN         19    46,500   XXX-YY-ZZZZ      5                  133.00     399.00   00    07

  65253    T. MASUIE         14    39,500   XXX-YY-ZZZZ      3                  214.00     181.00   01    07

  65474    S. SMITH          16    64,500   XXX-YY-ZZZZ      6                  044.00     056.00   00    06

  65551    J. WAYNE          06    55,000   XXX-YY-ZZZZ      6                  151.00     222.00   03    07

  65571    J. TAYLOR         11    29,000   XXX-YY-ZZZZ      2                  156.00     220.00   01    07

  65653    R. JOHNSON        14    26,000   XXX-YY-ZZZZ      3                  119.00     256.00   04    07

  65763    R. BURKE          07    30,500   XXX-YY-ZZZZ      2                  098.00     301.00   01    06

  65774    R. ONYON          08    27,500   XXX-YY-ZZZZ      2                  156.00     222.00   01    07

  65838    G. LEVY           04    29,500   XXX-YY-ZZZZ      2                  065.00     118.00   02    07

  65965    J. WEISSMAN       04    37,500   XXX-YY-ZZZZ      4                  151.00     222.00   05    00

Figure 299 Rule Definition – Example 3

HEADER OWNER 'M18' CREATOR 'M18B' GROUP 'ADMIN'

   DATE '080800' TIME '153005'

   DESC 'VACATIONS/SICK-LEAVES CHECK'

    

/*

 *  INITIALIZE VARIABLES, AND SET REPORT HEADER.

 */

EXECUTE 'INIT'

ON_DATA

   ALWAYS

  DO SET 'COUNTER' EVAL '0'

  DO SET 'UNREASON' EVAL '0'

  DO PRINT DATA ' UNREASONABLE SICK/VACATION DAYS'

  DO PRINT DATA '================================='

  DO PRINT DATA '+--+---------------+------+-----+'

  DO PRINT DATA '|  | NAME          | SICK | VAC |'

  DO PRINT DATA '+--+---------------+------+-----+'

    

/*

 *  EXAMINE THE FILE 'CTB.PROD.EMPREP'

 *  (THE FILE CONTAINS THE REPORT LISTED ABOVE.)

 */

EXECUTE 'INPUT'

ON_FILE 'CTB.PROD.EMPREP'

   /*

* PROCESS EACH LINE THAT HAS '.' IN POSITION 13

*/

     

   WHEN FLINE +1 TLINE +60 FCOL +13 TCOL +14 SEARCH '.'

  /*

   * EXTRACT THE NAME, NUMBER OF VACATION DAYS, AND

   * NUMBER OF SICK-DAYS.

   */

  DO EXTRACT 'NAME' LEVEL +0 LINE 0 COL -2

  DO EXTRACT 'SICK' LEVEL +0 LINE 0 COL 87

  DO EXTRACT 'VAC' LEVEL +0 LINE 0 COL 93

  /*

   * CALL ANOTHER BLOCK TO CHECK THE VALIDITY OF THE DATA.

   */

  DO BLOCK 'CHECK' PARAMS 'NAME,SICK,VAC'

    

/*

 *  PRINT END OF REPORT, CHECK RESULTS AND FINISH.

 */

EXECUTE 'FIN'

ON_DATA

   ALWAYS

  DO PRINT DATA '+--+---------------+------+-----+'

  DO PRINT DATA 'CHECKED %%COUNTER USERS, FOUND %%UNREASON

        UNREASONABLE DAYS'

  DO REMARK DATA 'CHECKED %%COUNTER USERS, FOUND %%UNREASON

        UNREASONABLE DAYS'

   IF 'UNREASON > 5'

  DO TERMINATE RESULT NOTOK CODE 2000

   IF 'UNREASON > 3'

  DO TERMINATE RESULT TOLER CODE 4

   ELSE

  DO TERMINATE RESULT OK

    

/*

 *  SPECIAL BLOCK TO CHECK DATA (CALLED PREVIOUSLY)

 */

EXECUTE 'CHECK'

ON_DATA

   ALWAYS

  DO SET 'COUNTER' EVAL 'COUNTER+1'

   IF 'BARG02 > 90 | BARG03 > 30'

  DO PRINT DATA '|  |%%BARG01|  %%BARG02  |  %%BARG03 |'

  DO SET 'UNREASON' EVAL 'UNREASON+1'

Parent Topic

Rule Definition Process Examples