【问题标题】:Name of file during compile time in Progress 4glProgress 4gl 编译期间的文件名
【发布时间】:2013-10-11 22:46:07
【问题描述】:

我想对文件进行编译时测试。设置如下。

1. We have procedure files proc1.p, proc2.p, ... proc1000.p.
2. All procedure files proc1.p, proc2.p, ... proc1000.p have a common include file incl.i

我想在 incl.i 中有一个带有父过程名称的预处理变量,以便在编译时调用不同的行为。

我尝试了什么

/* incl.i */ &SCOPED-DEFINE procName {&FILE-NAME}

这不起作用 {&FILE-NAME} 计算为包含文件的名称。

现在,THIS-PROCEDURE:FILE-NAME 保存过程文件的名称,但在编译时不知道。

有什么想法吗?我不想向包含添加新的输入参数 - 因此更新 proc1.p...proc1000.p。

【问题讨论】:

    标签: preprocessor progress-4gl openedge


    【解决方案1】:

    预处理器是通往地狱的道路……但如果你坚持你可以在父过程中创建一个 &GLOBAL-DEFINE。像这样的:

    /* parent.p
     */
    
    &GLOBAL-DEFINE parentName {&FILE-NAME}
    
    {include.i}
    
    
    /* include.i
     */
    
    display "{&parentName}".
    

    【讨论】:

    • 谢谢汤姆,你有照片。这会起作用,但它并不比将 FILE-NAME 值作为参数发送更好——这是我想要避免的。特别是,正如我最后提到的,我不想更新所有包含包含的文件。 +1 努力!
    • 顺便说一句,在 OpenEdge Architect(和 Dev studio)中有一个名为“& Preprocess”的视图,可以用来“读取”预处理 - 非常有用。否则我同意,应谨慎使用预处理。
    • 是的,你必须接触父母——但至少它只是一行而不是每个可能需要参数的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多