My yearly advent-of-code solutions
1 IDENTIFICATION DIVISION.
2 PROGRAM-ID. day_03.
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).
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
21 01 joltage PIC XX.
22 01 result PIC 9(10) VALUE 0.
23
24
25 01 eof PIC X.
26 88 eof-y VALUE "Y".
27 88 eof-n VALUE "N".
28
29 PROCEDURE DIVISION.
30 OPEN INPUT input-file.
31 SET eof-n to TRUE.
32 PERFORM UNTIL eof-y
33 READ input-file AT END
34 SET eof-y to TRUE
35 NOT AT END
36 MOVE FUNCTION LENGTH(FUNCTION TRIM(input-line)) TO len
37 MOVE 0 TO maxim
38 *first pass leave something on the right
39 PERFORM VARYING idx FROM 1 UNTIL idx > len - 1
40 MOVE FUNCTION NUMVAL(input-line(idx:1)) TO digit
41 IF maxim < digit
42 MOVE digit TO maxim
43 MOVE idx TO idx-2
44 END-IF
45 END-PERFORM
46 * need the next index
47 MOVE maxim TO joltage(1:1)
48 MOVE 0 TO maxim
49 ADD 1 TO idx-2
50 PERFORM VARYING idx-2 FROM idx-2 UNTIL idx-2 > len
51 MOVE FUNCTION NUMVAL(input-line(idx-2:1)) TO digit
52 IF maxim < digit
53 MOVE digit TO maxim
54 END-IF
55 END-PERFORM
56 MOVE maxim TO joltage(2:1)
57 ADD FUNCTION NUMVAL(joltage) TO result
58 END-READ
59 END-PERFORM.
60 CLOSE input-file.
61 DISPLAY result.
62 STOP-RUN.
63