My yearly advent-of-code solutions
1 IDENTIFICATION DIVISION.
2 PROGRAM-ID. day_03_part2.
3 AUTHOR. Trey Bastian.
4 ENVIRONMENT DIVISION.
5 INPUT-OUTPUT SECTION.
6 FILE-CONTROL.
7 SELECT input-file ASSIGN TO "./input.txt"
8 ORGANIZATION IS LINE SEQUENTIAL.
9 DATA DIVISION.
10 FILE SECTION.
11 FD input-file.
12 01 input-line PIC Z(4096).
13 WORKING-STORAGE SECTION.
14 01 idx PIC 9(4) VALUE 1.
15 01 idx-2 PIC 9(4).
16 01 len PIC 9(4).
17
18 01 maxim PIC 9 VALUE 0.
19 01 digit PIC 9 VALUE 0.
20 01 remaining PIC 99 VALUE 12.
21 01 rem-idx PIC 99 VALUE 1.
22
23 01 joltage PIC X(12).
24 01 result PIC 9(32) VALUE 0.
25
26
27 01 eof PIC X.
28 88 eof-y VALUE "Y".
29 88 eof-n VALUE "N".
30
31 PROCEDURE DIVISION.
32 OPEN INPUT input-file.
33 SET eof-n to TRUE.
34 PERFORM UNTIL eof-y
35 READ input-file AT END
36 SET eof-y to TRUE
37 NOT AT END
38 MOVE FUNCTION LENGTH(FUNCTION TRIM(input-line)) TO len
39 MOVE 1 TO idx
40 MOVE 12 TO remaining
41 MOVE 1 TO rem-idx
42 PERFORM UNTIL remaining < 1
43 MOVE 0 TO maxim
44 PERFORM VARYING idx FROM idx UNTIL idx >
45 (len - remaining + 1)
46 MOVE FUNCTION NUMVAL(input-line(idx:1)) to digit
47 IF maxim < digit
48 MOVE digit TO maxim
49 MOVE idx TO idx-2
50 END-IF
51 END-PERFORM
52 MOVE maxim TO joltage(rem-idx:1)
53 ADD 1 TO rem-idx
54 SUBTRACT 1 FROM remaining
55 MOVE idx-2 TO idx
56 ADD 1 TO idx
57 END-PERFORM
58 ADD FUNCTION NUMVAL(joltage) TO result
59 END-READ
60 END-PERFORM.
61 CLOSE input-file.
62 DISPLAY result.
63 STOP-RUN.
64