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!!!