···
1
+
IDENTIFICATION DIVISION.
2
+
PROGRAM-ID. tictactoe.
3
+
AUTHOR. Trey Bastian.
6
+
WORKING-STORAGE SECTION.
8
+
02 Score PIC 99 VALUE ZEROS.
10
+
02 Turn PIC 9 value 1.
12
+
02 Score PIC 99 VALUE ZEROES.
14
+
02 Turn PIC 9 value ZEROS.
16
+
01 PlayerMove PIC 9 VALUE ZEROS.
18
+
02 Rows OCCURS 3 TIMES.
19
+
03 Entries OCCURS 3 TIMES.
20
+
04 EntryScore PIC 9 VALUE ZEROS.
21
+
04 State PIC Z Value "_".
23
+
01 InitRowIdx PIC S9 VALUE 1.
24
+
01 AccessRowIdx PIC 9 VALUE 0.
25
+
01 AccessEntryIdx PIC 9 VALUE 0.
26
+
01 InitEntryIdx PIC S9 VALUE 2.
27
+
01 InitScoreValue PIC 99 VALUE 1.
28
+
01 InitDivideResult PIC S99 VALUE ZEROS.
29
+
01 InitDivideRemainder PIC 99 VALUE ZEROS.
30
+
01 IdxRow PIC 9 VALUE 1.
31
+
01 IdxCol PIC 9 VALUE 1.
32
+
01 InitAdd3 PIC 99 VALUE 0.
36
+
DISPLAY "Welcome to Trey's Dev Shed Tic Tac Toe Extravaganza!".
39
+
PERFORM VARYING InitScoreValue FROM 1 BY 1 UNTIL
41
+
COMPUTE AccessRowIdx = InitRowIdx + 1
42
+
COMPUTE AccessEntryIdx = InitEntryIdx + 1
43
+
MOVE InitScoreValue TO
44
+
EntryScore(AccessRowIdx AccessEntryIdx)
46
+
DIVIDE InitScoreValue BY 3 GIVING InitDivideResult
47
+
REMAINDER InitDivideRemainder
49
+
IF InitDivideRemainder = 0 THEN
50
+
COMPUTE InitEntryIdx = InitEntryIdx - 1
52
+
COMPUTE InitRowIdx = InitRowIdx - 1
53
+
COMPUTE InitEntryIdx = InitEntryIdx + 1
56
+
COMPUTE InitAdd3 = InitRowIdx + 3
57
+
DIVIDE InitAdd3 BY 3 GIVING InitDivideResult REMAINDER
59
+
COMPUTE InitRowIdx = InitDivideRemainder
61
+
COMPUTE InitAdd3 = InitEntryIdx + 3
62
+
DIVIDE InitAdd3 BY 3 GIVING InitDivideResult REMAINDER
64
+
COMPUTE InitEntryIdx = InitDivideRemainder
67
+
PERFORM UNTIL Win OF Score OF Player1 OR Win OF Score OF
69
+
PERFORM VARYING IdxRow FROM 1 BY 1 UNTIL IdxRow > 3
70
+
PERFORM VARYING IdxCol FROM 1 BY 1 UNTIL IdxCol > 3
71
+
Display EntryScore(IdxRow, IdxCol)
74
+
SET Win of Score of Player1 TO true
82
+
IF Win OF Score OF Player1 THEN
83
+
DISPLAY "CONGRATS PLAYER 1 Has Won!"
85
+
DISPLAY "CONGRATS PLAYER 2 Has Won!"