Project

General

Profile

generate_preproc_output.p

Stefan Vieru, 04/01/2025 10:04 AM

Download (2.21 KB)

 
1
DEFINE INPUT    PARAMETER   basepath        AS CHARACTER NO-UNDO EXTENT.
2
DEFINE INPUT    PARAMETER   outpath         AS CHARACTER NO-UNDO.
3
DEFINE INPUT    PARAMETER   postfix         AS CHARACTER NO-UNDO.
4
DEFINE          VARIABLE    inputFile       AS CHARACTER NO-UNDO.
5
DEFINE          VARIABLE    outputFile      AS CHARACTER NO-UNDO.
6
DEFINE          VARIABLE    filename        AS CHARACTER FORMAT "x(64)".
7
DEFINE          VARIABLE    stat            AS INTEGER   NO-UNDO.
8
DEFINE          VARIABLE    idx             AS INTEGER   NO-UNDO.
9
DEFINE          VARIABLE    inputExtent     AS CHARACTER NO-UNDO EXTENT 1.
10

    
11
/* Create output directory */
12
OS-CREATE-DIR VALUE(outpath).
13
stat = OS-ERROR.
14
IF stat NE 0 THEN
15
    MESSAGE "Directory not created. System Error #" stat.
16
    
17

    
18
REPEAT idx = 1 TO EXTENT(basepath):
19
    FILE-INFO:FILE-NAME = basepath[idx].
20
    IF FILE-INFO:FILE-TYPE = ? THEN DO:
21
        /* Path not found */
22
        MESSAGE "Not found".
23
    END.
24
    ELSE IF FILE-INFO:FILE-TYPE BEGINS 'D' THEN DO:
25
        /* This is a directory */
26
        basepath[idx] = basepath[idx] + "/".
27
        INPUT FROM OS-DIR(basepath[idx]).
28
        REPEAT:
29
            IMPORT filename.
30
            inputExtent[1] = basepath[idx] + filename.
31
            IF  filename MATCHES "*.p"      OR
32
                filename MATCHES "*.w"      OR
33
                filename MATCHES "*.cls"    THEN 
34
            DO:
35
                RUN tests/preproc/generate_preproc_output.p(inputExtent, outpath, postfix).
36
            END.
37
        END.
38
        INPUT CLOSE.
39
    END.
40
    ELSE IF FILE-INFO:FILE-TYPE BEGINS 'F' THEN DO:
41
        /* This is a filename */
42
        RUN compile-file.
43
    END.
44
    ELSE DO:
45
        MESSAGE "Not supported".
46
    END.
47
END.
48

    
49
PROCEDURE compile-file:
50
    DEFINE VARIABLE filename AS CHAR.
51
    filename = FILE-INFO:FILE-NAME.
52
    DEF VAR numEntries AS INTEGER NO-UNDO.
53
    numEntries = NUM-ENTRIES(filename, "/").
54
    
55
    IF numEntries GT 0 THEN DO:
56
        filename = ENTRY(numEntries, filename, "/").
57
    END.
58
    
59
    inputFile   = FILE-INFO:FULL-PATHNAME.
60
    outputFile  = outpath + "/" + filename + "." + postfix.
61
    COMPILE VALUE(inputFile) SAVE PREPROCESS VALUE(outputFile) NO-ERROR.
62
END.