|
|
DataMuseum.dkPresents historical artifacts from the history of: Q1 computer |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Q1 computer Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 39342 (0x99ae)
Types: Q1_Text, reclen=79
Notes: q1file
Names: »RPTPGM_S«
└─⟦415b26bc8⟧ Bits:30008568 DDMQ1-0003_Source_For_Q1_Payroll_Package_Diskette_1_1
└─⟦this⟧ »RPTPGM_S«
/* 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;