I'm trying to make a simple COBOL program that takes user inputs and writes them to a .txt file. My program successfully creates a .txt file, however, it fails to record any of the input, and for the life of me I can't figure out why. I want it to repeatedly take user input until specified not to and write that input to a text file. This is what I have:
IDENTIFICATION DIVISION.
PROGRAM-ID. LIFE4.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OPTIONAL OUT-FILE ASSIGN "life.txt"
ORGANIZATION LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD OUT-FILE.
01 F-EKRAN.
02 F-TEXT PIC X(73).
02 F-LINE PIC X(73).
WORKING-STORAGE SECTION.
01 E-WIDTH CONSTANT 73.
01 E-HEIGHT CONSTANT 31.
01 E-SIZE CONSTANT 300.
01 Y-POS PICTURE 99.
01 X-POS PICTURE 99.
01 Y-TEMP PICTURE 99.
01 X-TEMP PICTURE 99.
01 TI PICTURE 9(8).
01 RND PICTURE 9(8).
01 E-TEMP PICTURE X.
01 E-COUNT PICTURE 9.
01 E-STEP PICTURE 9(8).
01 S-STEP PICTURE +9(8).
01 WS-TEMP PICTURE X(E-WIDTH).
01 EKRAN.
02 E-LINE OCCURS E-HEIGHT.
03 E-ITEM OCCURS E-WIDTH PICTURE X.
01 I PIC S9.
01 J PIC S9.
PROCEDURE DIVISION.
MAIN.
OPEN OUTPUT OUT-FILE.
ACCEPT TI FROM TIME.
MOVE FUNCTION RANDOM(TI) TO RND.
MOVE 0 TO E-STEP.
MOVE 1 TO Y-POS.
PERFORM INIT-EKRAN E-HEIGHT TIMES.
PERFORM RANDOM-ITEM E-SIZE TIMES.
LOOP.
MOVE 1 TO Y-POS.
MOVE E-STEP TO S-STEP.
DISPLAY FUNCTION CONCATENATE("STEP: ", S-STEP).
PERFORM DRAW-EKRAN E-HEIGHT TIMES.
MOVE 1 TO Y-POS.
MOVE FUNCTION CONCATENATE("STEP: ", S-STEP) TO F-TEXT.
WRITE F-TEXT.
PERFORM E-HEIGHT TIMES
MOVE E-LINE(Y-POS) TO F-LINE
WRITE F-LINE
ADD 1 TO Y-POS
END-PERFORM.
PERFORM NEW-EKRAN.
DISPLAY "CONTYNUE? (Y/N)".
ACCEPT E-TEMP.
IF NOT ( E-TEMP = "N") MOVE "Y" TO E-TEMP.
ADD 1 TO E-STEP.
IF E-TEMP = "Y" GO TO LOOP.
WRITE F-TEXT FROM "END".
DISPLAY "END".
CLOSE OUT-FILE.
STOP RUN.
INIT-EKRAN.
MOVE 1 TO X-POS
PERFORM E-WIDTH TIMES
MOVE "-" TO E-ITEM(Y-POS,X-POS)
ADD 1 TO X-POS
END-PERFORM
ADD 1 TO Y-POS
.
DRAW-EKRAN.
DISPLAY E-LINE(Y-POS)
ADD 1 TO Y-POS
.
RANDOM-ITEM.
COMPUTE Y-POS = FUNCTION RANDOM() * E-HEIGHT + 1
COMPUTE X-POS = FUNCTION RANDOM() * E-WIDTH + 1
MOVE "X" TO E-ITEM(Y-POS,X-POS)
.
NEW-EKRAN.
MOVE 1 TO Y-POS
PERFORM E-HEIGHT TIMES
MOVE 1 TO X-POS
PERFORM E-WIDTH TIMES
MOVE 0 TO E-COUNT
MOVE -1 TO I
PERFORM 3 TIMES
MOVE -1 TO J
PERFORM 3 TIMES
IF NOT( I = 0 AND J = 0 )
COMPUTE Y-TEMP = Y-POS + I
COMPUTE X-TEMP = X-POS + J
IF Y-TEMP > 0 AND Y-TEMP < E-HEIGHT + 1 AND
X-TEMP > 0 AND X-TEMP < E-WIDTH + 1
IF E-ITEM(Y-TEMP,X-TEMP) = "X" OR
E-ITEM(Y-TEMP,X-TEMP) = "D"
ADD 1 TO E-COUNT
END-IF
END-IF
END-IF
ADD 1 TO J
END-PERFORM
ADD 1 TO I
END-PERFORM
IF E-ITEM(Y-POS,X-POS) = "-" AND E-COUNT = 3
MOVE "S" TO E-ITEM(Y-POS,X-POS) END-IF
IF E-ITEM(Y-POS,X-POS) = "X" AND
( E-COUNT < 2 OR E-COUNT > 3 )
MOVE "D" TO E-ITEM(Y-POS,X-POS) END-IF
ADD 1 TO X-POS
END-PERFORM
ADD 1 TO Y-POS
END-PERFORM
* DISPLAY " "
* DISPLAY " "
* PERFORM EKRAN-TEMP
* DISPLAY " "
* DISPLAY " "
MOVE 1 TO Y-POS
PERFORM E-HEIGHT TIMES
MOVE 1 TO X-POS
PERFORM E-WIDTH TIMES
IF E-ITEM(Y-POS,X-POS) = "S"
MOVE "X" TO E-ITEM(Y-POS,X-POS) END-IF
IF E-ITEM(Y-POS,X-POS) = "D"
MOVE "-" TO E-ITEM(Y-POS,X-POS) END-IF
ADD 1 TO X-POS
END-PERFORM
ADD 1 TO Y-POS
END-PERFORM
.
EKRAN-TEMP.
MOVE 1 TO Y-POS
PERFORM DRAW-EKRAN E-HEIGHT TIMES
.
END PROGRAM LIFE4.
When the program is executed, the file is created but it is empty. What is the problem?