Project

General

Profile

GeneratePreprocOutput4GL.p

Stefan Vieru, 04/01/2025 08:05 AM

Download (2.27 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
REPEAT idx = 1 TO EXTENT(basepath):
12
    IF outpath <> basepath[idx] THEN DO:
13
        OS-CREATE-DIR VALUE(outpath).
14
        stat = OS-ERROR.
15
        IF stat NE 0 THEN
16
            MESSAGE "Directory not created. System Error #" stat.
17
    END.
18
    FILE-INFO:FILE-NAME = basepath[idx].
19
    IF FILE-INFO:FILE-TYPE = ? THEN DO:
20
        /* Path not found */
21
        MESSAGE "Not found".
22
    END.
23
    ELSE IF FILE-INFO:FILE-TYPE BEGINS 'D' THEN DO:
24
        /* This is a directory */
25
        basepath[idx] = basepath[idx] + "/".
26
        INPUT FROM OS-DIR(basepath[idx]).
27
        REPEAT:
28
            SET filename.
29
            inputExtent[1] = basepath[idx] + filename.
30
            IF  filename MATCHES "*.p"      OR
31
                filename MATCHES "*.w"      OR
32
                filename MATCHES "*.cls"    THEN 
33
            DO:
34
                RUN tests/preproc/GeneratePreprocOutput4GL.p(inputExtent, outpath, postfix).
35
            END.
36
        END.
37
        INPUT CLOSE.
38
    END.
39
    ELSE IF FILE-INFO:FILE-TYPE BEGINS 'F' THEN DO:
40
        /* This is a filename */
41
        RUN compile-file.
42
    END.
43
    ELSE DO:
44
        MESSAGE "Not supported".
45
    END.
46
END.
47

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