|
|
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: 68098 (0x10a02)
Types: Q1_Text, reclen=79
Notes: q1file
Names: »TAXPGM_S«
└─⟦415b26bc8⟧ Bits:30008568 DDMQ1-0003_Source_For_Q1_Payroll_Package_Diskette_1_1
└─⟦this⟧ »TAXPGM_S«
/* Taxfile Record Length 330 w/ 4 Such Records Each State/City/Federal */
/* SECTIONED Sunday - March 26th 1978 */
DCL OTHERTAX FILE;
DCL F_OR_C(2) CHAR(4) INIT('FICA','SUI ');
DCL F_OR_D(2) CHAR(4) INIT('FUTA','SDI ');
DCL BIGTAX FIXED(5,3);
DCL T_CODE CHAR(1);
DCL ANS CHAR(1);
DCL ANS2 CHAR(2);
DCL ANS3 CHAR(3);
DCL ANS7 CHAR(7);
DCL ANS_AMT FIXED(7,2);
DCL HOURS5 CHAR(5);
DCL DEDN FIXED(7,2);
DCL DATE CHAR(6);
DCL MARYTAL(2) CHAR(10) INIT('SINGLE','MARRIED');
DCL PERP FIXED(3,1);
DCL MORE_TAX FIXED(4,2);
DCL PAYFREQ(4) CHAR(10) INIT('MONTHLY','SemiMONTLY','BiWEEKLY','WEEKLY');
DCL 1 OTHER,
2 OTAX(4), /* 1-MONTHLY 2-SemiMONTHLY 3-BiWEEKLY 4-WEEKLY */
3 STOC CHAR(2), /* STATE */
3 OOWH CHAR(1), /* 1-4:STATE TAX 5:CITY 9:FEDTAX */
3 OOWC CHAR(5), /* 1st 5 Char of CITY if CITYTAX */
3 OXM$ FIXED(6,2), /* Exemption $ Amount */
3 OMOC CHAR(1), /* 1-Marital figures in TAX */
/* Determination 2-It don't */
3 TSPX FIXED(4,4), /* Commuter or Transportat'n TAX */
/* NOTE TSPX DOES NOT take Marital Status into consideration */
/* NOR DOES it provide for a Base Wage Amount - is this OK ? */
3 OS_D(2), /* 1-SUI 2-Disability EMPLOYEE */
4 ORATE FIXED(4,4),
4 OBASE FIXED(7,2),
3 ODWGS(2) FIXED(7,2), /* For Deductions Computation */
3 ODAMT(2) FIXED(5,2), /* Deduction Amounts */
3 O_PCT FIXED(3,3), /* Gross Wages * PCT */
3 OLESS FIXED(5,2), /* minus LESS = Deduction */
3 OM(2), /* 1-SINGLE 2-MARRIED */
4 OBLT(14) FIXED(7,2), /* "BUT LESS THAN" Wages */
4 OBTX(14) FIXED(5,2), /* base TAX Amount */
4 OPCT(14) FIXED(3,3); /* % To be applied to */
/* Gross Wages - OBLT(I-1) */
DCL 1 OTAXES,
2 ST_C CHAR(2),
2 O_WH CHAR(1),
2 O_WC CHAR(5),
2 OEXM$ FIXED(6,2),
2 OMAR CHAR(1),
2 TRNX FIXED(4,4),
2 O_SD(2),
3 ORA FIXED(4,4),
3 OBA FIXED(7,2),
2 WAGEZ(2) FIXED(7,2),
2 D_AMT(2) FIXED(5,2),
2 PCT FIXED(3,3),
2 LESS FIXED(5,2),
2 MARS(2),
3 SOBLT(14) FIXED(7,2),
3 SOBTX(14) FIXED(5,2),
3 SOPCT(14) FIXED(3,3);
DCL 1 S_OR_M, /* *** Single OR Married *** */
2 R_MAX(14) FIXED(7,2),
2 B_TAX(14) FIXED(5,2),
2 PCT_DIF(14) FIXED(3,3);
DCL 1 SUITABLE, /* State Tax = SUI, Federal Tax = FICA */
2 SPC FIXED(4,4),
2 SW_B FIXED(7,2);
DCL 1 DISABILTY, /* State Tax = Disability, Federal Tax = FUTA */
2 DP_C FIXED(4,4),
2 DW_B FIXED(7,2);
RMSG: PUT FILE(D) SKIP LIST('THIS ROUTINE NOT YET INCLUDED');
GET SKIP LIST('');
GOTO EOP;
/* *** Taxfiles Re-Initialization & Creation Routines *** */
/* PRINT ROUTINES for TAX FILE PROGRAM - April 2nd 1978 */
/*********************************************/
/* */
/* BEWARE DEDN in PUT Statements - $$$9V.99 */
/* Is not Large enuf to show true content of */
/* Variable - It Was Increased fm FIXED(6,2) */
/* */
/*********************************************/
PRINTLIST:PROC;
UNSPEC(OTHERTAX) = 0;
KKEY = 0;
RR: ON ENDFILE GOTO PL_MSG;
READ FILE(OTHERTAX) INTO(OTAX);
KKEY = KKEY + 1;
IF (STOC = '00') THEN GOTO RR;
IF (STOC = 'FD') THEN DO;
PUT SKIP EDIT('FEDERAL Tax File')(A);
GOTO RR;
END;
PUT SKIP EDIT(STOC)(A)(' STATE ')(A);
IF (OOWH = '2') THEN DO;
PUT EDIT(' - ')(A)(OOWC)(A)(' City ')(A);
END;
PUT EDIT('Tax File')(A);
GOTO RR;
PL_MSG:
IF (KKEY > 0) THEN GOTO PLR;
KKEY = 57;
GOTO PLR;
PLR: PUT SKIP;
RETURN;
END;
XPLAIN_T:PROC;
PUT SKIP(5);
PUT SKIP EDIT('TAXFILES ARE SET-UP ALONG THE EXACT')(A)
(' CALCULATION METHOD. ')(A);
PUT SKIP(4);
PUT SKIP EDIT('WHERE TAX CALCULATIONS PROVIDE FOR')(A)
(' DEDUCTIONS -')(A(26))('YOU WILL BE PROMPTED FOR')(A);
PUT SKIP;
PUT SKIP EDIT('W1, W2, D1, D2, ADJ, &')(X(60),A);
PUT SKIP EDIT('ö GROSS WAGES ö DEDUCTION ö')(X(17),A);
PUT SKIP EDIT('-----------------')(A)('ö')(A)
('--------------ö-------------ö')(A)
(' ')(A(13))('PCT AS IN TABLE FOR EACH')(A);
PUT SKIP EDIT('A) LESS THAN ö (W1) 9999.99 ö ')(A)
('(D1) 999.99 ö')(A);
PUT SKIP EDIT('-----------------')(A)('ö')(A)
('--------------ö-------------ö')(A)
(' ')(A(13))('PAYFREQUENCY: MONTHLY,')(A);
PUT SKIP EDIT('B) MORE THAN ö (W2) 9999.99 ö')(A)
(' (D2) 999.99 ö')(A);
PUT SKIP EDIT('Semi-MONTHLY, Bi-WEEKLY,')(X(60),A);
PUT SKIP EDIT('(ADJ) 999.99 (PCT) 99.9')(X(19),A);
PUT SKIP EDIT('& WEEKLY')(X(60),A);
PUT SKIP EDIT('FOR GROSS-WAGES BETWEEN A) & B) ABOVE')(A);
PUT SKIP EDIT('DEDUCTION = (GROSS-WAGES * PCT) - ADJ')(A);
PUT SKIP(7);
PUT SKIP EDIT('FOR TAX AMOUNT TO BE WITHHELD -')(A);
PUT SKIP(2);
PUT SKIP EDIT(' WAGES AFTER DEDUCTIONS ö AMOUNT')(A)
(' TO BE WITHHELD IS THE SUM OF -')(A);
PUT SKIP EDIT(' AND EXEMPTIONS ö')(A);
PUT SKIP EDIT('AT LEAST ö BUT LESS ö BASE')(A)
(' ö ö THIS % ö EXCESS')(A);
PUT SKIP EDIT('ö THAN ö AMOUNT ö')(X(11),A)
(' PLUS ö OF ö OVER')(A);
PUT SKIP EDIT('-----------ö-------------ö-----------')(A)
('ö')(A)('------')(A)('ö')(A)('----------')(A)
('ö')(A)('--------')(A);
PUT SKIP EDIT('A)99999.99 ö (W)99999.99 ö(B) 999.99 ö')(A)
(' ö (P) 99.9 ö A)')(A);
PUT SKIP(3);
PUT SKIP EDIT('YOU WILL BE PROMPTED FOR (W), ')(A)
('(B), & (P) AS IN TABLE FOR EACH')(A);
PUT SKIP;
PUT SKIP EDIT('PAYFREQUENCY. YOU MAY ENTER UPTO')(A)
(' 14 VALUES FOR EACH. FOR YOUR')(A);
PUT SKIP;
PUT SKIP EDIT('LAST ENTRY, (WHERE (W) IS GIVEN AS: ')(A)
(' "For A) and UP" ), ENTER')(A);
PUT SKIP;
PUT SKIP EDIT('(W) =99999.99')(A);
PUT SKIP(15);
RETURN;
END;
PRINT_FILE:PROC;
IF (KKEY = 7) THEN DO;
ANS2 = 'FD';
GOTO PT0;
END;
IF (KKEY = 3) THEN GOTO P2;
PTX: PUT FILE(D) SKIP EDIT('ENTER STATE CODE : ')(A);
GET SKIP LIST(ANS2);
PUT FILE(D) SKIP EDIT('IS THIS A CITY TAXTABLE ? ')(A);
PXR: GET SKIP LIST(ANS3);
ANS = SUBSTR(ANS3,1,1);
IF (ANS = 'Y') THEN DO;
PUT FILE(D) EDIT(' ENTER 1st 5 CHARACTERS OF CITY : ')(A);
GET SKIP LIST(HOURS5);
GOTO PT1;
END;
IF (ANS ¬= 'N') THEN GOTO PXR;
PT0: HOURS5 = '*****';
PT1: ON ERROR GOTO P_MSG1; /* MSG3 */
READ KEY(ANS2) FILE(OTHERTAX) INTO(OTAX);
IF (HOURS5 = '*****') & (OOWH ¬= '5') THEN GOTO P2;
IF (HOURS5 = OOWC) THEN GOTO P2;
/* IMPORTANT NOTE : Below Does Not Insure Correct State - */
/* Only That The City is The Same Name , BEWARE ! */
P1: ON ENDFILE GOTO P_MSG3; /* MSG7 */
READ FILE(OTHERTAX) INTO(OTAX);
IF (HOURS5 ¬= OOWC) THEN GOTO P1;
IF (STOC ¬= ANS2) THEN GOTO P1;
P2: N = 0;
IF (OMOC ¬= '2') THEN N = 1;
PR: DO I = 1 TO 4;
OTAXES = OTAX(I);
NAI = N;
IF (N = 0) THEN NAI = 1;
S_OR_M = MARS(NAI);
/* Put TEST to Skip Deductions HERE */
PUT SKIP(5);
PUT SKIP EDIT('TAXFILE - ')(A);
IF (STOC = 'FD') THEN DO;
PUT EDIT('FEDERAL')(A);
GOTO P4;
END;
PUT EDIT(STOC)(A)(' STATE -')(A);
IF (OOWH ¬= '5') THEN GOTO P4;
PUT EDIT(OOWC)(A)(' CITY -')(A);
P4: PUT SKIP(2);
PUT SKIP EDIT(PAYFREQ(I))(A)( ' DEDUCTIONS TABLE -')(A);
IF (N = 0) THEN GOTO PN;
PUT EDIT(' FOR ')(A)(MARYTAL(NAI))(A);
PN: PUT SKIP;
PUT SKIP EDIT('ö GROSS WAGES ö DEDUCTION ö')(X(17),A);
PUT SKIP EDIT('-----------------ö--------------ö')(A)
('-------------ö')(A);
PUT SKIP EDIT(' LESS THAN ö (W1)')(A)(WAGEZ(1))
(P'$$$$9V.99')(' ö (D1) ')(A)(D_AMT(1))(P'$$9V.99')(' ö')(A);
PUT SKIP EDIT('-----------------ö--------------ö')(A)
('-------------ö')(A);
PUT SKIP EDIT(' MORE THAN ö (W2)')(A)(WAGEZ(2))
(P'$$$$9V.99')(' ö (D2) ')(A)(D_AMT(2))(P'$$9V.99')(' ö')(A);
PUT SKIP;
PERP = PCT * 100;
PUT SKIP EDIT('(ADJ) ')(X(19),A)(LESS)(P'$$9V.99')(' (PCT) ')
(A)(PERP)(P'99V.9')(' %')(A);
PUT SKIP(3);
PUT SKIP EDIT('EXEMPTION AMOUNT FOR ')(A)
(PAYFREQ(I))(A)(' PAY-FREQUENCY : ')(A)(OEXM$)(P'$$$9V.99');
PUT SKIP(3);
PUT SKIP EDIT(PAYFREQ(I))(A)(' TAX TABLE -')(A);
IF (N = 0) THEN GOTO PN2;
PUT EDIT(' For ')(A)(MARYTAL(NAI))(A);
PN2: PUT SKIP;
PUT SKIP EDIT(' WAGES AFTER DEDUCTIONS ö AMOUNT')(A)
(' TO BE WITHHELD IS THE SUM OF -')(A);
PUT SKIP EDIT(' AND EXEMPTIONS ö')(A);
PUT SKIP EDIT('AT LEAST ö BUT LESS ö BASE')(A)
(' ö ö THIS % ö EXCESS')(A);
PUT SKIP EDIT('ö THAN ö AMOUNT ö')(X(11),A)
(' PLUS ö OF ö OVER')(A);
DO J = 1 TO 14;
PUT SKIP EDIT('-----------ö-------------ö-----------')(A)
('ö------ö----------ö--------')(A);
PUT SKIP EDIT(J)(P'9')(')')(A);
DEDN = R_MAX(J - 1);
PERP = PCT_DIF(J) * 100;
IF (J = 1) THEN DEDN = 0;
PUT EDIT(DEDN)(P'$$$$9V.99')(' ö (W)')(A)
(R_MAX(J))(P'$$$$9V.99')(' ö(B) ')(A)(B_TAX(J))(P'$$9V.99')
(' ö ö (P) ')(A)(PERP)(P'99V.9')(' ö')(A)
(DEDN)(P'$$$9V.99');
IF (J = 14) THEN GOTO PN3;
IF (R_MAX(J + 1) = 0) THEN DO;
J = J + J;
PUT SKIP(28 - J);
GOTO PN4;
END;
PN3: END;
PN4: PUT SKIP(8);
END;
IF (N = 0) THEN GOTO EP;
IF (N = 1) THEN DO;
N = 2;
GOTO PR;
END;
GOTO EP;
P_MSG1:
IF (ANS2 = 'FD') THEN GOTO P_MSG2;
PUT FILE(D) SKIP EDIT('SORRY - No ')(A(11))(ANS2)(A(2))
(' State File In Your TaxFile')(A(27));
GET SKIP LIST('');
GOTO EP;
P_MSG2:
KKEY = 57;
GOTO EP;
P_MSG3:
PUT FILE(D) SKIP EDIT('NO ')(A(3))(HOURS5)(A(5))(ANS2)
(A(2))(' File Found In Your TaxFile')(A(27));
GET SKIP LIST('');
GOTO EP;
EP: RETURN;
END;
/* TaxFile Initialization Module - March 29th 1978 */
TAX_INIT:PROC;
PUT FILE(D) SKIP EDIT('Your TaxFile has Not Been Initialized')
(A(47))('DO You Want to')(A(18))('1)Initialize Your Tax File')
(A(47))('2)Exit This Program')(A(49))('ENTER CHOICE : ')(A);
TIR: GET SKIP LIST(ANS);
IF (ANS = '2') THEN GOTO TI2;
IF (ANS ¬= '1') THEN GOTO TIR;
GOTO TII;
TI2: KKEY = 5;
GOTO XTI;
TII: OPEN OTHERTAX;
ST_C = '00';
OEXM$ = 0;
TRNX = 0;
PCT = 0;
LESS = 0;
SPC = 0;
SW_B = 0;
DO I = 1 TO 14;
R_MAX(I) = 0;
B_TAX(I) = 0;
PCT_DIF(I) = 0;
END;
R_MAX(14) = 99999.99;
O_WH = '2';
O_WC = ' ';
ANS = '2';
BEG: DO I = 1 TO 2;
O_SD(I) = SUITABLE;
WAGEZ(I) = 99999;
D_AMT(I) = 0;
MARS(I) = S_OR_M;
END;
OMAR = ANS;
DO I = 1 TO 4;
OTAX(I) = OTAXES;
END;
WRITE FILE(OTHERTAX) FROM(OTAX);
IF (ST_C = '00') THEN DO;
ANS = '1';
ST_C = 'FD';
O_WH = '9';
O_WC = ' ';
GOTO BEG;
END;
CLOSE OTHERTAX;
CALL XPLAIN_T;
XTI: RETURN;
END;
/* FICA and SUI/Unemployment Tax Change Routine */
F_OR_S:PROC;
/************************************************************************/
/* */
/* This Routine Applies To FEDERAL & STATE Files ONLY, NOT To CITY Ones */
/* */
/************************************************************************/
ON ERROR GOTO FS_MSG;
READ KEY(ANS2) FILE(OTHERTAX) INTO(OTAX);
IF (VERIFY(OOWH,'12349') = 0) THEN DO;
RR_F_S:
ON ENDFILE GOTO FS_MSG;
READ FILE(OTHERTAX) INTO(OTAX);
IF (ANS2 ¬= STOC) ö (VERIFY(OOWH,'12349') = 0) THEN DO;
GOTO RR_F_S;
END;
END;
SUITABLE = OS_D(1);
DISABILTY = OS_D(2);
FSR: MORE_TAX = SPC * 100;
ANS3 = ANS2;
IF (KKEY = 1) THEN ANS3 = ' ';
PUT FILE(D) SKIP EDIT(ANS3)(A(47))('CURRENT ')(A)
(F_OR_C(KKEY))(A)(' Rate : ')(A)(MORE_TAX)(P'Z9V.99')
('% BASE Wage : ')(A)(SW_B)(P'ZZZZ9V.99')('NEW VALUES ')(A)
('Rate : ')(A);
GET SKIP LIST(MORE_TAX);
PUT FILE(D) EDIT(MORE_TAX)(P'Z9V.99')('% BASE Wage : ')(A);
GET SKIP LIST(ANS_AMT);
PUT FILE(D) EDIT(ANS_AMT)(P'ZZZZ9V.99')(' ')(A(8))
(F_OR_D(KKEY))(A(4))(' Rate : ')(A(8));
BIGTAX = DP_C * 100;
IF (KKEY = 1) THEN BIGTAX = DP_C;
PUT FILE(D) EDIT(BIGTAX)(P'Z9V.999')('% BASE Wage :')(A(13))
(DW_B)(P'ZZZZ9V.99')('NEW VALUES ')(A(13))('Rate : ')
(A(7));
GET SKIP LIST(BIGTAX);
PUT FILE(D) EDIT(BIGTAX)(P'Z9V.999')('% BASE Wage :')(A(13));
GET SKIP LIST(DW_B);
PUT FILE(D) EDIT(DW_B)(P'ZZZZ9V.99')('OK ? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO FSR;
SPC = MORE_TAX * .01;
DP_C = BIGTAX * .01;
IF (KKEY = 1) THEN DP_C = BIGTAX;
SW_B = ANS_AMT;
DO I = 1 TO 4;
OTAXES = OTAX(I);
OS_D(1) = SUITABLE;
OS_D(2) = DISABILTY;
OTAX(I) = OTAXES;
END;
UNSPEC(OTHERTAX) = UNSPEC(OTHERTAX) - 4;
WRITE FILE(OTHERTAX) FROM(OTAX);
OPEN OTHERTAX;
PUT SKIP(2);
PUT SKIP EDIT('CURRENT Value ')(A)(ANS2)(A(3))(F_OR_C(KKEY))
(A)(' Rate : ')(A)(ORATE * 100)(P'Z9V.99')('% BASE Wage : ')
(A)(OBASE)(P'$$$$9V.99');
GOTO F_S_R;
FS_MSG:
IF (KKEY = 2) THEN DO;
PUT FILE(D) SKIP EDIT(ANS2)(A)(' Tax Record NOT FOUND')(A);
GET SKIP LIST('');
GOTO F_S_R;
END;
KKEY = 57;
GOTO F_S_R;
F_S_R: RETURN;
END;
/* FEDERAL RECORD ROUTINE HERE - Init & Re-Init are the Same */
FEDERAL_TAX:PROC;
FTA0: ON ERROR GOTO TMSG;
READ KEY('FD') FILE(OTHERTAX) INTO(OTAX);
DO I = 1 TO 4;
OTAXES = OTAX(I);
FTA: PUT FILE(D) SKIP EDIT(PAYFREQ(I))(A(10))(' PAY FREQUENCY')(A(37))
('EXEMPTION AMOUNT : ')(A);
GET SKIP LIST(OEXM$);
PUT FILE(D) EDIT(OEXM$)(P'$$$9V.99')(' OK? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO FTA;
FM: PUT FILE(D) SKIP EDIT('SOCIAL SECURITY TAX - FICA')(A(47))
('ENTER PCT : ')(A(12));
/* MORE_TAX Should be Changed to FIXED(5,3), and */
/* SPC, DP_C, ORA, ORATE Should be Changed to FIXED(5,5) */
GET SKIP LIST(SPC);
PUT FILE(D) EDIT(SPC)(P'V.999')('%')(A(6))
('TAXABLE WAGES : ')(A(16));
GET SKIP LIST(SW_B);
PUT FILE(D) EDIT(SW_B)(P'$$$$9V.99')
(' FEDERAL DISABILITY - FUTA')(A(48))('ENTER PCT : ')(A(13));
GET SKIP LIST(MORE_TAX);
DP_C = (MORE_TAX * .01);
PUT FILE(D) EDIT(MORE_TAX)(P'99V.99')('%')(A(5))
('TAXABLE WAGES : ')(A(16));
GET SKIP LIST(DW_B);
PUT FILE(D) EDIT(DW_B)(P'$$$$9V.99')('OK ? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO FM;
FM2: O_SD(1) = SUITABLE;
O_SD(2) = DISABILTY;
FTA1: PUT FILE(D) SKIP EDIT('FOR DEDUCTIONS CONSIDERATION FOR ')(A)
(PAYFREQ(I))(A(14))('ENTER W1 : ')(A);
GET SKIP LIST(WAGEZ(1));
PUT FILE(D) EDIT(WAGEZ(1))(P'$$$9V.99')('ENTER W2 : ')(X(8),A);
GET SKIP LIST(WAGEZ(2));
PUT FILE(D) EDIT(WAGEZ(2))(P'$$$9V.99')('ENTER D1 : ')(X(3),A);
GET SKIP LIST(D_AMT(1));
PUT FILE(D) EDIT(D_AMT(1))(P'$$9V.99')('ENTER D2 : ')(X(9),A);
GET SKIP LIST(D_AMT(2));
PUT FILE(D) EDIT(D_AMT(2))(P'$$9V.99')(' ')(A)
('ENTER PCT : ')(A);
GET SKIP LIST(PERP);
PCT = (PERP * .01);
PUT FILE(D) EDIT(PERP)(P'99V.9')('% ')(A)
(' ENTER ADJ : ')(A);
GET SKIP LIST(LESS);
PUT FILE(D) EDIT(LESS)(P'$$9V.99')(' OK? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO FTA1;
DO J = 1 TO 2;
S_OR_M = MARS(J);
F10: M = 7;
F1: M = M - 7;
F2: PUT FILE(D) SKIP EDIT(PAYFREQ(I))(A(10))(' TX AMT TO BE ')(A)
('WITHHELD FOR ')(A)(MARYTAL(J))(A(10));
FTA2: DO L = 1 TO 7;
M = M + 1;
PUT FILE(D) EDIT(M)(P'99')(')')(A)('ENTER W:')(A);
GET SKIP LIST(R_MAX(M));
PUT FILE(D) EDIT(R_MAX(M))(P'$$$9V.99')(' ENTER B:')(A);
GET SKIP LIST(B_TAX(M));
PUT FILE(D) EDIT(B_TAX(M))(P'$$9V.99')(' ENTER P:')(A);
GET SKIP LIST(PERP);
PCT_DIF(M) = (PERP * .01);
PUT FILE(D) EDIT(PERP)(P'99V.9')('%')(A);
END;
PUT FILE(D) EDIT('OK? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO F1;
MARS(J) = S_OR_M;
IF (M < 9) THEN GOTO F2;
END;
OTAX(I) = OTAXES;
END;
OFT1: UNSPEC(OTHERTAX) = UNSPEC(OTHERTAX) - 4;
WRITE FILE(OTHERTAX) FROM(OTAX);
OPEN OTHERTAX;
OFT2: KKEY = 3;
N = 1;
CALL PRINT_FILE;
GOTO FT_R;
TMSG: KKEY = 57;
GOTO FT_R;
FT_R: RETURN;
END;
/* THIS IS THE CITY and STATE ROUTINES for TAX PROGRAM */
STATE_CITY:PROC;
AST: PUT FILE(D) SKIP EDIT('ENTER STATE CODE : ')(A);
GET SKIP LIST(ANS2);
PUT FILE(D) EDIT(ANS2)(A)(' OK? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO AST;
AST1: PUT FILE(D) SKIP EDIT('IS THIS A CITY TAXTABLE ? ')(A);
A1R: GET SKIP LIST(ANS3);
ANS = SUBSTR(ANS3,1,1);
HOURS5 = ' '; /* State Record */
IF (ANS = 'Y') THEN DO;
T_CODE = '5'; /* City Record, No SUI or FICA */
K = 1; /* Re-Initializing Flag */
AST2: HOURS5 = ' ';
PUT FILE(D) SKIP EDIT('ENTER 1st 5 CHARACTERS OF CITY : ')(A);
GET SKIP LIST(HOURS5);
PUT FILE(D) EDIT(HOURS5)(A)(' OK? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO AST2;
/* GOTO AST3; */
ON ERROR GOTO NEW_C1;
READ KEY(ANS2) FILE(OTHERTAX) INTO(OTAX);
IF (OOWH ¬= '5') THEN DO;
C_READ: ON ENDFILE GOTO NEW_C2;
READ FILE(OTHERTAX) INTO(OTAX);
IF (ANS2 ¬= STOC) ö (HOURS5 ¬= OOWC) ö (OOWH ¬= '5') THEN DO;
GOTO C_READ;
END;
GOTO AS5;
END;
GOTO AS5;
NEW_C1: PUT FILE(D) SKIP EDIT('NOTE: You Have No ')(A)(ANS2)(A)
(' STATE File In Your Tax File')(A);
GET SKIP LIST('');
NEW_C2: K = 0; /* New CITY Tax Record */
OPEN OTHERTAX;
ON ERROR GOTO C_S_MSG;
READ KEY('00') FILE(OTHERTAX) INTO(OTAX);
STOC = ANS2;
OOWC = HOURS5;
OOWH = '5';
GOTO AS5;
END;
IF (ANS ¬= 'N') THEN GOTO A1R;
/* T_CODE = '1'; */
K = 1;
AST3: ON ERROR GOTO NEW_S2; /* This is New State Rec w/ No City Yet */
READ KEY(ANS2) FILE(OTHERTAX) INTO(OTAX);
IF (VERIFY(OOWH,'1234') = 0) THEN DO; /* Not a State File */
ADR: ON ENDFILE GOTO NEW_S1; /* New State but City Already In File */
READ FILE(OTHERTAX) INTO(OTAX);
IF (ANS2 ¬= STOC) ö (VERIFY(OOWH,'1234') = 0) THEN GOTO ADR;
GOTO GOT_REC;
END;
GOTO GOT_REC;
NEW_S1: PUT FILE(D) SKIP EDIT('You Have a ')(A)(ANS2)(A)
(' CITY File, But No STATE One')(A);
GET SKIP LIST('');
NEW_S2: K = 0;
OPEN OTHERTAX;
ON ERROR GOTO C_S_MSG;
READ KEY('00') FILE(OTHERTAX) INTO(OTAX);
STOC = ANS2;
HOURS5 = ' ';
OOWH = '2';
GOTO GOT_REC;
/* If found, then taxfile is being Re-Initialized & K = 1 */
/* If Not Found, Then This Is a New Tax Record, And K = 0 */
GOT_REC:
PUT FILE(D) SKIP EDIT('For ')(A(4))(STOC)(A(3))('State, Is SickPay')
(A(21))('1)SUI-SDI Taxable')(A(47))('2)FICA Taxable')
(A(47))('3)BOTH Taxable')(A(47))('4)NEITHER Taxable')
(A(49))('ENTER CHOICE : ')(A);
GR_RE:
GET SKIP LIST(ANS);
IF (VERIFY(ANS,'1234') = 0) THEN GOTO GR_RE;
OOWH = ANS;
AS5: PUT FILE(D) SKIP EDIT('FOR ')(A)(STOC)(A)(' TAX ')(A)
('CALCULATIONS, DOES MARITAL STATUS MATTER? ')(A);
AST7: GET SKIP LIST(ANS3);
/*****************************/
/* N is Marital Status Flag */
/* 1- Marital Status Matters */
/* Zero - It Does not Matter */
/*****************************/
ANS = SUBSTR(ANS3,1,1);
N = 0;
IF (ANS = 'Y') THEN DO;
N = 1;
OMOC = '1';
GOTO SM;
END;
IF (ANS ¬= 'N') THEN GOTO AST7;
OMOC = '2';
/* CT:PUT FILE(D) SKIP EDIT(STOC)(A)(' COMMUTATION TAX-PERCENT : ')(A);
GET SKIP LIST(MORE_TAX);
TRNX = (MORE_TAX * .01);
PUT FILE(D) EDIT(MORE_TAX)(P'99V.99')('% OK? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO CT; */
SM: SUITABLE = O_SD(1);
DISABILTY = O_SD(2);
IF (OOWH = '5') THEN GOTO AST5;
PUT FILE(D) SKIP EDIT(STOC)(A(3))('STATE UNEMPLOYMENT INSURANCE TAX')
(A(44))('ENTER PCT : ')(A(13));
GET SKIP LIST(MORE_TAX);
SPC = (MORE_TAX * .01);
PUT FILE(D) EDIT(MORE_TAX)(P'99V.99')(' %')(A(5))
('TAXABLE WAGES : ')(A(16));
GET SKIP LIST(SW_B);
PUT FILE(D) EDIT(SW_B)(P'$$$$9V.99')
(STOC)(A(3))('STATE DISABILITY INSURANCE TAX')(A(44))
('ENTER PCT : ')(A(13));
GET SKIP LIST(MORE_TAX);
DP_C = (MORE_TAX * .01);
PUT FILE(D) EDIT(MORE_TAX)(P'99V.99')(' %')(A(5))
('TAXABLE WAGES : ')(A(16));
GET SKIP LIST(DW_B);
PUT FILE(D) EDIT(DW_B)(P'$$$$9V.99')('OK ? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO SM;
SM2: O_SD(1) = SUITABLE;
O_SD(2) = DISABILTY;
AST5: DO I = 1 TO 4;
OTAXES = OTAX(I);
ST_C = STOC;
O_WH = OOWH;
O_WC = OOWC;
O_SD(1) = SUITABLE;
O_SD(2) = DISABILTY;
/* TRNX = (MORE_TAX * .01); */
AST6: PUT FILE(D) SKIP EDIT(PAYFREQ(I))(A(10))(' PAY ')(A)
('FREQUENCY')(A(32))('EXEMPTION AMOUNT : ')(A);
A6R: GET SKIP LIST(ANS7);
IF (ANS7 = ' ') THEN GOTO AT14; /* Skip This P_FREQ */
IF (VERIFY(ANS7,' 0123456789.') = 0) THEN GOTO A6R;
OEXM$ = ANS7;
PUT FILE(D) EDIT(OEXM$)(P'$$$9V.99')(' OK? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO AST6;
AST8: PUT FILE(D) SKIP EDIT('FOR DEDUCTIONS CONSIDERATION FOR ')(A);
IF (VERIFY(O_WH,'1234') ¬= 0) THEN GOTO A81;
PUT FILE(D) EDIT(O_WC)(A)(' CITY -')(A(9));
GOTO A82;
A81: PUT FILE(D)EDIT(ST_C)(A)(' STATE -')(A(12));
A82: PUT FILE(D) EDIT('ENTER W1 : ')(A);
A8R: GET SKIP LIST(ANS7);
IF (ANS7 = ' ') THEN GOTO ASTE; /** Skip DEDUCTIONS **/
IF (VERIFY(ANS7,' .0123456789') = 0) THEN GOTO A8R;
WAGEZ(1) = ANS7;
PUT FILE(D) EDIT(WAGEZ(1))(P'$$$9V.99')('ENTER W2 : ')
(X(8),A);
GET SKIP LIST(WAGEZ(2));
PUT FILE(D) EDIT(WAGEZ(2))(P'$$$9V.99')(' ')(A(3))
('ENTER D1 : ')(A);
GET SKIP LIST(D_AMT(1));
PUT FILE(D) EDIT(D_AMT(1))(P'$$9V.99')('ENTER D2 : ')
(X(9),A);
GET SKIP LIST(D_AMT(2));
PUT FILE(D) EDIT(D_AMT(2))(P'$$9V.99')(' ')(A)
('ENTER PCT : ')(A);
GET SKIP LIST(PERP);
PCT = (PERP * .01);
PUT FILE(D) EDIT(PERP)(P'99V.9')('% ')(A)
(' ENTER ADJ : ')(A);
GET SKIP LIST(LESS);
PUT FILE(D) EDIT(LESS)(P'$$9V.99')(' OK? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO AST8;
ASTE: DO J = 1 TO 2;
S_OR_M = MARS(J);
AST9: M = 7;
A9: M = M - 7;
/* ** Provide to Indicate MARRIED or SINGLE in Display ** */
AT10: PUT FILE(D) SKIP EDIT('FOR TAX AMOUNT TO BE WITHHELD FOR ')(A);
IF (VERIFY(O_WH,'1234') ¬= 0) THEN GOTO AT12;
PUT FILE(D) EDIT(O_WC)(A)(' CITY - ')(A);
GOTO AT11;
AT12: PUT FILE(D) EDIT(ST_C)(A)(' STATE - ')(A);
AT11: DO L = 1 TO 7;
M = M + 1;
AT13: PUT FILE(D) EDIT(M)(P'99')(')')(A)('ENTER W:')(A);
G13: GET SKIP LIST(ANS7); /* MEANS TO SKIP XCESS DATA */
JJ = 0;
IF (ANS7 = ' ') THEN DO;
JJ = 5;
GOTO NA;
END;
IF (VERIFY(ANS7,' .0123456789') = 0) THEN GOTO G13;
R_MAX(M) = ANS7;
PUT FILE(D) EDIT(R_MAX(M))(P'$$$9V.99')(' ENTER B:')(A);
GET SKIP LIST(B_TAX(M));
PUT FILE(D) EDIT(B_TAX(M))(P'$$9V.99')(' ENTER P:')(A);
GET SKIP LIST(PERP);
PCT_DIF(M) = (PERP * .01);
PUT FILE(D) EDIT(PERP)(P'99V.9')('%')(A);
END;
NA: PUT FILE(D) EDIT('OK? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO A9;
IF (M < 9) & (JJ = 0) THEN GOTO AT10;
MARS(J) = S_OR_M;
IF (N = 0) THEN DO;
MARS(2) = S_OR_M;
GOTO AT14;
END;
END;
AT14: OTAX(I) = OTAXES;
AT15: END;
IF (K = 0) THEN GOTO AT16;
UNSPEC(OTHERTAX) = UNSPEC(OTHERTAX) - 4;
WRITE FILE(OTHERTAX) FROM(OTAX);
OPEN OTHERTAX;
GOTO CS_P;
AT16: CALL SEOF(OTHERTAX);
WRITE FILE(OTHERTAX) FROM(OTAX);
AT17: CLOSE OTHERTAX;
OPEN OTHERTAX;
GOTO CS_P;
C_S_MSG:
KKEY = 57;
GOTO CSR;
CS_P: KKEY = 3;
CALL PRINT_FILE;
CSR: RETURN;
END;
/* MAIN Portion of TAX FILE PROGRAM */
OPEN OTHERTAX;
KKEY = 0;
TOP: IF (KKEY = 5) THEN GOTO EOP;
PUT FILE(D) SKIP EDIT('DO YOU WANT')(A(27))('1)FEDERAL')
(A(47))('2)STATE')(A(47))('3)FICA/FUTA')(A(47))('4)SUI/SDI')
(A(47)) /* ('5)Transportation Tax')(A(47)) */
('5)PrintLIST of FILES')(A(49))('ENTER CHOICE : ')(A);
TR: GET SKIP LIST(ANS3);
ANS = SUBSTR(ANS3,1,1);
IF (ANS = 'E') ö (ANS = '0') THEN GOTO EOP;
IF (VERIFY(ANS,'123456') = 0) THEN GOTO TR;
IF (ANS = '1') THEN GOTO T1; /* OFT */
IF (ANS = '2') THEN GOTO T2; /* OST */
IF (ANS = '3') THEN GOTO T3; /* FTA0 */
IF (ANS = '4') THEN GOTO T4; /* AST */
/* IF (ANS = '5') THEN GOTO T5; AST */
GOTO T6; /* HERE ANS = '5' */
T1: PUT FILE(D) SKIP EDIT('DO YOU WISH TO')(A(18))
('1)ALTER FEDERAL FILE')(A(47))('2)PRINT FILE LISTING')
(A(49))('ENTER CHOICE : ')(A);
T1R: GET SKIP LIST(ANS3);
ANS = SUBSTR(ANS3,1,1);
IF (ANS = 'E') ö (ANS = '0') THEN GOTO TOP;
IF (ANS = '2') THEN GOTO C_PRINT_F;
IF (ANS ¬= '1') THEN GOTO T1R;
KKEY = 0;
CALL FEDERAL_TAX;
IF (KKEY = 57) THEN CALL TAX_INIT;
GOTO TOP;
T2: PUT FILE(D) SKIP EDIT('DO YOU WANT TO')(A(18))
('1)ADD or CHANGE FILE(S)')(A(47))('2)PRINT PARTICULAR FILE(S)')
(A(49))('ENTER CHOICE : ')(A);
T2R: GET SKIP LIST(ANS3);
ANS = SUBSTR(ANS3,1,1);
IF (ANS = 'E') ö (ANS = '0') THEN GOTO TOP;
IF (ANS = '1') THEN GOTO C_STATE; /* AST */
IF (ANS = '2') THEN GOTO C_PRINT_S; /* PTX */
GOTO T2R;
C_STATE:
KKEY = 0;
CALL STATE_CITY;
IF (KKEY = 57) THEN CALL TAX_INIT;
GOTO TOP;
C_PRINT:
CALL PRINT_FILE;
IF (KKEY = 57) THEN CALL TAX_INIT;
GOTO TOP;
C_PRINT_F:
KKEY = 7;
GOTO C_PRINT;
C_PRINT_S:
KKEY = 0;
GOTO C_PRINT;
/* KKEY = 0; */
T6: CALL PRINTLIST;
IF (KKEY = 57) THEN CALL TAX_INIT;
GOTO TOP;
T3: ANS2 = 'FD';
KKEY = 1;
CALL F_OR_S;
IF (KKEY = 57) THEN CALL TAX_INIT;
GOTO TOP;
T4: PUT FILE(D) SKIP EDIT('ENTER STATE CODE : ')(A);
GET SKIP LIST(ANS2);
PUT FILE(D) EDIT(ANS2)(A)(' OK ? ')(A);
GET SKIP LIST(ANS3);
IF (SUBSTR(ANS3,1,1) ¬= 'Y') THEN GOTO T4;
KKEY = 2;
CALL F_OR_S;
IF (KKEY = 57) THEN CALL TAX_INIT;
GOTO TOP;
/* T5: KKEY = 0;
CALL TRANS_COMMUTER;
IF (KKEY = 57) THEN CALL TAX_INIT;
GOTO TOP; */
EOP: END;