--- title: "Reject Analysis Program" id: 57340 type: "computer_media" slug: "reject-analysis-program" url: "http://localhost/computer_media/reject-analysis-program/" markdown_url: "http://localhost/computer_media/reject-analysis-program.md" published_at: "2024-10-04T08:28:38+00:00" modified_at: "2026-04-03T07:58:36+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2024/09/187_RAP.png" excerpt: "A full business reject-tracking system built in BASIC: enter transactions, clear records, and print aged delinquency reports across 19 input devices and 15 reject codes." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" indiv: - name: "Tim Ward" slug: "tim-ward" taxonomy: "indiv" url: "http://localhost/indiv/tim-ward/" genre: - name: "Business" slug: "business" taxonomy: "genre" url: "http://localhost/type/business/" media_contents: - id: 56735 title: "Timex Sinclair Public Domain Library Tape 1004" type: "computer_media" url: "http://localhost/computer_media/timex-sinclair-public-domain-library-tape-1004/" media_type: "Program" programmers: - name: "Tim Ward" slug: "tim-ward" taxonomy: "indiv" url: "http://localhost/indiv/tim-ward/" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2024/09/187_RAP.png" media_type_tags: "Business" --- # Reject Analysis Program This program implements a reject transaction tracking and analysis system for up to 19 input devices and 15 reject types, storing up to 200 outstanding reject records in a large string array. Each reject record occupies a fixed 93-character field in the array R$, enabling field-offset parsing to extract reject numbers, dates, device codes, and transaction details. The program accumulates monthly statistics in a 19×57 numeric array T, tracking counts by reject type, device, clearance status, and aging buckets (7–14 days, 15–29 days, 30+ days). Output is produced via LPRINT across multiple paginated passes, reconstructing a wide columnar report in sections across a 32-character-wide printer. The FAST/SLOW switching around data-entry and processing loops is used to maximize throughput during compute-intensive operations. *** ## Program Analysis ### Program Structure The program is organized into a main menu at line 500 dispatching to five functional subroutines/sections, preceded by initialization code at lines 100–155 and followed by a diagnostic routine at lines 9000–9070 that is not reachable from normal program flow. | Line Range | Function | | --- | --- | | 100–155 | Cold start: dimension and populate V$ (device names), S() (reject numbers), R$ (reject records), T() (totals) | | 500–700 | Main menu loop | | 3000–3280 | Enter current rejects (GOSUB) | | 4000–4293 | Enter reject clear cards (GOSUB) | | 5000–5450 | Print current rejects via LPRINT (GOSUB) | | 6000–6520 | Print monthly totals via LPRINT (GOSUB) | | 7000–7110 | Save program to tape, prompt for current date | | 9000–9070 | Diagnostic/debug loop (unreachable) | ### Data Structures Three major data structures carry the program’s state: - `V$(19,3)` — up to 19 three-character input device identifiers. - `R$(200,93)` — a 200-record flat-file store, each record a fixed 93-character string. Fields are accessed by numeric offsets (e.g., columns 1–3 = reject number, 4–6 = device code, 7–10 = date, 11–12 = times-rejected count, 13–92 = transaction detail fields). - `T(19,57)` — a 19×57 numeric accumulator. Rows 1–18 correspond to input devices; row 19 is a totals row computed in subroutine 6000. Columns encode different statistics: columns 1–48 are device/reject-type counts (in groups of 3: new, cleared, reprocessed), columns 49–57 are summary and aging bucket totals. - `S(15)` — the 15 recognized reject type numbers; used to map incoming reject codes to T() column offsets via the formula `G=(G*3)-2` (new), `G=(G*3)-1` (cleared), `G=(G*3)` (reprocessed). ### Record Matching and Deduplication (Lines 3070–3091) When entering a new reject at line 3000, the program scans the entire active reject store for a matching record. It uses a two-stage comparison exploiting the ZX81’s ability to compare substrings of dimensioned string arrays directly: 1. Compare columns 1–10 (reject number + device + date) against the incoming record. 2. If that matches, compare columns 13–92 (the detail field) against the stored record. The loop uses `NEXT X` inside the `IF` condition at lines 3080 and 3090 as an in-loop branch, and then a post-loop guard check at lines 3081 and 3091 to decide whether the loop exhausted all records without a match or found one. This is a common ZX81 idiom for conditional loop exit since there is no `EXIT FOR` construct. ### Aging Bucket Accounting The variable `CD` (current date, stored as a numeric day-of-year or similar ordinal) is used throughout to compute how long a reject has been outstanding. `RD` is the reject’s original date read from the record. The aging thresholds and their corresponding T() column assignments are: | Condition | T() Column(s) affected | | --- | --- | | CD−RD > 6 (any delinquent) | T(F,52) | | CD−RD 7–14 days | T(F,53) | | CD−RD 15–29 days | T(F,54) | | CD−RD ≥ 30 days | T(F,55) | When an existing reject record is updated (re-submitted), lines 3110–3160 adjust the aging buckets by decrementing the old bucket and incrementing the new one as the reject ages across thresholds. ### LPRINT Pagination Because the 32-column printer is narrower than the logical report width, subroutines 5000 and 6000 each make multiple passes over the record or totals array, printing different column ranges in each pass. The paginator uses variables `A` and `B` as a sliding window (typically 47 records per page) and loops back to a re-entry point after advancing the window. This reconstructs a wide columnar format across several printer pages meant to be read side by side. ### Notable Techniques - **Fixed-length string array as flat file:**`R$(200,93)` acts as an in-memory database table; all record access is by numeric column offset rather than parsed delimiters. - **Blank record sentinel:** The variable `F$` (line 120) is initialized to 93 inverse-Z characters and used at lines 4110 and 4190 to “delete” a record by overwriting it with blanks. The `R$(X,93)="*"` flag (line 3022) marks a record as newly entered in the current session. - **FAST/SLOW toggling:**`FAST` is switched on before compute-intensive loops and `SLOW` before any screen output to the user, a standard technique to balance display quality with processing speed. - **Bubble sort on R$ (lines 4200–4270):** After processing clear cards, the reject store is sorted by reject number (columns 1–3) using a straightforward nested-loop bubble sort, with `Y$` as the swap variable. Note the outer loop uses variable `X` but the inner loop’s upper bound is `NEXTREJ-1` while the outer bound is `NEXTREJ-2`, which is correct for an in-place sort. - **Column offset formula for T():** The reject-type index `G` maps to three consecutive T() columns (new, cleared, reprocessed) via `G=(G*3)-2`, `G=(G*3)-1`, and `G=(G*3)` respectively, allowing a 15-type × 3-state layout to be addressed with a single computed index. ### Bugs and Anomalies - **Uninitialized `CD`:** The current date variable `CD` is first assigned at line 7100 (after a SAVE). All aging calculations in subroutines 3000, 5000, and 6000 reference `CD` before it is ever set if the user has not yet executed option 7. This will cause `CD` to default to 0, producing incorrect aging results on first use. - **Line 5020 missing:** The pagination loop at line 5130 jumps to `5020`, which does not exist. The program would fall through to line 5030 (the next existing line), which appears to be the intended target — the missing line number is a minor authoring oversight with no practical effect. - **Line 5350 missing:** Similarly, line 5450 jumps to `5350`, which does not exist; execution continues at line 5360, again the apparent intent. - **Bubble sort outer variable collision:** The outer sort loop at line 4200 uses loop variable `X`, but the `FOR X` loop was previously in use at lines 4030–4060. After the sort, `NEXTREJ` is reset at line 4280 and the record-end markers are cleared at lines 4290–4292, so the reuse of `X` here is intentional but could be confusing. - **Line 6212 syntax:** The backslash in `TAB 8;T(X,54)\,,` appears to be a stray character that would likely cause a syntax error on a real machine; it may be a listing transcription artifact. ## Source Code ``` 10 REM REJECT ANALYSIS PGM 20 REM WRITTEN BY TIM L. WARD 30 REM DATE 11/23-28/85 100 DIM V$(19,3) 101 FOR X=1 TO 19 102 PRINT AT 21,0;" " 103 PRINT AT 21,0;"ENTER INPUT DEVICE NBR. ";X 104 INPUT V$(X) 105 NEXT X 110 DIM S(15) 111 FOR X=1 TO 15 112 PRINT AT 21,0;" " 113 PRINT AT 21,0;"ENTER REJECT NBR. ";X 114 INPUT S(X) 115 NEXT X 116 FAST 120 LET F$="%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z%Z" 130 DIM R$(200,93) 131 FOR X=1 TO 200 132 LET R$(X)=F$ 133 NEXT X 140 LET NBRREJ=0 141 LET NEXTREJ=1 150 DIM T(19,57) 151 FOR X=1 TO 19 152 FOR Y=1 TO 57 153 LET T(X,Y)=0 154 NEXT Y 155 NEXT X 500 REM %M%E%N%U% % % % % % % % % % % % % % % % % % % 510 CLS 511 SLOW 512 PRINT AT 0,2;"REJECT ANALYSIS PROGRAM MENU",,, 520 PRINT "1...INIT PGM (COLD START)?",,, 530 PRINT "2...BLANK MONTHLY TOTALS ONLY?",,, 540 PRINT "3...ENTER CURRENT REJECTS?",,, 550 PRINT "4...ENTER REJECT CLEAR CARDS?",,, 560 PRINT "5...PRINT CURRENT REJECTS?",,, 570 PRINT "6...PRINT MONTHLY REJECT TOTALS?",, 580 PRINT "7...SAVE ""REJECT"" ANALYSIS?",,, 590 PRINT "8...RESERVED FOR FUTURE USE",,, 600 PRINT "9...RESERVED FOR FUTURE USE" 610 PRINT AT 21,0;"ENTER NBR OF YOUR CHOICE 1-9" 611 INPUT I$ 620 IF VAL I$<1 OR VAL I$>9 THEN GOTO 0610 621 FAST 630 IF I$="1" THEN GOTO 0100 640 IF I$="2" THEN GOTO 0150 650 IF I$="3" THEN GOSUB 3000 660 IF I$="4" THEN GOSUB 4000 670 IF I$="5" THEN GOSUB 5000 680 IF I$="6" THEN GOSUB 6000 690 IF I$="7" THEN GOTO 7000 700 GOTO 0500 3000 REM %E%N%T%E%R% %C%U%R%R%E%N%T% %R%E%J%E%C%T%S% % 3001 CLS 3005 SLOW 3006 IF NEXTREJ>200 THEN PRINT "REJECT AREA IS FULL PLEASE PROCESS REJECT CLEAR CARDS NOW." 3011 PRINT AT 12,0;"PLEASE ENTER REJECT TRANSACTIONS" 3020 DIM A$(1,93) 3021 INPUT A$(1) 3022 LET A$(1,93)="*" 3023 IF A$(1,1 TO 3)="END" THEN RETURN 3025 FAST 3030 FOR A=1 TO 18 3031 IF V$(A)=A$(1,4 TO 6) THEN LET F=A 3032 NEXT A 3040 LET G=16 3041 FOR A=1 TO 15 3042 IF S(A)=VAL A$(1,1 TO 3) THEN LET G=A 3050 NEXT A 3051 LET G=(G*3)-2 3060 LET RD=VAL A$(1,7 TO 10) 3070 FOR X=1 TO NEXTREJ 3080 IF A$(1,1 TO 10)<>R$(X,1 TO 10) THEN NEXT X 3081 IF A$(1,1 TO 10)<>R$(X,1 TO 10) THEN GOTO 3200 3090 IF A$(1,13 TO 92)<>R$(X,13 TO 92) THEN NEXT X 3091 IF A$(1,13 TO 92)<>R$(X,13 TO 92) THEN GOTO 3200 3100 IF CD-RD<7 THEN GOTO 3170 3110 IF CD-RD=7 THEN LET T(F,52)=T(F,52)+1 3120 IF CD-RD=7 THEN LET T(F,53)=T(F,53)+1 3130 IF CD-RD=15 THEN LET T(F,53)=T(F,53)-1 3140 IF CD-RD=15 THEN LET T(F,54)=T(F,54)+1 3150 IF CD-RD=30 THEN LET T(F,54)=T(F,54)-1 3160 IF CD-RD=30 THEN LET T(F,55)=T(F,55)+1 3170 IF A$(1,11 TO 12)="01" AND A$(1,11 TO 12)>R$(X,11 TO 12) THEN LET T(F,56)=T(F,56)+1 3180 LET T(F,57)=T(F,57)+(VAL A$(1,11 TO 12)-VAL R$(X,11 TO 12)) 3190 LET R$(X)=A$(1) 3191 GOTO 3000 3200 LET T(F,G)=T(F,G)+1 3201 LET T(F,49)=T(F,49)+1 3210 IF A$(1,11 TO 12)>"00" THEN LET T(F,56)=T(F,56)+1 3220 LET T(F,57)=T(F,57)+VAL A$(1,11 TO 12) 3230 IF CD-RD>6 THEN LET T(F,52)=T(F,52)+1 3240 IF CD-RD>6 AND CD-RD<15 THEN LET T(F,53)=T(F,53)+1 3250 IF CD-RD>14 AND CD-RD<30 THEN LET T(F,54)=T(F,54)+1 3260 IF CD-RD>29 THEN LET T(F,55)=T(F,55)+1 3270 LET R$(NEXTREJ)=A$(1) 3271 LET NEXTREJ=NEXTREJ+1 3272 LET NBRREJ=NBRREJ+1 3280 GOTO 3000 4000 REM %E%N%T%E%R% %R%E%J%E%C%T% %C%L%E%A%R% %C%A%R%D 4005 CLS 4010 SLOW 4011 PRINT AT 12,0;"PLEASE ENTER REJ CLEAR TRANS" 4020 DIM A$(1,20) 4021 INPUT A$(1) 4022 IF A$(1,1 TO 3)="END" THEN GOTO 4120 4025 FAST 4030 FOR X=1 TO NEXTREJ 4040 IF A$(1,1 TO 3)=R$(X,13 TO 15) AND A$(1,4 TO 17)=R$(X,42 TO 55) AND A$(1,18 TO 20)=R$(X,4 TO 6) THEN GOTO 4070 4050 IF A$(1,1 TO 3)=R$(X,13 TO 15) AND A$(1,4 TO 17)=R$(X,16 TO 29) AND A$(1,18 TO 20)=R$(X,4 TO 6) THEN GOTO 4070 4060 NEXT X 4061 RETURN 4070 FOR A=1 TO 18 4071 IF V$(A)=R$(X,4 TO 6) THEN LET F=A 4072 NEXT A 4080 LET G=16 4081 FOR A=1 TO 15 4082 IF S(A)=VAL R$(X,1 TO 3) THEN LET G=A 4090 NEXT A 4091 LET G=(G*3)-1 4100 LET T(F,G)=T(F,G)+1 4101 LET T(F,50)=T(F,50)+1 4102 LET NBRREJ=NBRREJ-1 4110 LET R$(X)=F$ 4111 GOTO 4000 4120 FOR X=1 TO NEXTREJ 4121 IF R$(X,93)="%Z" THEN GOTO 4140 4130 IF R$(X,93)="*" THEN GOTO 4150 4140 NEXT X 4141 GOTO 4200 4150 FOR A=1 TO 18 4151 IF V$(A)=R$(X,4 TO 6) THEN LET F=A 4152 NEXT A 4160 LET G=16 4161 FOR A=1 TO 15 4162 IF S(A)=VAL R$(X,1 TO 3) THEN LET G=A 4170 NEXT A 4171 LET G=(G*3) 4180 LET T(F,G)=T(F,G)+1 4181 LET T(F,51)=T(F,51)+1 4182 LET NBRREJ=NBRREJ-1 4190 LET R$(X)=F$ 4191 GOTO 4140 4200 FOR A=1 TO NEXTREJ-2 4210 FOR Y=X+1 TO NEXTREJ-1 4220 IF R$(X,1 TO 3)NBRREJ THEN LET B=NBRREJ 5030 LPRINT ,,,,,,,,,,,TAB 27;"TRIC." 5040 LPRINT "REJ NR TIMES ORIGINAL" 5050 LPRINT "NBR REJECTED REJ DATE 1234" 5060 LPRINT 5070 FOR X=A TO B 5080 LPRINT R$(X,1 TO 3);TAB 8;R$(X,11 TO 12);TAB 20;R$(X,7 TO 10);TAB 28;R$(X,13 TO 16) 5090 NEXT X 5091 LPRINT ,,"--------------------------------" 5100 IF B=NBRREJ THEN GOTO 5140 5110 LET A=A+47 5111 LET B=B+47 5120 IF B>NBRREJ THEN LET B=NBRREJ 5130 GOTO 5020 5140 LET A=1 5141 LET B=47 5142 IF B>NBRREJ THEN LET B=NBRREJ 5150 LPRINT 5151 LPRINT TAB 22;"REJECT ANA" 5152 LPRINT 5153 LPRINT TAB 19;"CURRENT REJEC" 5154 LPRINT 5160 LPRINT ".........................INPUT I" 5161 LPRINT TAB 5;"1";TAB 15;"2";TAB 25;"3" 5162 LPRINT "56789012345678901234567890123456",, 5170 FOR X=A TO B 5180 LPRINT R$(X,17 TO 48) 5190 NEXT X 5191 LPRINT ,,"--------------------------------" 5200 IF B=NBRREJ THEN GOTO 5240 5210 LET A=A+47 5211 LET B=B+47 5220 IF B>NBRREJ THEN LET B=NBRREJ 5230 GOTO 5150 5240 LET A=1 5241 LET B=47 5242 IF B>NBRREJ THEN LET B=NBRREJ 5250 LPRINT ,,"LYSIS PGM",,,,"TS FOR ";CD,,,, 5260 LPRINT "MAGE............................" 5261 LPRINT TAB 3;"4";TAB 13;"5";TAB 23;"6" 5262 LPRINT "78901234567890123456789012345678" 5263 LPRINT 5270 FOR X=A TO B 5280 LPRINT R$(X,49 TO 80) 5290 NEXT X 5291 LPRINT 5292 LPRINT "--------------------------------" 5300 IF B=NBRREJ THEN GOTO 5340 5310 LET A=A+47 5311 LET B=B+47 5320 IF B>NBRREJ THEN LET B=NBRREJ 5330 GOTO 5250 5340 LET A=1 5341 LET B=47 5342 IF B>NBRREJ THEN LET B=NBRREJ 5360 LPRINT ,,,,,,,,,,"............ REJ OVER INPUT" 5361 LPRINT " 7";TAB 11;"8";TAB 15;"6 DAYS";TAB 24;"DEVICE" 5362 LPRINT "901234567890 OLD NUMBER" 5363 LPRINT 5370 FOR X=A TO B 5380 LPRINT R$(X,81 TO 92); 5390 IF CD-VAL R$(X,7 TO 10)>6 THEN LPRINT TAB 16;"YES"; 5400 IF CD-VAL R$(X,7 TO 10)<7 THEN LPRINT TAB 16;"NO"; 5401 LPRINT TAB 25;R$(X,4 TO 6) 5410 NEXT X 5411 LPRINT 5412 LPRINT "--------------------------------" 5420 IF B=NBRREJ THEN RETURN 5430 LET A=A+47 5431 LET B=B+47 5440 IF B>NBRREJ THEN LET B=NBRREJ 5450 GOTO 5350 6000 REM %P%R%I%N%T% %M%O%N%T%H%L%Y% %T%O%T%A%L%S% % % 6010 FOR X=1 TO 57 6011 LET T(19,X)=0 6012 NEXT X 6020 FOR X=1 TO 57 6021 FOR Y=1 TO 18 6022 LET T(19,X)=T(19,X)+T(Y,X) 6023 NEXT Y 6024 NEXT X 6030 LET A=1 6031 LET B=4 6040 FOR X=A TO B 6060 LPRINT ,,,,,,,,,," REJECT NBR' S 250 257" 6061 LPRINT 6070 LPRINT " NBR. REJECTS";TAB 21;T(X,1);TAB 27;T(X,4) 6071 LPRINT 6072 LPRINT " NBR. CLR CARDED"; 6080 LPRINT TAB 21;T(X,2);TAB 27;T(X,5) 6081 LPRINT 6082 LPRINT " NBR. REPROCESSED"; 6090 LPRINT TAB 21;T(X,3);TAB 27;T(X,6) 6091 LPRINT ,,,,,, 6100 LPRINT TAB 13;"DELINQUENT REJECTS" 6101 NEXT X 6102 LPRINT 6103 LPRINT "--------------------------------" 6120 IF B=19 THEN GOTO 6150 6121 LET A=A+4 6122 LET B=B+4 6130 IF B>19 THEN LET B=19 6140 GOTO 6040 6150 LET A=1 6151 LET B=4 6160 FOR X=A TO B 6170 LPRINT 6171 LPRINT TAB 22;"REJECT ANA" 6172 LPRINT 6173 LPRINT TAB 14;"MONTHLY TOTALS FOR" 6174 LPRINT 6175 LPRINT "260 263 289 290 295 31" 6176 LPRINT 6180 LPRINT T(X,7);TAB 6;T(X,10);TAB 12;T(X,13);TAB 18;T(X,16);TAB 24;T(X,19);TAB 30;T(X,22) 6181 LPRINT 6190 LPRINT T(X,8);TAB 6;T(X,11);TAB 12;T(X,14);TAB 18;T(X,17);TAB 24;T(X,20);TAB 30;T(X,23) 6191 LPRINT 6200 LPRINT T(X,9);TAB 6;T(X,12);TAB 12;T(X,15);TAB 18;T(X,18);TAB 24;T(X,21);TAB 30;T(X,24) 6201 LPRINT 6210 LPRINT "7-14 15-29 30+ TOTAL" 6211 LPRINT "DAYS DAYS DAYS DEL REJ" 6212 LPRINT TAB 1;T(X,53);TAB 8;T(X,54),,TAB 16;T(X,55);TAB 24;T(X,52) 6220 NEXT X 6221 LPRINT 6222 LPRINT "--------------------------------" 6230 IF B=19 THEN GOTO 6270 6240 LET A=A+4 6241 LET B=B+4 6250 IF B>19 THEN LET B=19 6260 GOTO 6160 6270 LET A=1 6271 LET B=4 6280 FOR X=A TO B 6290 LPRINT 6291 LPRINT "LYSIS PGM" 6292 LPRINT 6293 LPRINT "INPUT DEVICE ";V$(X) 6294 LPRINT 6295 LPRINT "6 329 356 429 469 492" 6296 LPRINT 6300 LPRINT TAB 4;T(X,25);TAB 10;T(X,28);TAB 16;T(X,31);TAB 22;T(X,34);TAB 28;T(X,37) 6301 LPRINT 6310 LPRINT TAB 4;T(X,26);TAB 10;T(X,29);TAB 16;T(X,32);TAB 22;T(X,35);TAB 28;T(X,38) 6311 LPRINT 6320 LPRINT TAB 4;T(X,27);TAB 10;T(X,30);TAB 16;T(X,33);TAB 22;T(X,36);TAB 28;T(X,39) 6321 LPRINT 6330 LPRINT TAB 29;"NBR" 6331 LPRINT TAB 29;"REP" 6332 LPRINT TAB 9;"REPROCESSED REJECTS" 6340 NEXT X 6341 LPRINT 6342 LPRINT "--------------------------------" 6350 IF B=19 THEN GOTO 6390 6360 LET A=A+4 6361 LET B=B+4 6370 IF B>19 THEN LET B=19 6380 GOTO 6280 6390 LET A=1 6391 LET B=4 6400 FOR X=A TO B 6420 LPRINT ,,,,,,,,,," 528 914 OTHER TOTAL" 6421 LPRINT 6430 LPRINT TAB 2;T(X,40);TAB 8;T(X,43);TAB 14;T(X,46);TAB 22;T(X,49) 6431 LPRINT 6440 LPRINT TAB 2;T(X,41);TAB 8;T(X,44);TAB 14;T(X,47);TAB 22;T(X,50) 6441 LPRINT 6450 LPRINT TAB 2;T(X,42);TAB 8;T(X,45);TAB 14;T(X,48);TAB 22;T(X,51) 6451 LPRINT 6460 LPRINT " REJECTS NBR TIMES" 6461 LPRINT "ROCESSED REJECTED" 6470 LPRINT TAB 1;T(X,56);TAB 13;T(X,57) 6480 NEXT X 6481 LPRINT 6482 LPRINT "--------------------------------" 6490 IF B=19 THEN RETURN 6500 LET A=A+4 6501 LET B=B+4 6510 IF B>19 THEN LET B=19 6520 GOTO 6400 7000 REM %S%A%V%E% %"%R%E%J%E%C%T%-%6%4%K%"% % % % % % 7010 CLS 7015 SLOW 7020 PRINT AT 12,0;"SAVE ""REJECT"" ANALYSIS PGM " 7030 PRINT AT 21,0;"START RECORDER PRESS ENTER" 7040 INPUT Z$ 7050 CLS 7060 SAVE "REJECT-64%K" 7070 PRINT AT 12,0;"REJECT ANALYSIS PROGRAM" 7080 PRINT AT 14,0;"LAST UPDATED ON ";CD;" DATE." 7090 PRINT AT 21,0;"PLEASE ENTER CURRENT DATE" 7100 INPUT CD 7110 GOTO 0500 9000 FOR X=1 TO 57 9010 PRINT AT 12,0;T(4,X);" ";X 9020 INPUT W$ 9030 NEXT X 9040 STOP 9050 CLEAR 9060 SAVE "1018%8" 9070 GOTO 500 ```