Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2016
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/I 9.26 KB | None | 0 0
  1. /*OTHER DECLARATIONS STATEMENTS*/      
  2. DCL ERRORFI FILE SEQUENTIAL;          
  3. DCL 01 EMPL_WRITE,                    
  4.        05 ID_WRITE  CHAR(08),        
  5.        05 FILLER1 CHAR(01),          
  6.        05 REC_WRITE CHAR(02),        
  7.        05 FILLER2 CHAR(01),          
  8.        05 MSG CHAR(121);              
  9.                                        
  10. DCL FOUND_10 CHAR(1) INIT('N');      
  11. DCL FOUND_20 CHAR(1) INIT('N');    
  12. DCL FOUND_20_SALARY_ERROR CHAR(1) INIT('N');  
  13. DCL FOUND_30 CHAR(1) INIT('N');
  14. DCL FOUND_30_VACATION_ERROR CHAR(1) INIT('N');      
  15. DCL FOUND_40_ERROR CHAR(1) INIT('N');
  16. /* Double check if this is right */
  17. DCL COUNT_40 DEC FIXED(3,0) INIT(0);
  18. DCL EMP_ID CHAR(08) INIT('');        
  19. DCL SAVED_ID CHAR(08) INIT('');      
  20. DCL REC CHAR(02);                    
  21. DCL IOEMPN_10 CHAR(200)INIT('');      
  22. DCL IOEMPN_20 CHAR(200)INIT('');      
  23. DCL IOEMPN_30 CHAR(200)INIT('');      
  24. DCL IOEMPN_40 CHAR(200)INIT('');                    
  25. DCL 01 EMPGEN_10 BASED(ADDR(IOEMPN_10))LIKE EMPGEN;
  26. DCL 01 EMPSAL_20 BASED(ADDR(IOEMPN_20))LIKE EMPSAL;
  27. DCL 01 EMPVAC_30 BASED(ADDR(IOEMPN_30))LIKE EMPVAC;
  28. DCL 01 EMPRPT_40 BASED(ADDR(IOEMPN_40))LIKE EMPRPT;
  29.                                                  
  30. OPEN FILE(ERRORFI) OUTPUT;                          
  31. CALL EMPNCSI(EMPN1_INPUT_PARAM,IOEMPN);            
  32. SAVED_ID=EMPGEN.EMP_ID;                              
  33.  
  34. DO WHILE(EMPN1_INPUT.RTC ='');
  35.     EMP_ID=EMPGEN.EMP_ID;      
  36.     REC=EMPGEN.RECCD;          
  37.     IF(EMP_ID = SAVED_ID)      
  38.         THEN                      
  39.         DO;                      
  40.         IF(REC='10')            
  41.             THEN                  
  42.             DO;                  
  43.             IOEMPN_10=IOEMPN;  
  44.             FOUND_10='Y';      
  45.             END;                
  46.         ELSE                  
  47.         IF(REC='20')        
  48.             THEN              
  49.             DO;              
  50.             IOEMPN_20=IOEMPN;
  51.             FOUND_20='Y';
  52.             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)  
  53.                 THEN
  54.                 DO;
  55.                 FOUND_20_SALARY_ERROR='Y';
  56.                 END;
  57.             END;  
  58.         ELSE                                              
  59.         IF(REC='30')                                      
  60.             THEN  
  61.             DO;                                            
  62.             IOEMPN_30=IOEMPN;                            
  63.             FOUND_30='Y';
  64.         IF(EMPVAC.EMP_VAC_ENT<=0 ! EMPVAC.EMP_SCK_ENT<=0)
  65.             THEN
  66.                 DO;
  67.                 FOUND_30_VACATION_ERROR='Y';
  68.                 END;                        
  69.             END;                                          
  70.         ELSE                                            
  71.         IF(REC='40')                                  
  72.             THEN                                        
  73.             DO;                                        
  74.             IOEMPN_40=IOEMPN;                          
  75.            
  76.             /* If count is independent of being valid or not put here COUNT_40=COUNT_40+1; */
  77.  
  78.             IF(EMPRPT.RPT_EMP_LVL >EMPGEN_10.EMP_LVL_ID ! EMPGEN_10.EMP_LVL_ID <4)                
  79.                 THEN                                    
  80.                 DO;    
  81.                 COUNT_40=COUNT_40+1;                        
  82.                 FOUND_40_ERROR='Y';        
  83.                 END;                                      
  84.         ELSE                                      
  85.             DO;                                      
  86.             EMPL_WRITE.MSG='FOUND UNKNOWN ERROR ON';
  87.             EMPL_WRITE.ID_WRITE=EMP_ID;              
  88.             EMPL_WRITE.REC_WRITE=REC;                
  89.             WRITE FILE(ERRORFI) FROM (EMPL_WRITE);  
  90.             END;                        
  91.        
  92.         /* READ NEXT LINE */
  93.         CALL EMPNCSI(EMPN1_INPUT_PARAM,IOEMPN);          
  94.         END;
  95.     ELSE                                            
  96.         DO;    
  97.  
  98.         /* Populate (set) BEFORE calling function to write */
  99.         EMPGEN.EMP_RPT_CT=COUNT_40;
  100.                
  101.         /* Write to files */                          
  102.         CALL OUTPUT_ERRORS(SAVED_ID,FOUND_10, FOUND_20,FOUND_30,FOUND_40_ERROR);    
  103.  
  104.         /* Reset data */
  105.         SAVED_ID=EMPGEN.EMP_ID;                                  
  106.         FOUND_10='N';                                  
  107.         FOUND_20='N';
  108.     FOUND_20_SALARY_ERROR='N';                                  
  109.         FOUND_30='N';
  110.         FOUND_30_VACATION_ERROR='N';                        
  111.         FOUND_40_ERROR='N';
  112.         COUNT_40=0;                          
  113.         IOEMPN_10='';                                  
  114.         IOEMPN_20='';                                  
  115.         IOEMPN_30='';                                  
  116.         IOEMPN_40='';                                  
  117.         END;                                            
  118. END;                                                  
  119.  
  120.          
  121.  
  122.  
  123.  
  124. OUTPUT_ERRORS: PROCEDURE(ID,FOUND_10,FOUND_20,FOUND_30,FOUND_40_ERROR);                                  
  125.     DCL FOUND_10 CHAR(1);                            
  126.     DCL FOUND_20 CHAR(1);                            
  127.     DCL FOUND_30 CHAR(1);                            
  128.     DCL FOUND_40_ERROR CHAR(1);                      
  129.     DCL ID CHAR(08);                                  
  130.                                                        
  131.     IF(FOUND_10='Y' & FOUND_20='Y' & FOUND_20_SALARY_ERROR='N' & FOUND_30='Y' & FOUND_30_VACATION_ERROR='N')    
  132.         THEN                                            
  133.         DO;                                            
  134.         CALL EMPNCSO(EMPN1_OUTPUT_PARAM,IOEMPN_10);    
  135.         CALL EMPNCSO(EMPN1_OUTPUT_PARAM,IOEMPN_20);    
  136.         CALL EMPNCSO(EMPN1_OUTPUT_PARAM,IOEMPN_30);    
  137.         END;                                                                                            
  138.     ELSE                                              
  139.         DO;                                            
  140.         IF(FOUND_10='N')                              
  141.             THEN                                                  
  142.             DO;                                                
  143.             EMPL_WRITE.MSG='ERROR: RECORD 10 IS MISSING ON ID:';
  144.             EMPL_WRITE.ID_WRITE=ID;                            
  145.             EMPL_WRITE.REC_WRITE='10';                          
  146.             WRITE FILE(ERRORFI) FROM (EMPL_WRITE);              
  147.             END;                                                
  148.        
  149.         IF(FOUND_20='N')                                        
  150.             THEN                                                  
  151.             DO;                                                
  152.             EMPL_WRITE.MSG='ERROR: RECORD 20 IS MISSING ON ID:';
  153.             EMPL_WRITE.ID_WRITE=ID;                            
  154.             EMPL_WRITE.REC_WRITE='20';                          
  155.             WRITE FILE(ERRORFI) FROM (EMPL_WRITE);              
  156.             END;
  157.  
  158.         IF(FOUND_20_SALARY_ERROR='Y')                                      
  159.             THEN                                                  
  160.             DO;                                                
  161.             EMPL_WRITE.MSG='ERROR: RECORD 20 HAS ERRORS ON SALARY';
  162.             EMPL_WRITE.ID_WRITE=ID;                            
  163.             EMPL_WRITE.REC_WRITE='20';                          
  164.             WRITE FILE(ERRORFI) FROM (EMPL_WRITE);              
  165.             END;
  166.                                                
  167.         IF(FOUND_30='N')                                            
  168.             THEN                                                      
  169.             DO;                                                    
  170.             EMPL_WRITE.MSG='ERROR: RECORD 30 IS MISSING ON ID:';    
  171.             EMPL_WRITE.ID_WRITE=ID;                                
  172.             EMPL_WRITE.REC_WRITE='30';                              
  173.             WRITE FILE(ERRORFI) FROM (EMPL_WRITE);                  
  174.             END;
  175.  
  176.         IF(FOUND_30_VACATION_ERROR='Y')                                            
  177.             THEN                                                      
  178.             DO;                                                    
  179.             EMPL_WRITE.MSG='ERROR: RECORD 30 HAS ERRORS ON VACATION AND SICK LEAVE ';    
  180.             EMPL_WRITE.ID_WRITE=ID;                                
  181.             EMPL_WRITE.REC_WRITE='30';                              
  182.             WRITE FILE(ERRORFI) FROM (EMPL_WRITE);                  
  183.             END;                                                    
  184.     END;  
  185.  
  186.     IF(FOUND_40_ERROR='Y')
  187.         THEN;
  188.         DO;
  189.         EMPL_WRITE.MSG='ERROR:EMPLOYEE MUST NOT HAVE REPORTEES';                        
  190.         EMPL_WRITE.ID_WRITE=SAVED_ID;
  191.         EMPL_WRITE.REC_WRITE='40';
  192.         WRITE FILE(ERRORFI) FROM (EMPL_WRITE);      
  193.         END;
  194.     ELSE
  195.         CALL EMPNCSO(EMPN1_OUTPUT_PARAM,IOEMPN_40);
  196.  
  197.                            
  198. /*CLOSING FILE STATEMENT*/                
  199. /*  EMPN1_OUTPUT.GEN='CL';                    
  200.     CALL EMPNCSO(EMPN1_OUTPUT_PARAM,IOEMPN); */
  201. END OUTPUT_ERRORS;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement