My yearly advent-of-code solutions

2025 day 1 part 2

Changed files
+67
2025
+67
2025/day_01_part2.cbl
···
+
IDENTIFICATION DIVISION.
+
PROGRAM-ID. day_01_part2.
+
AUTHOR. Trey Bastian.
+
ENVIRONMENT DIVISION.
+
INPUT-OUTPUT SECTION.
+
FILE-CONTROL.
+
SELECT input-file ASSIGN TO "./input.txt"
+
ORGANIZATION IS LINE SEQUENTIAL.
+
DATA DIVISION.
+
FILE SECTION.
+
FD input-file.
+
01 input-line.
+
02 direction PIC X.
+
02 move-text PIC XXX.
+
WORKING-STORAGE SECTION.
+
01 dial-position PIC 9(2) VALUE 50.
+
01 new-position PIC 9(2).
+
01 move-num PIC S9(3).
+
01 zero-count PIC 9(4) VALUE ZEROS.
+
01 eof PIC X.
+
88 eof-y VALUE "Y".
+
88 eof-n VALUE "N".
+
+
+
PROCEDURE DIVISION.
+
OPEN INPUT input-file.
+
SET eof-n to TRUE.
+
PERFORM UNTIL eof-y
+
READ input-file AT END
+
SET eof-y to TRUE
+
NOT AT END
+
MOVE FUNCTION NUMVAL(move-text) TO move-num
+
IF move-num > 99
+
COMPUTE zero-count = zero-count + (move-num / 100)
+
END-IF
+
+
IF direction = "L"
+
COMPUTE move-num = 0 - move-num
+
END-IF
+
+
COMPUTE new-position = FUNCTION MOD(dial-position +
+
move-num, 100)
+
+
if new-position < 0
+
ADD 100 to new-position
+
END-IF
+
+
EVALUATE new-position
+
WHEN 0
+
ADD 1 to zero-count
+
WHEN < dial-position AND direction = "R" AND
+
dial-position <> 0
+
ADD 1 to zero-count
+
WHEN > dial-position AND direction = "L" AND
+
dial-position <> 0
+
ADD 1 to zero-count
+
END-EVALUATE
+
+
+
MOVE new-position TO dial-position
+
+
END-READ
+
END-PERFORM.
+
CLOSE input-file.
+
DISPLAY zero-count.
+
STOP-RUN.
+