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 |