DataMuseum.dk

Presents historical artifacts from the history of:

Q1 computer

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Q1 computer

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦4aedd4039⟧ Q1_Text, reclen=79

    Length: 39342 (0x99ae)
    Types: Q1_Text, reclen=79
    Notes: q1file
    Names: »RPTPGM_S«

Derivation

└─⟦415b26bc8⟧ Bits:30008568 DDMQ1-0003_Source_For_Q1_Payroll_Package_Diskette_1_1
    └─⟦this⟧ »RPTPGM_S« 

Text

/* RPTPGM - Payroll Reports Program - Source : May 10th 1978 */                
                                                                               
DCL 1 D_DATE,                                                                  
      2 MONTH FIXED(2),                                                        
      2 DAY   FIXED(2),                                                        
      2 YEAR  FIXED(2);                                                        
                                                                               
DCL E_21      FIXED(11,2);                                                     
DCL E_22      FIXED(11,2);                                                     
                                                                               
DCL PAGE                        FIXED(1)       INIT(1);                        
DCL ANS                         CHAR(1);                                       
DCL ANS2                        CHAR(2);                                       
DCL ANS3                        CHAR(3);                                       
DCL ANS4                        CHAR(4);                                       
DCL ANS5                        CHAR(5);                                       
DCL ANS6                        CHAR(6);                                       
DCL ANS7                        CHAR(7);                                       
DCL ANS8                        CHAR(8);                                       
DCL ANS9                        CHAR(9);                                       
DCL ANS10                       CHAR(10);                                      
DCL W_Q(5)                      CHAR(6)                                        
                               INIT('First','Second','Third','Fourth','WHICH');
DCL RPTFILE FILE;                                                              
DCL 1 M_F_REC,                               /* # of MALES & FEMALES        */ 
      2 R_MF_RECNO              CHAR(1)      INIT('S'),                        
      2 STATE_M(20)             BINARY,      /* NUMBER of MALES by STATE    */ 
      2 STATE_F(20)             BINARY,      /* NUMBER of FEMALES by STATE  */ 
      2 DEPT_M(29)              BINARY,      /* NUMBER of MALES by DEPT     */ 
      2 DEPT_F(29)              BINARY,      /* NUMBER of FEMALES by DEPT   */ 
      2 TOTAL_MALES             FIXED(7)     INIT(0),                          
      2 TOTAL_FEMALES           FIXED(7)     INIT(0),                          
      2 CUSTOMER_NAME           CHAR(15)     INIT('CUSTOM ALLOY CO'),          
      2 T_CITY_3(20)            CHAR(3),     /* Balance of CITY Tax Name    */ 
      2 M_F_FILLER              CHAR(20)     INIT(' ');                        
                                                                               
DCL 1 R_REC1(3),                                                               
      2 R_1_RECNO               FIXED(1),                                      
      2 T_SUI_OR_FICA(20)       FIXED(13,2), /* TOTAL S/F by FD/STATE/CITY  */ 
      2 T_DEDUCTIONS(8)         FIXED(13,2), /* TOTAL per DEDUCTION         */ 
      2 T_WHICH_DDNS(8)         CHAR(10),    /* ARRAY of DEDUCTION NAMES    */ 
      2 T_ALL_DDNS              FIXED(13,2), /* TOTAL of All DEDUCTIONS     */ 
      2 T_FUTA                  FIXED(13,2), /* Total Wages > FUTA Base Amt */ 
      2 T_1_FILLER              CHAR(9);                                       
                                                                               
DCL 1 R_REC4(3),                                                               
      2 R_4_RECNO               FIXED(1),                                      
      2 T_INCOME_TAX(20)        FIXED(13,2), /* TAX TOTALS by FD/STATE/CITY */ 
      2 T_TAXNAME(20)           CHAR(2),     /* T_TAXNAME(1) = 'NI' Means   */ 
      2 T_TAX_TYPE(20)          CHAR(1),     /* This Array Not Yet Initlzed */ 
      2 T_CITY_2(20)            CHAR(2),     /* 1st 3 Char Of City Tax Name */ 
      2 T_TRANS_COMMUTER(20)    CHAR(1),     /* A '*' HERE Indicates that   */ 
                                             /* Income Tax in Same Index    */ 
                                             /* In array Above Represents   */ 
                                             /* A Trans/Commuter Tax Amount */ 
      2 T_NET_PAY               FIXED(13,2), /* 'CASH' Amt on D-Journal Rpt */ 
      2 T_GRAND_TOTAL           FIXED(13,2), /* This - T_FUTA = FUTA Taxabl */ 
      2 T_SUMKEY                FIXED(1),    /* 0 - In CURRENT Values Means */ 
                                             /* Pgm was Called fm PAYPGM_B  */ 
                                             /* & so QTD/YTD Nd 2 B Updated */ 
      2 T_DATE                  CHAR(8),     /* Holds LAST-PAY Date         */ 
      2 T_ALL_DPTS              FIXED(13,2), /* Total of All Departments    */ 
      2 T_4_FILLER              CHAR(9);                                       
                                                                               
DCL 1 R_REC7(3),                                                               
      2 R_7_RECNO               FIXED(1),                                      
      2 T_DEPARTMENT(29)        FIXED(13,2), /* TOTALS by DEPARTMENT        */ 
      2 T_DEPT_NO(29)           FIXED(3),    /* DEPT #s Corresponding To    */ 
                                             /* Above Array                 */ 
      2 T_7_FILLER              CHAR(9);                                       
                                                                               
DCL 1 REC1,                                                                    
      2 R11                     FIXED(1),                                      
      2 R12(20)                 FIXED(13,2),                                   
      2 R13(8)                  FIXED(13,2),                                   
      2 R14(8)                  CHAR(10),                                      
      2 R15                     FIXED(13,2)    INIT(0),                        
      2 R16                     FIXED(13,2)    INIT(0),                        
      2 R17                     CHAR(9)        INIT('RECORDS 1');              
                                                                               
DCL 1 REC2,                                                                    
      2 R21                     FIXED(1),                                      
      2 R22(20)                 FIXED(13,2),                                   
      2 R23(20)                 CHAR(2),                                       
      2 R24(20)                 CHAR(1),                                       
      2 R25(20)                 CHAR(2),                                       
      2 R26(20)                 CHAR(1),                                       
      2 R27                     FIXED(13,2)    INIT(0),                        
      2 R28                     FIXED(13,2)    INIT(0),                        
      2 R29                     FIXED(1)       INIT(5),                        
      2 R2A                     CHAR(8)        INIT('00/00/00'),               
      2 R2B                     FIXED(13,2)    INIT(0),                        
      2 R2C                     CHAR(9)        INIT('RECORDS 4');              
                                                                               
DCL 1 REC3,                                                                    
      2 R31                     FIXED(1),                                      
      2 R32(29)                 FIXED(13,2),                                   
      2 R33(29)                 FIXED(3),                                      
      2 R34                     CHAR(9)        INIT('RECORDS 7');              
                                                                               
/* DECLARES for DEDUCTION-REPORT : Generated at Payroll 05/01/78 */            
                                                                               
DCL EMPLOYEE FILE;                                                             
DCL DEDUCTNS FILE;                                                             
                                                                               
DCL 1 DEDCTION(8),                                                             
    2 DEF     CHAR(10),                                                        
    2 AF      FIXED(7,2),                                                      
    2 FF      BINARY,      /* 0-No Participation  */                           
    2 PFP     FIXED(4,2),  /* 11-14 % Dn w/F: 1-4 */                           
    2 MXF     FIXED(7,2),  /* 1-Monthly Deduction */                           
    2 TF      FIXED(9,2);  /* 2-SemiMonthly Dedn  */                           
DCL 1 BUFF,                /* 3-BiWeekly Deductn  */                           
    2 DE      CHAR(10),    /* 4-Weekly Deduction  */                           
    2 ADM     FIXED(7,2),  /* 7-Maximum Attained  */                           
    2 F       BINARY,                                                          
    2 PF_P    FIXED(4,2),                                                      
    2 MX      FIXED(7,2),                                                      
    2 T       FIXED(9,2);                                                      
DCL 1 IBUFF,                                                                   
      2 BV    FIXED(4,1),                                                      
      2 BS    FIXED(4,1),                                                      
      2 BR1   FIXED(8,2),                                                      
      2 BR2   FIXED(8,2),                                                      
      2 BR3   FIXED(8,2),                                                      
      2 BR4   FIXED(8,2),                                                      
      2 BR7   FIXED(8,2),   /* This was added later & must       */            
      2 BR5   FIXED(8,2),   /* Presently remain in this sequence */            
      2 BR6   FIXED(8,2),                                                      
      2 BST1  FIXED(8,2),                                                      
      2 BST2  FIXED(8,2),                                                      
      2 BST3  FIXED(8,2),                                                      
      2 BST4  FIXED(8,2);                                                      
                                                                               
DCL 1 DBUFF,                                                                   
      2 DF    BINARY,                                                          
      2 CN    BINARY INIT(0),                                                  
      2 XD    BINARY INIT(0),                                                  
      2 AN    FIXED(7,2),                                                      
      2 PP    FIXED(4,2),                                                      
      2 MA    FIXED(7,2),                                                      
      2 CU    FIXED(7,2);                                                      
                                                                               
/* *** This Record Length 660 Bytes, 2 Recs @ 330 Bytes Each *** */            
DCL 1 EMPLOYE,                                                                 
     2 SORT_DEPT FIXED(3),                                                     
     2 G_INFO,                                                                 
       3 LASTNAME  CHAR(14),                                                   
       3 OTH_R,                                                                
         4 FIRST   CHAR(10),                                                   
         4 MI      CHAR(1),                                                    
       3 RECNO     FIXED(1),                                                   
       3 E#        FIXED(4),                                                   
       3 SOC_SEC#,                                                             
         4 S_3     FIXED(3),                                                   
         4 S_2     FIXED(2),                                                   
         4 S_4     FIXED(4),                                                   
       3 BIRTHDATE,                                                            
         4 B_MONTH FIXED(2),                                                   
         4 B_DAY   FIXED(2),                                                   
         4 B_YEAR  FIXED(2),                                                   
       3 SEX       CHAR(1),                                                    
       3 ADDRESS   CHAR(18),                                                   
       3 CITY      CHAR(16),                                                   
       3 STATE     CHAR(2),                                                    
       3 ZIPCODE   FIXED(5),                                                   
       3 TEL#,                                                                 
         4 AC      FIXED(3),                                                   
         4 T_3     FIXED(3),                                                   
         4 T_4     FIXED(4),                                                   
     2 JOB_INFO,                                                               
       3 GL_CODE,                                                              
         4 DEPT    FIXED(3),                                                   
         4 ACOUNT# FIXED(5),                                                   
       3 STARTDATE,                                                            
         4 S_MONTH FIXED(2),                                                   
         4 S_DAY   FIXED(2),                                                   
         4 S_YEAR  FIXED(2),                                                   
       3 PAYCODE   BINARY,       /* 1-Salaried ¬1-Hourly  */                   
       3 RATE      FIXED(7,2),  /* Maximum Weekly of $99,999.99 */             
       3 P_FREQ    BINARY,  /* 1-Monthly 2-SemiMonthly 3-BiWkly 4-Wkly */      
       3 #RG_HRSWK FIXED(4,2),                                                 
       3 OT_RATE   FIXED(3,2),                                                 
     2 TAX_INFO,                                                               
       3 MARITAL   BINARY,  /*  1 - SINGLE , 2 - MARRIED  */                   
       3 FED_EXEM  BINARY,                                                     
       3 STATE_EX  BINARY,                                                     
       3 CITY_EXEM BINARY,                                                     
       3 S_TXBL    BINARY,       /* Sickpay 1-SUI Taxable  */                  
     2 LAST_CHECK,               /*         2-FICA Taxable */                  
       3 #REG_HRS  FIXED(5,2),   /*         3-BOTH Taxable */                  
       3 SICK      FIXED(5,2),                                                 
       3 VAC       FIXED(5,2),                                                 
       3 OT_HRS    FIXED(5,2),   /*         0-NEITHER Txbl */                  
       3 SICKPAY   FIXED(7,2),                                                 
       3 REG_EARN  FIXED(7,2),                                                 
       3 OT_EARN   FIXED(7,2),                                                 
       3 OTHER_ERN FIXED(7,2),  /* Other Earnings-Taxable */                   
       3 OTHER_NTX FIXED(7,2),  /* Other Earnings-NonTxbl */                   
       3 CHECK,                                                                
          4 CHECK# FIXED(5),                                                   
          4 P_DATE,                                                            
            5 P_MONTH FIXED(2),                                                
            5 P_DAY   FIXED(2),                                                
            5 P_YEAR  FIXED(2),                                                
          4 NET    FIXED(7,2),                                                 
       3 TXBL_GR   FIXED(7,2),                                                 
       3 TOT_EARN  FIXED(7,2),                                                 
       3 DEDNS(8)  FIXED(7,2),                                                 
       3 FED_TX    FIXED(7,2),                                                 
       3 FICA      FIXED(5,2),                                                 
       3 ST_TAX    FIXED(6,2),                                                 
       3 CITY_TX   FIXED(6,2),                                                 
       3 UNEMPL_TX FIXED(6,2),                                                 
       3 DDQ(8)    FIXED(7,2),                                                 
       3 DDY(8)    FIXED(7,2),                                                 
     2 I_CODE      BINARY, /*  Stores E# of Terminated Employees */            
     2 I_DATE,                                                                 
       3 I_MONTH   FIXED(2),                                                   
       3 I_DAY     FIXED(2),                                                   
       3 I_YEAR    FIXED(2),                                                   
     2 OLD_FLAG    CHAR(1),  /* Zero - Check is to be Printed    */            
     2 SPECIAL_TAX_INFO,     /* ¬Zero - Check Not to be Printed  */            
       3 FED_PLUG    FIXED(7,2),                                               
       3 FTABLE_FLAG CHAR(1),                                                  
       3 STATE_PLUG  FIXED(7,2),                                               
       3 STABLE_FLAG CHAR(1),                                                  
       3 CITY_PLUG   FIXED(7,2),                                               
       3 CTABLE_FLAG CHAR(1),                                                  
     2 CHECK_FLAG    CHAR(1),                                                  
     2 FILLER        CHAR(22);                                                 
                                                                               
DCL 1 EMPLOYEB,                                                                
     2 SORT_D_B    FIXED(3),                                                   
     2 SORT_LN     CHAR(14),                                                   
     2 SORT_FN     CHAR(10),                                                   
     2 SORT_MI     CHAR(1),                                                    
     2 RECNO_B     FIXED(1),                                                   
     2 B#          FIXED(4),                                                   
     2 DEDUCTIONS(8),                                                          
       3 D_FREQ    BINARY,                                                     
       3 COUNTER   BINARY,                                                     
       3 XDAYS     BINARY,                                                     
       3 AMOUNT    FIXED(7,2),                                                 
       3 PF_PCT    FIXED(4,2),                                                 
       3 MAX_AMT   FIXED(7,2),                                                 
       3 CURRENT   FIXED(7,2),                                                 
     2 INFO(2),                /* 1-YTD, 2-QTD */                              
       3 VAC_HRS   FIXED(4,1),                                                 
       3 SICK_HRS  FIXED(4,1),                                                 
       3 REG$      FIXED(8,2),                                                 
       3 OT$       FIXED(8,2),                                                 
       3 SICK$     FIXED(8,2),                                                 
       3 OTHER$    FIXED(8,2),                                                 
       3 OTHERNTX$ FIXED(8,2),                                                 
       3 GROSS$    FIXED(8,2),                                                 
       3 FEDTAX    FIXED(8,2),                                                 
       3 FICATX    FIXED(8,2),                                                 
       3 STATETX   FIXED(8,2),                                                 
       3 CITYTAX   FIXED(8,2),                                                 
       3 UNEMPLYMT FIXED(8,2),                                                 
     2 FILL        CHAR(8);                                                    
/************* END of DDNRPT DECLARES ***************************/             
                                                                               
/* READ RPTFILE Into Buffer, I Values : 1-Current 2-QTD 3-YTD */               
                                                                               
READ_RPTFILE:PROC;                                                             
                                                                               
          IF (I > 1) THEN GOTO READ1;                                          
                                                                               
READ FILE(RPTFILE) INTO(M_F_REC);                                              
READ FILE(RPTFILE) INTO(R_REC1);                                               
READ FILE(RPTFILE) INTO(R_REC4);                                               
READ FILE(RPTFILE) INTO(R_REC7);                                               
READ1: REC1 = R_REC1(I);                                                       
       REC2 = R_REC4(I);                                                       
       REC3 = R_REC7(I);                                                       
                                                                               
       RETURN;                                                                 
END;                                                                           
                                                                               
REWRITE_RPTFILE:PROC;                                                          
                                                                               
       UNSPEC(RPTFILE) = 0;                                                    
       WRITE FILE(RPTFILE) FROM(M_F_REC);                                      
       UNSPEC(RPTFILE) = 1;                                                    
       WRITE FILE(RPTFILE) FROM(R_REC1);                                       
       UNSPEC(RPTFILE) = 4;                                                    
       WRITE FILE(RPTFILE) FROM(R_REC4);                                       
       UNSPEC(RPTFILE) = 7;                                                    
       WRITE FILE(RPTFILE) FROM(R_REC7);                                       
                                                                               
       RETURN;                                                                 
END;                                                                           
                                                                               
/* YTD/QTD Report Fields Update Module of RPTPGM - April 1978 */               
                                                                               
Y_Q_UPDATE:PROC;                                                               
                                                                               
       REC1 = R_REC1(I);                                                       
       REC2 = R_REC4(I);                                                       
       REC3 = R_REC7(I);                                                       
                                                                               
       R15 = R15 + T_ALL_DDNS;                                                 
       R16 = R16 + T_FUTA;                                                     
       R27 = R27 + T_NET_PAY;                                                  
       R28 = R28 + T_GRAND_TOTAL;                                              
       R2B = R2B + T_ALL_DPTS;                                                 
                                                                               
       DO J = 1 TO 8;                                                          
          R13(J) = R13(J) + T_DEDUCTIONS(J);                                   
          END;                                                                 
                                                                               
       DO J = 1 TO 20;                                                         
          IF (T_TAXNAME(J) = '**') THEN GOTO YQ1;                              
          R12(J) = R12(J) + T_SUI_OR_FICA(J);                                  
          R22(J) = R22(J) + T_INCOME_TAX(J);                                   
          END;                                                                 
                                                                               
YQ1:   DO J = 1 TO 29;                                                         
          R32(J) = R32(J) + T_DEPARTMENT(J);                                   
          END;                                                                 
                                                                               
       CALL REWRITE_RPTFILE;                                                   
                                                                               
       RETURN;                                                                 
END;                                                                           
                                                                               
/* PAYROLL DISTRIBUTION JOURNAL Module of RPTPGM - April 1978 */               
                                                                               
PAYROLL_DISTRIBUTION:PROC;                                                     
                                                                               
       PUT FILE(D) SKIP EDIT('ALIGN PAPER for TOTALS PAGE')(A);                
       GET SKIP LIST('');                                                      
                                                                               
       PUT SKIP(3) EDIT(CUSTOMER_NAME)(A(15))(' ')(A(10))                      
           ('PAYROLL DISTRIBUTION JOURNAL')(A(28))(' ')(A(12))                 
           ('RUN : ')(A(6))(R2A)(A(8))(' ')(A(11))                             
           ('PAGE ')(A(5))(PAGE)(P'9');                                        
                                                                               
       PUT SKIP(5) EDIT(' ')(A(61))('DEBIT')(A(5))(' ')(A(24))                 
           ('CREDIT')(A(6));                                                   
                                                                               
       PUT SKIP EDIT('DESCRIPTION')(A(11))(' ')(A(49))('AMOUNT')               
           (A(6))(' ')(A(24))('AMOUNT')(A(6));                                 
                                                                               
       PUT SKIP(2) EDIT('CASH')(A(4))(' ')(A(75))                              
           (R27)(P'$$,$$$,$$$,$$9V.99');                                       
                                                                               
       PUT SKIP EDIT('FEDERAL TAX')(A(11))(' ')(A(68))                         
           (R22(1))(P'$$,$$$,$$$,$$9V.99');                                    
                                                                               
       PUT SKIP EDIT('FICA TAX')(A(8))(' ')(A(71))                             
           (R12(1))(P'$$,$$$,$$$,$$9V.99');                                    
                                                                               
       DO I = 1 TO 19;                                                         
           J = I + 1;                                                          
           IF (R22(J) = 0) THEN GOTO PDJ3;     /* TAX AMT ZERO */              
           IF (R23(J) = '**') THEN GOTO PDJ5;                                  
           IF (R24(J) = '5') THEN GOTO PDJ1;    /* CITY TAX */                 
           /* HERE We Have a State Tax */                                      
           PUT SKIP EDIT(R23(J))(A(2))(' STATE INCOME TAX')                    
                   (A(17))(' ')(A(60));                                        
           GOTO PDJ2;                          /* PRINT R22(J) */              
           /* HERE We Have a City Tax */                                       
PDJ1:      PUT SKIP EDIT(R25(J))(A(2))(T_CITY_3(J))(A(3))                      
                   (' CITY (')(A(7))(R23(J))(A(2))(' STATE) TAX')              
                   (A(11))(' ')(A(54));                                        
           /* PRINT R22(J) HERE */                                             
PDJ2:      PUT EDIT(R22(J))(P'$$,$$$,$$$,$$9V.99');                            
/* If Can Provide Trans/Commuter Also-Put It HERE */                           
                                                                               
PDJ3:      IF (R12(J) = 0) THEN GOTO PDJ4;     /* SUI-SDI = 0 */               
           PUT SKIP EDIT(R23(J))(A(2))(' STATE SUI-SDI')(A(14))                
                   (' ')(A(63))(R12(J))(P'$$,$$$,$$$,$$9V.99');                
PDJ4:      END;                                                                
                                                                               
PDJ5:   PUT SKIP EDIT('DEDUCTIONS-')(A(11));                                   
        DO I = 1 TO 8;                                                         
           PUT SKIP EDIT(R14(I))(A(10))(' ')(A(69))                            
                   (R13(I))(P'$$,$$$,$$$,$$9V.99');                            
           END;                                                                
                                                                               
        PUT SKIP EDIT('DEPARTMENTS-')(A(12));                                  
        DO I = 1 TO 29;                                                        
           IF (R32(I) = 0) THEN GOTO PDJ6;                                     
           PUT SKIP EDIT(R33(I))(P'999')(' ')(A(46))                           
                   (R32(I))(P'$$,$$$,$$$,$$9V.99');                            
PDJ6:      END;                                                                
                                                                               
        PUT SKIP(2) EDIT('***JOURNAL TOTAL')(A(16))(' ')(A(30))                
                ('***')(A(3))(R2B)(P'$$,$$$,$$$,$$9V.99')(' ')                 
                (A(10))('***')(A(3))(R28)(P'$$,$$$,$$$,$$9V.99');              
        PUT SKIP(3) EDIT('FUTA : Wages in Excess Of FUTA')(A)                  
           (' Limit This Pay-Period :')(A)                                     
        (R16)(P'$$,$$$,$$$,$$9V.99');                                          
        PUT SKIP;                                                              
        RETURN;                                                                
END;                                                                           
                                                                               
/* ************** DEDUCTION-REPORT Procedure Follows ************** */         
                                                                               
DEDUCTION_RPT:PROC;                                                            
                                                                               
PUT FILE(D) SKIP LIST('Arrange Paper for PAYROLL DEDUCTIONS Report');          
       GET SKIP LIST(ANS);                                                     
       IF (ANS = 'X') THEN DO;                                                 
DR_3:     PUT FILE(D) SKIP LIST('ENTER PAYROLL DATE for REPORT : ');           
DR_2:     GET SKIP LIST(ANS6);                                                 
          IF (SUBSTR(ANS6,1,1) = 'E') THEN GOTO DDN_RETURN;                    
          IF (VERIFY(ANS6,'0123456789') = 0) THEN GOTO DR_2;                   
          MONTH = SUBSTR(ANS6,1,2);                                            
          DAY = SUBSTR(ANS6,3,2);                                              
          YEAR = SUBSTR(ANS6,5,2);                                             
          PUT FILE(D) EDIT(MONTH)(P'99')('/')(A)(DAY)(P'99')('/')(A)           
              (YEAR)(P'99')(' OK ? ')(A);                                      
          GET SKIP LIST(ANS);                                                  
          IF (ANS ¬= 'Y') THEN GOTO DR_3;                                      
          END;                                                                 
D_BEG:                                                                         
       OPEN DEDUCTNS;                                                          
       READ FILE(DEDUCTNS) INTO(DEDCTION);                                     
       PUT SKIP EDIT('PAYROLL DEDUCTIONS Report - ')(X(20),A)                  
           (MONTH)(P'99')('/')(A)(DAY)(P'99')('/')(A)(YEAR)(P'99');            
       PUT SKIP;                                                               
                                                                               
       DO I = 1 TO 8;                                                          
          OPEN EMPLOYEE;                                                       
          E_21 = 0; E_22 = 0; /* E_21=CURRENT, E_22=Tot-2-Date */              
          BUFF = DEDCTION(I);                                                  
          PUT SKIP EDIT('Deduction #')(X(12),A)(I)(P'999')(')')(A)(DE)(A);     
          PUT SKIP(3) EDIT('Emp#')(A(23))('NAME')(A(20))                       
              ('Current')(A(11))('TO DATE')(A(11))                             
              ('MAXIMUM')(A);                                                  
DR_1:     ON ENDFILE GOTO DDN_TOTALS;                                          
          READ FILE(EMPLOYEE) INTO(EMPLOYE);                                   
          ON ENDFILE GOTO DDN_MSG1;                                            
          READ FILE(EMPLOYEE) INTO(EMPLOYEB);                                  
          DBUFF = DEDUCTIONS(I);                                               
          IF (MONTH ¬= P_MONTH) ö (DAY ¬= P_DAY) ö (YEAR ¬= P_YEAR)            
             THEN GOTO DR_1;                                                   
          IF (DF = 0) ö (DF = 7) ö (E# = 0) THEN GOTO DR_1;                    
                                                                               
          E_21 = E_21 + DEDNS(I);                                              
          E_22 = E_22 + CU;                                                    
                                                                               
          PUT SKIP EDIT(E#)(P'9999')(FIRST)(X(8),A(11))(MI)                    
              (A(2))(LASTNAME)(A(14))(DEDNS(I))(X(3),P'$$$$9V.99')             
              (DDY(I))(X(3),P'$$$$9V.99')(MA)(X(3),P'$$$$9V.99');              
          PUT SKIP;                                                            
          GOTO DR_1;                                                           
DDN_TOTALS:                                                                    
          PUT SKIP(2) EDIT('_____')(A(5))(DE)(A(11))('TOTALS')(A)              
              (E_21)(X(14),P'$$$,$$$,$$9V.99')(E_22)(P'$$$,$$$,$$9V.99');      
          PUT SKIP EDIT('_______________')(A(15));                             
          PUT SKIP;                                                            
          END;                                                                 
                                                                               
       GOTO DDN_RETURN;                                                        
DDN_MSG1:                                                                      
       PUT FILE(D) SKIP EDIT('ERROR on ')(A)(E#)(P'9999');                     
       GET SKIP LIST('');                                                      
DDN_RETURN:                                                                    
       RETURN;                                                                 
END;                                                                           
                                                                               
/* MAIN Section of Reports Program Follows - */                                
                                                                               
       OPEN RPTFILE;                                                           
       I = 1;                                                                  
       CALL READ_RPTFILE;                                                      
       IF (T_SUMKEY = 0) THEN DO;                                              
          T_SUMKEY = 5;                                                        
          CALL PAYROLL_DISTRIBUTION;                                           
          I = 2;                                                               
          CALL Y_Q_UPDATE;                                                     
          I = 3;                                                               
          CALL Y_Q_UPDATE;                                                     
          CALL TYPIST('CHKPGM┣0d┫',7);                                            
                              STOP;                                            
          END;                                                                 
                                                                               
       CALL DEDUCTION_RPT;                                                     
/*                                                                             
RPT1:  PUT FILE(D) SKIP EDIT('REPORT OPTIONS -')(A(16))('1)Quarterly Tax')     
          (X(7),A(47))('2)Employee W2')(A(47))('3)Inactive Employees')         
          (A(47))('4)Deductions by Employee')(A(47))                           
       ('5)Unemploymt/Disability')(A(49))('ENTER CHOICE : ')(A);               
RPT2:  GET SKIP LIST(ANS);                                                     
       IF (VERIFY(ANS,' E01234') = 0) THEN GOTO RPT2;                          
       IF (ANS = 'E') ö (ANS = '0') THEN GOTO                                  
       IF (ANS = '1') THEN GOTO                                                
       IF (ANS = '2') THEN GOTO                                                
       IF (ANS = '3') THEN GOTO                                                
       IF (ANS = '4') THEN GOTO                                                
       IF (ANS = '5') THEN GOTO                */                              
                                                                               
END;