···
+
IDENTIFICATION DIVISION.
+
WORKING-STORAGE SECTION.
+
02 Score PIC 99 VALUE ZEROS.
+
02 Score PIC 99 VALUE ZEROES.
+
02 Turn PIC 9 value ZEROS.
+
01 PlayerMove PIC 9 VALUE ZEROS.
+
02 Rows OCCURS 3 TIMES.
+
03 Entries OCCURS 3 TIMES.
+
04 EntryScore PIC 9 VALUE ZEROS.
+
04 State PIC Z Value "_".
+
01 InitRowIdx PIC S9 VALUE 1.
+
01 AccessRowIdx PIC 9 VALUE 0.
+
01 AccessEntryIdx PIC 9 VALUE 0.
+
01 InitEntryIdx PIC S9 VALUE 2.
+
01 InitScoreValue PIC 99 VALUE 1.
+
01 InitDivideResult PIC S99 VALUE ZEROS.
+
01 InitDivideRemainder PIC 99 VALUE ZEROS.
+
01 IdxRow PIC 9 VALUE 1.
+
01 IdxCol PIC 9 VALUE 1.
+
01 InitAdd3 PIC 99 VALUE 0.
+
DISPLAY "Welcome to Trey's Dev Shed Tic Tac Toe Extravaganza!".
+
PERFORM VARYING InitScoreValue FROM 1 BY 1 UNTIL
+
COMPUTE AccessRowIdx = InitRowIdx + 1
+
COMPUTE AccessEntryIdx = InitEntryIdx + 1
+
EntryScore(AccessRowIdx AccessEntryIdx)
+
DIVIDE InitScoreValue BY 3 GIVING InitDivideResult
+
REMAINDER InitDivideRemainder
+
IF InitDivideRemainder = 0 THEN
+
COMPUTE InitEntryIdx = InitEntryIdx - 1
+
COMPUTE InitRowIdx = InitRowIdx - 1
+
COMPUTE InitEntryIdx = InitEntryIdx + 1
+
COMPUTE InitAdd3 = InitRowIdx + 3
+
DIVIDE InitAdd3 BY 3 GIVING InitDivideResult REMAINDER
+
COMPUTE InitRowIdx = InitDivideRemainder
+
COMPUTE InitAdd3 = InitEntryIdx + 3
+
DIVIDE InitAdd3 BY 3 GIVING InitDivideResult REMAINDER
+
COMPUTE InitEntryIdx = InitDivideRemainder
+
PERFORM UNTIL Win OF Score OF Player1 OR Win OF Score OF
+
PERFORM VARYING IdxRow FROM 1 BY 1 UNTIL IdxRow > 3
+
PERFORM VARYING IdxCol FROM 1 BY 1 UNTIL IdxCol > 3
+
Display EntryScore(IdxRow, IdxCol)
+
SET Win of Score of Player1 TO true
+
IF Win OF Score OF Player1 THEN
+
DISPLAY "CONGRATS PLAYER 1 Has Won!"
+
DISPLAY "CONGRATS PLAYER 2 Has Won!"