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