The following program writes same sample data to a flat file using native Unix/Linux C APIs, it will run as is only in Unix/Linux environment.
The program has been tested using Dell Enterprise COBOL and executed in Dell TPE. The same program can be compiled and executed using any available re-hosting platform for LUW.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | *
* Author: Santix, http://www.italianscool.com
*
* Write a text file using fopen, fwrite and fclose.
*
IDENTIFICATION DIVISION.
*
PROGRAM-ID. WRITETST.
*
ENVIRONMENT DIVISION.
*
CONFIGURATION SECTION.
*
DATA DIVISION.
*
WORKING-STORAGE SECTION.
*
01 WS-SOMEDATA PIC X(80).
01 WS-SEPARATED-LOGFILE PIC X(256).
01 WS-LOG-FILENAME-PTR POINTER.
01 WS-FILE-IO-FUNCTION.
03 FILLER PIC X.
88 WS-IO-FUNCTION-WRITE VALUE "w".
88 WS-IO-FUNCTION-READ VALUE "r".
88 WS-IO-FUNCTION-APPEND VALUE "a".
03 FILLER PIC X VALUE LOW-VALUE.
01 WS-FILE-IO-RC PIC S9(9) COMP-5.
01 WS-GREGORN.
03 WS-DT-YEAR PIC X(4).
03 WS-DT-MONTH PIC X(2).
03 WS-DT-DAY PIC X(2).
03 WS-TM-HOUR PIC X(2).
03 WS-TM-MINUTES PIC X(2).
03 WS-TM-SECONDS PIC X(2).
03 WS-TM-MSECONDS PIC X(3).
01 WS-LILIAN PIC S9(9) COMP.
01 WS-XSECONDS PIC S9(18) COMP.
01 WS-FC PIC X(12).
01 WS-LOG-TMS.
03 WS-DT-YEAR PIC X(4).
03 WS-DT-MONTH PIC X(2).
03 WS-DT-DAY PIC X(2).
03 FILLER PIC X VALUE "_".
03 WS-TM-HOUR PIC X(2).
03 WS-TM-MINUTES PIC X(2).
03 WS-TM-SECONDS PIC X(2).
*
LINKAGE SECTION.
*
01 LK-LOG-FILENAME-PTR PIC X(8).
*
PROCEDURE DIVISION.
*
MAIN-SECTION.
* CREATE A FILE NAME
CALL 'CEELOCT' USING WS-LILIAN
WS-XSECONDS
WS-GREGORN
WS-FC
MOVE CORR WS-GREGORN TO WS-LOG-TMS
*
STRING
"/tmp/SAMPLE_TEXT_" WS-LOG-TMS ".txt" X'00'
DELIMITED BY SIZE
INTO WS-SEPARATED-LOGFILE
SET WS-IO-FUNCTION-WRITE TO TRUE
CALL "fopen" USING WS-SEPARATED-LOGFILE
WS-FILE-IO-FUNCTION
GIVING WS-LOG-FILENAME-PTR
IF WS-LOG-FILENAME-PTR = NULL
DISPLAY "OPEN LOG ERROR: " WS-SEPARATED-LOGFILE
STOP RUN
END-IF
*
SET ADDRESS OF LK-LOG-FILENAME-PTR
TO WS-LOG-FILENAME-PTR
MOVE "I love you mom!!!" TO WS-SOMEDATA
CALL "fwrite" USING WS-SOMEDATA
BY VALUE LENGTH OF WS-SOMEDATA
BY VALUE 1
BY REFERENCE LK-LOG-FILENAME-PTR
GIVING WS-FILE-IO-RC
IF WS-FILE-IO-RC NOT= 1
CALL "fclose" USING LK-LOG-FILENAME-PTR
DISPLAY "WRITE LOG ERROR: " WS-SEPARATED-LOGFILE
STOP RUN
END-IF
*
CALL "fclose" USING LK-LOG-FILENAME-PTR
DISPLAY "DATA TO: " WS-SEPARATED-LOGFILE
STOP RUN
*
.
MAIN-EX.
EXIT. |
Execution output:
DATA TO: /tmp/SAMPLE_TEXT_20141026_003001.txt
[/tmp/santix] # cat /tmp/SAMPLE_TEXT_20141026_003001.txt
I love you mom!!!
