Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*OTHER DECLARATIONS STATEMENTS*/
- DCL ERRORFI FILE SEQUENTIAL;
- DCL 01 EMPL_WRITE,
- 05 ID_WRITE CHAR(08),
- 05 FILLER1 CHAR(01),
- 05 REC_WRITE CHAR(02),
- 05 FILLER2 CHAR(01),
- 05 MSG CHAR(121);
- DCL FOUND_10 CHAR(1) INIT('N');
- DCL FOUND_20 CHAR(1) INIT('N');
- DCL FOUND_20_SALARY_ERROR CHAR(1) INIT('N');
- DCL FOUND_30 CHAR(1) INIT('N');
- DCL FOUND_30_VACATION_ERROR CHAR(1) INIT('N');
- DCL FOUND_40_ERROR CHAR(1) INIT('N');
- /* Double check if this is right */
- DCL COUNT_40 DEC FIXED(3,0) INIT(0);
- DCL EMP_ID CHAR(08) INIT('');
- DCL SAVED_ID CHAR(08) INIT('');
- DCL REC CHAR(02);
- DCL IOEMPN_10 CHAR(200)INIT('');
- DCL IOEMPN_20 CHAR(200)INIT('');
- DCL IOEMPN_30 CHAR(200)INIT('');
- DCL IOEMPN_40 CHAR(200)INIT('');
- DCL 01 EMPGEN_10 BASED(ADDR(IOEMPN_10))LIKE EMPGEN;
- DCL 01 EMPSAL_20 BASED(ADDR(IOEMPN_20))LIKE EMPSAL;
- DCL 01 EMPVAC_30 BASED(ADDR(IOEMPN_30))LIKE EMPVAC;
- DCL 01 EMPRPT_40 BASED(ADDR(IOEMPN_40))LIKE EMPRPT;
- OPEN FILE(ERRORFI) OUTPUT;
- CALL EMPNCSI(EMPN1_INPUT_PARAM,IOEMPN);
- SAVED_ID=EMPGEN.EMP_ID;
- DO WHILE(EMPN1_INPUT.RTC ='');
- EMP_ID=EMPGEN.EMP_ID;
- REC=EMPGEN.RECCD;
- IF(EMP_ID = SAVED_ID)
- THEN
- DO;
- IF(REC='10')
- THEN
- DO;
- IOEMPN_10=IOEMPN;
- FOUND_10='Y';
- END;
- ELSE
- IF(REC='20')
- THEN
- DO;
- IOEMPN_20=IOEMPN;
- FOUND_20='Y';
- IF(EMPSAL.EMP_BAS_SAL <=0 ! EMPSAL.EMP_HRA <0 ! EMPSAL.EMP_MED_ALL<0 ! EMPSAL.EMP_CNV_ALL<0 !EMPSAL.EMP_ADL_ALL<0)
- THEN
- DO;
- FOUND_20_SALARY_ERROR='Y';
- END;
- END;
- ELSE
- IF(REC='30')
- THEN
- DO;
- IOEMPN_30=IOEMPN;
- FOUND_30='Y';
- IF(EMPVAC.EMP_VAC_ENT<=0 ! EMPVAC.EMP_SCK_ENT<=0)
- THEN
- DO;
- FOUND_30_VACATION_ERROR='Y';
- END;
- END;
- ELSE
- IF(REC='40')
- THEN
- DO;
- IOEMPN_40=IOEMPN;
- /* If count is independent of being valid or not put here COUNT_40=COUNT_40+1; */
- IF(EMPRPT.RPT_EMP_LVL >EMPGEN_10.EMP_LVL_ID ! EMPGEN_10.EMP_LVL_ID <4)
- THEN
- DO;
- COUNT_40=COUNT_40+1;
- FOUND_40_ERROR='Y';
- END;
- ELSE
- DO;
- EMPL_WRITE.MSG='FOUND UNKNOWN ERROR ON';
- EMPL_WRITE.ID_WRITE=EMP_ID;
- EMPL_WRITE.REC_WRITE=REC;
- WRITE FILE(ERRORFI) FROM (EMPL_WRITE);
- END;
- /* READ NEXT LINE */
- CALL EMPNCSI(EMPN1_INPUT_PARAM,IOEMPN);
- END;
- ELSE
- DO;
- /* Populate (set) BEFORE calling function to write */
- EMPGEN.EMP_RPT_CT=COUNT_40;
- /* Write to files */
- CALL OUTPUT_ERRORS(SAVED_ID,FOUND_10, FOUND_20,FOUND_30,FOUND_40_ERROR);
- /* Reset data */
- SAVED_ID=EMPGEN.EMP_ID;
- FOUND_10='N';
- FOUND_20='N';
- FOUND_20_SALARY_ERROR='N';
- FOUND_30='N';
- FOUND_30_VACATION_ERROR='N';
- FOUND_40_ERROR='N';
- COUNT_40=0;
- IOEMPN_10='';
- IOEMPN_20='';
- IOEMPN_30='';
- IOEMPN_40='';
- END;
- END;
- OUTPUT_ERRORS: PROCEDURE(ID,FOUND_10,FOUND_20,FOUND_30,FOUND_40_ERROR);
- DCL FOUND_10 CHAR(1);
- DCL FOUND_20 CHAR(1);
- DCL FOUND_30 CHAR(1);
- DCL FOUND_40_ERROR CHAR(1);
- DCL ID CHAR(08);
- IF(FOUND_10='Y' & FOUND_20='Y' & FOUND_20_SALARY_ERROR='N' & FOUND_30='Y' & FOUND_30_VACATION_ERROR='N')
- THEN
- DO;
- CALL EMPNCSO(EMPN1_OUTPUT_PARAM,IOEMPN_10);
- CALL EMPNCSO(EMPN1_OUTPUT_PARAM,IOEMPN_20);
- CALL EMPNCSO(EMPN1_OUTPUT_PARAM,IOEMPN_30);
- END;
- ELSE
- DO;
- IF(FOUND_10='N')
- THEN
- DO;
- EMPL_WRITE.MSG='ERROR: RECORD 10 IS MISSING ON ID:';
- EMPL_WRITE.ID_WRITE=ID;
- EMPL_WRITE.REC_WRITE='10';
- WRITE FILE(ERRORFI) FROM (EMPL_WRITE);
- END;
- IF(FOUND_20='N')
- THEN
- DO;
- EMPL_WRITE.MSG='ERROR: RECORD 20 IS MISSING ON ID:';
- EMPL_WRITE.ID_WRITE=ID;
- EMPL_WRITE.REC_WRITE='20';
- WRITE FILE(ERRORFI) FROM (EMPL_WRITE);
- END;
- IF(FOUND_20_SALARY_ERROR='Y')
- THEN
- DO;
- EMPL_WRITE.MSG='ERROR: RECORD 20 HAS ERRORS ON SALARY';
- EMPL_WRITE.ID_WRITE=ID;
- EMPL_WRITE.REC_WRITE='20';
- WRITE FILE(ERRORFI) FROM (EMPL_WRITE);
- END;
- IF(FOUND_30='N')
- THEN
- DO;
- EMPL_WRITE.MSG='ERROR: RECORD 30 IS MISSING ON ID:';
- EMPL_WRITE.ID_WRITE=ID;
- EMPL_WRITE.REC_WRITE='30';
- WRITE FILE(ERRORFI) FROM (EMPL_WRITE);
- END;
- IF(FOUND_30_VACATION_ERROR='Y')
- THEN
- DO;
- EMPL_WRITE.MSG='ERROR: RECORD 30 HAS ERRORS ON VACATION AND SICK LEAVE ';
- EMPL_WRITE.ID_WRITE=ID;
- EMPL_WRITE.REC_WRITE='30';
- WRITE FILE(ERRORFI) FROM (EMPL_WRITE);
- END;
- END;
- IF(FOUND_40_ERROR='Y')
- THEN;
- DO;
- EMPL_WRITE.MSG='ERROR:EMPLOYEE MUST NOT HAVE REPORTEES';
- EMPL_WRITE.ID_WRITE=SAVED_ID;
- EMPL_WRITE.REC_WRITE='40';
- WRITE FILE(ERRORFI) FROM (EMPL_WRITE);
- END;
- ELSE
- CALL EMPNCSO(EMPN1_OUTPUT_PARAM,IOEMPN_40);
- /*CLOSING FILE STATEMENT*/
- /* EMPN1_OUTPUT.GEN='CL';
- CALL EMPNCSO(EMPN1_OUTPUT_PARAM,IOEMPN); */
- END OUTPUT_ERRORS;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement