From 03f4a914638bf979c90929bdbcf6fa1656b5ffa9 Mon Sep 17 00:00:00 2001 From: Mia Herkt Date: Thu, 2 Dec 2021 14:31:44 +0100 Subject: [PATCH] Day 2: Add COBOL solution --- 02/SLTN1.CBL | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 02/SLTN2.CBL | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 02/SLTN1.CBL create mode 100644 02/SLTN2.CBL diff --git a/02/SLTN1.CBL b/02/SLTN1.CBL new file mode 100644 index 0000000..46757dd --- /dev/null +++ b/02/SLTN1.CBL @@ -0,0 +1,49 @@ +IDENTIFICATION DIVISION. + PROGRAM-ID. DAY2PT1. + +ENVIRONMENT DIVISION. + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT INPUT-FILE ASSIGN TO 'input.txt' + ORGANIZATION IS LINE SEQUENTIAL + ACCESS IS SEQUENTIAL. + +DATA DIVISION. + FILE SECTION. + FD INPUT-FILE. + 01 INPUT-RECORD PIC A(16). + + WORKING-STORAGE SECTION. + 01 WS-COMMAND. + 05 WS-CMD PIC A(16). + 05 WS-VAL PIC 9(1). + 01 WS-H PIC 9(10) USAGE IS COMP. + 01 WS-V PIC 9(10) USAGE IS COMP. + 01 WS-RESULT PIC Z(10). + +PROCEDURE DIVISION. + START-ROUTINE. + OPEN INPUT INPUT-FILE. + + READ-ROUTINE. + MOVE SPACES TO INPUT-RECORD. + MOVE SPACES TO WS-COMMAND. + READ INPUT-FILE AT END GO TO END-ROUTINE. + UNSTRING INPUT-RECORD DELIMITED BY SPACE + INTO WS-CMD, WS-VAL. + IF WS-CMD = 'forward' THEN + ADD WS-VAL TO WS-H + END-IF + IF WS-CMD = 'down' THEN + ADD WS-VAL TO WS-V + END-IF + IF WS-CMD = 'up' THEN + SUBTRACT WS-VAL FROM WS-V + END-IF + GO TO READ-ROUTINE. + + END-ROUTINE. + CLOSE INPUT-FILE. + MULTIPLY WS-H BY WS-V GIVING WS-RESULT. + DISPLAY 'Answer: 'WS-RESULT. +STOP RUN. diff --git a/02/SLTN2.CBL b/02/SLTN2.CBL new file mode 100644 index 0000000..17953c2 --- /dev/null +++ b/02/SLTN2.CBL @@ -0,0 +1,51 @@ +IDENTIFICATION DIVISION. + PROGRAM-ID. DAY2PT2. + +ENVIRONMENT DIVISION. + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT INPUT-FILE ASSIGN TO 'input.txt' + ORGANIZATION IS LINE SEQUENTIAL + ACCESS IS SEQUENTIAL. + +DATA DIVISION. + FILE SECTION. + FD INPUT-FILE. + 01 INPUT-RECORD PIC A(16). + + WORKING-STORAGE SECTION. + 01 WS-COMMAND. + 05 WS-CMD PIC A(16). + 05 WS-VAL PIC 9(1). + 01 WS-AIM PIC 9(10) USAGE IS COMP. + 01 WS-H PIC 9(10) USAGE IS COMP. + 01 WS-V PIC 9(10) USAGE IS COMP. + 01 WS-RESULT PIC Z(10). + +PROCEDURE DIVISION. + START-ROUTINE. + OPEN INPUT INPUT-FILE. + + READ-ROUTINE. + MOVE SPACES TO INPUT-RECORD. + MOVE SPACES TO WS-COMMAND. + READ INPUT-FILE AT END GO TO END-ROUTINE. + UNSTRING INPUT-RECORD DELIMITED BY SPACE + INTO WS-CMD, WS-VAL. + IF WS-CMD = 'forward' THEN + ADD WS-VAL TO WS-H + COMPUTE WS-V=WS-V+WS-AIM*WS-VAL + END-IF + IF WS-CMD = 'down' THEN + ADD WS-VAL TO WS-AIM + END-IF + IF WS-CMD = 'up' THEN + SUBTRACT WS-VAL FROM WS-AIM + END-IF + GO TO READ-ROUTINE. + + END-ROUTINE. + CLOSE INPUT-FILE. + MULTIPLY WS-H BY WS-V GIVING WS-RESULT. + DISPLAY 'Answer: 'WS-RESULT. +STOP RUN.