Project

General

Profile

GeneratePreprocOutput4GL.p

Greg Shah, 03/28/2025 12:25 PM

Download (2.4 KB)

 
1

    
2
/*------------------------------------------------------------------------
3
    File        : GeneratePreprocOutput4GL.p
4
    Purpose     : 
5

    
6
    Syntax      :
7

    
8
    Description : 
9

    
10
    Author(s)   : 
11
    Created     : Fri Mar 28 12:59:15 EET 2025
12
    Notes       :
13
  ----------------------------------------------------------------------*/
14

    
15
/* ***************************  Definitions  ************************** */
16

    
17
BLOCK-LEVEL ON ERROR UNDO, THROW.
18

    
19
/* ********************  Preprocessor Definitions  ******************** */
20

    
21

    
22
/* ***************************  Main Block  *************************** */
23
DEFINE INPUT    PARAMETER   basepath        AS CHAR NO-UNDO.
24
DEFINE INPUT    PARAMETER   outpath         AS CHAR NO-UNDO.
25
DEFINE INPUT    PARAMETER   postfix         AS CHAR NO-UNDO.
26
DEFINE          VAR         inputFile       AS CHAR.
27
DEFINE          VAR         outputFile      AS CHAR.
28
DEFINE          VAR         fileName        AS CHAR FORMAT "x(64)".
29
DEFINE          VARIABLE    stat            AS INTEGER   NO-UNDO.
30

    
31
IF outpath <> basepath THEN DO:
32
    OS-CREATE-DIR VALUE(outpath).
33
    stat = OS-ERROR.
34
    IF stat NE 0 THEN
35
        MESSAGE "Directory not created. System Error #" stat.
36
END.
37
FILE-INFO:FILE-NAME = basepath.
38
IF FILE-INFO:FILE-TYPE = ? THEN DO:
39
    /* Path not found */
40
    MESSAGE "Not found".
41
END.
42
ELSE IF FILE-INFO:FILE-TYPE BEGINS 'D' THEN DO:
43
    /* This is a directory */
44
    INPUT FROM OS-DIR(basepath).
45
    REPEAT:
46
        SET fileName.
47
        FILE-INFO:FILE-NAME = basepath + fileName.
48
        RUN compile-file.
49
    END.
50
    INPUT CLOSE.
51
END.
52
ELSE IF FILE-INFO:FILE-TYPE BEGINS 'F' THEN DO:
53
    /* This is a filename */
54
    RUN compile-file.
55
END.
56
ELSE DO:
57
    MESSAGE "Not supported".
58
END.
59

    
60
PROCEDURE compile-file:
61
    DEFINE VARIABLE filename AS CHAR.
62
    filename = FILE-INFO:FILE-NAME.
63
    DEF VAR numEntries AS INTEGER NO-UNDO.
64
    numEntries = NUM-ENTRIES(filename, "/").
65
    
66
    IF numEntries GT 0 THEN DO:
67
        filename = ENTRY(numEntries, filename, "/").
68
    END.
69
    
70
    IF  filename MATCHES "*.p"      OR
71
        filename MATCHES "*.w"      OR
72
        filename MATCHES "*.cls"    THEN 
73
    DO:
74
        inputFile   = FILE-INFO:FULL-PATHNAME.
75
        outputFile  = outpath + "/" + filename + "." + postfix.
76
        MESSAGE outputFile.
77
        COMPILE VALUE(inputFile) SAVE PREPROCESS VALUE(outputFile) NO-ERROR.
78
    END.
79
END.