|
|
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: 79711 (0x1375f)
Types: Q1_Text, reclen=79
Notes: q1file
Names: »CHKADJ_S«
└─⟦415b26bc8⟧ Bits:30008568 DDMQ1-0003_Source_For_Q1_Payroll_Package_Diskette_1_1
└─⟦this⟧ »CHKADJ_S«
/* COMMON DECLARES - EMPPGM_A & EMPPGM_B & CHK_ADJ Pgms 4/27/78 */
PUT FILE(D) SKIP EDIT('EMPLOYEE FILE MAINTENANCE - ')(A)
('Version : 2.0')(A(47));
DCL DEDUCTNS FILE;
DCL EMPLOYEE FILE;
DCL DISP_F FIXED(1);
DCL D_FLAG BINARY;
DCL D_RATE FIXED(7,2);
DCL DFT(16) FIXED(7,2);
DCL PAY_DESCR(2) CHAR(8) INIT('HOURLY','SALARIED');
DCL DEDNT FIXED(9,2);
DCL L_FLAG CHAR(1);
DCL WHICH(2) CHAR(16) INIT(' YEAR to DATE ',' QUARTR to DATE ');
DCL WHICH_P(4) CHAR(11) INIT('MONTHLY','SemiMONTHLY','BiWEEKLY','WEEKLY');
DCL WHICH_C(2) CHAR(11) INIT('HourlyWAGE:','WeeklyRATE:');
DCL T_FLAG BINARY INIT(0);
DCL ANS CHAR(1);
DCL ANS2 CHAR(2);
DCL ANS3 CHAR(3);
DCL ANS4 CHAR(4);
DCL ANS8 CHAR(8);
DCL ANS9 CHAR(9);
DCL DATE CHAR(6);
DCL STATUS CHAR(7);
DCL MARYTAL(2) CHAR(10) INIT('SINGLE','MARRIED');
DCL DEDN FIXED(6,2); /* Change This? */
DCL NUM BINARY;
DCL PAYSTATUS CHAR(8);
DCL T_CODE CHAR(1);
DCL T# CHAR(10);
DCL ENUM FIXED(4);
DCL NUM8 CHAR(8);
DCL NUM9 CHAR(9);
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 COMMON DECLARES ***************************/
/************* CHECK ADJUSTMENT DECLARES HERE *************/
DCL CONTROL FILE;
DCL 1 CONTROL_REC,
2 LAST_CHECK_NO FIXED(5), /* Next Avail Check # */
2 LAST_CHECK_DATE CHAR(6),
2 CONTROL_FILL CHAR(31);
DCL TOT_BUFF FIXED(7,2);
DCL 1 CHECKBUFF,
2 OLD_REG_HRS FIXED(5,2),
2 OLD_SICK_HRS FIXED(5,2),
2 OLD_VAC_HRS FIXED(5,2),
2 OLD_OT_HRS FIXED(5,2),
2 OLD_SICKPAY FIXED(7,2),
2 OLD_REGPAY FIXED(7,2),
2 OLD_OT_PAY FIXED(7,2),
2 OLD_OPAY_TXBL FIXED(7,2),
2 OLD_OPAY_NTX FIXED(7,2),
2 OLD_CHECK,
3 OLD_NUMBER FIXED(5),
3 OLD_DATE,
4 OLD_MONTH FIXED(2),
4 OLD_DAY FIXED(2),
4 OLD_YEAR FIXED(2),
3 OLD_NET FIXED(7,2),
2 OLD_GROSS_TXBL FIXED(7,2),
2 OLD_TOT_EARN FIXED(7,2),
2 OLD_DEDNS(8) FIXED(7,2),
2 OLD_FEDTX FIXED(7,2),
2 OLD_FICA FIXED(5,2),
2 OLD_ST_TAX FIXED(6,2),
2 OLD_CITY_TX FIXED(6,2),
2 OLD_SUI FIXED(6,2),
2 OLD_DDNQ(8) FIXED(7,2),
2 OLD_DDNY(8) FIXED(7,2);
/*************** CHECK Adjustment Procedures HERE ***************/
RE_WRITE:PROC;
UNSPEC(EMPLOYEE) = UNSPEC(EMPLOYEE) - 2;
WRITE FILE(EMPLOYEE) FROM(EMPLOYE);
WRITE FILE(EMPLOYEE) FROM(EMPLOYEB);
RETURN;
END;
/* Reverse Check Amounts Procedure HERE */
REVERSE_CHECK:PROC;
IF (CHECK_FLAG = '9') THEN GOTO REV_RETURN; /* Already Rev'd */
IF (CHECK_FLAG = '5') THEN DO;
CHECK_FLAG = '9';
GOTO REV_RETURN;
END;
DO I = 1 TO 8;
BUFF = DEDCTION(I);
DBUFF = DEDUCTIONS(I);
CU = CU - OLD_DEDNS(I);
T = T - OLD_DEDNS(I);
DEDUCTIONS(I) = DBUFF;
DEDCTION(I) = BUFF;
DDQ(I) = DDQ(I) - OLD_DEDNS(I);
DDY(I) = DDY(I) - OLD_DEDNS(I);
END;
OPEN DEDUCTNS;
WRITE FILE(DEDUCTNS) FROM(DEDCTION);
DO I = 1 TO 2;
IBUFF = INFO(I);
BV = BV - OLD_VAC_HRS;
BS = BS - OLD_SICK_HRS;
BR1 = BR1 - OLD_REGPAY;
BR2 = BR2 - OLD_OT_PAY;
BR3 = BR3 - OLD_SICKPAY;
BR4 = BR4 - OLD_OPAY_TXBL;
BR7 = BR7 - OLD_OPAY_NTX;
BR5 = BR5 - OLD_TOT_EARN;
BR6 = BR6 - OLD_FEDTX;
BST1 = BST1 - OLD_FICA;
BST2 = BST2 - OLD_ST_TAX;
BST3 = BST3 - OLD_CITY_TX;
BST4 = BST4 - OLD_SUI;
INFO(I) = IBUFF;
END;
REV_RETURN:
RETURN;
END;
/********* ZERO-OUT Checkvalues for Reversed Check *********/
ZERO_OLD:PROC;
#REG_HRS = 0;
SICK = 0;
VAC = 0;
OT_HRS = 0;
SICKPAY = 0;
REG_EARN = 0;
OT_EARN = 0;
OTHER_ERN = 0;
OTHER_NTX = 0;
TXBL_GR = 0;
TOT_EARN = 0;
DO I = 1 TO 8;
DEDNS(I) = 0;
END;
FED_TX = 0;
FICA = 0;
ST_TAX = 0;
CITY_TX = 0;
UNEMPL_TX = 0;
RETURN;
END;
/********** Check CHECK Amounts Relationships HERE *********/
CHECK_RELATIONS:PROC;
D_RATE = TOT_EARN - FED_TX - FICA - ST_TAX - CITY_TX - UNEMPL_TX;
IF (D_RATE < 0) THEN GOTO RMSG_1;
DO I = 1 TO 8;
D_RATE = D_RATE - DEDNS(I);
IF (D_RATE < 0) THEN GOTO RMSG_2;
END;
IF (NET > D_RATE + .1) ö (NET < D_RATE - .1) THEN GOTO RMSG_3;
TOT_BUFF = ((SICK + #REG_HRS + (OT_HRS * OT_RATE)) * D_RATE) + .005;
TOT_BUFF = TOT_BUFF + OTHER_ERN + OTHER_NTX;
IF (TOT_BUFF > TOT_EARN + .1) ö (TOT_BUFF < TOT_EARN - .1) THEN DO;
/* *** Allow Operator to Accept New Value IFF KKEY ¬= 5 Here *** */
GOTO RMSG_6;
END;
GOTO R_RETURN;
/* AND WHAT OF the Following Relation : TOT_EARN = */
/* ((SICK + #REG_HRS + OT_HRS * OT_RATE) * D_RATE) + .005 */
/* + OTHER_ERN + OTHER_NTX; ??? Here D_RATE = Appropriate RATE */
RMSG_1:
PUT FILE(D) SKIP EDIT('GROSS Amount Entered, less Tax Amounts')
(A(47))('Entered, leaves a computed value for')(A(47))
('Net of -')(A(8))(D_RATE)(P'$$$$9V.99');
IF (KKEY = 5) THEN NET = D_RATE;
GET SKIP LIST('');
GOTO RMSG_4;
RMSG_2:
PUT FILE(D) SKIP EDIT('GROSS Amount entered, less Tax amounts')
(A(47))('and Deductions, leaves a Computed Value')(A(47))
('for NET of : -')(A(14))(D_RATE)(P'$$$$9V.99');
IF (KKEY = 5) THEN NET = D_RATE;
GET SKIP LIST('');
GOTO RMSG_4;
RMSG_3:
PUT FILE(D) SKIP EDIT('GROSS less Taxes and Deductions is')
(A(47))('NOT Within 10┣1f┫ of NET value entered-')(A(47))
('Computed NET :')(A(14))(D_RATE)(P'$$$$9V.99')
('NET Inputted :')(A(14))(NET)(P'$$$$9V.99');
IF (KKEY = 5) THEN NET = D_RATE;
GET SKIP LIST('');
GOTO RMSG_4;
RMSG_4:
IF (KKEY = 5) THEN GOTO RMSG_5;
KKEY = 4;
PUT FILE(D) SKIP EDIT('These Check Values will NOT be entered')
(A(47))('In your Employee"s Record. Please')(A(47))
('Investigate, and try again ')(A);
GET SKIP LIST('');
GOTO R_RETURN;
RMSG_5:
PUT FILE(D) SKIP EDIT('These Values will be Incremented to BOTH')
(A(47))('Your EMPLOYEE File & DEDUCTIONS File')
(A(47))('in "Current Totals" fields. Please')(A(47))
('Investigate (Or at least record) this')(A(47))
('Discrepancy, and Correct all Affected Fields')(A(47));
GET SKIP LIST(''); GOTO R_RETURN;
RMSG_6:
PUT FILE(D) SKIP EDIT('Gross Amt Entered ')(A(18))
(TOT_EARN)(P'$$$$9V.99')(' is NOT within 10┣1f┫')(A(21))
('Of amount computed on basis of #Hrs ')(A(47))
('Entered :')(A(9))(TOT_BUFF)(P'$$$$9V.99')
('for Employee#: ')(A)(E#)(P'ZZZ9');
IF (KKEY = 5) THEN TOT_EARN = TOT_BUFF;
GET SKIP LIST('');
GOTO RMSG_4;
R_RETURN:
RETURN;
END;
/*********** CHECK INCREMENT ROUTINE HERE ************/
INCREMENT_CHECK:PROC;
DO I = 1 TO 8;
BUFF = DEDCTION(I);
DBUFF = DEDUCTIONS(I);
IF ((CU + DEDNS(I)) > MA) & (KKEY ¬= 5) THEN DO;
PUT FILE(D) SKIP EDIT('Employee# :')(A(11))(E#)
(P'ZZZ9')(FIRST)(X(5),A(11))(MI)(A(2))(LASTNAME)
(A(14))('Entry of ')(A(9))(DEDNS(I))(P'$$$$9V.99')
(' for ')(A(5))(DE)(A(11))('Puts')(A(14))
('Employee Current Total over Maximum specified')
(A(47))('in Employee Record. Program Therefore')
(A(47))('Overrides your entry-New Value:')(A(31));
NET = NET + (DEDNS(I) - (MA - CU));
DEDNS(I) = MA - CU;
IF (DEDNS(I) < 0) THEN DEDNS(I) = 0;
PUT FILE(D) EDIT(DEDNS(I))(P'$$$$9V.99');
GET SKIP LIST('');
END;
CU = CU + DEDNS(I);
DEDUCTIONS(I) = DBUFF;
T = T + DEDNS(I);
DEDCTION(I) = BUFF;
DDQ(I) = DDQ(I) + DEDNS(I);
DDY(I) = DDY(I) + DEDNS(I);
END;
OPEN DEDUCTNS;
WRITE FILE(DEDUCTNS) FROM(DEDCTION);
D_RATE = RATE;
IF (#RG_HRSWK = 0) THEN #RG_HRSWK = 40;
IF (PAYCODE = 1) THEN D_RATE = (RATE / #RG_HRSWK);
SICKPAY = D_RATE * SICK + .005;
REG_EARN = D_RATE * #REG_HRS + .005;
OT_EARN = D_RATE * (OT_HRS * OT_RATE) + .005;
TOT_EARN = TXBL_GR + SICKPAY + OTHER_NTX;
DO I = 1 TO 2;
IBUFF = INFO(I);
BV = BV + VAC;
BS = BS + SICK;
BR1 = BR1 + REG_EARN;
BR2 = BR2 + OT_EARN;
BR3 = BR3 + SICKPAY;
BR4 = BR4 + OTHER_ERN;
BR7 = BR7 + OTHER_NTX;
BR5 = BR5 + TOT_EARN;
BR6 = BR6 + FED_TX;
BST1 = BST1 + FICA;
BST2 = BST2 + ST_TAX;
BST3 = BST3 + CITY_TX;
BST4 = BST4 + UNEMPL_TX;
INFO(I) = IBUFF;
END;
RETURN;
END;
/* LAST CHECK View / Modify MODULE */
LAST_CHECK_AMOUNTS:PROC;
/* CALL READ_E; */
JJ = 0;
JJJ = 0;
C_DISPLAY1:
DISP_F = 1;
J = 0;
PUT FILE(D) SKIP EDIT('View / Modify - EMPLOYEE #')(A(26))
(E#)(P'Z999')(' - ')(A(3))(LASTNAME)(A(14))
('LAST CHECK Display 1 Of 2')(X(11),A(36))(' ')(A(47));
J = J + 1;
PUT FILE(D) EDIT(J)(P'Z9')(')CHK#:')(A(6));
ANS = KKEY;
IF (J = JJ) & (VERIFY(ANS,'3567') = 0) THEN DO;
/************* HERE J = JJ & This is NOT an OffSystem Check *************/
IF (CHECK_FLAG = '0') THEN DO;
PUT FILE(D) SKIP EDIT('CHECK#:')(A(7))(CHECK#)(P'99999')
(',Not Having Been Printed,')(A(35))
('Should be Safely Avail For Use- However')(A(47))
('If You Prefer a New Number, the Next Avail')(A(47))
(' Number is:')(A(11))(LAST_CHECK_NO)(P'99999')
('. Indicate Choice- Enter')(A(32))
('"1" To keep current check number, or')(A(47))
('"2" To change it to:')(A)(LAST_CHECK_NO)(P'99999')
(' ')(A(12))('ENTER CHOICE : ')(X(14),A);
DC_R: GET SKIP LIST(ANS);
IF (VERIFY(ANS,'12') = 0) THEN GOTO DC_R;
IF (ANS = '1') THEN GOTO DO_X;
CHECK# = LAST_CHECK_NO;
LAST_CHECK_NO = LAST_CHECK_NO + 1;
REWRITE FILE(CONTROL) FROM(CONTROL_REC);
GOTO DO_X;
END;
/* HERE (CHECK_FLAG ¬= 0) & (J = JJ) & This is NOT an OffSystem Check */
IF (CHECK_FLAG = '1') THEN DO;
PUT FILE(D) SKIP EDIT('Check that Check#:')(A(18))
(CHECK#)(P'99999')(' has been VOIDED')(A(24))
('and Keyed Off. Your new Check# is:')(A(34))
(LAST_CHECK_NO)(P'99999');
CHECK# = LAST_CHECK_NO;
LAST_CHECK_NO = LAST_CHECK_NO + 1;
REWRITE FILE(CONTROL) FROM(CONTROL_REC);
GET SKIP LIST('');
GOTO DO_X;
END;
END;
/* *** HERE- ((J = JJ) & (This NOT OffSystem Check)) is FALSE *** */
IF (J = JJ) ö (KKEY = 7) THEN DO;
GET SKIP LIST(CHECK#);
IF (CHECK# > LAST_CHECK_NO) THEN DO;
PUT FILE(D) SKIP EDIT('Check Number(s) Between')(A(24))
(LAST_CHECK_NO - 1)(P'99999')(' and ')(A(5))
(CHECK#)(P'99999')(' ')(A(8))('Are Being Skipped. ')
(A(19))('PLEASE NOTE for your Records')(A(28));
LAST_CHECK_NO = CHECK# + 1;
REWRITE FILE(CONTROL) FROM(CONTROL_REC);
GET SKIP LIST('');
GOTO DO_X;
END;
IF (CHECK# < LAST_CHECK_NO) THEN DO;
PUT FILE(D) SKIP EDIT('WARNING- Next Avail Check Number')
(A(47))('According to Your CONTROL File, is ')(A(35))
(LAST_CHECK_NO)(P'99999')(' ')(A(7))('And you have')
(A(13))('entered ')(A(8))(CHECK#)(P'99999')
(' for this check.')(A(21))('This may mean duplicate')
(A(24))('Check #s were issued')(A(25));
GET SKIP LIST('');
GOTO DO_X;
END;
/************* HERE - CHECK# = LAST_CHECK_NO **************/
LAST_CHECK_NO = LAST_CHECK_NO + 1;
REWRITE FILE(CONTROL) FROM(CONTROL_REC);
END;
/************************************* HERE- (J ¬= JJ) ********/
IF (CHECK_FLAG = '5') ö (CHECK_FLAG = '9') THEN DO;
CHECK# = LAST_CHECK_NO;
LAST_CHECK_NO = LAST_CHECK_NO + 1;
REWRITE FILE(CONTROL) FROM(CONTROL_REC);
CHECK_FLAG = '0';
END;
GOTO DO_Y;
DO_X:
IF (KKEY = 7) THEN KKEY = 8;
JJ = 27;
GOTO C_DISPLAY1;
DO_Y: J = J + 1;
IF (KKEY = 8) THEN KKEY = 7;
PUT FILE(D) EDIT(CHECK#)(P'ZZZZ9')(J)(P'Z9')(')CHKDATE:')(A(9));
IF (J = JJ) ö (KKEY = 7) THEN DO;
LRE: GET SKIP LIST(DATE);
IF (VERIFY(DATE,'0123456789') = 0) THEN GOTO LRE;
P_MONTH = SUBSTR(DATE,1,2);
P_DAY = SUBSTR(DATE,3,2);
P_YEAR = SUBSTR(DATE,5,2);
END;
J = J + 1;
PUT FILE(D) EDIT(P_MONTH)(P'99')('/')(A)(P_DAY)(P'99')
('/')(A)(P_YEAR)(P'99')(J)(P'Z9')(')AMT:')(A(5));
IF (J = JJ) ö (KKEY = 7) THEN GET SKIP LIST(NET);
J = J + 1;
PUT FILE(D) EDIT(NET)(P'$$$$9V.99')('#HOURS-')(A(7))
(J)(P'Z9')(')REG :')(A(6));
IF (J = JJ) ö (KKEY = 7) THEN GET SKIP LIST(#REG_HRS);
J = J + 1;
PUT FILE(D) EDIT(#REG_HRS)(P'ZZ9V.99')(J)(P'Z9')(')O/T:')(A(5));
IF (J = JJ) ö (KKEY = 7) THEN GET SKIP LIST(OT_HRS);
J = J + 1;
PUT FILE(D) EDIT(OT_HRS)(P'ZZ9V.99')(J)(P'Z9')(')VAC:')(A(5));
IF (J = JJ) ö (KKEY = 7) THEN GET SKIP LIST(VAC);
J = J + 1;
PUT FILE(D) EDIT(VAC)(P'ZZ9V.99')(' ')(A(7))
(J)(P'Z9')(')SICK:')(A(6));
IF (J = JJ) ö (KKEY = 7) THEN GET SKIP LIST(SICK);
J = J + 1;
PUT FILE(D) EDIT(SICK)(P'ZZ9V.99')(' ')(A(6))
(J)(P'Z9')(')GrossPay:')(A(10));
IF (J = JJ) ö (KKEY = 7) THEN GET SKIP LIST(TOT_EARN);
J = J + 1;
PUT FILE(D) EDIT(TOT_EARN)(P'$$$$9V.99')('OTHER PAY-')(A(10))
(J)(P'Z9')(')TXBL:')(A(6));
IF (J = JJ) ö (KKEY = 7) THEN GET SKIP LIST(OTHER_ERN);
J = J + 1;
PUT FILE(D) EDIT(OTHER_ERN)(P'$$$$9V.99')(' ')(A)
(J)(P'Z9')(')Non-TXBL:')(A(10));
IF (J = JJ) ö (KKEY = 7) THEN GET SKIP LIST(OTHER_NTX);
PUT FILE(D) EDIT(OTHER_NTX)(P'$$$$9V.99')('OK ? ')(A);
GOTO C_ASK_1_2;
C_DISPLAY2:
DISP_F = 2;
J = 0;
PUT FILE(D) SKIP EDIT('View / Modify - EMPLOYEE #')(A(26))
(E#)(P'Z999')(' - ')(A(3))(LASTNAME)(A(14))
('LAST CHECK Display 2 Of 2')(X(11),A(36));
J = J + 1;
PUT FILE(D) EDIT('Deduction Amounts')(A(17))(J)(P'Z9')
(')1-')(A(3));
IF (J = JJ) ö (KKEY = 6) THEN GET SKIP LIST(DEDNS(J));
J = J + 1;
PUT FILE(D) EDIT(DEDNS(J - 1))(P'$$$$9V.99')(' ')(A(4))
(J)(P'Z9')(')2-')(A(3));
IF (J = JJ) ö (KKEY = 6) THEN GET SKIP LIST(DEDNS(J));
J = J + 1;
PUT FILE(D) EDIT(DEDNS(J - 1))(P'$$$$9V.99');
DO I = 1 TO 2;
PUT FILE(D) EDIT(J)(P'Z9')(')')(A)(J)(P'9')('-')(A);
IF (J = JJ) ö (KKEY = 6) THEN GET SKIP LIST(DEDNS(J));
J = J + 1;
PUT FILE(D) EDIT(DEDNS(J - 1))(P'$$$$9V.99')(' ')(A(4))
(J)(P'Z9')(')')(A)(J)(P'9')('-')(A);
IF (J = JJ) ö (KKEY = 6) THEN GET SKIP LIST(DEDNS(J));
J = J + 1;
PUT FILE(D) EDIT(DEDNS(J - 1))(P'$$$$9V.99')(' ')(A(4))
(J)(P'Z9')(')')(A)(J)(P'9')('-')(A);
IF (J = JJ) ö (KKEY = 6) THEN GET SKIP LIST(DEDNS(J));
J = J + 1;
PUT FILE(D) EDIT(DEDNS(J - 1))(P'$$$$9V.99');
END;
PUT FILE(D) EDIT('TAX AMTS-')(A(9))(J)(P'Z9')(')FEDERAL:')(A(9));
IF (J = JJ) ö (KKEY = 6) THEN GET SKIP LIST(FED_TX);
J = J + 1;
PUT FILE(D) EDIT(FED_TX)(P'$$$$9V.99')(' ')(A)
(J)(P'ZZ9')(')STATE:')(A(7));
IF (J = JJ) ö (KKEY = 6) THEN GET SKIP LIST(ST_TAX);
J = J + 1;
PUT FILE(D) EDIT(ST_TAX)(P'$$$$9V.99')(J)(P'Z9')(')CITY:')(A(6));
IF (J = JJ) ö (KKEY = 6) THEN GET SKIP LIST(CITY_TX);
J = J + 1;
PUT FILE(D) EDIT(CITY_TX)(P'$$$9V.99')(J)(P'ZZ9')(')SUI:')(A(5));
IF (J = JJ) ö (KKEY = 6) THEN DO;
UR: GET SKIP LIST(ANS8);
ANS = SUBSTR(ANS8,1,1);
IF (ANS = ' ') THEN GOTO UNC;
IF (ANS = 'X') ö (ANS = 'N') THEN DO;
S_TXBL = 5;
GOTO UNC;
END;
IF (VERIFY(ANS,'.0123456789') = 0) THEN GOTO UR;
UNEMPL_TX = SUBSTR(ANS8,1,7);
S_TXBL = 0;
END;
UNC: IF (S_TXBL = 5) THEN DO;
IF (UNEMPL_TX > 0) THEN PUT FILE(D) EDIT('X')(A)
(UNEMPL_TX)(P'$$9V.99');
IF (UNEMPL_TX = 0) THEN PUT FILE(D) EDIT(' *NONE*')(A);
END;
IF (S_TXBL = 0) THEN PUT FILE(D) EDIT(UNEMPL_TX)(P'$$$9V.99');
J = J + 1;
PUT FILE(D) EDIT(J)(P'ZZ9')(')FICA:')(A(6));
IF (J = JJ) ö (KKEY = 6) THEN GET SKIP LIST(FICA);
PUT FILE(D) EDIT(FICA)(P'$$$$9V.99')('OK ? ')(A);
GOTO C_ASK_1_2;
C_ASK_1_2:
GET SKIP LIST(ANS3);
ANS = SUBSTR(ANS3,1,1);
IF (ANS = 'Y') & (KKEY = 7) & (DISP_F = 1) THEN KKEY = 6;
IF (ANS = 'Y') & (KKEY = 6) & (DISP_F = 2) THEN KKEY = 3;
IF (ANS = 'N') THEN GOTO GET_C_CHANGES;
IF (VERIFY(ANS,'0123456789') = 0) THEN GOTO C12;
GOTO C_ASK_1_2;
C12: IF (ANS = 'E') ö (ANS = 'Y') THEN GOTO C_REWRITE;
IF (JJ > 0) & (ANS ¬= 'Y') THEN GOTO C_ASK_1_2;
IF (JJ > 0) THEN JJJ = 1;
JJ = 0;
IF (DISP_F = 2) THEN GOTO C_DISPLAY1;
GOTO C_DISPLAY2;
GET_C_CHANGES:
IF (KKEY = 5) & (DISP_F = 1) THEN DO;
KKEY = 7;
GOTO C_DISPLAY1;
END;
IF (KKEY = 5) & (DISP_F = 2) THEN DO;
KKEY = 6;
GOTO C_DISPLAY2;
END;
IF (KKEY = 6) & (DISP_F = 2) THEN KKEY = 3;
IF (KKEY = 7) & (DISP_F = 1) THEN KKEY = 6;
PUT FILE(D) EDIT('ENTER # of ITEM TO BE CHANGED : ')(A);
CC_RE: GET SKIP LIST(ANS2);
ANS = SUBSTR(ANS2,1,1);
IF (ANS = '0') ö (ANS = 'E') THEN DO;
IF (DISP_F = 1) THEN GOTO C_DISPLAY1;
GOTO C_DISPLAY2;
END;
IF (VERIFY(ANS2,' 0123456789') = 0) THEN GOTO CC_RE;
JJ = ANS2;
IF (JJ > J) THEN DO;
JJ = 0;
GOTO CC_RE;
END;
IF (DISP_F = 2) THEN GOTO CR_10;
J = 0;
GOTO C_DISPLAY1;
CR_10: J = 0;
GOTO C_DISPLAY2;
C_REWRITE:
IF (JJ ¬= 0) THEN GOTO CJ_NOT_0;
IF (ANS = 'E') THEN GOTO C_END;
GOTO C_RETURN;
CJ_NOT_0:
JJ = 0;
JJJ = 1;
C_RETURN:
IF (DISP_F = 2) THEN GOTO C_R2;
J = 0;
IF (ANS = 'E') THEN GOTO C_END;
GOTO C_DISPLAY2;
C_R2: J = 0;
IF (ANS = 'E') THEN GOTO C_END;
GOTO C_DISPLAY1;
C_END: IF (JJJ = 0) THEN GOTO C_E;
C_U: CALL RE_WRITE;
C_E: ANS = KKEY;
KKEY = 5;
IF (VERIFY(ANS,'3567') = 0) THEN KKEY = 0;
RETURN;
END;
PRINT_CHECK:PROC;
D_RATE = RATE;
IF (PAYCODE = 1) THEN D_RATE = (RATE / #RG_HRSWK);
PUT SKIP EDIT('CHECK of -Multiple Pay For ')(A)(FIRST)
(A(11))(MI)(A(2))(LASTNAME)(A(15))('Checkdate : ')(A)
(OLD_MONTH)(P'99')('/')(A)(OLD_DAY)(P'99')('/')(A)
(OLD_YEAR)(P'99')(', CHECK#:')(A)(OLD_NUMBER)(P'ZZZZ9');
PUT SKIP EDIT('HOURS- 1)REGULAR :')(A)(OLD_REG_HRS)(P'ZZ9V.99')
(' -PAY :')(A)(OLD_REGPAY)(P'$$$$9V.99')(' ')(A(7))
('2)OVERTIME:')(A)(OLD_OT_HRS)(P'ZZ9V.99')(' -PAY :')(A)
(OLD_OT_PAY)(P'$$$$9V.99');
PUT SKIP EDIT(' ')(A(7))('3)SICK :')(A)(OLD_SICK_HRS)
(P'ZZ9V.99')(' -PAY :')(A)(OLD_SICKPAY)(P'$$$$9V.99')
(' ')(A(7))('4)VACATION:')(A)(OLD_VAC_HRS)(P'ZZ9V.99')
(' -PAY :')(A)((OLD_VAC_HRS * D_RATE) + .005)(P'$$$$9V.99');
PUT SKIP EDIT('OTHER PAY- 5)Taxable:')(A)(OLD_OPAY_TXBL)
(P'$$$$9V.99')(' 6)NonTxbl:')(A)(OLD_OPAY_NTX)
(P'$$$$9V.99')(' GROSS Fica/Futa Txbl:')(A)
(OLD_TOT_EARN - OLD_SICKPAY - OLD_OPAY_NTX)(P'$$$$9V.99')
(' GROSS EARNINGS:')(A)(OLD_TOT_EARN)(P'$$$$9V.99');
PUT SKIP EDIT('DEDUCTIONS- ')(A);
J = 0;
D_DO: DO I = 1 TO 4;
PUT EDIT(J + I)(P'9')(')-')(A)(DEDNS(J + I))(P'$$$$9V.99')
(' ')(A);
END;
IF ((J + I) < 6) THEN DO;
PUT SKIP EDIT(' ')(A(12));
J = 4;
GOTO D_DO;
END;
PUT SKIP EDIT('FEDERAL TAX:')(A)(OLD_FEDTX)(P'$$$$9V.99')
(' FICA:')(A)(OLD_FICA)(P'$$9V.99')(' ')(A(3))(STATE)
(A(2))(' State Tax:')(A)(OLD_ST_TAX)(P'$$$9V.99')
(' SUI-SDI:')(A)(OLD_SUI)(P'$$$9V.99');
PUT SKIP(3);
RETURN;
END;
/************ MAIN Routines for Check Adjustment Follow ************/
MAIN_CHECK:PROC;
KKEY = 0;
/* ENUM = E#;
ON ERROR GOTO KEY_MSG;
READ KEY(ENUM) FILE(EMPLOYEE) INTO(EMPLOYE) KEYTO(E#);
READ FILE(EMPLOYEE) INTO(EMPLOYEB); */
IF (B# ¬= E#) THEN GOTO KEY_MSG;
GOTO BEGIN;
KEY_MSG:
PUT FILE(D) SKIP LIST('KEYS DON"T WORK');
GET SKIP LIST('');
GOTO CHECK_RETURN;
BEGIN:
PUT FILE(D) SKIP EDIT(E#)(P'ZZZ9')('Check Adjustment')(X(6),A(16))
(LASTNAME)(X(6),A(15))('DO YOU WANT')(A(15))
('1)ReIssue Current Check')(A(47))('2)Alter & ReIssue Current Check')
(A(47))('3)Reverse Current Check')(A(47))('4)Record OffSystem Check')
(A(49))('ENTER CHOICE : ')(A);
CAR: GET SKIP LIST(ANS);
IF (VERIFY(ANS,'01234E') = 0) THEN GOTO CAR;
IF (ANS = '1') THEN GOTO CHECK1;
IF (ANS = '2') THEN GOTO CHECK2;
IF (ANS = '3') THEN GOTO CHECK3;
IF (ANS = '4') THEN GOTO CHECK4;
GOTO CHECK_RETURN;
CHECK1:
KKEY = 0;
IF (CHECK_FLAG ¬= '1') ö (NET <= 0) THEN GOTO C1_MSG2;
C1_C:
PUT FILE(D) SKIP EDIT('Do You Want To ReIssue All Checks From')
(A(47))('This Employee Onward ? ')(A);
GET SKIP LIST(ANS);
IF (ANS = 'Y') THEN DO;
CHECK_FLAG = '0';
ENUM = E#;
CALL RE_WRITE;
DATE = (P_MONTH) öö (P_DAY) öö(P_YEAR);
FILL = (DATE) öö (' ');
C1_READ:
ON ERROR GOTO C1_RS;
READ KEY('1') FILE(EMPLOYEE) INTO(EMPLOYE) KEYTO(CHECK_FLAG);
DATE = (P_MONTH) öö (P_DAY) öö (P_YEAR);
ANS8 = (DATE) öö (' ');
IF (DATE ¬= FILL) THEN GOTO C1_READ;
/* This Should Effectively Rule Out TERMINATED Employees As Well */
IF (CHECK_FLAG = '9') THEN GOTO C1_READ;
/* 9-Reversed Check 0-To be Printed 1-Printed 5-Not Computed */
IF (SORT_DEPT > SORT_D_B) THEN GOTO C1_RS;
IF (E# = 0) THEN GOTO C1_RS;
CHECK_FLAG = '0';
REWRITE FILE(EMPLOYEE) FROM(EMPLOYE);
GOTO C1_READ;
C1_RS: ON ERROR GOTO C1_MSG;
READ KEY(ENUM) FILE(EMPLOYEE) INTO(EMPLOYE) KEYTO(E#);
READ FILE(EMPLOYEE) INTO(EMPLOYEB);
IF (CHECK_FLAG ¬= '0') THEN GOTO C1_MSG;
GOTO CHECK_MSG;
END;
CHECK_FLAG = '0';
CALL RE_WRITE;
GOTO CHECK_MSG;
C1_MSG:
PUT FILE(D) SKIP EDIT('Problem at C1_RS: ')(A);
GET SKIP LIST('');
GOTO CHECK_MSG;
C1_MSG2:
IF (CHECK_FLAG = '5') THEN DO;
PUT FILE(D) SKIP EDIT('According to Employee Record, There is')
(A(47))('Pay period data awaiting computation-')(A(47))
('Do you mean to reissue the last pay-period"s')(A(47))
('Check before computing current one ? ENTER')(A(47))
('1)To print old check')(A(47))('2)To Exit this Routine')
(A(47))(' ENTER CHOICE : ')(A);
C1_2: GET SKIP LIST(ANS);
IF (VERIFY(ANS,'12') = 0) THEN GOTO C1_2;
IF (ANS = '2') THEN GOTO BEGIN;
IF (ANS = '1') THEN GOTO C1_C;
END;
IF (CHECK_FLAG = '9') THEN DO;
PUT FILE(D) SKIP EDIT('This Employee has no applicable check')
(A(47))('data- His last check is on record as')(A(47))
('having been reversed')(A);
GET SKIP LIST('');
GOTO CHECK_RETURN;
END;
IF (CHECK_FLAG = '0') THEN GOTO CHECK_RETURN;
/* **************************************** HERE- (NET <= 0) ***** */
PUT FILE(D) SKIP EDIT('Sorry, this Employee"s last check NET')
(A(47))('amount is less than or equal to ZERO.')(A(47))
('This program refuses to key such a check')(A(47))
('To be printed.')(A);
GET SKIP LIST('');
GOTO CHECK_RETURN;
CHECK2:
KKEY = 0;
CHECKBUFF = LAST_CHECK;
CALL LAST_CHECK_AMOUNTS;
CALL CHECK_RELATIONS;
IF (KKEY = 4) THEN DO; /* 4-BAD DATA */
KKEY = 0;
LAST_CHECK = CHECKBUFF;
CALL RE_WRITE;
GOTO CHECK_RETURN;
END;
CALL REVERSE_CHECK;
CALL INCREMENT_CHECK;
IF (CHECK_FLAG = '5') ö (CHECK_FLAG = '9') THEN CHECK_FLAG = '0';
IF (CHECK_FLAG ¬= '0') THEN DO;
CHECK_FLAG = '0';
CALL RE_WRITE;
GOTO CHECK_MSG;
END;
CALL RE_WRITE;
GOTO CHECK_RETURN;
CHECK3:
KKEY = 0;
IF (CHECK_FLAG = '9') THEN GOTO CHECK_RETURN;
/********************************************** 9- Already Reversed */
CHECKBUFF = LAST_CHECK;
CALL REVERSE_CHECK;
CALL ZERO_OLD;
IF (CHECK_FLAG ¬= '0') THEN DO;
CHECK_FLAG = '9';
CALL RE_WRITE;
GOTO CHECK_MSG;
END;
PUT FILE(D) SKIP EDIT('CHECK NUMBER ')(A(13))(CHECK#)(P'ZZZZ9')
(' IS BEING SKIPPED-Make Note of This If It Matters ')(A(51))
(' For Your Records')(A);
CHECK_FLAG = '9';
GET SKIP LIST('');
CALL RE_WRITE;
GOTO CHECK_RETURN;
CHECK_MSG:
PUT FILE(D) SKIP EDIT('Be Sure Check Already Issued Is Both')
(A(57))('1)VOIDED and')(A(47))('2)KeyedOff BEFORE ReIssuing')
(A(49))('(Use Check Rec Option)')(A);
GET SKIP LIST('');
GOTO CHECK_RETURN;
CHECK4:
PUT FILE(D) SKIP EDIT('When Last-Check Amounts Display Appears')
(A(47))('Choose To Modify any Field in 1st Display')(A(47))
('& Program will go on to Prompt for Values')(A(47))
('For All Fields In Sequence')(A);
GET SKIP LIST ('');
CHECKBUFF = LAST_CHECK;
KKEY = 5;
CALL LAST_CHECK_AMOUNTS;
CHECK_FLAG = '1'; /* 1- Already Printed */
IF (P_MONTH = OLD_MONTH) & (P_DAY = OLD_DAY) & (P_YEAR = OLD_YEAR)
THEN DO;
PUT FILE(D) SKIP EDIT('Is This Check')(A(47))
('1)Revised Check for ')(A(20))(P_MONTH)(P'Z9')
('/')(A)(P_DAY)(P'Z9')('/')(A)(P_YEAR)(P'Z9')
(' ')(A(19))('2)Additional Check for ')(A(23))
(P_MONTH)(P'Z9')('/')(A)(P_DAY)(P'Z9')('/')(A)
(P_YEAR)(P'Z9')(' ')(A(18))('ENTER CHOICE : ')(A);
C4_RE: GET SKIP LIST(ANS);
IF (VERIFY(ANS,'12') = 0) THEN GOTO C4_RE;
IF (ANS = '1') THEN DO;
CALL REVERSE_CHECK;
CALL INCREMENT_CHECK;
END;
IF (ANS = '2') THEN DO;
PUT FILE(D) SKIP EDIT('Only The Most Recent Check Data Can Be')
(A(47))('Kept On Record For Your Inspection.')(A(47))
('If You Want a Printout Of The Information ')(A(47))
('About To Be Lost, Arrange Paper & Keyin "X"')(A(47));
GET SKIP LIST(ANS);
IF (ANS = 'X') THEN DO;
CALL PRINT_CHECK;
END;
CALL INCREMENT_CHECK;
END;
KKEY = 5;
CALL CHECK_RELATIONS;
KKEY = 0;
CALL RE_WRITE;
GOTO CHECK_RETURN;
END;
KKEY = 5;
CALL INCREMENT_CHECK;
CALL CHECK_RELATIONS;
KKEY = 0;
CALL RE_WRITE;
GOTO CHECK_RETURN;
CHECK_RETURN:
RETURN;
END;
/************ MAIN Part of Check Adjustment Program Follows ************/
ENUM = E#;
OPEN EMPLOYEE;
OPEN DEDUCTNS;
READ FILE(DEDUCTNS) INTO(DEDCTION);
OPEN CONTROL;
READ FILE(CONTROL) INTO(CONTROL_REC);
ON ERROR GOTO MAIN_MSG;
READ KEY(ENUM) FILE(EMPLOYEE) INTO(EMPLOYE) KEYTO(E#);
ON ENDFILE GOTO MSG_2;
READ FILE(EMPLOYEE) INTO(EMPLOYEB);
CALL MAIN_CHECK;
GOTO EOP;
MAIN_MSG:
PUT FILE(D) SKIP EDIT('EMPLOYEE#:')(A)(ENUM)(P'9999')
(' NOT FOUND')(A);
GET SKIP LIST('');
ANS = 'X';
GOTO EOP_2;
MSG_2:
PUT FILE(D) SKIP EDIT('SECOND HALF OF ')(A)(ENUM)(P'9999')
(' RECORD NOT FOUND')(A);
GET SKIP LIST('');
ANS = 'X';
GOTO EOP_2;
EOP: ANS = 'Q';
EOP_2:
CALL TYPIST('EMPPGM_B┣0d┫',9);
END;