Write a text file using fopen, fwrite and fclose

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

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>